diff --git a/build/PATCHDEF.EXE b/build/PATCHDEF.EXE index decf8831c..0f9b02344 100644 Binary files a/build/PATCHDEF.EXE and b/build/PATCHDEF.EXE differ diff --git a/build/fastrip.exe b/build/fastrip.exe index 579752d23..442af1c5a 100644 Binary files a/build/fastrip.exe and b/build/fastrip.exe differ diff --git a/cd/test/cg0798.txt b/cd/test/cg0798.txt index 2a2f48d24..95204f27d 100644 --- a/cd/test/cg0798.txt +++ b/cd/test/cg0798.txt @@ -1,3 +1,4 @@ cg2.exe Aggiunto controllo su data operazione maggiore della data di inizio fatturazione elettronica +Modifica modaut diff --git a/cd/test/cg0798a.ini b/cd/test/cg0798a.ini index ae8523faa..6fd0da056 100644 --- a/cd/test/cg0798a.ini +++ b/cd/test/cg0798a.ini @@ -8,76 +8,76 @@ Patch = 0798 Versione = 21511200 [cg99] -Kill(0) = bastpor.rep|x -Kill(1) = batbins.msk|x -Kill(2) = bastcam.msk|x -Kill(3) = bastnot.msk|x -Kill(4) = bastesc.msk|x -Kill(5) = bastleg.msk|x -Kill(6) = bastpor.msk|x -Kill(7) = batbscc.msk|x -Kill(8) = batblia.msk|x -Kill(9) = bastzon.rep|x -Kill(10) = batbarb.msk|x -Kill(11) = batblia.msk|x -Kill(12) = batbdpn.msk|x -Kill(13) = bastcco.msk|x -Kill(14) = bastcam.rep|x -Kill(15) = bastcve.msk|x +Kill(0) = bastver.msk|x +Kill(1) = bastleg.rep|x +Kill(2) = bastesc.rep|x +Kill(3) = batbcco.msk|x +Kill(4) = bastmsp.rep|x +Kill(5) = batbtra.msk|x +Kill(6) = batbtit.msk|x +Kill(7) = batblbu.msk|x +Kill(8) = bastivd.rep|x +Kill(9) = bastvet.msk|x +Kill(10) = bastcve.msk|x +Kill(11) = batbntb.msk|x +Kill(12) = bastcam.rep|x +Kill(13) = batbind.msk|x +Kill(14) = batbvet.msk|x +Kill(15) = bastscc.rep|x Kill(16) = batbleg.msk|x -Kill(17) = batbvet.msk|x -Kill(18) = batbcco.msk|x -Kill(19) = bastver.msk|x -Kill(20) = batbind.msk|x -Kill(21) = batbntb.msk|x -Kill(22) = bastivd.msk|x -Kill(23) = bastscc.rep|x -Kill(24) = bastmsp.rep|x -Kill(25) = bastleg.rep|x -Kill(26) = bastivd.rep|x -Kill(27) = batbtit.msk|x -Kill(28) = bastntb.rep|x -Kill(29) = bastntb.msk|x -Kill(30) = batbtra.msk|x -Kill(31) = bastesc.rep|x -Kill(32) = bastvet.msk|x -Kill(33) = batblbu.msk|x -Kill(34) = batbinl.msk|x -Kill(35) = batbivd.msk|x -Kill(36) = bastnot.rep|x -Kill(37) = bastcfi.rep|x -Kill(38) = bastcfi.msk|x -Kill(39) = batbmsp.msk|x -Kill(40) = bastreg.rep|x -Kill(41) = bastvet.rep|x -Kill(42) = batbnot.msk|x -Kill(43) = bastver.rep|x -Kill(44) = batbzon.msk|x -Kill(45) = batbcfi.msk|x +Kill(17) = bastivd.msk|x +Kill(18) = batblia.msk|x +Kill(19) = batbarb.msk|x +Kill(20) = bastcco.msk|x +Kill(21) = batbdpn.msk|x +Kill(22) = batbver.msk|x +Kill(23) = batbpor.msk|x +Kill(24) = batbndo.msk|x +Kill(25) = bastzon.msk|x +Kill(26) = bastarb.rep|x +Kill(27) = bastcco.rep|x +Kill(28) = batbcam.msk|x +Kill(29) = cgtbcon.msk|x +Kill(30) = bastpdb.msk|x +Kill(31) = batbdel.msk|x +Kill(32) = batbesc.msk|x +Kill(33) = batbpdb.msk|x +Kill(34) = batbreg.msk|x +Kill(35) = bastscc.msk|x +Kill(36) = bastdpn.msk|x +Kill(37) = bastndo.rep|x +Kill(38) = batbmsp.msk|x +Kill(39) = batbcfi.msk|x +Kill(40) = batbcve.msk|x +Kill(41) = bastcfi.msk|x +Kill(42) = batbzon.msk|x +Kill(43) = bastarb.msk|x +Kill(44) = bastpdb.rep|x +Kill(45) = bastndo.msk|x Kill(46) = bastreg.msk|x -Kill(47) = bastpdb.rep|x -Kill(48) = batbdel.msk|x -Kill(49) = batbcam.msk|x -Kill(50) = bastarb.msk|x -Kill(51) = batbcve.msk|x -Kill(52) = bastdpn.rep|x -Kill(53) = bastndo.msk|x -Kill(54) = batbesc.msk|x -Kill(55) = cgtbcon.msk|x -Kill(56) = bastdpn.msk|x -Kill(57) = batbreg.msk|x -Kill(58) = batbndo.msk|x -Kill(59) = batbver.msk|x -Kill(60) = batbpdb.msk|x -Kill(61) = bastpdb.msk|x -Kill(62) = bastndo.rep|x -Kill(63) = bastscc.msk|x -Kill(64) = bastzon.msk|x -Kill(65) = batbpor.msk|x -Kill(66) = bastcco.rep|x -Kill(67) = bastarb.rep|x -Kill(68) = bastcve.rep|x -Kill(69) = bastmsp.msk|x +Kill(47) = bastdpn.rep|x +Kill(48) = bastntb.msk|x +Kill(49) = batbivd.msk|x +Kill(50) = bastvet.rep|x +Kill(51) = bastntb.rep|x +Kill(52) = batbinl.msk|x +Kill(53) = bastreg.rep|x +Kill(54) = bastcfi.rep|x +Kill(55) = bastver.rep|x +Kill(56) = bastnot.rep|x +Kill(57) = batbnot.msk|x +Kill(58) = bastmsp.msk|x +Kill(59) = bastcve.rep|x +Kill(60) = bastzon.rep|x +Kill(61) = batblia.msk|x +Kill(62) = batbins.msk|x +Kill(63) = bastpor.rep|x +Kill(64) = bastleg.msk|x +Kill(65) = bastesc.msk|x +Kill(66) = bastnot.msk|x +Kill(67) = bastcam.msk|x +Kill(68) = batbscc.msk|x +Kill(69) = bastpor.msk|x [cg] Data = 27-05-2019 diff --git a/cd/test/cg0798a1.zip b/cd/test/cg0798a1.zip index 63006b71a..f009c7050 100644 Binary files a/cd/test/cg0798a1.zip and b/cd/test/cg0798a1.zip differ diff --git a/cd/test/cg0800.txt b/cd/test/cg0800.txt new file mode 100644 index 000000000..930fba315 --- /dev/null +++ b/cd/test/cg0800.txt @@ -0,0 +1,4 @@ +cg5500b.msk +cg5.exe + +Spostata la colonna iva a credito o debito nella seconda colonna nella visualizzazione liquidazione \ No newline at end of file diff --git a/cd/test/cg0800a.ini b/cd/test/cg0800a.ini new file mode 100644 index 000000000..8e27a34b7 --- /dev/null +++ b/cd/test/cg0800a.ini @@ -0,0 +1,94 @@ +[Main] +Demo=0 + +[cg1] +File(53) = cg5.exe|X +File(62) = cg5500b.msk|X +Patch = 800 +Versione = 21511200 + +[cg99] +Kill(0) = bastcve.msk|x +Kill(1) = bastleg.msk|x +Kill(2) = bastntb.msk|x +Kill(3) = batbntb.msk|x +Kill(4) = bastmsp.msk|x +Kill(5) = batblia.msk|x +Kill(6) = bastnot.msk|x +Kill(7) = bastzon.rep|x +Kill(8) = bastcam.msk|x +Kill(9) = bastcfi.rep|x +Kill(10) = batbpor.msk|x +Kill(11) = bastcam.rep|x +Kill(12) = bastivd.msk|x +Kill(13) = batbind.msk|x +Kill(14) = batbver.msk|x +Kill(15) = bastesc.msk|x +Kill(16) = batbleg.msk|x +Kill(17) = bastcve.rep|x +Kill(18) = batbdpn.msk|x +Kill(19) = bastscc.rep|x +Kill(20) = bastcco.msk|x +Kill(21) = batbvet.msk|x +Kill(22) = batbscc.msk|x +Kill(23) = bastmsp.rep|x +Kill(24) = bastpor.msk|x +Kill(25) = batbtra.msk|x +Kill(26) = bastesc.rep|x +Kill(27) = batbcco.msk|x +Kill(28) = bastscc.msk|x +Kill(29) = bastarb.msk|x +Kill(30) = bastivd.rep|x +Kill(31) = cgtbcon.msk|x +Kill(32) = bastndo.rep|x +Kill(33) = bastvet.msk|x +Kill(34) = batbzon.msk|x +Kill(35) = bastver.msk|x +Kill(36) = bastdpn.msk|x +Kill(37) = bastleg.rep|x +Kill(38) = bastndo.msk|x +Kill(39) = bastreg.rep|x +Kill(40) = batbcam.msk|x +Kill(41) = batbcfi.msk|x +Kill(42) = bastdpn.rep|x +Kill(43) = bastcfi.msk|x +Kill(44) = batbinl.msk|x +Kill(45) = batbcve.msk|x +Kill(46) = bastreg.msk|x +Kill(47) = batbreg.msk|x +Kill(48) = bastver.rep|x +Kill(49) = bastpor.rep|x +Kill(50) = batbmsp.msk|x +Kill(51) = batbivd.msk|x +Kill(52) = batbnot.msk|x +Kill(53) = bastntb.rep|x +Kill(54) = batbins.msk|x +Kill(55) = bastvet.rep|x +Kill(56) = bastnot.rep|x +Kill(57) = bastpdb.rep|x +Kill(58) = batbtit.msk|x +Kill(59) = batblbu.msk|x +Kill(60) = batbesc.msk|x +Kill(61) = bastarb.rep|x +Kill(62) = bastzon.msk|x +Kill(63) = batbarb.msk|x +Kill(64) = bastpdb.msk|x +Kill(65) = batbndo.msk|x +Kill(66) = batblia.msk|x +Kill(67) = batbdel.msk|x +Kill(68) = batbpdb.msk|x +Kill(69) = bastcco.rep|x + +[cg] +Data = 27-05-2019 +Descrizione = Contabilita' Generale +Dischi = 1 +Moduli = ba +OEM = +Patch = 800 +PostProcess = bainst -0 CG +PreProcess = +Prezzo(1) = +Prezzo(2) = +Versione = 21511200 + diff --git a/cd/test/cg0800a1.zip b/cd/test/cg0800a1.zip new file mode 100644 index 000000000..d8c65ea98 Binary files /dev/null and b/cd/test/cg0800a1.zip differ diff --git a/src/cg/cg5500.cpp b/src/cg/cg5500.cpp index 3f8f2bdb3..fcead0086 100755 --- a/src/cg/cg5500.cpp +++ b/src/cg/cg5500.cpp @@ -559,13 +559,13 @@ bool Visliq_app::calc_int(TMask_field& f, KEY k) round_imposta(intr); vers = vers_netto + intr; - f.mask().set(106, vers); - f.mask().set(107, intr); + f.mask().set(S_VERSAMENTO, vers); + f.mask().set(S_INTERESSI, intr); TToken_string& row = sv.row(sel); - row.add(vers, 5); - row.add(intr, 6); + sv.set_row_cell(row, S_VERSAMENTO, vers); + sv.set_row_cell(row, S_INTERESSI, intr); sv.force_update(sel); } } @@ -638,12 +638,12 @@ bool Visliq_app::vis_all() _mask->set_handler(DLG_PRINT, print_handler); sh.sheet_mask().set_handler(100, sel_mese_sh1); - sh.sheet_mask().set_handler(104, enable_date); - sh.sheet_mask().set_handler(109, enable_date); - sh.sheet_mask().set_handler(110, check_date); + sh.sheet_mask().set_handler(S_RIMBORSO, enable_date); + sh.sheet_mask().set_handler(S_CREDF24, enable_date); + sh.sheet_mask().set_handler(S_DATAAUT, check_date); sv.sheet_mask().set_handler(100, sel_mese_sh2); - sv.sheet_mask().set_handler(106, calc_int); + sv.sheet_mask().set_handler(S_VERSAMENTO, calc_int); const bool new_print_2000 = true; // _year >= 2000; const bool compensabile = _lia->get("S9") == "CM"; @@ -652,16 +652,16 @@ bool Visliq_app::vis_all() if (compensabile) { const bool gestione_manuale = _lia->get_bool("B6"); - sh.enable_column(107, gestione_manuale); + sh.enable_column(S_CREDIVA, gestione_manuale); - for (int id = 108; shm.id2pos(id) > 0; id++) + for (int id = S_CREDF24PRE; shm.id2pos(id) > 0; id++) { - if ((id > 107 && id <= 110) || id == 114) + if ((id > S_CREDIVA && id <= S_DATAAUT) || id == S_DESCR) sh.enable_column(id, true); } } else - sh.enable_column(110); + sh.enable_column(S_DATAAUT); // fill the mask in read_general(*_mask); @@ -1477,24 +1477,25 @@ void Visliq_app::recalc_next_liq(int start_month, TSheet_field* sl, TSheet_field if (sl != NULL) { TToken_string& t = sl->row(row); - t.add(itoname(i),0); + + sl->set_row_cell(t, S_MESE, itoname(i)); const real iva_ven = _lam->get_real("R0"); // IVA acquisti const real iva_acq = _lam->get_real("R1"); // IVA vendite const real ris = iva_ven - iva_acq; - t.add(abs(ris).string(), 1); + sl->set_row_cell(t, S_RISULTATO, abs(ris).string()); const real r1 = _lim->get_real("R1"); bool enable_date = !r1.is_zero(); const real r5 = _lim->get_real("R5"); - t.add(ris == ZERO ? "" : (ris > ZERO ? "D" : "C"), 2); - t.add(r1, 3); - t.add(abs(r5), 4); + sl->set_row_cell(t, S_DEBCRED1, ris == ZERO ? "" : (ris > ZERO ? "D" : "C")); + sl->set_row_cell(t, S_RIMBORSO, r1); + sl->set_row_cell(t, S_RETTIFICHE, abs(r5)); if (!r5.is_zero()) - t.add(r5 >ZERO ? "D" : "C", 5); + sl->set_row_cell(t, S_DEBCRED2, r5 >ZERO ? "D" : "C"); const real criva = _lim->get_real("R15"); const real crf24 = _lim->get_real("R16"); @@ -1502,11 +1503,11 @@ void Visliq_app::recalc_next_liq(int start_month, TSheet_field* sl, TSheet_field TDate dautf24 = _lim->get_date("D1"); enable_date |= !autf24.is_zero(); - t.add(criva, 6); - t.add(crf24, 7); - t.add(autf24, 8); + sl->set_row_cell(t, S_CREDIVA, criva); + sl->set_row_cell(t, S_CREDF24PRE, crf24); + sl->set_row_cell(t, S_CREDF24, autf24); if (enable_date) - t.add(dautf24, 9); + sl->set_row_cell(t, S_DATAAUT, dautf24); if (compensabile) { cr_res += autf24; @@ -1514,33 +1515,32 @@ void Visliq_app::recalc_next_liq(int start_month, TSheet_field* sl, TSheet_field cr_res -= criva; if (cr_res < ZERO) { - sl->set_back_and_fore_color(COLOR_LTYELLOW, COLOR_DKRED, row, 7); - t.add("", 10); + sl->set_back_and_fore_color(COLOR_LTYELLOW, COLOR_DKRED, row, sl->cid2index(S_CREDF24PRE)); + sl->set_row_cell(t, S_CREDRES, ""); } else { - sl->set_back_and_fore_color(NORMAL_BACK_COLOR, NORMAL_COLOR, row, 7); - t.add(cr_res, 10); + sl->set_back_and_fore_color(NORMAL_BACK_COLOR, NORMAL_COLOR, row, sl->cid2index(S_CREDF24PRE)); + sl->set_row_cell(t, S_CREDRES, cr_res); } } else - t.add("", 10); + sl->set_row_cell(t, S_CREDRES, ""); real r0 = _lim->get_real("R0"); if (compensabile) r0 += autf24; - t.add(abs(r0).string(), 11); - t.add(r0 == ZERO ? "" : (r0 > ZERO ? "D" : "C"), 12); + sl->set_row_cell(t, S_IVA, abs(r0).string()); + sl->set_row_cell(t, S_DEBCRED3, r0 == ZERO ? "" : (r0 > ZERO ? "D" : "C")); t.add(_lim->get("S3"), 13); for (int kk = 3; kk < 6 ; kk++) sl->enable_cell(row, kk); - sl->enable_cell(row, 7); - sl->enable_cell(row, 8); - sl->enable_cell(row, 9); - sl->enable_cell(row, 9, enable_date); - sl->enable_cell(row, 14); + sl->enable_cell(row, S_CREDF24PRE); + sl->enable_cell(row, S_CREDF24); + sl->enable_cell(row, S_DATAAUT, enable_date); + sl->enable_cell(row, S_DESCR); } } sl->force_update(); @@ -1644,79 +1644,68 @@ void Visliq_app::read_general(TMask& m) const int row = (i/step) - 1; if (!look_lim(i)) { - if (sh.items() < row) - sh.row(row) = *(new TToken_string("||||||")); - else - sh.row(row) = "||||||"; - + TToken_string & t = sh.row(row); + + t.cut(0); sh.disable_cell(row, -1); - continue; } - - TToken_string* tt = NULL; - if (sh.items() < row) - tt = new TToken_string(80); - else - tt = &(sh.row(row)); - + else + { + const real iva_ven = _lam->get_real("R0"); // IVA acquisti + const real iva_acq = _lam->get_real("R1"); // IVA vendite + const real ris = iva_ven - iva_acq; + const real r1 = _lim->get_real("R1"); + const real r5 = _lim->get_real("R5"); + const int row = sh.set_row_cell(S_MESE, itoname(i)); + + sh.set_row_cell(S_RISULTATO, abs(ris), row); + sh.set_row_cell(S_DEBCRED1, ris == ZERO ? "" : (ris > ZERO ? "D" : "C"), row); + sh.set_row_cell(S_RIMBORSO, r1, row); + sh.set_row_cell(S_RETTIFICHE, abs(r5), row); + sh.set_row_cell(S_DEBCRED2, r5 == ZERO ? "" : (r5 > ZERO ? "D" : "C"), row); - const real iva_ven = _lam->get_real("R0"); // IVA acquisti - const real iva_acq = _lam->get_real("R1"); // IVA vendite - const real ris = iva_ven -iva_acq; - - const real r1 = _lim->get_real("R1"); - const real r5abs = abs(_lim->get_real("R5")); + const real criva = _lim->get_real("R15"); + const real crf24 = _lim->get_real("R16"); + const real autf24 = _lim->get_real("R20"); + bool enable_date = r1 != ZERO; - tt->add(itoname(i),0); - tt->add(abs(ris).string(),1); - - const int sris = ris.sign(); - const int sr5 = (_lim->get_real("R5")).sign(); - - tt->add(sris == 0 ? "" : (sris > 0 ? "D" : "C"),2); - tt->add(r1.string(),3); - tt->add(r5abs.string(),4); - bool enable_date = !r1.is_zero(); - tt->add(sr5 == 0 ? "" : (sr5 > 0 ? "D" : "C"),5); - - const real criva = _lim->get_real("R15"); - tt->add(criva.string(), 6); - const real crf24 = _lim->get_real("R16"); - tt->add(crf24.string(),7); - const real autf24 = _lim->get_real("R20"); - tt->add(autf24.string(),8); - enable_date |= !autf24.is_zero(); - TDate dautf24 = _lim->get_date("D1"); - if (enable_date) - tt->add(dautf24.string(),9); - sh.enable_cell(row, 9, enable_date); - if (compensabile) - { - cr_res += autf24; - cr_res -= crf24; - cr_res -= criva; - if (cr_res < ZERO) + sh.set_row_cell(S_CREDIVA, criva, row); + sh.set_row_cell(S_CREDF24PRE,crf24, row); + sh.set_row_cell(S_CREDF24, autf24 , row); + enable_date |= autf24 != ZERO; + if (enable_date) { - sh.set_back_and_fore_color(COLOR_LTYELLOW, COLOR_DKRED, row, 7); - tt->add("", 10); + const TDate dautf24 = _lim->get_date("D1"); + + sh.set_row_cell(S_DATAAUT, dautf24, row); + } + sh.enable_cell(row, sh.cid2index(S_DATAAUT), enable_date); + if (compensabile) + { + cr_res += autf24; + cr_res -= crf24; + cr_res -= criva; + if (cr_res < ZERO) + { + sh.set_back_and_fore_color(COLOR_LTYELLOW, COLOR_DKRED, row, sh.cid2index(S_CREDF24PRE)); + sh.set_row_cell(S_CREDRES, ZERO, row); + } + else + { + sh.set_back_and_fore_color(NORMAL_BACK_COLOR, NORMAL_COLOR, row, sh.cid2index(S_CREDF24PRE)); + sh.set_row_cell(S_CREDRES, cr_res , row); + } } else - { - sh.set_back_and_fore_color(NORMAL_BACK_COLOR, NORMAL_COLOR, row, 7); - tt->add(cr_res.string(), 10); - } - } - else - tt->add("", 10); - - real r0 = _lim->get_real("R0"); + sh.set_row_cell(S_CREDRES, ZERO, row); - //if (compensabile) - // r0 += autf24; - tt->add(abs(r0).string(), 11); - tt->add(r0 == ZERO ? "" : (r0 > ZERO ? "D" : "C"), 12); - tt->add(_lim->get("S3"), 13); - sh.row(row) = (*tt); + real r0 = _lim->get_real("R0"); + + sh.set_row_cell(S_IVA, abs(r0).string(), row); + sh.set_row_cell(S_DEBCRED3, r0 == ZERO ? "" : (r0 > ZERO ? "D" : "C"), row); + sh.set_row_cell(S_DESCR, _lim->get("S3"), row); + // sh.row(row) = (*tt); + } } sh.force_update(); @@ -1743,10 +1732,11 @@ void Visliq_app::read_general(TMask& m) if (m >= 12) m = tipod == 7 ? 12 : 13; // supercauto - if (m <= 0) continue; + if (m <= 0) + continue; versamenti[m - 1] += _del->get_real("R0"); - interessi[m - 1] += _del->get_real("R1"); + interessi[m - 1] += _del->get_real("R1"); date[m-1] = _del->get_date("D0"); TToken_string& b = banche[m-1]; b.add(_del->get("S7"),0); @@ -1759,33 +1749,26 @@ void Visliq_app::read_general(TMask& m) sv.destroy(); for (int i = 1; i <= 13; i++) { - if (!is_month_ok(i) && i != 13) - continue; + if (!is_month_ok(i) && i != 13) + continue; + nomemese = itoname(i == 13 ? 12 : i); + if (nomemese == "4 Trimestre") + nomemese = TR("4 Tr."); + if (i == 12) nomemese << TR(" acconto"); + if (i == 13) nomemese << TR(" saldo"); - nomemese = itoname(i == 13 ? 12 : i); - if (nomemese == "4 Trimestre") - nomemese = TR("4 Tr."); - if (i == 12) nomemese << TR(" acconto"); - if (i == 13) nomemese << TR(" saldo"); - - TToken_string tt; - tt.add(nomemese,0); // mese - tt.add(date[i-1].string(),1); // data vers. - tt.add(banche[i-1].get(0),2); // azienda - tt.add(banche[i-1].get(1),3); // dipendenza - tt.add(banche[i-1].get(2),4); // concessionaria - tt.add(versamenti[i - 1].string(), 5);// versamenti - tt.add(interessi[i - 1].string(), 6);// interessi + const int row = sv.set_row_cell(S_MESE, nomemese); // mese + + sv.set_row_cell(S_DATA, date[i - 1], row); // data vers. + sv.set_row_cell(S_ABI, banche[i - 1].get(0), row); // azienda + sv.set_row_cell(S_CAB, banche[i - 1].get(1), row); // dipendenza + sv.set_row_cell(S_CONC, banche[i - 1].get(2), row); // concessionaria + sv.set_row_cell(S_VERSAMENTO, versamenti[i - 1], row);// versamenti + sv.set_row_cell(S_INTERESSI, interessi[i - 1], row);// interessi - sv.row(-1) = tt; - if (i == 12) - sv.enable_cell(sv.items() - 1, -1, false); + if (i == 12) + sv.disable_cell(sv.items() - 1, -1); } - - // sh.enable_column(0, false); - // sv.enable_column(0, false); - - sh.force_update(); sv.force_update(); // save initial rows @@ -1840,10 +1823,8 @@ void Visliq_app::write_general(TMask& m) // risolve menata del dettaglio si'/no if (lfrommask) - { for (int i = 1; i <= 13; i++) - tt_ln.add(shm.get(101+i),i); - } + tt_ln.add(shm.get(101+i),i); // saltare una riga se dicembre (riga 11 == acconto) TToken_string& tt_vo = (TToken_string&)_vers_rows[i == 12 ? row + 1 : row]; @@ -1856,47 +1837,49 @@ void Visliq_app::write_general(TMask& m) } // traduci contenuto righe in real pila - real orett(tt_lo.get(4)); - real nrett(tt_ln.get(4)); - real orimb(tt_lo.get(3)); - real nrimb(tt_ln.get(3)); - real overs(tt_vo.get(5)); - real nvers(tt_vn.get(5)); - real crcode(tt_ln.get(6)); - real crf24(tt_ln.get(7)); - real oautf24(tt_lo.get(8)); - real autf24(tt_ln.get(8)); - TDate dautf24(tt_ln.get(9)); - TDate odate(tt_vo.get(1)); - TDate ndate(tt_vn.get(1)); - TString odbcr(tt_lo.get(5)); - TString ndbcr(tt_ln.get(5)); - TString8 oabi (tt_vo.get(2)); - TString8 nabi (tt_vn.get(2)); - TString8 ocab (tt_vo.get(3)); - TString8 ncab (tt_vn.get(3)); - TString ocon (tt_vo.get(4)); - TString ncon (tt_vn.get(4)); - TString descr(tt_ln.get(13)); + real orett(tt_lo.get(cid2index(S_RETTIFICHE))); + real nrett(sh.get_real_row_cell(row, S_RETTIFICHE)); + real orimb(tt_lo.get(cid2index(S_RIMBORSO))); + real nrimb(sh.get_real_row_cell(row, S_RIMBORSO)); + real crcode(sh.get_real_row_cell(row, S_CREDIVA)); + real crf24(sh.get_real_row_cell(row, S_CREDF24PRE)); + real oautf24(tt_lo.get(cid2index(S_CREDF24))); + real autf24(sh.get_real_row_cell(row, S_CREDF24)); + TDate dautf24(sh.get_date_row_cell(row, S_DATAAUT)); + TString odbcr(tt_lo.get(cid2index(S_DEBCRED2))); + TString ndbcr(sh.get_str_row_cell(row, S_DEBCRED2)); + TString descr(sh.get_str_row_cell(row, S_DESCR)); + + real overs(tt_vo.get(cid2index(S_VERSAMENTO))); + real nvers(sv.get_real_row_cell(row, S_VERSAMENTO)); + TDate odate(tt_vo.get(cid2index(S_DATAAUT))); + TDate ndate(sv.get_date_row_cell(row, S_DATAAUT)); + TString8 oabi(tt_vo.get(cid2index(S_ABI))); + TString8 nabi(sv.get_str_row_cell(row, S_ABI)); + TString8 ocab(tt_vo.get(cid2index(S_CAB))); + TString8 ncab(sv.get_str_row_cell(row, S_CAB)); + TString ocon(tt_vo.get(cid2index(S_CONC))); + TString ncon(sv.get_str_row_cell(row, S_CONC)); if (odbcr == "C") orett = -orett; if (ndbcr == "C") nrett = -nrett; // acconto (si considererà solo a dicembre) - TToken_string& vo = (TToken_string&)_vers_rows[_freqviva == "M" ? 11 : 3]; - TToken_string& vn = sv.row(_freqviva == "M" ? 11 : 3); - real oacct (vo.get(5)); - real nacct (vn.get(5)); - TDate aodate(vo.get(1)); - TDate andate(vn.get(1)); - TString8 aoabi (vo.get(2)); - TString8 anabi (vn.get(2)); - TString8 aocab (vo.get(3)); - TString8 ancab (vn.get(3)); - TString aocon (vo.get(4)); - TString ancon (vn.get(4)); - - was_lim = look_lim(i); + TToken_string& vo = (TToken_string&)_vers_rows[_freqviva == "M" ? 11 : 3]; + const int row_acc = _freqviva == "M" ? 11 : 3; + + real oacct(tt_vo.get(cid2index(S_VERSAMENTO))); + real nacct(sv.get_real_row_cell(row_acc, S_VERSAMENTO)); + TDate aodate(tt_vo.get(cid2index(S_DATA))); + TDate andate(sv.get_date_row_cell(row_acc, S_DATA)); + TString8 aoabi(tt_vo.get(cid2index(S_ABI))); + TString8 anabi(sv.get_str_row_cell(row_acc, S_ABI)); + TString8 aocab(tt_vo.get(cid2index(S_CAB))); + TString8 ancab(sv.get_str_row_cell(row_acc, S_CAB)); + TString aocon(tt_vo.get(cid2index(S_CONC))); + TString ancon(sv.get_str_row_cell(row_acc, S_CONC)); + + was_lim = look_lim(i); if (!was_lim) carry = false; // blocca riporto crediti e debiti @@ -2109,7 +2092,7 @@ void Visliq_app::write_general(TMask& m) } // Rimetti a posto righe sheet se serve - if (was_lim) + if (was_lim) // qui { const real iva_ven = _lam->get_real("R0"); // IVA acquisti diff --git a/src/cg/cg5500a.h b/src/cg/cg5500a.h index 9eb5cd22e..d213d4576 100755 --- a/src/cg/cg5500a.h +++ b/src/cg/cg5500a.h @@ -35,3 +35,24 @@ #define F_CODDITTA2 201 #define F_RAGSOC2 202 +#define S_MESE 101 +#define S_IVA 102 +#define S_DEBCRED3 103 +#define S_RISULTATO 104 +#define S_DEBCRED1 105 +#define S_RIMBORSO 106 +#define S_RETTIFICHE 107 +#define S_DEBCRED2 108 +#define S_CREDIVA 109 +#define S_CREDF24PRE 110 +#define S_CREDF24 111 +#define S_DATAAUT 112 +#define S_CREDRES 113 +#define S_DESCR 114 + +#define S_DATA 102 +#define S_ABI 103 +#define S_CAB 104 +#define S_CONC 105 +#define S_VERSAMENTO 106 +#define S_INTERESSI 107 diff --git a/src/cg/cg5500b.uml b/src/cg/cg5500b.uml index aed7092cf..b0f0fe27d 100755 --- a/src/cg/cg5500b.uml +++ b/src/cg/cg5500b.uml @@ -63,6 +63,8 @@ SPREADSHEET F_VISLIQ1 -2 -1 BEGIN PROMPT 0 7 "Liquidazione" ITEM "Mese@10" + ITEM "IVA dovuta o\na credito@15" + ITEM "D/C@3" ITEM "Risultato@15" ITEM "D/C@3" ITEM "IVA rimborso@15" @@ -73,8 +75,6 @@ BEGIN ITEM "Credito anno in corso\nautorizzato F24@20" ITEM "Data autorizzazione@20" ITEM "Credito IVA\nresiduo@15" - ITEM "IVA dovuta o\na credito@15" - ITEM "D/C@3" ITEM "Descrizione@50" END @@ -122,20 +122,20 @@ ENDPAGE PAGE "Prospetto mensile" -1 -1 75 22 -STRING 101 20 +STRING S_MESE 20 BEGIN PROMPT 1 1 "Mese " FLAGS "D" END -CURRENCY 102 15 +CURRENCY S_RISULTATO 15 BEGIN PROMPT 1 2 "Risultato " FLAGS "D" END -LIST 103 1 10 +LIST S_DEBCRED1 1 10 BEGIN PROMPT 57 2 "" ITEM " | " @@ -144,20 +144,20 @@ BEGIN FLAGS "DU" END -CURRENCY 104 15 +CURRENCY S_RIMBORSO 15 BEGIN PROMPT 1 3 "IVA rimborso " PICTURE "." GROUP 11 END -CURRENCY 105 15 +CURRENCY S_RETTIFICHE 15 BEGIN PROMPT 1 4 "IVA rettifiche " GROUP 11 END -LIST 106 1 10 +LIST S_DEBCRED2 1 10 BEGIN PROMPT 57 4 "" ITEM " | " @@ -167,28 +167,28 @@ BEGIN GROUP 11 END -CURRENCY 107 15 +CURRENCY S_CREDIVA 15 BEGIN PROMPT 1 5 "Credito utilizzato IVA " FLAGS "D" GROUP 12 END -CURRENCY 108 15 +CURRENCY S_CREDF24PRE 15 BEGIN PROMPT 1 6 "Credito utilizzato F24 anno precedente " GROUP 12 FLAGS "D" END -CURRENCY 109 15 +CURRENCY S_CREDF24 15 BEGIN PROMPT 1 7 "Credito autorizzato F24 anno in corso " GROUP 12 FLAGS "D" END -DATE 110 +DATE S_DATAAUT BEGIN PROMPT 1 8 "Data di autorizzazione " GROUP 12 @@ -197,21 +197,21 @@ BEGIN FLAGS "D" END -CURRENCY 111 15 +CURRENCY S_CREDRES 15 BEGIN PROMPT 1 9 "Credito IVA residuo " FLAGS "D" GROUP 12 END -CURRENCY 112 15 +CURRENCY S_IVA 15 BEGIN PROMPT 1 10 "IVA dovuta o credito " FLAGS "D" GROUP 12 END -LIST 113 1 10 +LIST S_DEBCRED3 1 10 BEGIN PROMPT 57 10 "" ITEM " | " @@ -221,7 +221,7 @@ BEGIN GROUP 11 END -STRING 114 50 35 +STRING S_DESCR 50 35 BEGIN PROMPT 1 11 "Descr. " GROUP 12 @@ -244,18 +244,18 @@ ENDPAGE PAGE "Prospetto versamenti" -1 -1 50 12 -STRING 101 20 +STRING S_MESE 20 BEGIN PROMPT 1 1 "Mese " FLAGS "D" END -DATE 102 +DATE S_DATA BEGIN PROMPT 1 2 "Data " END -NUMBER 103 5 +NUMBER S_ABI 5 BEGIN PROMPT 1 3 "Codice ABI " HELP "Codice ABI banca di appoggio" @@ -272,7 +272,7 @@ BEGIN END -NUMBER 104 5 +NUMBER S_CAB 5 BEGIN PROMPT 1 4 "Codice CAB " HELP "Codice CAB banca di appoggio" @@ -292,7 +292,7 @@ BEGIN END -NUMBER 105 3 +NUMBER S_CONC 3 BEGIN PROMPT 1 5 "Concessione " FLAGS "RZ" @@ -306,20 +306,17 @@ BEGIN HELP "Codice Concessione del Comune di residenza fiscale" END - -CURRENCY 106 15 +CURRENCY S_VERSAMENTO 15 BEGIN PROMPT 1 6 "Versamenti " END -CURRENCY 107 15 +CURRENCY S_INTERESSI 15 BEGIN PROMPT 1 6 "Interessi " FLAGS "RD" END - - BUTTON 100 10 2 BEGIN PROMPT -11 -1 "Dettaglio" diff --git a/src/include/msksheet.cpp b/src/include/msksheet.cpp index c02199282..c8a133b7a 100755 --- a/src/include/msksheet.cpp +++ b/src/include/msksheet.cpp @@ -18,6 +18,11 @@ extern "C" #include #include +int cid2index(short cid) +{ + return xvtil_cid2index(cid); +} + class TCell_property : public TObject { COLOR _back, _fore; @@ -3064,6 +3069,71 @@ const char* TSheet_field::cell(int r, int c) const return v ? v : " "; } +int TSheet_field::set_row_cell(short id, const char * value, int nrow) +{ + if (nrow < 0) + nrow = first_empty(); + set_row_cell(row(nrow), id, value); +#ifdef DBG + const TToken_string & r = row(nrow); +#endif + return nrow; +} + +int TSheet_field::set_row_cell(short id, char value, int nrow) +{ + if (nrow < 0) + nrow = first_empty(); + set_row_cell(row(nrow), id, value); +#ifdef DBG + const TToken_string & r = row(nrow); +#endif + return nrow; +} + +int TSheet_field::set_row_cell(short id, long value, int nrow) +{ + if (nrow < 0) + nrow = first_empty(); + set_row_cell(row(nrow), id, value); +#ifdef DBG + const TToken_string & r = row(nrow); +#endif + return nrow; +} + +int TSheet_field::set_row_cell(short id, int value, int nrow) +{ + if (nrow < 0) + nrow = first_empty(); + set_row_cell(row(nrow), id, value); +#ifdef DBG + const TToken_string & r = row(nrow); +#endif + return nrow; +} + +int TSheet_field::set_row_cell(short id, const real& value, int nrow) +{ + if (nrow < 0) + nrow = first_empty(); + set_row_cell(row(nrow), id, value); +#ifdef DBG + const TToken_string & r = row(nrow); +#endif + return nrow; +} + +int TSheet_field::set_row_cell(short id, const TDate& value, int nrow) +{ + if (nrow < 0) + nrow = first_empty(); + set_row_cell(row(nrow), id, value); +#ifdef DBG + const TToken_string & r = row(nrow); +#endif + return nrow; +} // Certified 100% // Ritorna l'indice della prima riga vuota dello sheet diff --git a/src/include/msksheet.h b/src/include/msksheet.h index 06a65d0fb..283174cc5 100755 --- a/src/include/msksheet.h +++ b/src/include/msksheet.h @@ -18,6 +18,7 @@ class TRecord_array; class TRelation; #endif + #define FIRST_FIELD 101 #define K_ROWEDIT ( K_CTRL + 'I' ) @@ -35,6 +36,7 @@ typedef bool (*SPREADSHEET_NOTIFY)(TSheet_field& s, int r, KEY k); // @type SHEET_USERGETPUT| Prototipo funzione utente che gestisce il caricamento/salvataggio dei dati dello sheet typedef void (*SHEET_USERGETPUT)(TSheet_field &fld_righe, int item); +int cid2index(short cid); // @doc EXTERNAL // @class TSheet_field | Classe per la gestione dei campi di uno spreadsheet @@ -42,113 +44,133 @@ typedef void (*SHEET_USERGETPUT)(TSheet_field &fld_righe, int item); // @base public | TMask_field class TSheet_field : public TLoadable_field { - // @author:(INTERNAL) Guido + // @author:(INTERNAL) Guido - // @cfriend TSpreadsheet - friend class TSpreadsheet; + // @cfriend TSpreadsheet + friend class TSpreadsheet; - // @access:(INTERNAL) Private Member + // @access:(INTERNAL) Private Member - // @cmember:(INTERNAL) Indica se aggiungere a fondo dello spreadsheet o nella riga in cui ti trovi - bool _append; + // @cmember:(INTERNAL) Indica se aggiungere a fondo dello spreadsheet o nella riga in cui ti trovi + bool _append; - // @cmember:(INTERNAL) Separatore delle TToken_string - char _separator; + // @cmember:(INTERNAL) Separatore delle TToken_string + char _separator; - // @cmember:(INTERNAL) Flag di autoload - bool _enable_autoload; - // @cmember:(INTERNAL) Campi di input sulla maschera (key field names) - TToken_string _file_k_names; - // @cmember:(INTERNAL) Campi di input sulla maschera (key field ids) - TToken_string _file_k_ids; - // @cmember:(INTERNAL) file delle righe - TLocalisamfile * _sheetfile; - // @cmember:(INTERNAL) record array delle righe - TRecord_array* _linee_rec; - // @cmember:(INTERNAL) indicatore di record array gestito esternamente - bool _external_record; - // @cmember:(INTERNAL) funzioni utente per get tra record (array) e array righe - SHEET_USERGETPUT _userput; - // @cmember:(INTERNAL) funzioni utente per put tra righe e record (array) - SHEET_USERGETPUT _userget; + // @cmember:(INTERNAL) Flag di autoload + bool _enable_autoload; + // @cmember:(INTERNAL) Campi di input sulla maschera (key field names) + TToken_string _file_k_names; + // @cmember:(INTERNAL) Campi di input sulla maschera (key field ids) + TToken_string _file_k_ids; + // @cmember:(INTERNAL) file delle righe + TLocalisamfile * _sheetfile; + // @cmember:(INTERNAL) record array delle righe + TRecord_array* _linee_rec; + // @cmember:(INTERNAL) indicatore di record array gestito esternamente + bool _external_record; + // @cmember:(INTERNAL) funzioni utente per get tra record (array) e array righe + SHEET_USERGETPUT _userput; + // @cmember:(INTERNAL) funzioni utente per put tra righe e record (array) + SHEET_USERGETPUT _userget; - // @access Protected Member + // @access Protected Member protected: - // @cmember:(INTERNAL) Identificatore dell' ultima colonna dello sheet - short _last_column_id; + // @cmember:(INTERNAL) Identificatore dell' ultima colonna dello sheet + short _last_column_id; - // @cmember Ritorna l'identificatore della classe - virtual word class_id() const; - - virtual bool is_kind_of(word cid) const; + // @cmember Ritorna l'identificatore della classe + virtual word class_id() const; - // @cmember Gestisce la chiamata all'handler del campo - virtual bool on_hit(); - - // @cmember Legge la testata dello spreadsheet da

- virtual void parse_head(TScanner& scanner); - // @cmember Legge gli item dello spreadsheet da

- virtual bool parse_item(TScanner& scanner); - // @cmember Legge gli input (campi chiave) dello spreadsheet da

- void parse_input(TScanner& scanner); - // @cmember Crea lo spreadsheet - virtual void create(WINDOW parent); + virtual bool is_kind_of(word cid) const; - // @cmember Setta il focus sul campo - virtual void highlight() const; - // @cmember Ricopia i campi della maschera nel record

-esimo - virtual void mask2row(int n, TToken_string & rec); - // @cmember Ricopia i campi del record

-esimo nella maschera - virtual void row2mask(int n, TToken_string & rec, int mode = 0x3); - // @cmember Permette di mettere il focus su una cella - bool set_focus_cell(int riga, int colonna); + // @cmember Gestisce la chiamata all'handler del campo + virtual bool on_hit(); - //Copy Costructor per impedire la duplicazione accidentale degli sheet - TSheet_field(const TSheet_field& s): TLoadable_field(&s.mask()){CHECK(false, "Can't duplicate TSheet_field");} + // @cmember Legge la testata dello spreadsheet da

+ virtual void parse_head(TScanner& scanner); + // @cmember Legge gli item dello spreadsheet da

+ virtual bool parse_item(TScanner& scanner); + // @cmember Legge gli input (campi chiave) dello spreadsheet da

+ void parse_input(TScanner& scanner); + // @cmember Crea lo spreadsheet + virtual void create(WINDOW parent); - // @access Public Member + // @cmember Setta il focus sul campo + virtual void highlight() const; + // @cmember Ricopia i campi della maschera nel record

-esimo + virtual void mask2row(int n, TToken_string & rec); + // @cmember Ricopia i campi del record

-esimo nella maschera + virtual void row2mask(int n, TToken_string & rec, int mode = 0x3); + // @cmember Permette di mettere il focus su una cella + bool set_focus_cell(int riga, int colonna); + //Copy Costructor per impedire la duplicazione accidentale degli sheet + TSheet_field(const TSheet_field& s) : TLoadable_field(&s.mask()) { CHECK(false, "Can't duplicate TSheet_field"); } + + // @access Public Member public: // @cmember Permette di mettere il focus su una cella - bool set_focus_cell_id(long rec, short cid); + bool set_focus_cell_id(long rec, short cid); - // @cmember Gestisce la pressione del tasto (true se la gestione ha avuto successo) - virtual bool on_key(KEY k); + // @cmember Gestisce la pressione del tasto (true se la gestione ha avuto successo) + virtual bool on_key(KEY k); - // @cmember Si, sono uno spreadsheet - virtual bool is_sheet() const { return true; } - virtual bool empty() const { return items() == 0; } + // @cmember Si, sono uno spreadsheet + virtual bool is_sheet() const { return true; } + virtual bool empty() const { return items() == 0; } - // @cmember Legge automaticamente la linea dal record array assegnato - virtual bool autoload_line(int i,const TRectype & rec); - // @cmember Salva automaticamente la linea nel record array assegnato - virtual bool autosave_line(int i,TRectype & rec); + // @cmember Legge automaticamente la linea dal record array assegnato + virtual bool autoload_line(int i, const TRectype & rec); + // @cmember Salva automaticamente la linea nel record array assegnato + virtual bool autosave_line(int i, TRectype & rec); - // @cmember Legge automaticamente lo sheet dal record array assegnato - virtual bool autoload(const TRelation& r); - // @cmember Salva automaticamente lo sheet nel record array assegnato - virtual bool autosave(TRelation& r) ; - // @cmember setta la funzione utente che Legge i campi dello sheet - void set_userget(SHEET_USERGETPUT handler); - // @cmember setta la funzione utente che scrive i campi dello sheet - void set_userput(SHEET_USERGETPUT handler); - // @cmember carica le chiavi del record array dello sheet - TRectype * putkey(const TRelation& r); - // @cmember restituisce il record array assegnato allo sheet - TRecord_array * record() const {return _linee_rec;} - // @cmember Imposta un record array esterno che contiene le righe dello sheet - void set_lines_record(TRecord_array &); - // @cmember Ritorna se il record assegnato è gestito esternamente (read/write/remove) - bool external_record() const {return _external_record;} - // @cmember Gestisce i campi della chiave - void restart_key(); - TMask_field *get_key(TString & dbfieldname); + // @cmember Legge automaticamente lo sheet dal record array assegnato + virtual bool autoload(const TRelation& r); + // @cmember Salva automaticamente lo sheet nel record array assegnato + virtual bool autosave(TRelation& r); + // @cmember setta la funzione utente che Legge i campi dello sheet + void set_userget(SHEET_USERGETPUT handler); + // @cmember setta la funzione utente che scrive i campi dello sheet + void set_userput(SHEET_USERGETPUT handler); + // @cmember carica le chiavi del record array dello sheet + TRectype * putkey(const TRelation& r); + // @cmember restituisce il record array assegnato allo sheet + TRecord_array * record() const { return _linee_rec; } + // @cmember Imposta un record array esterno che contiene le righe dello sheet + void set_lines_record(TRecord_array &); + // @cmember Ritorna se il record assegnato è gestito esternamente (read/write/remove) + bool external_record() const { return _external_record; } + // @cmember Gestisce i campi della chiave + void restart_key(); + TMask_field *get_key(TString & dbfieldname); - // @cmember Ritorna una riga dello spreadsheet - TToken_string& row(int n); - // @cmember Ritorna un array con tutte le righe dello spreadsheet - TString_array& rows_array() const; - // @cmember Ritorna l'elemento

-esimo della riga

- const char* cell(int r, int c) const; + // @cmember Ritorna una riga dello spreadsheet + TToken_string& row(int n); + // @cmember Ritorna un array con tutte le righe dello spreadsheet + TString_array& rows_array() const; + // @cmember Ritorna l'elemento

-esimo della riga

+ const char* cell(int r, int c) const; + + virtual void set_row_cell(TToken_string & row, short id, const char * value) { row.add(value, cid2index(id)); } + virtual void set_row_cell(TToken_string & row, short id, char value) { row.add(value, cid2index(id)); } + virtual void set_row_cell(TToken_string & row, short id, long value) { row.add(value, cid2index(id)); } + virtual void set_row_cell(TToken_string & row, short id, int value) { row.add(value, cid2index(id)); } + virtual void set_row_cell(TToken_string & row, short id, const real& value) { row.add(value, cid2index(id)); } + virtual void set_row_cell(TToken_string & row, short id, const TDate& value) { row.add(value, cid2index(id)); } + + virtual int set_row_cell(short id, const char * value, int nrow = -1); + virtual int set_row_cell(short id, char value, int nrow = -1); + virtual int set_row_cell(short id, long value, int nrow = -1); + virtual int set_row_cell(short id, int value, int nrow = -1); + virtual int set_row_cell(short id, const real& value, int nrow = -1); + virtual int set_row_cell(short id, const TDate& value, int nrow = -1); + + virtual const char * get_str_row_cell(int nrow, short id) { return row(nrow).get(); } + virtual char get_char_row_cell(int nrow, short id) { return row(nrow).get_char(); } + virtual long get_long_row_cell(int nrow, short id) { return row(nrow).get_long(); } + virtual int get_int_row_cell(int nrow, short id) { return row(nrow).get_int(); } + virtual real get_real_row_cell(int nrow, short id) { return real(row(nrow).get()); } + virtual TDate get_date_row_cell(int nrow, short id) { return TDate(row(nrow).get()); } char separator() const { return _separator; }