diff --git a/ps/pd6342200.cpp b/ps/pd6342200.cpp index b5d4377bb..fed908a2c 100755 --- a/ps/pd6342200.cpp +++ b/ps/pd6342200.cpp @@ -171,8 +171,12 @@ void TImporta_da_BCS_app::genera_movana(const TFilename& file) { if (!pi.addstatus(1)) break; - + const int anno = recset.get("ANNO").as_int(); + + if(anno <= 0) + continue; + const int mese = recset.get("MESE").as_int(); const int giorno = recset.get("GIORNO").as_int(); const TDate data(recset.get("GIORNO").as_int(), recset.get("MESE").as_int(), anno); diff --git a/ps/pd6342400.cpp b/ps/pd6342400.cpp index a2697d503..4fbe14ecd 100755 --- a/ps/pd6342400.cpp +++ b/ps/pd6342400.cpp @@ -73,7 +73,7 @@ void TQuadra_movana_msk::costruisci_sheet(TSheet_field& s, const short dlg) int sy = 3; short sdlg = dlg; - _scdc_sid = _scdc_lid = _scms_sid = _scms_lid = _sfase_sid = _sfase_lid = _sconto_sid = _sconto_lid-1; + _scdc_sid = _scdc_lid = _scms_sid = _scms_lid = _sfase_sid = _sfase_lid = _sconto_sid = _sconto_lid = -1; for (int i = 0; i < 2; i++) { @@ -158,14 +158,15 @@ void TQuadra_movana_msk::costruisci_sheet(TSheet_field& s, const short dlg) void TQuadra_movana_msk::get_row_anal_fields(TToken_string& row, TString& cdc, TString& cms, TString& fase, TString& codconto, const short sdlg) { - TMask& m = sfield(sdlg).sheet_mask(); + TSheet_field& sheet = sfield(sdlg); + TMask& m = sheet.sheet_mask(); TString val; cdc.cut(0); if (_scdc_sid >= 0) for ( short id = _scdc_sid; id <= _scdc_lid; id++) { - val = m.get(id); + val = row.get(sheet.cid2index(id)); val.rpad(m.field(id).size()); cdc << val; } @@ -174,7 +175,7 @@ void TQuadra_movana_msk::get_row_anal_fields(TToken_string& row, TString& cdc, T if (_scms_sid >= 0) for ( short id = _scms_sid; id <= _scms_lid; id++) { - val = m.get(id); + val = row.get(sheet.cid2index(id)); val.rpad(m.field(id).size()); cms << val; } @@ -183,7 +184,7 @@ void TQuadra_movana_msk::get_row_anal_fields(TToken_string& row, TString& cdc, T if (_sfase_sid >= 0) for ( short id = _sfase_sid; id <= _sfase_lid; id++) { - val = m.get(id); + val = row.get(sheet.cid2index(id)); val.rpad(m.field(id).size()); fase << val; } @@ -192,7 +193,7 @@ void TQuadra_movana_msk::get_row_anal_fields(TToken_string& row, TString& cdc, T if (_sconto_sid >= 0) for ( short id = _sconto_sid; id <= _sconto_lid; id++) { - val = m.get(id); + val = row.get(sheet.cid2index(id)); val.rpad(m.field(id).size()); codconto << val; } @@ -349,7 +350,7 @@ void TQuadra_movana_msk::riempi_sheets() rrow.add(datacomp, rs.cid2index(Q_DATACOMP)); put_row_anal_fields(rrow, codcosto, codcms, codfase, codconto, F_MOVQUAD); - if(descrizione == "Riga quadratura") + if(descrizione == "Riga di quadratura") rs.disable_row(r - 1); } } @@ -370,7 +371,6 @@ void TQuadra_movana_msk::sposta_a_destra() rrow = lrow; ls.destroy(ls.selected()); - ls.force_update(); rs.force_update(); calcola_totale(rs); @@ -388,7 +388,6 @@ void TQuadra_movana_msk::sposta_a_sinistra() rs.destroy(rs.selected()); ls.force_update(); - rs.force_update(); calcola_totale(rs); } @@ -441,11 +440,17 @@ void TQuadra_movana_msk::crea_riga_quadratura() TQuadra_movana_msk::TQuadra_movana_msk() : TAutomask("pd6342400a") { + disable(DLG_CERCA); + + const TDate data(TODAY); + const TDate primo(1, 1, data.year()); + set(F_DADATA, primo); + TConfig& cfg = ca_config(); const bool use_pdcc = cfg.get_bool("UsePdcc"); const int logicnum = use_pdcc ? LF_PCON : LF_PCONANA; - const int nfields = ca_create_fields_compact(*this, 0, logicnum, 2, 6, F_CDC1, F_CDCD1); + const int nfields = ca_create_fields_compact(*this, 0, logicnum, 2, 6, F_CDC1, F_CDC1 + 50); for (int i = 0; i < nfields; i++) { @@ -491,26 +496,29 @@ void TQuadra_movana_msk::registra() rs.sort(sort_by_numreg); rs.force_update(); - long numregold = 0L; + long numregold = -1; TLocalisamfile file(LF_MOVANA); TAnal_mov movana(0); FOR_EACH_SHEET_ROW(rs, r, riga) { TToken_string& row = *(TToken_string*)riga; + + TString80 descr = row.get(rs.cid2index(Q_DESCR)); + if(descr == "Riga di quadratura") + continue; - if(numregold < row.get_long(rs.cid2index(Q_NUMREG))) + if(numregold < 0L) + movana.read(row.get_long(rs.cid2index(Q_NUMREG))); + else if(numregold < row.get_long(rs.cid2index(Q_NUMREG))) { - if(!movana.empty()) - { - movana.rewrite_write(file); - movana.zero(); - movana.read(row.get_long(rs.cid2index(Q_NUMREG))); - } - movana.destroy_row(row.get_long(rs.cid2index(Q_NUMRIGA)), true); - } + movana.rewrite_write(file); + movana.zero(); + movana.read(row.get_long(rs.cid2index(Q_NUMREG))); + } + movana.destroy_row(row.get_long(rs.cid2index(Q_NUMRIGA)), true); } - movana.rewrite_write(file); + movana.rewrite_write(file); const TDate oggi(TODAY); @@ -523,8 +531,36 @@ void TQuadra_movana_msk::registra() TImporto totale; + FOR_EACH_SHEET_ROW(rs, r1, riga1) + { + TToken_string& r = *(TToken_string*)riga1; + TImporto importo; + importo = r; + TRectype& rmovana = movana.new_row(); + TString80 cdc; + TString80 cms; + TString80 fase; + TString80 conto; + get_row_anal_fields(r, cdc, cms, fase, conto, F_MOVQUAD); + rmovana.put(RMOVANA_ANNOES, oggi.year()); + rmovana.put(RMOVANA_SEZIONE, importo.sezione()); + rmovana.put(RMOVANA_IMPORTO, importo.valore()); + rmovana.put(RMOVANA_DESCR, r.get(rs.cid2index(Q_DESCR))); + rmovana.put(RMOVANA_CODCCOSTO, cdc); + rmovana.put(RMOVANA_CODCMS, cms); + rmovana.put(RMOVANA_CODFASE, fase); + rmovana.put(RMOVANA_CODCONTO, conto); + rmovana.put(RMOVANA_ANNOES, oggi.year()); + rmovana.put(RMOVANA_DATACOMP, oggi); + + totale += importo; + } + + movana.put(MOVANA_SEZIONE, totale.sezione()); + movana.put(MOVANA_TOTDOC, totale.valore()); + movana.write(file); } bool TQuadra_movana_msk::on_field_event(TOperable_field& o, TField_event e, long jolly) @@ -551,6 +587,26 @@ bool TQuadra_movana_msk::on_field_event(TOperable_field& o, TField_event e, long registra(); return false; } + break; + case DLG_ANNULLA: + if(e == fe_button) + { + reset(F_DADATA); + reset(F_ADATA); + reset(F_NUMREGCG); + reset(F_DESREGCG); + reset(F_TOTDOC); + reset(F_TOTRIGHE); + + TSheet_field& ls = sfield(F_MOVNNQUAD); + ls.destroy(); + ls.force_update(); + + TSheet_field& rs = sfield(F_MOVQUAD); + rs.destroy(); + rs.force_update(); + } + break; case DLG_USER: if(e == fe_button) { @@ -563,6 +619,19 @@ bool TQuadra_movana_msk::on_field_event(TOperable_field& o, TField_event e, long return false; } break; + case F_NUMREGCG: + if(e == fe_modify) + { + int cazzone = get_int(F_NUMREGCG); + if(get(F_NUMREGCG).full()) + enable(DLG_CERCA); + else + { + disable(DLG_CERCA); + reset(F_NUMREGCG); + } + } + break; case F_MOVNNQUAD: case F_MOVQUAD: if(e == se_query_add) diff --git a/ps/pd6342400a.h b/ps/pd6342400a.h index 6fff9e7a0..ff2a2bf6a 100755 --- a/ps/pd6342400a.h +++ b/ps/pd6342400a.h @@ -9,15 +9,12 @@ #define F_CDC2 208 #define F_CDC3 209 #define F_CDC4 210 -#define F_CDCD1 257 -#define F_CDCD2 258 -#define F_CDCD3 259 -#define F_CDCD4 260 #define F_MOVNNQUAD 211 #define F_MOVQUAD 212 #define DLG_CERCA 801 #define DLG_SALVA 802 +#define DLG_ANNULLA 803 #define NQ_DARE 101 #define NQ_AVERE 102 diff --git a/ps/pd6342400a.uml b/ps/pd6342400a.uml index fe6350234..83a023da4 100755 --- a/ps/pd6342400a.uml +++ b/ps/pd6342400a.uml @@ -14,6 +14,12 @@ BEGIN PICTURE TOOL_SAVEREC END +BUTTON DLG_ANNULLA +BEGIN + PROMPT 1 1 "Annulla" + PICTURE TOOL_CANCEL +END + #include ENDPAGE @@ -28,11 +34,14 @@ END DATE F_DADATA BEGIN PROMPT 2 1 "Considera i movimenti dal " + CHECKTYPE REQUIRED END DATE F_ADATA BEGIN PROMPT 42 1 "al " + FLAGS "A" + CHECKTYPE REQUIRED END GROUPBOX DLG_NULL 78 5