Merge remote-tracking branch 'origin/R_10_00' into R_10_00

This commit is contained in:
Simone Palacino 2019-05-28 11:15:58 +02:00
commit 9e562a7dd8
13 changed files with 539 additions and 347 deletions

Binary file not shown.

Binary file not shown.

View File

@ -1,3 +1,4 @@
cg2.exe
Aggiunto controllo su data operazione maggiore della data di inizio fatturazione elettronica
Modifica modaut

View File

@ -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

Binary file not shown.

4
cd/test/cg0800.txt Normal file
View File

@ -0,0 +1,4 @@
cg5500b.msk
cg5.exe
Spostata la colonna iva a credito o debito nella seconda colonna nella visualizzazione liquidazione

94
cd/test/cg0800a.ini Normal file
View File

@ -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

BIN
cd/test/cg0800a1.zip Normal file

Binary file not shown.

View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -18,6 +18,11 @@ extern "C"
#include <urldefid.h>
#include <utility.h>
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

View File

@ -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 <p scanner>
virtual void parse_head(TScanner& scanner);
// @cmember Legge gli item dello spreadsheet da <p scanner>
virtual bool parse_item(TScanner& scanner);
// @cmember Legge gli input (campi chiave) dello spreadsheet da <p scanner>
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 <p n>-esimo
virtual void mask2row(int n, TToken_string & rec);
// @cmember Ricopia i campi del record <p n>-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 <p scanner>
virtual void parse_head(TScanner& scanner);
// @cmember Legge gli item dello spreadsheet da <p scanner>
virtual bool parse_item(TScanner& scanner);
// @cmember Legge gli input (campi chiave) dello spreadsheet da <p scanner>
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 <p n>-esimo
virtual void mask2row(int n, TToken_string & rec);
// @cmember Ricopia i campi del record <p n>-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 <p c>-esimo della riga <p r>
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 <p c>-esimo della riga <p r>
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; }