diff --git a/ps/ps1001300.cpp b/ps/ps1001300.cpp index 35ee9d0d9..f76d3f16b 100755 --- a/ps/ps1001300.cpp +++ b/ps/ps1001300.cpp @@ -1,5 +1,6 @@ #include #include +#include #include #include #include @@ -17,16 +18,32 @@ /////////////////////////////////////////////////////////// class TVariazione_budget_mask : public TAutomask { + bool _dirty; + protected: virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); - void carica_rmovana(); + + int carica_rmovana(); + bool one_checked() const; //controlla se nella colonna dei check ce ne è almeno 1 checkato (on_field) + void check_all(const bool checked); //checka-dechecka la colonna dei check (on_field) public: TVariazione_budget_mask(); + ~TVariazione_budget_mask(); }; TVariazione_budget_mask::TVariazione_budget_mask() :TAutomask ("ps1001300a") { + //carica la causale che trova nel ditta.ini + TConfig ditta_ini(CONFIG_DITTA, "ps1001"); + set(F_CODCAUS, ditta_ini.get("CodCaus")); +} + +TVariazione_budget_mask::~TVariazione_budget_mask() +{ + //salva nel ditta.ini la causale sulla maschera + TConfig ditta_ini(CONFIG_DITTA, "ps1001"); + ditta_ini.set("CodCaus", get(F_CODCAUS)); } bool TVariazione_budget_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) @@ -34,9 +51,36 @@ bool TVariazione_budget_mask::on_field_event(TOperable_field& o, TField_event e, switch (o.dlg()) { case F_CODCMS: - { if (e == fe_modify) - carica_rmovana(); + { + bool e = carica_rmovana() == 0; + o.enable(e); + enable(F_DESCRIZ, e); + } + break; + case F_DATAINICMS: + case F_DATAFINECMS: + if (e == fe_modify) + _dirty = true; + break; + case DLG_CANCEL: + if (e == fe_button) + { + if (_dirty) + { + //chiede se salvare + } + enable(F_CODCMS); + enable(F_DESCRIZ); + sfield(F_RIGHE).destroy(); + _dirty = false; + return false; + } + break; + case DLG_CHECKALL: + if (e == fe_button) + { + check_all(!one_checked()); } break; default: @@ -46,7 +90,31 @@ bool TVariazione_budget_mask::on_field_event(TOperable_field& o, TField_event e, } -void TVariazione_budget_mask::carica_rmovana() +//controlla sulla colonna delle spunte se almeno una è checkata +bool TVariazione_budget_mask::one_checked() const +{ + TSheet_field& sf_righe = sfield(F_RIGHE); + + FOR_EACH_SHEET_ROW(sf_righe, i, riga) + { + if (riga->get_char(0) > ' ') + return true; + } + return false; +} + +//checka-dechecka la colonna di spunte dello sheet +void TVariazione_budget_mask::check_all(const bool checked) +{ + TSheet_field& sf_righe = sfield(F_RIGHE); + + FOR_EACH_SHEET_ROW(sf_righe, i, riga) + riga->add(checked ? "X" : "", 0); + + sf_righe.force_update(); +} + +int TVariazione_budget_mask::carica_rmovana() { TString query; query << "USE RMOVANA KEY 4\n"; @@ -77,11 +145,11 @@ void TVariazione_budget_mask::carica_rmovana() //chiave iniziale di riga const TString& cdc = rmovana.get(RMOVANA_CODCCOSTO).as_string(); - row.add(cdc, 0); + row.add(cdc, 1); const TString& fase = rmovana.get(RMOVANA_CODFASE).as_string(); - row.add(fase, 1); + row.add(fase, 2); const TString& conto = rmovana.get(RMOVANA_CODCONTO).as_string(); - row.add(conto, 2); + row.add(conto, 3); //date competenza iniziale e finale const TDate datacomp = rmovana.get("MOVANA."MOVANA_DATACOMP).as_date(); @@ -98,44 +166,46 @@ void TVariazione_budget_mask::carica_rmovana() if (!datafcomp.ok()) datafcomp = datacomp; - row.add(datacomp, 3); - row.add(datafcomp, 4); + row.add(datacomp, 4); + row.add(autofcomp ? "X" : "", 5); + row.add(datafcomp, 6); //costo o ricavo? all'indbil l'ardua sentenza! TAnal_bill bill(conto, cdc, cms, fase); const int indbil = bill.indicatore_bilancio(); const char* str_indbil = indbil == 3 ? "C" : "R"; - row.add(str_indbil, 5); + row.add(str_indbil, 7); real valore = rmovana.get(RMOVANA_IMPORTO).as_real(); const char sezione = rmovana.get(RMOVANA_SEZIONE).as_string()[0]; TImporto importo(sezione, valore); importo.normalize(indbil == 3 ? 'D' : 'A'); valore = importo.valore(); - row.add(valore.string(), 6); + row.add(valore.string(), 8); - //recupera il saldo finale in base alla chiave cms/cdc/fase/conto e lo mette nel campo consuntivo - + //recupera il saldo finale consuntivo! in base alla chiave cms/cdc/fase/conto e lo mette nel campo consuntivo const TDate dataini, datafin; const TSaldanal& saldanal = ca_saldo(bill, dataini, datafin, _saldanal_consuntivo | _saldanal_ultima_imm); TImporto saldo_finale = saldanal._fin; saldo_finale.normalize(indbil == 3 ? 'D' : 'A'); const real saldo_finale_valore = saldo_finale.valore(); - row.add(saldo_finale_valore.string(), 7); + row.add(saldo_finale_valore.string(), 9); //completa la riga - row.add(rmovana.get(RMOVANA_DESCR).as_string(), 8); - row.add(rmovana.get(RMOVANA_NUMREG).as_int(), 9); - row.add(rmovana.get(RMOVANA_NUMRIG).as_int(), 10); + row.add(rmovana.get(RMOVANA_DESCR).as_string(), 10); + row.add(rmovana.get(RMOVANA_NUMREG).as_int(), 11); + row.add(rmovana.get(RMOVANA_NUMRIG).as_int(), 12); const TString& tipomov = rmovana.get("MOVANA."MOVANA_TIPOMOV).as_string(); - row.add(tipomov, 11); + row.add(tipomov, 13); //disabilita tutti i campi ma non l'intera riga, perchè deve poter cliccare sul numero riga.. //..per procedere alle operazioni di pareggio - if (tipomov != "V") - sf_righe.disable_cell(sf_righe.items() - 1, -1); + //if (tipomov != "V") + //sf_righe.disable_cell(sf_righe.items() - 1, -1); } sf_righe.force_update(); + + return sf_righe.items(); } /////////////////////////////////////// diff --git a/ps/ps1001300a.h b/ps/ps1001300a.h index 2d1e0c1ab..0fc1d19e1 100755 --- a/ps/ps1001300a.h +++ b/ps/ps1001300a.h @@ -1,19 +1,32 @@ //campi ps1001300a.uml -#define F_CODCMS 201 -#define F_DESCRIZ 202 -#define F_RIGHE 210 +#define F_CODCMS 201 +#define F_DESCRIZ 202 +#define F_DATAINICMS 203 +#define F_DATAFINECMS 204 +#define F_PROROGATA 205 +#define F_DATAPRORCMS 206 +#define F_DATAREG 207 +#define F_CODCAUS 208 +#define F_DESCAUS 209 + +#define F_RIGHE 220 + +//bottoni +#define DLG_CHECKALL 250 //campi dello sheet -#define F_CDC 101 -#define F_FASE 102 -#define F_CONTO 103 -#define F_DATACOMP 104 -#define F_DATAFCOMP 105 -#define F_COSRIC 106 -#define F_IMPORTO 107 -#define F_MATURATO 108 -#define F_DESCR 109 -#define F_NUMREG 110 -#define F_NUMRIG 111 -#define F_TIPOMOV 112 +#define S_CHECK 101 +#define S_CDC 102 +#define S_FASE 103 +#define S_CONTO 104 +#define S_DATACOMP 105 +#define S_AUTOFCOMP 106 +#define S_DATAFCOMP 107 +#define S_COSRIC 108 +#define S_IMPORTO 109 +#define S_MATURATO 110 +#define S_DESCR 111 +#define S_NUMREG 112 +#define S_NUMRIG 113 +#define S_TIPOMOV 114 diff --git a/ps/ps1001300a.uml b/ps/ps1001300a.uml index e0fbdcf03..921d647a5 100755 --- a/ps/ps1001300a.uml +++ b/ps/ps1001300a.uml @@ -1,26 +1,68 @@ #include "ps1001300a.h" TOOLBAR "" 0 0 0 2 -#include + +BUTTON DLG_SAVEREC 2 2 +BEGIN + PROMPT 1 1 "~Salva" + PICTURE TOOL_SAVEREC +END + +BUTTON DLG_NULL 4 2 +BEGIN + PROMPT 2 1 "" + PICTURE 0 +END + +BUTTON DLG_CHECKALL 2 2 +BEGIN + PROMPT 3 1 "~Tutti" + PICTURE TOOL_MULTISEL +END + +BUTTON DLG_NULL 4 2 +BEGIN + PROMPT 2 1 "" + PICTURE 0 +END +//allinea alla dataini +//allinea alla data fine +BUTTON DLG_NULL 4 2 +BEGIN + PROMPT 2 1 "" + PICTURE 0 +END + +#include + ENDPAGE PAGE "Variazione Budget" 0 2 0 0 +GROUPBOX DLG_NULL 78 4 +BEGIN + PROMPT 0 0 "@bCommessa" +END + STRING F_CODCMS 20 BEGIN - PROMPT 1 1 "Commessa " + PROMPT 1 1 "" USE LF_COMMESSE INPUT CODCMS F_CODCMS DISPLAY "Codice@20" CODCMS DISPLAY "Descrizione@50" DESCRIZ OUTPUT F_CODCMS CODCMS OUTPUT F_DESCRIZ DESCRIZ + OUTPUT F_DATAINICMS DATAINIZIO + OUTPUT F_DATAFINECMS DATAFINE + OUTPUT F_PROROGATA PROROGA + OUTPUT F_DATAPRORCMS DATAPROR CHECKTYPE REQUIRED END -STRING F_DESCRIZ 50 44 +STRING F_DESCRIZ 50 BEGIN - PROMPT 34 1 "" + PROMPT 25 1 "" USE LF_COMMESSE KEY 2 INPUT DESCRIZ F_DESCRIZ DISPLAY "Descrizione@50" DESCRIZ @@ -29,18 +71,78 @@ BEGIN CHECKTYPE REQUIRED END +DATE F_DATAINICMS +BEGIN + PROMPT 1 2 "Inizio " +END + +DATE F_DATAFINECMS +BEGIN + PROMPT 22 2 "Fine " +END + +BOOL F_PROROGATA +BEGIN + PROMPT 43 2 "Prorogata" + MESSAGE FALSE CLEAR,F_DATAPRORCMS + MESSAGE ENABLE,F_DATAPRORCMS +END + +DATE F_DATAPRORCMS +BEGIN + PROMPT 57 2 "Proroga " +END + +GROUPBOX DLG_NULL 78 3 +BEGIN + PROMPT 0 4 "@bParametri movimenti analitici da generare" +END + +DATE F_DATAREG +BEGIN + PROMPT 1 5 "Data reg. " + CHECKTYPE REQUIRED + FLAGS "A" +END + +STRINGA F_CODCAUS 3 +BEGIN + PROMPT 24 5 "Causale " + USE LF_CAUSALI SELECT MOVIND!='' + INPUT CODCAUS F_CODCAUS + DISPLAY "Codice" CODCAUS + DISPLAY "Descrizione@50" DESCR + OUTPUT F_CODCAUS CODCAUS + OUTPUT F_DESCAUS DESCR + CHECKTYPE REQUIRED + FLAGS "U" +END + +STRINGA F_DESCAUS 50 37 +BEGIN + PROMPT 38 5 "" + USE LF_CAUSALI KEY 2 SELECT MOVIND!='' + INPUT DESCR F_DESCAUS + DISPLAY "Descrizione@50" DESCR + DISPLAY "Codice" CODCAUS + COPY OUTPUT F_CODCAUS + CHECKTYPE REQUIRED +END + TEXT -1 BEGIN - PROMPT 0 3 "@bRighe movimenti di budget" + PROMPT 0 7 "@bRighe movimenti di budget" END SPREADSHEET F_RIGHE BEGIN - PROMPT 1 4 "Righe" + PROMPT 1 8 "Righe" + ITEM "@1C" ITEM "Sede@4" ITEM "Fase@5" ITEM "Conto@12" ITEM "Iniz comp." + ITEM "AC@C" ITEM "Fine comp." ITEM "C/R" ITEM "Importo@15" @@ -57,67 +159,77 @@ ENDMASK ///////////////////////////////////////// //maschera di riga -PAGE "Riga analitica" -1 -1 70 14 +PAGE "Riga analitica" -1 -1 70 15 -STRING F_CDC 4 +BOOLEAN S_CHECK BEGIN - PROMPT 1 1 "Sede " + PROMPT 1 1 "Applica " END -STRING F_FASE 5 +STRING S_CDC 4 BEGIN - PROMPT 1 2 "Fase " + PROMPT 1 2 "Sede " END -STRING F_CONTO 12 +STRING S_FASE 5 BEGIN - PROMPT 1 3 "Conto " + PROMPT 1 3 "Fase " END -DATE F_DATACOMP +STRING S_CONTO 12 BEGIN - PROMPT 1 4 "Ini.comp " + PROMPT 1 4 "Conto " END -DATE F_DATAFCOMP +DATE S_DATACOMP BEGIN - PROMPT 1 5 "Fin.comp " + PROMPT 1 5 "Ini.comp " END -STRING F_COSRIC 1 +BOOLEAN S_AUTOFCOMP BEGIN - PROMPT 1 6 "Cst/Ric " + PROMPT 1 6 "AutoComp " END -NUMBER F_IMPORTO 15 2 +DATE S_DATAFCOMP BEGIN - PROMPT 1 7 "Importo " + PROMPT 1 7 "Fin.comp " END -NUMBER F_MATURATO 15 2 +STRING S_COSRIC 1 BEGIN - PROMPT 1 8 "Maturato " + PROMPT 1 8 "Cst/Ric " +END + +NUMBER S_IMPORTO 15 2 +BEGIN + PROMPT 1 9 "Importo " +END + +NUMBER S_MATURATO 15 2 +BEGIN + PROMPT 1 10 "Maturato " FLAGS "L" END -STRING F_DESCR 50 +STRING S_DESCR 50 BEGIN - PROMPT 1 9 "Descr. " + PROMPT 1 11 "Descr. " END -NUMBER F_NUMREG 7 +NUMBER S_NUMREG 7 BEGIN - PROMPT 1 10 "N. reg. " + PROMPT 1 12 "N. reg. " END -NUMBER F_NUMRIG 3 +NUMBER S_NUMRIG 3 BEGIN - PROMPT 1 11 "N. riga " + PROMPT 1 13 "N. riga " END -STRING F_TIPOMOV 1 +STRING S_TIPOMOV 1 BEGIN - PROMPT 1 12 "Tipo " + PROMPT 1 14 "Tipo " END ENDPAGE