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 cg2.exe
Aggiunto controllo su data operazione maggiore della data di inizio fatturazione elettronica Aggiunto controllo su data operazione maggiore della data di inizio fatturazione elettronica
Modifica modaut

View File

@ -8,76 +8,76 @@ Patch = 0798
Versione = 21511200 Versione = 21511200
[cg99] [cg99]
Kill(0) = bastpor.rep|x Kill(0) = bastver.msk|x
Kill(1) = batbins.msk|x Kill(1) = bastleg.rep|x
Kill(2) = bastcam.msk|x Kill(2) = bastesc.rep|x
Kill(3) = bastnot.msk|x Kill(3) = batbcco.msk|x
Kill(4) = bastesc.msk|x Kill(4) = bastmsp.rep|x
Kill(5) = bastleg.msk|x Kill(5) = batbtra.msk|x
Kill(6) = bastpor.msk|x Kill(6) = batbtit.msk|x
Kill(7) = batbscc.msk|x Kill(7) = batblbu.msk|x
Kill(8) = batblia.msk|x Kill(8) = bastivd.rep|x
Kill(9) = bastzon.rep|x Kill(9) = bastvet.msk|x
Kill(10) = batbarb.msk|x Kill(10) = bastcve.msk|x
Kill(11) = batblia.msk|x Kill(11) = batbntb.msk|x
Kill(12) = batbdpn.msk|x Kill(12) = bastcam.rep|x
Kill(13) = bastcco.msk|x Kill(13) = batbind.msk|x
Kill(14) = bastcam.rep|x Kill(14) = batbvet.msk|x
Kill(15) = bastcve.msk|x Kill(15) = bastscc.rep|x
Kill(16) = batbleg.msk|x Kill(16) = batbleg.msk|x
Kill(17) = batbvet.msk|x Kill(17) = bastivd.msk|x
Kill(18) = batbcco.msk|x Kill(18) = batblia.msk|x
Kill(19) = bastver.msk|x Kill(19) = batbarb.msk|x
Kill(20) = batbind.msk|x Kill(20) = bastcco.msk|x
Kill(21) = batbntb.msk|x Kill(21) = batbdpn.msk|x
Kill(22) = bastivd.msk|x Kill(22) = batbver.msk|x
Kill(23) = bastscc.rep|x Kill(23) = batbpor.msk|x
Kill(24) = bastmsp.rep|x Kill(24) = batbndo.msk|x
Kill(25) = bastleg.rep|x Kill(25) = bastzon.msk|x
Kill(26) = bastivd.rep|x Kill(26) = bastarb.rep|x
Kill(27) = batbtit.msk|x Kill(27) = bastcco.rep|x
Kill(28) = bastntb.rep|x Kill(28) = batbcam.msk|x
Kill(29) = bastntb.msk|x Kill(29) = cgtbcon.msk|x
Kill(30) = batbtra.msk|x Kill(30) = bastpdb.msk|x
Kill(31) = bastesc.rep|x Kill(31) = batbdel.msk|x
Kill(32) = bastvet.msk|x Kill(32) = batbesc.msk|x
Kill(33) = batblbu.msk|x Kill(33) = batbpdb.msk|x
Kill(34) = batbinl.msk|x Kill(34) = batbreg.msk|x
Kill(35) = batbivd.msk|x Kill(35) = bastscc.msk|x
Kill(36) = bastnot.rep|x Kill(36) = bastdpn.msk|x
Kill(37) = bastcfi.rep|x Kill(37) = bastndo.rep|x
Kill(38) = bastcfi.msk|x Kill(38) = batbmsp.msk|x
Kill(39) = batbmsp.msk|x Kill(39) = batbcfi.msk|x
Kill(40) = bastreg.rep|x Kill(40) = batbcve.msk|x
Kill(41) = bastvet.rep|x Kill(41) = bastcfi.msk|x
Kill(42) = batbnot.msk|x Kill(42) = batbzon.msk|x
Kill(43) = bastver.rep|x Kill(43) = bastarb.msk|x
Kill(44) = batbzon.msk|x Kill(44) = bastpdb.rep|x
Kill(45) = batbcfi.msk|x Kill(45) = bastndo.msk|x
Kill(46) = bastreg.msk|x Kill(46) = bastreg.msk|x
Kill(47) = bastpdb.rep|x Kill(47) = bastdpn.rep|x
Kill(48) = batbdel.msk|x Kill(48) = bastntb.msk|x
Kill(49) = batbcam.msk|x Kill(49) = batbivd.msk|x
Kill(50) = bastarb.msk|x Kill(50) = bastvet.rep|x
Kill(51) = batbcve.msk|x Kill(51) = bastntb.rep|x
Kill(52) = bastdpn.rep|x Kill(52) = batbinl.msk|x
Kill(53) = bastndo.msk|x Kill(53) = bastreg.rep|x
Kill(54) = batbesc.msk|x Kill(54) = bastcfi.rep|x
Kill(55) = cgtbcon.msk|x Kill(55) = bastver.rep|x
Kill(56) = bastdpn.msk|x Kill(56) = bastnot.rep|x
Kill(57) = batbreg.msk|x Kill(57) = batbnot.msk|x
Kill(58) = batbndo.msk|x Kill(58) = bastmsp.msk|x
Kill(59) = batbver.msk|x Kill(59) = bastcve.rep|x
Kill(60) = batbpdb.msk|x Kill(60) = bastzon.rep|x
Kill(61) = bastpdb.msk|x Kill(61) = batblia.msk|x
Kill(62) = bastndo.rep|x Kill(62) = batbins.msk|x
Kill(63) = bastscc.msk|x Kill(63) = bastpor.rep|x
Kill(64) = bastzon.msk|x Kill(64) = bastleg.msk|x
Kill(65) = batbpor.msk|x Kill(65) = bastesc.msk|x
Kill(66) = bastcco.rep|x Kill(66) = bastnot.msk|x
Kill(67) = bastarb.rep|x Kill(67) = bastcam.msk|x
Kill(68) = bastcve.rep|x Kill(68) = batbscc.msk|x
Kill(69) = bastmsp.msk|x Kill(69) = bastpor.msk|x
[cg] [cg]
Data = 27-05-2019 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); round_imposta(intr);
vers = vers_netto + intr; vers = vers_netto + intr;
f.mask().set(106, vers); f.mask().set(S_VERSAMENTO, vers);
f.mask().set(107, intr); f.mask().set(S_INTERESSI, intr);
TToken_string& row = sv.row(sel); TToken_string& row = sv.row(sel);
row.add(vers, 5); sv.set_row_cell(row, S_VERSAMENTO, vers);
row.add(intr, 6); sv.set_row_cell(row, S_INTERESSI, intr);
sv.force_update(sel); sv.force_update(sel);
} }
} }
@ -638,12 +638,12 @@ bool Visliq_app::vis_all()
_mask->set_handler(DLG_PRINT, print_handler); _mask->set_handler(DLG_PRINT, print_handler);
sh.sheet_mask().set_handler(100, sel_mese_sh1); sh.sheet_mask().set_handler(100, sel_mese_sh1);
sh.sheet_mask().set_handler(104, enable_date); sh.sheet_mask().set_handler(S_RIMBORSO, enable_date);
sh.sheet_mask().set_handler(109, enable_date); sh.sheet_mask().set_handler(S_CREDF24, enable_date);
sh.sheet_mask().set_handler(110, check_date); sh.sheet_mask().set_handler(S_DATAAUT, check_date);
sv.sheet_mask().set_handler(100, sel_mese_sh2); 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 new_print_2000 = true; // _year >= 2000;
const bool compensabile = _lia->get("S9") == "CM"; const bool compensabile = _lia->get("S9") == "CM";
@ -652,16 +652,16 @@ bool Visliq_app::vis_all()
if (compensabile) if (compensabile)
{ {
const bool gestione_manuale = _lia->get_bool("B6"); 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); sh.enable_column(id, true);
} }
} }
else else
sh.enable_column(110); sh.enable_column(S_DATAAUT);
// fill the mask in // fill the mask in
read_general(*_mask); read_general(*_mask);
@ -1477,24 +1477,25 @@ void Visliq_app::recalc_next_liq(int start_month, TSheet_field* sl, TSheet_field
if (sl != NULL) if (sl != NULL)
{ {
TToken_string& t = sl->row(row); 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_ven = _lam->get_real("R0"); // IVA acquisti
const real iva_acq = _lam->get_real("R1"); // IVA vendite const real iva_acq = _lam->get_real("R1"); // IVA vendite
const real ris = iva_ven - iva_acq; 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"); const real r1 = _lim->get_real("R1");
bool enable_date = !r1.is_zero(); bool enable_date = !r1.is_zero();
const real r5 = _lim->get_real("R5"); const real r5 = _lim->get_real("R5");
t.add(ris == ZERO ? "" : (ris > ZERO ? "D" : "C"), 2); sl->set_row_cell(t, S_DEBCRED1, ris == ZERO ? "" : (ris > ZERO ? "D" : "C"));
t.add(r1, 3); sl->set_row_cell(t, S_RIMBORSO, r1);
t.add(abs(r5), 4); sl->set_row_cell(t, S_RETTIFICHE, abs(r5));
if (!r5.is_zero()) 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 criva = _lim->get_real("R15");
const real crf24 = _lim->get_real("R16"); 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"); TDate dautf24 = _lim->get_date("D1");
enable_date |= !autf24.is_zero(); enable_date |= !autf24.is_zero();
t.add(criva, 6); sl->set_row_cell(t, S_CREDIVA, criva);
t.add(crf24, 7); sl->set_row_cell(t, S_CREDF24PRE, crf24);
t.add(autf24, 8); sl->set_row_cell(t, S_CREDF24, autf24);
if (enable_date) if (enable_date)
t.add(dautf24, 9); sl->set_row_cell(t, S_DATAAUT, dautf24);
if (compensabile) if (compensabile)
{ {
cr_res += autf24; cr_res += autf24;
@ -1514,33 +1515,32 @@ void Visliq_app::recalc_next_liq(int start_month, TSheet_field* sl, TSheet_field
cr_res -= criva; cr_res -= criva;
if (cr_res < ZERO) if (cr_res < ZERO)
{ {
sl->set_back_and_fore_color(COLOR_LTYELLOW, COLOR_DKRED, row, 7); sl->set_back_and_fore_color(COLOR_LTYELLOW, COLOR_DKRED, row, sl->cid2index(S_CREDF24PRE));
t.add("", 10); sl->set_row_cell(t, S_CREDRES, "");
} }
else else
{ {
sl->set_back_and_fore_color(NORMAL_BACK_COLOR, NORMAL_COLOR, row, 7); sl->set_back_and_fore_color(NORMAL_BACK_COLOR, NORMAL_COLOR, row, sl->cid2index(S_CREDF24PRE));
t.add(cr_res, 10); sl->set_row_cell(t, S_CREDRES, cr_res);
} }
} }
else else
t.add("", 10); sl->set_row_cell(t, S_CREDRES, "");
real r0 = _lim->get_real("R0"); real r0 = _lim->get_real("R0");
if (compensabile) if (compensabile)
r0 += autf24; r0 += autf24;
t.add(abs(r0).string(), 11); sl->set_row_cell(t, S_IVA, abs(r0).string());
t.add(r0 == ZERO ? "" : (r0 > ZERO ? "D" : "C"), 12); sl->set_row_cell(t, S_DEBCRED3, r0 == ZERO ? "" : (r0 > ZERO ? "D" : "C"));
t.add(_lim->get("S3"), 13); t.add(_lim->get("S3"), 13);
for (int kk = 3; kk < 6 ; kk++) for (int kk = 3; kk < 6 ; kk++)
sl->enable_cell(row, kk); sl->enable_cell(row, kk);
sl->enable_cell(row, 7); sl->enable_cell(row, S_CREDF24PRE);
sl->enable_cell(row, 8); sl->enable_cell(row, S_CREDF24);
sl->enable_cell(row, 9); sl->enable_cell(row, S_DATAAUT, enable_date);
sl->enable_cell(row, 9, enable_date); sl->enable_cell(row, S_DESCR);
sl->enable_cell(row, 14);
} }
} }
sl->force_update(); sl->force_update();
@ -1644,79 +1644,68 @@ void Visliq_app::read_general(TMask& m)
const int row = (i/step) - 1; const int row = (i/step) - 1;
if (!look_lim(i)) if (!look_lim(i))
{ {
if (sh.items() < row) TToken_string & t = sh.row(row);
sh.row(row) = *(new TToken_string("||||||"));
else t.cut(0);
sh.row(row) = "||||||";
sh.disable_cell(row, -1); sh.disable_cell(row, -1);
continue;
} }
else
TToken_string* tt = NULL; {
if (sh.items() < row) const real iva_ven = _lam->get_real("R0"); // IVA acquisti
tt = new TToken_string(80); const real iva_acq = _lam->get_real("R1"); // IVA vendite
else const real ris = iva_ven - iva_acq;
tt = &(sh.row(row)); 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 criva = _lim->get_real("R15");
const real iva_acq = _lam->get_real("R1"); // IVA vendite const real crf24 = _lim->get_real("R16");
const real ris = iva_ven -iva_acq; const real autf24 = _lim->get_real("R20");
bool enable_date = r1 != ZERO;
const real r1 = _lim->get_real("R1");
const real r5abs = abs(_lim->get_real("R5"));
tt->add(itoname(i),0); sh.set_row_cell(S_CREDIVA, criva, row);
tt->add(abs(ris).string(),1); sh.set_row_cell(S_CREDF24PRE,crf24, row);
sh.set_row_cell(S_CREDF24, autf24 , row);
const int sris = ris.sign(); enable_date |= autf24 != ZERO;
const int sr5 = (_lim->get_real("R5")).sign(); if (enable_date)
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_back_and_fore_color(COLOR_LTYELLOW, COLOR_DKRED, row, 7); const TDate dautf24 = _lim->get_date("D1");
tt->add("", 10);
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 else
{ sh.set_row_cell(S_CREDRES, ZERO, row);
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");
//if (compensabile) real r0 = _lim->get_real("R0");
// r0 += autf24;
tt->add(abs(r0).string(), 11); sh.set_row_cell(S_IVA, abs(r0).string(), row);
tt->add(r0 == ZERO ? "" : (r0 > ZERO ? "D" : "C"), 12); sh.set_row_cell(S_DEBCRED3, r0 == ZERO ? "" : (r0 > ZERO ? "D" : "C"), row);
tt->add(_lim->get("S3"), 13); sh.set_row_cell(S_DESCR, _lim->get("S3"), row);
sh.row(row) = (*tt); // sh.row(row) = (*tt);
}
} }
sh.force_update(); sh.force_update();
@ -1743,10 +1732,11 @@ void Visliq_app::read_general(TMask& m)
if (m >= 12) if (m >= 12)
m = tipod == 7 ? 12 : 13; m = tipod == 7 ? 12 : 13;
// supercauto // supercauto
if (m <= 0) continue; if (m <= 0)
continue;
versamenti[m - 1] += _del->get_real("R0"); 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"); date[m-1] = _del->get_date("D0");
TToken_string& b = banche[m-1]; TToken_string& b = banche[m-1];
b.add(_del->get("S7"),0); b.add(_del->get("S7"),0);
@ -1759,33 +1749,26 @@ void Visliq_app::read_general(TMask& m)
sv.destroy(); sv.destroy();
for (int i = 1; i <= 13; i++) for (int i = 1; i <= 13; i++)
{ {
if (!is_month_ok(i) && i != 13) if (!is_month_ok(i) && i != 13)
continue; 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); const int row = sv.set_row_cell(S_MESE, nomemese); // mese
if (nomemese == "4 Trimestre")
nomemese = TR("4 Tr."); sv.set_row_cell(S_DATA, date[i - 1], row); // data vers.
if (i == 12) nomemese << TR(" acconto"); sv.set_row_cell(S_ABI, banche[i - 1].get(0), row); // azienda
if (i == 13) nomemese << TR(" saldo"); 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
TToken_string tt; sv.set_row_cell(S_VERSAMENTO, versamenti[i - 1], row);// versamenti
tt.add(nomemese,0); // mese sv.set_row_cell(S_INTERESSI, interessi[i - 1], row);// interessi
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
sv.row(-1) = tt; if (i == 12)
if (i == 12) sv.disable_cell(sv.items() - 1, -1);
sv.enable_cell(sv.items() - 1, -1, false);
} }
// sh.enable_column(0, false);
// sv.enable_column(0, false);
sh.force_update();
sv.force_update(); sv.force_update();
// save initial rows // save initial rows
@ -1840,10 +1823,8 @@ void Visliq_app::write_general(TMask& m)
// risolve menata del dettaglio si'/no // risolve menata del dettaglio si'/no
if (lfrommask) if (lfrommask)
{
for (int i = 1; i <= 13; i++) 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) // saltare una riga se dicembre (riga 11 == acconto)
TToken_string& tt_vo = (TToken_string&)_vers_rows[i == 12 ? row + 1 : row]; 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 // traduci contenuto righe in real pila
real orett(tt_lo.get(4)); real orett(tt_lo.get(cid2index(S_RETTIFICHE)));
real nrett(tt_ln.get(4)); real nrett(sh.get_real_row_cell(row, S_RETTIFICHE));
real orimb(tt_lo.get(3)); real orimb(tt_lo.get(cid2index(S_RIMBORSO)));
real nrimb(tt_ln.get(3)); real nrimb(sh.get_real_row_cell(row, S_RIMBORSO));
real overs(tt_vo.get(5)); real crcode(sh.get_real_row_cell(row, S_CREDIVA));
real nvers(tt_vn.get(5)); real crf24(sh.get_real_row_cell(row, S_CREDF24PRE));
real crcode(tt_ln.get(6)); real oautf24(tt_lo.get(cid2index(S_CREDF24)));
real crf24(tt_ln.get(7)); real autf24(sh.get_real_row_cell(row, S_CREDF24));
real oautf24(tt_lo.get(8)); TDate dautf24(sh.get_date_row_cell(row, S_DATAAUT));
real autf24(tt_ln.get(8)); TString odbcr(tt_lo.get(cid2index(S_DEBCRED2)));
TDate dautf24(tt_ln.get(9)); TString ndbcr(sh.get_str_row_cell(row, S_DEBCRED2));
TDate odate(tt_vo.get(1)); TString descr(sh.get_str_row_cell(row, S_DESCR));
TDate ndate(tt_vn.get(1));
TString odbcr(tt_lo.get(5)); real overs(tt_vo.get(cid2index(S_VERSAMENTO)));
TString ndbcr(tt_ln.get(5)); real nvers(sv.get_real_row_cell(row, S_VERSAMENTO));
TString8 oabi (tt_vo.get(2)); TDate odate(tt_vo.get(cid2index(S_DATAAUT)));
TString8 nabi (tt_vn.get(2)); TDate ndate(sv.get_date_row_cell(row, S_DATAAUT));
TString8 ocab (tt_vo.get(3)); TString8 oabi(tt_vo.get(cid2index(S_ABI)));
TString8 ncab (tt_vn.get(3)); TString8 nabi(sv.get_str_row_cell(row, S_ABI));
TString ocon (tt_vo.get(4)); TString8 ocab(tt_vo.get(cid2index(S_CAB)));
TString ncon (tt_vn.get(4)); TString8 ncab(sv.get_str_row_cell(row, S_CAB));
TString descr(tt_ln.get(13)); TString ocon(tt_vo.get(cid2index(S_CONC)));
TString ncon(sv.get_str_row_cell(row, S_CONC));
if (odbcr == "C") orett = -orett; if (odbcr == "C") orett = -orett;
if (ndbcr == "C") nrett = -nrett; if (ndbcr == "C") nrett = -nrett;
// acconto (si considererà solo a dicembre) // acconto (si considererà solo a dicembre)
TToken_string& vo = (TToken_string&)_vers_rows[_freqviva == "M" ? 11 : 3]; TToken_string& vo = (TToken_string&)_vers_rows[_freqviva == "M" ? 11 : 3];
TToken_string& vn = sv.row(_freqviva == "M" ? 11 : 3); const int row_acc = _freqviva == "M" ? 11 : 3;
real oacct (vo.get(5));
real nacct (vn.get(5)); real oacct(tt_vo.get(cid2index(S_VERSAMENTO)));
TDate aodate(vo.get(1)); real nacct(sv.get_real_row_cell(row_acc, S_VERSAMENTO));
TDate andate(vn.get(1)); TDate aodate(tt_vo.get(cid2index(S_DATA)));
TString8 aoabi (vo.get(2)); TDate andate(sv.get_date_row_cell(row_acc, S_DATA));
TString8 anabi (vn.get(2)); TString8 aoabi(tt_vo.get(cid2index(S_ABI)));
TString8 aocab (vo.get(3)); TString8 anabi(sv.get_str_row_cell(row_acc, S_ABI));
TString8 ancab (vn.get(3)); TString8 aocab(tt_vo.get(cid2index(S_CAB)));
TString aocon (vo.get(4)); TString8 ancab(sv.get_str_row_cell(row_acc, S_CAB));
TString ancon (vn.get(4)); TString aocon(tt_vo.get(cid2index(S_CONC)));
TString ancon(sv.get_str_row_cell(row_acc, S_CONC));
was_lim = look_lim(i);
was_lim = look_lim(i);
if (!was_lim) if (!was_lim)
carry = false; // blocca riporto crediti e debiti 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 // Rimetti a posto righe sheet se serve
if (was_lim) if (was_lim) // qui
{ {
const real iva_ven = _lam->get_real("R0"); // IVA acquisti const real iva_ven = _lam->get_real("R0"); // IVA acquisti

View File

@ -35,3 +35,24 @@
#define F_CODDITTA2 201 #define F_CODDITTA2 201
#define F_RAGSOC2 202 #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 BEGIN
PROMPT 0 7 "Liquidazione" PROMPT 0 7 "Liquidazione"
ITEM "Mese@10" ITEM "Mese@10"
ITEM "IVA dovuta o\na credito@15"
ITEM "D/C@3"
ITEM "Risultato@15" ITEM "Risultato@15"
ITEM "D/C@3" ITEM "D/C@3"
ITEM "IVA rimborso@15" ITEM "IVA rimborso@15"
@ -73,8 +75,6 @@ BEGIN
ITEM "Credito anno in corso\nautorizzato F24@20" ITEM "Credito anno in corso\nautorizzato F24@20"
ITEM "Data autorizzazione@20" ITEM "Data autorizzazione@20"
ITEM "Credito IVA\nresiduo@15" ITEM "Credito IVA\nresiduo@15"
ITEM "IVA dovuta o\na credito@15"
ITEM "D/C@3"
ITEM "Descrizione@50" ITEM "Descrizione@50"
END END
@ -122,20 +122,20 @@ ENDPAGE
PAGE "Prospetto mensile" -1 -1 75 22 PAGE "Prospetto mensile" -1 -1 75 22
STRING 101 20 STRING S_MESE 20
BEGIN BEGIN
PROMPT 1 1 "Mese " PROMPT 1 1 "Mese "
FLAGS "D" FLAGS "D"
END END
CURRENCY 102 15 CURRENCY S_RISULTATO 15
BEGIN BEGIN
PROMPT 1 2 "Risultato " PROMPT 1 2 "Risultato "
FLAGS "D" FLAGS "D"
END END
LIST 103 1 10 LIST S_DEBCRED1 1 10
BEGIN BEGIN
PROMPT 57 2 "" PROMPT 57 2 ""
ITEM " | " ITEM " | "
@ -144,20 +144,20 @@ BEGIN
FLAGS "DU" FLAGS "DU"
END END
CURRENCY 104 15 CURRENCY S_RIMBORSO 15
BEGIN BEGIN
PROMPT 1 3 "IVA rimborso " PROMPT 1 3 "IVA rimborso "
PICTURE "." PICTURE "."
GROUP 11 GROUP 11
END END
CURRENCY 105 15 CURRENCY S_RETTIFICHE 15
BEGIN BEGIN
PROMPT 1 4 "IVA rettifiche " PROMPT 1 4 "IVA rettifiche "
GROUP 11 GROUP 11
END END
LIST 106 1 10 LIST S_DEBCRED2 1 10
BEGIN BEGIN
PROMPT 57 4 "" PROMPT 57 4 ""
ITEM " | " ITEM " | "
@ -167,28 +167,28 @@ BEGIN
GROUP 11 GROUP 11
END END
CURRENCY 107 15 CURRENCY S_CREDIVA 15
BEGIN BEGIN
PROMPT 1 5 "Credito utilizzato IVA " PROMPT 1 5 "Credito utilizzato IVA "
FLAGS "D" FLAGS "D"
GROUP 12 GROUP 12
END END
CURRENCY 108 15 CURRENCY S_CREDF24PRE 15
BEGIN BEGIN
PROMPT 1 6 "Credito utilizzato F24 anno precedente " PROMPT 1 6 "Credito utilizzato F24 anno precedente "
GROUP 12 GROUP 12
FLAGS "D" FLAGS "D"
END END
CURRENCY 109 15 CURRENCY S_CREDF24 15
BEGIN BEGIN
PROMPT 1 7 "Credito autorizzato F24 anno in corso " PROMPT 1 7 "Credito autorizzato F24 anno in corso "
GROUP 12 GROUP 12
FLAGS "D" FLAGS "D"
END END
DATE 110 DATE S_DATAAUT
BEGIN BEGIN
PROMPT 1 8 "Data di autorizzazione " PROMPT 1 8 "Data di autorizzazione "
GROUP 12 GROUP 12
@ -197,21 +197,21 @@ BEGIN
FLAGS "D" FLAGS "D"
END END
CURRENCY 111 15 CURRENCY S_CREDRES 15
BEGIN BEGIN
PROMPT 1 9 "Credito IVA residuo " PROMPT 1 9 "Credito IVA residuo "
FLAGS "D" FLAGS "D"
GROUP 12 GROUP 12
END END
CURRENCY 112 15 CURRENCY S_IVA 15
BEGIN BEGIN
PROMPT 1 10 "IVA dovuta o credito " PROMPT 1 10 "IVA dovuta o credito "
FLAGS "D" FLAGS "D"
GROUP 12 GROUP 12
END END
LIST 113 1 10 LIST S_DEBCRED3 1 10
BEGIN BEGIN
PROMPT 57 10 "" PROMPT 57 10 ""
ITEM " | " ITEM " | "
@ -221,7 +221,7 @@ BEGIN
GROUP 11 GROUP 11
END END
STRING 114 50 35 STRING S_DESCR 50 35
BEGIN BEGIN
PROMPT 1 11 "Descr. " PROMPT 1 11 "Descr. "
GROUP 12 GROUP 12
@ -244,18 +244,18 @@ ENDPAGE
PAGE "Prospetto versamenti" -1 -1 50 12 PAGE "Prospetto versamenti" -1 -1 50 12
STRING 101 20 STRING S_MESE 20
BEGIN BEGIN
PROMPT 1 1 "Mese " PROMPT 1 1 "Mese "
FLAGS "D" FLAGS "D"
END END
DATE 102 DATE S_DATA
BEGIN BEGIN
PROMPT 1 2 "Data " PROMPT 1 2 "Data "
END END
NUMBER 103 5 NUMBER S_ABI 5
BEGIN BEGIN
PROMPT 1 3 "Codice ABI " PROMPT 1 3 "Codice ABI "
HELP "Codice ABI banca di appoggio" HELP "Codice ABI banca di appoggio"
@ -272,7 +272,7 @@ BEGIN
END END
NUMBER 104 5 NUMBER S_CAB 5
BEGIN BEGIN
PROMPT 1 4 "Codice CAB " PROMPT 1 4 "Codice CAB "
HELP "Codice CAB banca di appoggio" HELP "Codice CAB banca di appoggio"
@ -292,7 +292,7 @@ BEGIN
END END
NUMBER 105 3 NUMBER S_CONC 3
BEGIN BEGIN
PROMPT 1 5 "Concessione " PROMPT 1 5 "Concessione "
FLAGS "RZ" FLAGS "RZ"
@ -306,20 +306,17 @@ BEGIN
HELP "Codice Concessione del Comune di residenza fiscale" HELP "Codice Concessione del Comune di residenza fiscale"
END END
CURRENCY S_VERSAMENTO 15
CURRENCY 106 15
BEGIN BEGIN
PROMPT 1 6 "Versamenti " PROMPT 1 6 "Versamenti "
END END
CURRENCY 107 15 CURRENCY S_INTERESSI 15
BEGIN BEGIN
PROMPT 1 6 "Interessi " PROMPT 1 6 "Interessi "
FLAGS "RD" FLAGS "RD"
END END
BUTTON 100 10 2 BUTTON 100 10 2
BEGIN BEGIN
PROMPT -11 -1 "Dettaglio" PROMPT -11 -1 "Dettaglio"

View File

@ -18,6 +18,11 @@ extern "C"
#include <urldefid.h> #include <urldefid.h>
#include <utility.h> #include <utility.h>
int cid2index(short cid)
{
return xvtil_cid2index(cid);
}
class TCell_property : public TObject class TCell_property : public TObject
{ {
COLOR _back, _fore; COLOR _back, _fore;
@ -3064,6 +3069,71 @@ const char* TSheet_field::cell(int r, int c) const
return v ? v : " "; 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% // Certified 100%
// Ritorna l'indice della prima riga vuota dello sheet // Ritorna l'indice della prima riga vuota dello sheet

View File

@ -18,6 +18,7 @@ class TRecord_array;
class TRelation; class TRelation;
#endif #endif
#define FIRST_FIELD 101 #define FIRST_FIELD 101
#define K_ROWEDIT ( K_CTRL + 'I' ) #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 // @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); typedef void (*SHEET_USERGETPUT)(TSheet_field &fld_righe, int item);
int cid2index(short cid);
// @doc EXTERNAL // @doc EXTERNAL
// @class TSheet_field | Classe per la gestione dei campi di uno spreadsheet // @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 // @base public | TMask_field
class TSheet_field : public TLoadable_field class TSheet_field : public TLoadable_field
{ {
// @author:(INTERNAL) Guido // @author:(INTERNAL) Guido
// @cfriend TSpreadsheet // @cfriend TSpreadsheet
friend class 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 // @cmember:(INTERNAL) Indica se aggiungere a fondo dello spreadsheet o nella riga in cui ti trovi
bool _append; bool _append;
// @cmember:(INTERNAL) Separatore delle TToken_string // @cmember:(INTERNAL) Separatore delle TToken_string
char _separator; char _separator;
// @cmember:(INTERNAL) Flag di autoload // @cmember:(INTERNAL) Flag di autoload
bool _enable_autoload; bool _enable_autoload;
// @cmember:(INTERNAL) Campi di input sulla maschera (key field names) // @cmember:(INTERNAL) Campi di input sulla maschera (key field names)
TToken_string _file_k_names; TToken_string _file_k_names;
// @cmember:(INTERNAL) Campi di input sulla maschera (key field ids) // @cmember:(INTERNAL) Campi di input sulla maschera (key field ids)
TToken_string _file_k_ids; TToken_string _file_k_ids;
// @cmember:(INTERNAL) file delle righe // @cmember:(INTERNAL) file delle righe
TLocalisamfile * _sheetfile; TLocalisamfile * _sheetfile;
// @cmember:(INTERNAL) record array delle righe // @cmember:(INTERNAL) record array delle righe
TRecord_array* _linee_rec; TRecord_array* _linee_rec;
// @cmember:(INTERNAL) indicatore di record array gestito esternamente // @cmember:(INTERNAL) indicatore di record array gestito esternamente
bool _external_record; bool _external_record;
// @cmember:(INTERNAL) funzioni utente per get tra record (array) e array righe // @cmember:(INTERNAL) funzioni utente per get tra record (array) e array righe
SHEET_USERGETPUT _userput; SHEET_USERGETPUT _userput;
// @cmember:(INTERNAL) funzioni utente per put tra righe e record (array) // @cmember:(INTERNAL) funzioni utente per put tra righe e record (array)
SHEET_USERGETPUT _userget; SHEET_USERGETPUT _userget;
// @access Protected Member // @access Protected Member
protected: protected:
// @cmember:(INTERNAL) Identificatore dell' ultima colonna dello sheet // @cmember:(INTERNAL) Identificatore dell' ultima colonna dello sheet
short _last_column_id; short _last_column_id;
// @cmember Ritorna l'identificatore della classe // @cmember Ritorna l'identificatore della classe
virtual word class_id() const; virtual word class_id() const;
virtual bool is_kind_of(word cid) const;
// @cmember Gestisce la chiamata all'handler del campo virtual bool is_kind_of(word cid) const;
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);
// @cmember Setta il focus sul campo // @cmember Gestisce la chiamata all'handler del campo
virtual void highlight() const; virtual bool on_hit();
// @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 // @cmember Legge la testata dello spreadsheet da <p scanner>
TSheet_field(const TSheet_field& s): TLoadable_field(&s.mask()){CHECK(false, "Can't duplicate TSheet_field");} 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: public:
// @cmember Permette di mettere il focus su una cella // @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) // @cmember Gestisce la pressione del tasto (true se la gestione ha avuto successo)
virtual bool on_key(KEY k); virtual bool on_key(KEY k);
// @cmember Si, sono uno spreadsheet // @cmember Si, sono uno spreadsheet
virtual bool is_sheet() const { return true; } virtual bool is_sheet() const { return true; }
virtual bool empty() const { return items() == 0; } virtual bool empty() const { return items() == 0; }
// @cmember Legge automaticamente la linea dal record array assegnato // @cmember Legge automaticamente la linea dal record array assegnato
virtual bool autoload_line(int i,const TRectype & rec); virtual bool autoload_line(int i, const TRectype & rec);
// @cmember Salva automaticamente la linea nel record array assegnato // @cmember Salva automaticamente la linea nel record array assegnato
virtual bool autosave_line(int i,TRectype & rec); virtual bool autosave_line(int i, TRectype & rec);
// @cmember Legge automaticamente lo sheet dal record array assegnato // @cmember Legge automaticamente lo sheet dal record array assegnato
virtual bool autoload(const TRelation& r); virtual bool autoload(const TRelation& r);
// @cmember Salva automaticamente lo sheet nel record array assegnato // @cmember Salva automaticamente lo sheet nel record array assegnato
virtual bool autosave(TRelation& r) ; virtual bool autosave(TRelation& r);
// @cmember setta la funzione utente che Legge i campi dello sheet // @cmember setta la funzione utente che Legge i campi dello sheet
void set_userget(SHEET_USERGETPUT handler); void set_userget(SHEET_USERGETPUT handler);
// @cmember setta la funzione utente che scrive i campi dello sheet // @cmember setta la funzione utente che scrive i campi dello sheet
void set_userput(SHEET_USERGETPUT handler); void set_userput(SHEET_USERGETPUT handler);
// @cmember carica le chiavi del record array dello sheet // @cmember carica le chiavi del record array dello sheet
TRectype * putkey(const TRelation& r); TRectype * putkey(const TRelation& r);
// @cmember restituisce il record array assegnato allo sheet // @cmember restituisce il record array assegnato allo sheet
TRecord_array * record() const {return _linee_rec;} TRecord_array * record() const { return _linee_rec; }
// @cmember Imposta un record array esterno che contiene le righe dello sheet // @cmember Imposta un record array esterno che contiene le righe dello sheet
void set_lines_record(TRecord_array &); void set_lines_record(TRecord_array &);
// @cmember Ritorna se il record assegnato è gestito esternamente (read/write/remove) // @cmember Ritorna se il record assegnato è gestito esternamente (read/write/remove)
bool external_record() const {return _external_record;} bool external_record() const { return _external_record; }
// @cmember Gestisce i campi della chiave // @cmember Gestisce i campi della chiave
void restart_key(); void restart_key();
TMask_field *get_key(TString & dbfieldname); TMask_field *get_key(TString & dbfieldname);
// @cmember Ritorna una riga dello spreadsheet // @cmember Ritorna una riga dello spreadsheet
TToken_string& row(int n); TToken_string& row(int n);
// @cmember Ritorna un array con tutte le righe dello spreadsheet // @cmember Ritorna un array con tutte le righe dello spreadsheet
TString_array& rows_array() const; TString_array& rows_array() const;
// @cmember Ritorna l'elemento <p c>-esimo della riga <p r> // @cmember Ritorna l'elemento <p c>-esimo della riga <p r>
const char* cell(int r, int c) const; 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; } char separator() const { return _separator; }