diff --git a/ps/pg0068100.cpp b/ps/pg0068100.cpp index ecf27fe0e..792e0b337 100755 --- a/ps/pg0068100.cpp +++ b/ps/pg0068100.cpp @@ -18,14 +18,19 @@ /////////////////////////////////////////////// // MASCHERA /////////////////////////////////////////////// -class TEleabollazione_HK_mask : public TAutomask +class TElabollazione_HK_mask : public TAutomask { - TArray_sheet* _num_sheet; // TArray_sheet contenente le selezioni sui codici numerazione - TString_array _tipi_doc; // Array di stringhe contenente i tipi documenti da elaborare + TArray_sheet* _num_sheet; + TString_array _tipi_doc; + /*TArray_sheet* _num_sheet_costi; //TArray_sheet contenenti le selezioni sui codici numerazione costi e provvigioni + TArray_sheet* _num_sheet_provv; + TString_array _tipi_doc_costi; //Array di stringhe contenenti i tipi documenti da elaborare per costi e provvigioni + TString_array _tipi_doc_provv;*/ protected: virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); // Costruisce lo sheet dei codici numerazione + //void build_num_sheet(const short field); void build_num_sheet(); public: @@ -33,40 +38,47 @@ public: bool doc_tipo_stato_ok(const TRectype& doc); // Restituisce lo sheet con le numerazioni da elaborare TArray_sheet& num_sheet() const { return *_num_sheet; } + //TArray_sheet& num_sheet_provv() const { return *_num_sheet_provv; } // Constructor and Distructor - TEleabollazione_HK_mask(); - ~TEleabollazione_HK_mask(); + TElabollazione_HK_mask(); + ~TElabollazione_HK_mask(); }; -TEleabollazione_HK_mask::TEleabollazione_HK_mask() : TAutomask("ve6800a") +TElabollazione_HK_mask::TElabollazione_HK_mask() : TAutomask("pg0068100a") { _num_sheet = new TArray_sheet(-1, -1, -4, -4, "Codici numerazione", "@1|Cod. numerazione|Descrizione@50"); + /*_num_sheet_costi = new TArray_sheet(-1, -1, -4, -4, "Codici numerazione", "@1|Cod. numerazione|Descrizione@50"); + _num_sheet_provv = new TArray_sheet(-1, -1, -4, -4, "Codici numerazione", "@1|Cod. numerazione|Descrizione@50");*/ } -TEleabollazione_HK_mask::~TEleabollazione_HK_mask() +TElabollazione_HK_mask::~TElabollazione_HK_mask() { - delete _num_sheet; + delete _num_sheet; + /*delete _num_sheet_costi; + delete _num_sheet_provv;*/ } -bool TEleabollazione_HK_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) +bool TElabollazione_HK_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) { switch (o.dlg()) { - case F_CODICE_ELAB: + case F_ELAB_COSTI: + case F_ELAB_PROVV: if (e == fe_modify || e == fe_init) { const bool full = !o.empty(); if (full) + //build_num_sheet(o.dlg()); build_num_sheet(); enable(DLG_USER, full); - enable(DLG_OK, full && _num_sheet->one_checked()); + enable(DLG_OK, full && _num_sheet->one_checked()); //(_num_sheet_costi->one_checked() && _num_sheet_provv->one_checked())); } break; case DLG_USER: - if (e == fe_button && _num_sheet->run()) + if (e == fe_button && _num_sheet->run()) //(_num_sheet_costi->run() || _num_sheet_->run())) { // Hai selezionato qualcosa ? allora abilita il pulsante di conferma - enable(DLG_OK, _num_sheet->one_checked()); + enable(DLG_OK, _num_sheet->one_checked()); //(_num_sheet_costi->one_checked() && _num_sheet_provv->one_checked())); } break; default: @@ -75,12 +87,32 @@ bool TEleabollazione_HK_mask::on_field_event(TOperable_field& o, TField_event e, return true; } -void TEleabollazione_HK_mask::build_num_sheet() +void TElabollazione_HK_mask::build_num_sheet() //(const short field) { + /*switch (field) + { + case F_ELAB_COSTI: + { + _num_sheet_costi->destroy(); + _tipi_doc_costi.destroy(); + const TContabilizzazione_analitica_costi contanal(get(F_ELAB_COSTI)); + } + break; + case F_ELAB_PROVV: + { + _num_sheet_provv->destroy(); + _tipi_doc_provv.destroy(); + const TContabilizzazione_analitica_provvigioni contanal(get(F_ELAB_PROVV)); + } + break; + default: + break; + }*/ + _num_sheet->destroy(); _tipi_doc.destroy(); - const TContabilizzazione_analitica contanal(get(F_CODICE_ELAB)); + const TContabilizzazione_analitica contanal(get(F_ELAB_COSTI)); if (!contanal.empty()) { TToken_string t; @@ -122,7 +154,7 @@ void TEleabollazione_HK_mask::build_num_sheet() } } -bool TEleabollazione_HK_mask::doc_tipo_stato_ok(const TRectype& doc) +bool TElabollazione_HK_mask::doc_tipo_stato_ok(const TRectype& doc) // Verifica che il tipo documento corrente esista tra i tipi previsti dalla elaborazione // differita selezionata { @@ -143,9 +175,9 @@ bool TEleabollazione_HK_mask::doc_tipo_stato_ok(const TRectype& doc) - - - +//////////////////////////////////////////////////////////////////////////////////////////////////// +// CLASSI DERIVATE DALLA TContabilizzazione_analitica (con le modifiche per il caso in questione) +//////////////////////////////////////////////////////////////////////////////////////////////////// class TContabilizzazione_analitica_costi : public TContabilizzazione_analitica { TString4 _codcaus; @@ -180,7 +212,7 @@ bool TContabilizzazione_analitica_costi::elabora(TDocumento& doc, long numreg_cg descr = doc.tipo().descrizione(); const TString8 rif = doc.get(DOC_NUMDOCRIF); - codcaus = caus.codice(); + codcaus = caus.codice(); //CAZZONISSIMO!! SBAGLIA! const bool use_rif = caus.iva() == iva_acquisti && rif.not_empty(); if (use_rif) { @@ -399,11 +431,11 @@ public: // APPLICAZIONE ///////////////////////////////////////////// -// TEleabollazione_HK +// TElabollazione_HK // Applicazione di contabilizzazione documenti -class TEleabollazione_HK_app : public TSkeleton_application +class TElabollazione_HK_app : public TSkeleton_application { - TEleabollazione_HK_mask* _msk; + TElabollazione_HK_mask* _msk; virtual bool check_autorization() const {return false;} virtual const char * extra_modules() const {return "ve";} @@ -419,7 +451,7 @@ public: }; -void TEleabollazione_HK_app::contabilize() +void TElabollazione_HK_app::contabilize() { //Prende i dati dalla maschera (date,sheet numerazioni) const TDate data_ini = _msk->get_date(F_DATA_INI); @@ -464,7 +496,6 @@ void TEleabollazione_HK_app::contabilize() { da.put(DOC_CODNUM, nums); a.put(DOC_CODNUM, nums); - //filt_expr.cut(0); // Il filtro diventa inutile } // Cursore complessivo con limiti di data (chiave 3). Viene sfruttata l'ottimizzazione @@ -498,12 +529,19 @@ void TEleabollazione_HK_app::contabilize() } } //E finalmente fa l'agognata elaborazione!!!!! - TString16 elaborazione = _msk->get(F_CODICE_ELAB); - TContabilizzazione_analitica contanal(elaborazione); - contanal.elabora(lista_in, lista_out, data_reg); + TString16 elaborazione_costi = _msk->get(F_ELAB_COSTI); + TContabilizzazione_analitica_costi contanal_costi(_msk->get(F_CAUS_COSTI), elaborazione_costi); + contanal_costi.TContabilizzazione_analitica::elabora(lista_in, lista_out, data_reg); - if (contanal.processed_docs() > 0L) - message_box(FR("Totale documenti contabilizzati: %ld"), contanal.processed_docs()); + if (contanal_costi.processed_docs() > 0L) + message_box(FR("Totale documenti di costo contabilizzati: %ld"), contanal_costi.processed_docs()); + + TString16 elaborazione_provv = _msk->get(F_ELAB_PROVV); + TContabilizzazione_analitica_provvigioni contanal_provv(_msk->get(F_CAUS_PROVV), elaborazione_provv); + contanal_provv.TContabilizzazione_analitica::elabora(lista_in, lista_out, data_reg); + + if (contanal_provv.processed_docs() > 0L) + message_box(FR("Totale documenti di provvigione contabilizzati: %ld"), contanal_provv.processed_docs()); } else warning_box(TR("Non vi sono documenti da contabilizzare per le numerazioni selezionate.")); @@ -512,24 +550,24 @@ void TEleabollazione_HK_app::contabilize() } -bool TEleabollazione_HK_app::create() +bool TElabollazione_HK_app::create() { - //se non ha le vendite è impossibile da utilizzare - if (!has_module(VEAUT) && !has_module(CAAUT)) + //se non ha le vendite e l'analitica è impossibile da utilizzare + if (!has_module(VEAUT) || !has_module(CAAUT)) return error_box(TR("Modulo non autorizzato")); - open_files(LF_TABCOM, LF_TAB, LF_DOC, LF_RIGHEDOC, LF_MOVANA, LF_RMOVANA, 0); - _msk = new TEleabollazione_HK_mask(); + //open_files(LF_TABCOM, LF_TAB, LF_DOC, LF_RIGHEDOC, LF_MOVANA, LF_RMOVANA, 0); + _msk = new TElabollazione_HK_mask(); return TSkeleton_application::create(); } -bool TEleabollazione_HK_app::destroy() +bool TElabollazione_HK_app::destroy() { if (_msk) delete _msk; return TSkeleton_application::destroy(); } -void TEleabollazione_HK_app::main_loop() +void TElabollazione_HK_app::main_loop() { while (_msk->run() == K_ENTER) contabilize(); @@ -537,7 +575,7 @@ void TEleabollazione_HK_app::main_loop() int pg0068100 (int argc, char **argv) { - TEleabollazione_HK_app a; + TElabollazione_HK_app a; a.run(argc,argv, TR("Contabilizzazione Hair Kulture")); return true; } diff --git a/ps/pg0068100a.h b/ps/pg0068100a.h index e7b84764e..7c147bd0a 100755 --- a/ps/pg0068100a.h +++ b/ps/pg0068100a.h @@ -1,8 +1,14 @@ -// Include file per ve6800a.uml +// Include file per pg0068100a.uml -#define F_CODICE_ELAB 101 -#define F_DESC_ELAB 102 -#define F_DATA_INI 103 -#define F_DATA_FIN 104 -#define F_DATA_AUTO 105 -#define F_DATA_REG 106 +#define F_ELAB_COSTI 101 +#define F_ELAB_COSTI_DESCR 102 +#define F_ELAB_PROVV 103 +#define F_ELAB_PROVV_DESCR 104 +#define F_DATA_INI 105 +#define F_DATA_FIN 106 +#define F_DATA_AUTO 107 +#define F_DATA_REG 108 +#define F_CAUS_COSTI 109 +#define F_CAUS_COSTI_DESCR 110 +#define F_CAUS_PROVV 111 +#define F_CAUS_PROVV_DESCR 112 diff --git a/ps/pg0068100a.uml b/ps/pg0068100a.uml index 9c2ec8ba1..b1a032edf 100755 --- a/ps/pg0068100a.uml +++ b/ps/pg0068100a.uml @@ -1,60 +1,5 @@ #include "pg0068100a.h" -PAGE "Contabilizzazione HAIR KULTURE" -1 -1 78 8 - -STRING F_CODICE_ELAB 8 -BEGIN - PROMPT 1 1 "Codice " - FLAG "U" - USE %ELD SELECT I0 == 7 - INPUT CODTAB F_CODICE_ELAB - DISPLAY "Codice@8" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_CODICE_ELAB CODTAB - OUTPUT F_DESC_ELAB S0 - CHECKTYPE REQUIRED - WARNING "E' necessario specificare il codice elaborazione" -END - -STRING F_DESC_ELAB 50 -BEGIN - PROMPT 20 1 "" - USE %ELD KEY 2 SELECT I0 == 7 - INPUT S0 F_DESC_ELAB - DISPLAY "Descrizione@50" S0 - DISPLAY "Codice@8" CODTAB - COPY OUTPUT F_CODICE_ELAB -END - -GROUPBOX DLG_NULL 26 4 -BEGIN - PROMPT 1 2 "Date intervallo documenti" -END - -DATE F_DATA_INI -BEGIN - PROMPT 2 3 "Inizio " - CHECKTYPE REQUIRED - WARNING "La data di inizio intervallo e' obbligatoria" -END - -DATE F_DATA_FIN -BEGIN - PROMPT 2 4 "Fine " - CHECKTYPE REQUIRED - WARNING "La data di fine intervallo deve essere successiva a quella di inizio" - VALIDATE DATE_CMP_FUNC >= F_DATA_INI -END - -DATE F_DATA_REG -BEGIN - PROMPT 2 6 "Data registrazione " - FLAGS "A" - CHECKTYPE REQUIRED -END - -ENDPAGE - TOOLBAR "topbar" 0 0 0 2 BUTTON DLG_USER 10 2 @@ -67,4 +12,164 @@ END ENDPAGE +PAGE "Contabilizzazione HAIR KULTURE" 0 2 0 0 + +GROUPBOX DLG_NULL 77 4 +BEGIN + PROMPT 1 0 "@bElaborazioni" +END + +STRING F_ELAB_COSTI 8 +BEGIN + PROMPT 2 1 "Costi " + FLAG "U" + USE %ELD SELECT I0 == 7 + INPUT CODTAB F_ELAB_COSTI + DISPLAY "Codice@8" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_ELAB_COSTI CODTAB + OUTPUT F_ELAB_COSTI_DESCR S0 + CHECKTYPE REQUIRED + WARNING "E' necessario specificare il codice elaborazione" +END + +STRING F_ELAB_COSTI_DESCR 50 +BEGIN + PROMPT 25 1 "" + USE %ELD KEY 2 SELECT I0 == 7 + INPUT S0 F_ELAB_COSTI_DESCR + DISPLAY "Descrizione@50" S0 + DISPLAY "Codice@8" CODTAB + COPY OUTPUT F_ELAB_COSTI +END + +STRING F_ELAB_PROVV 8 +BEGIN + PROMPT 2 2 "Provvigioni " + FLAG "U" + USE %ELD SELECT I0 == 7 + INPUT CODTAB F_ELAB_PROVV + DISPLAY "Codice@8" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_ELAB_PROVV CODTAB + OUTPUT F_ELAB_PROVV_DESCR S0 + CHECKTYPE REQUIRED + WARNING "E' necessario specificare il codice elaborazione" +END + +STRING F_ELAB_PROVV_DESCR 50 +BEGIN + PROMPT 25 2 "" + USE %ELD KEY 2 SELECT I0 == 7 + INPUT S0 F_ELAB_PROVV_DESCR + DISPLAY "Descrizione@50" S0 + DISPLAY "Codice@8" CODTAB + COPY OUTPUT F_ELAB_PROVV +END + +GROUPBOX DLG_NULL 77 3 +BEGIN + PROMPT 1 4 "@bDate intervallo documenti" +END + +DATE F_DATA_INI +BEGIN + PROMPT 2 5 "Inizio " + CHECKTYPE REQUIRED + WARNING "La data di inizio intervallo e' obbligatoria" +END + +DATE F_DATA_FIN +BEGIN + PROMPT 25 5 "Fine " + CHECKTYPE REQUIRED + WARNING "La data di fine intervallo deve essere successiva a quella di inizio" + VALIDATE DATE_CMP_FUNC >= F_DATA_INI +END + +GROUPBOX DLG_NULL 77 6 +BEGIN + PROMPT 1 7 "@bParametri movimenti generati" +END + +DATE F_DATA_REG +BEGIN + PROMPT 2 8 "Data registrazione " + FLAGS "A" + CHECKTYPE REQUIRED +END + +TEXT -1 +BEGIN + PROMPT 2 9 "@bCausali" +END + +STRING F_CAUS_COSTI 4 +BEGIN + PROMPT 3 10 "Costi " + FLAGS "UZ" + USE LF_CAUSALI + INPUT CODCAUS F_CAUS_COSTI + DISPLAY "Cod." CODCAUS + DISPLAY "Descrizione@50" DESCR + DISPLAY "Documento" TIPODOC + DISPLAY "Tipo movimento" TIPOMOV + DISPLAY "Inc./Pag." CODCAUSIM + OUTPUT F_CAUS_COSTI CODCAUS + OUTPUT F_CAUS_COSTI_DESCR DESCR + CHECKTYPE REQUIRED +END + +STRING F_CAUS_COSTI_DESCR 50 +BEGIN + PROMPT 22 10 "" + USE LF_CAUSALI KEY 2 + INPUT DESCR F_CAUS_COSTI_DESCR + DISPLAY "Descrizione @50" DESCR + DISPLAY "Cod." CODCAUS + DISPLAY "Documento" TIPODOC + DISPLAY "Movimento" TIPOMOV + DISPLAY "Inc./Pag." CODCAUSIM + COPY OUTPUT F_CAUS_COSTI + CHECKTYPE REQUIRED +END + +STRING F_CAUS_PROVV 4 +BEGIN + PROMPT 3 11 "Provvigioni " + FLAGS "UZ" + USE LF_CAUSALI + INPUT CODCAUS F_CAUS_PROVV + DISPLAY "Cod." CODCAUS + DISPLAY "Descrizione@50" DESCR + DISPLAY "Documento" TIPODOC + DISPLAY "Tipo movimento" TIPOMOV + DISPLAY "Inc./Pag." CODCAUSIM + OUTPUT F_CAUS_PROVV CODCAUS + OUTPUT F_CAUS_PROVV_DESCR DESCR + CHECKTYPE REQUIRED +END + +STRING F_CAUS_PROVV_DESCR 50 +BEGIN + PROMPT 22 11 "" + USE LF_CAUSALI KEY 2 + INPUT DESCR F_CAUS_PROVV_DESCR + DISPLAY "Descrizione @50" DESCR + DISPLAY "Cod." CODCAUS + DISPLAY "Documento" TIPODOC + DISPLAY "Movimento" TIPOMOV + DISPLAY "Inc./Pag." CODCAUSIM + COPY OUTPUT F_CAUS_PROVV + CHECKTYPE REQUIRED +END + +STRING DLG_PROFILE 50 +BEGIN + PROMPT 9 -2 "Profilo " + PSELECT +END + +ENDPAGE + ENDMASK