diff --git a/ps/pg0068100.cpp b/ps/pg0068100.cpp index 792e0b337..7d4302fad 100755 --- a/ps/pg0068100.cpp +++ b/ps/pg0068100.cpp @@ -22,15 +22,10 @@ class TElabollazione_HK_mask : public TAutomask { 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: @@ -38,7 +33,6 @@ 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 TElabollazione_HK_mask(); ~TElabollazione_HK_mask(); @@ -47,15 +41,11 @@ public: 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");*/ } TElabollazione_HK_mask::~TElabollazione_HK_mask() { delete _num_sheet; - /*delete _num_sheet_costi; - delete _num_sheet_provv;*/ } bool TElabollazione_HK_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) @@ -68,17 +58,17 @@ bool TElabollazione_HK_mask::on_field_event(TOperable_field& o, TField_event e, { 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()); //(_num_sheet_costi->one_checked() && _num_sheet_provv->one_checked())); + enable(DLG_OK, full && _num_sheet->one_checked()); } break; case DLG_USER: - if (e == fe_button && _num_sheet->run()) //(_num_sheet_costi->run() || _num_sheet_->run())) + if (e == fe_button && _num_sheet->run()) { // Hai selezionato qualcosa ? allora abilita il pulsante di conferma - enable(DLG_OK, _num_sheet->one_checked()); //(_num_sheet_costi->one_checked() && _num_sheet_provv->one_checked())); + enable(DLG_OK, _num_sheet->one_checked()); } break; default: @@ -89,26 +79,6 @@ bool TElabollazione_HK_mask::on_field_event(TOperable_field& o, TField_event e, 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(); @@ -182,26 +152,36 @@ class TContabilizzazione_analitica_costi : public TContabilizzazione_analitica { TString4 _codcaus; bool _costi; + TCausale * _caus; public: virtual bool elabora(TDocumento& doc, long numreg_cg, TViswin* viswin, bool can_write, TAnal_mov& mov, bool riclassifica_fdr_fde = true); + virtual const TCausale& doc2caus(const TDocumento& doc); + TContabilizzazione_analitica_costi(const TString& codcaus, const char* cod = NULL, bool costi = true) - : TContabilizzazione_analitica(cod), _codcaus(codcaus), _costi(costi) {} + : TContabilizzazione_analitica(cod), _codcaus(codcaus), _costi(costi), _caus(NULL) {} TContabilizzazione_analitica_costi(const TString& codcaus, const TRectype& rec, bool costi = true) - : TContabilizzazione_analitica(rec), _codcaus(codcaus), _costi(costi) {} + : TContabilizzazione_analitica(rec), _codcaus(codcaus), _costi(costi), _caus(NULL) {} virtual ~TContabilizzazione_analitica_costi() {} }; +const TCausale& TContabilizzazione_analitica_costi::doc2caus(const TDocumento& doc) +{ + if (_caus == NULL) + _caus = new TCausale(_codcaus); + + return *_caus; +} + bool TContabilizzazione_analitica_costi::elabora(TDocumento& doc, long numreg_cg, TViswin* viswin, bool can_write, TAnal_mov& mov, bool riclassifica_fdr_fde) { TDate datareg, datacomp, datadoc; int annoes = 0; TString descr, msg, codcaus; - bool dare = false; TCausale caus(_codcaus); datadoc = doc.get(DOC_DATADOC); @@ -212,7 +192,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(); //CAZZONISSIMO!! SBAGLIA! + codcaus = caus.codice(); const bool use_rif = caus.iva() == iva_acquisti && rif.not_empty(); if (use_rif) { @@ -225,19 +205,22 @@ bool TContabilizzazione_analitica_costi::elabora(TDocumento& doc, long numreg_cg descr << TR(" del ") << datadoc; } - - if (_costi) - dare = true; - else - dare = doc.get_char(DOC_TIPOCF) == 'F'; - + //..e quindi dovrebbe sempre bastare sezione = 'D' + char sezione = 'D'; + //questo non dovrebbe mai capitare!... if (doc.is_nota_credito()) - dare = !dare; + sezione = 'A'; - const char sezione = dare ? 'D' : 'A'; const int decimals = TCurrency::get_firm_dec(); - long numreg_ca = doc.get_long(DOC_NUMREGCA); + //in caso di righe doc di costo -> sul doc usa numregca, in caso di righe provvigione usa un campo virtuale.. + //..NUMREGCAPR; questo è per poter avere i movimenti distinti (costi - provvigioni) e per poter collegare.. + //..movana e doc di origine nei 2 versi + TString field_name(DOC_NUMREGCA); + if (!_costi) + field_name = "NUMREGCAPR"; + + long numreg_ca = doc.get_long(field_name); if (numreg_ca > 0) { const int err = mov.read(numreg_ca); @@ -255,7 +238,7 @@ bool TContabilizzazione_analitica_costi::elabora(TDocumento& doc, long numreg_cg } mov.put(MOVANA_DATAREG, datareg); mov.put(MOVANA_DATACOMP, datacomp); - mov.put(MOVANA_DATADOC, datadoc); + mov.put(MOVANA_DATADOC, datadoc); mov.put(MOVANA_ANNOES, annoes); mov.put(MOVANA_DESCR, descr); mov.put(MOVANA_NUMREGCG, numreg_cg); @@ -284,13 +267,12 @@ bool TContabilizzazione_analitica_costi::elabora(TDocumento& doc, long numreg_cg // salto valori nulli const real qta = riga.get(RDOC_QTA); const real costo = riga.articolo().get_real(ANAMAG_ULTCOS1); - real valore = _costi ? qta * costo : riga.provvigione(); - /*real valore; + real valore; if (_costi) valore = qta * costo; else - valore = riga.provvigione();*/ + valore = riga.provvigione(); if (valore.is_zero()) continue; @@ -403,7 +385,7 @@ bool TContabilizzazione_analitica_costi::elabora(TDocumento& doc, long numreg_cg { mov.write(movana); numreg_ca = mov.get_long(MOVANA_NUMREG); - doc.put(DOC_NUMREGCA, numreg_ca); + doc.put(field_name, numreg_ca); } if (viswin != NULL) { @@ -458,7 +440,7 @@ void TElabollazione_HK_app::contabilize() int year_from = data_ini.year(); const TDate data_fine = _msk->get_date(F_DATA_FIN); int year_to = data_fine.year(); - const TDate data_reg = _msk->get_date(F_DATA_REG); + const TDate data_reg(TODAY); TArray_sheet& num_sheet = _msk->num_sheet(); const long items = num_sheet.items(); diff --git a/ps/pg0068100a.h b/ps/pg0068100a.h index 7c147bd0a..2efa5e6fb 100755 --- a/ps/pg0068100a.h +++ b/ps/pg0068100a.h @@ -12,3 +12,4 @@ #define F_CAUS_COSTI_DESCR 110 #define F_CAUS_PROVV 111 #define F_CAUS_PROVV_DESCR 112 +#define F_AUTO_DATA_REG 113 diff --git a/ps/pg0068100a.uml b/ps/pg0068100a.uml index b1a032edf..f26822480 100755 --- a/ps/pg0068100a.uml +++ b/ps/pg0068100a.uml @@ -92,21 +92,14 @@ 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" + PROMPT 2 8 "@bCausali" END -STRING F_CAUS_COSTI 4 +STRING F_CAUS_COSTI 3 BEGIN - PROMPT 3 10 "Costi " + PROMPT 3 9 "Costi " FLAGS "UZ" USE LF_CAUSALI INPUT CODCAUS F_CAUS_COSTI @@ -122,7 +115,7 @@ END STRING F_CAUS_COSTI_DESCR 50 BEGIN - PROMPT 22 10 "" + PROMPT 22 9 "" USE LF_CAUSALI KEY 2 INPUT DESCR F_CAUS_COSTI_DESCR DISPLAY "Descrizione @50" DESCR @@ -134,9 +127,9 @@ BEGIN CHECKTYPE REQUIRED END -STRING F_CAUS_PROVV 4 +STRING F_CAUS_PROVV 3 BEGIN - PROMPT 3 11 "Provvigioni " + PROMPT 3 10 "Provvigioni " FLAGS "UZ" USE LF_CAUSALI INPUT CODCAUS F_CAUS_PROVV @@ -152,7 +145,7 @@ END STRING F_CAUS_PROVV_DESCR 50 BEGIN - PROMPT 22 11 "" + PROMPT 22 10 "" USE LF_CAUSALI KEY 2 INPUT DESCR F_CAUS_PROVV_DESCR DISPLAY "Descrizione @50" DESCR @@ -164,6 +157,19 @@ BEGIN CHECKTYPE REQUIRED END +/*BOOL F_AUTO_DATA_REG +BEGIN + PROMPT 2 11 "Usare data documento come data registrazione" + MESSAGE FALSE ENABLE,F_DATA_REG + MESSAGE TRUE CLEAR,F_DATA_REG +END + +DATE F_DATA_REG +BEGIN + PROMPT 53 11 "Data reg. " + CHECKTYPE REQUIRED +END*/ + STRING DLG_PROFILE 50 BEGIN PROMPT 9 -2 "Profilo "