diff --git a/build/Cg0.vcxproj b/build/Cg0.vcxproj index 4d009fbd4..3b7d50c01 100644 --- a/build/Cg0.vcxproj +++ b/build/Cg0.vcxproj @@ -261,6 +261,12 @@ {7b80f974-ce2e-4bd9-855a-44ff139ff288} + + {a1ce9743-a597-4f92-b55a-345a366c9e55} + + + {0042619a-6b7c-4d3d-9cd9-9bdd8d200c15} + diff --git a/cd/test/cg1386.txt b/cd/test/cg1386.txt new file mode 100644 index 000000000..f9e7e8a20 --- /dev/null +++ b/cd/test/cg1386.txt @@ -0,0 +1,5 @@ +cg0.exe +cg0700b.msk +cg3.exe +cg4.exe +cg0700a.msk diff --git a/cd/test/cg1386a.ini b/cd/test/cg1386a.ini new file mode 100644 index 000000000..853b824c6 --- /dev/null +++ b/cd/test/cg1386a.ini @@ -0,0 +1,117 @@ +[Main] +Demo=0 +[cg0] +Edit_19 = cg0 -0 +Edit_20 = cg0 -1 +Edit_26 = cg0 -4 +Edit_5 = cg0 -5 +File(0) = cg0.exe|X +File(303) = cg0700b.msk|X +Patch = 1386 +Versione = 21511200 + +[cg1] +File(38) = cg3.exe|X +Patch = 1386 +Versione = 21511200 + +[cg4] +File(123) = cg4.exe|X +Patch = 1386 +Versione = 21511200 + +[cg9] +File(212) = cg0700a.msk|X +Patch = 1386 +Versione = 21511200 + +[cg99] +Kill(0) = batbcve.msk|x +Kill(1) = bastreg.rep|x +Kill(2) = cg2fppro.msk|x +Kill(3) = bastvet.rep|x +Kill(4) = batbcco.msk|x +Kill(5) = batbivd.msk|x +Kill(6) = bastarb.msk|x +Kill(7) = batbreg.msk|x +Kill(8) = bastivd.msk|x +Kill(9) = batbtra.msk|x +Kill(10) = batbesc.msk|x +Kill(11) = batbver.msk|x +Kill(12) = bastpdb.msk|x +Kill(13) = batbind.msk|x +Kill(14) = batblia.msk|x +Kill(15) = bastcfi.rep|x +Kill(16) = batbleg.msk|x +Kill(17) = bastleg.rep|x +Kill(18) = batbnot.msk|x +Kill(19) = bastvet.msk|x +Kill(20) = bastcco.msk|x +Kill(21) = bastcam.rep|x +Kill(22) = bastcve.rep|x +Kill(23) = bastntb.rep|x +Kill(24) = batblia.msk|x +Kill(25) = batbzon.msk|x +Kill(26) = batblbu.msk|x +Kill(27) = batbinl.msk|x +Kill(28) = bastcco.rep|x +Kill(29) = bastndo.msk|x +Kill(30) = bastscc.msk|x +Kill(31) = bastesc.msk|x +Kill(32) = bastmsp.msk|x +Kill(33) = batbcfi.msk|x +Kill(34) = bastzon.rep|x +Kill(35) = bastdpn.msk|x +Kill(36) = bastdpn.rep|x +Kill(37) = bastver.msk|x +Kill(38) = batbpor.msk|x +Kill(39) = bastver.rep|x +Kill(40) = batbarb.msk|x +Kill(41) = batbmsp.msk|x +Kill(42) = batbdpn.msk|x +Kill(43) = batbins.msk|x +Kill(44) = bastcam.msk|x +Kill(45) = bastcve.msk|x +Kill(46) = bastpdb.rep|x +Kill(47) = bastscc.rep|x +Kill(48) = bastpor.msk|x +Kill(49) = bastarb.rep|x +Kill(50) = batbpdb.msk|x +Kill(51) = bastntb.msk|x +Kill(52) = batbtit.msk|x +Kill(53) = cgtbcon.msk|x +Kill(54) = batbndo.msk|x +Kill(55) = bastpor.rep|x +Kill(56) = bastndo.rep|x +Kill(57) = bastesc.rep|x +Kill(58) = batbntb.msk|x +Kill(59) = batbscc.msk|x +Kill(60) = bastzon.msk|x +Kill(61) = bastmsp.rep|x +Kill(62) = batbvet.msk|x +Kill(63) = batbdel.msk|x +Kill(64) = bastnot.rep|x +Kill(65) = batbcam.msk|x +Kill(66) = bastnot.msk|x +Kill(67) = bastreg.msk|x +Kill(68) = bastleg.msk|x +Kill(69) = bastivd.rep|x +Kill(70) = bastcfi.msk|x + +[cg] +Data = 05-03-2025 +Descrizione = Contabilita' Generale +Dischi = 1 +Edit_19 = cg0 -0 +Edit_20 = cg0 -1 +Edit_26 = cg0 -4 +Edit_5 = cg0 -5 +Moduli = ba +OEM = +Patch = 1386 +PostProcess = bainst -0 CG +PreProcess = +Prezzo(1) = +Prezzo(2) = +Versione = 21511200 + diff --git a/cd/test/cg1386a1.zip b/cd/test/cg1386a1.zip new file mode 100644 index 000000000..c26d8b253 Binary files /dev/null and b/cd/test/cg1386a1.zip differ diff --git a/src/cg/cg0200.cpp b/src/cg/cg0200.cpp index fb0c2b0aa..830d0c596 100755 --- a/src/cg/cg0200.cpp +++ b/src/cg/cg0200.cpp @@ -18,17 +18,14 @@ #include #include #include -#include #include #include #include "cfban.h" -#define MAX_CONT_DOC 15 - class TClifo_application : public TRelation_application { - TMask * _msk; - TClifoVI * _rel; + TMask* _msk; + TClifoVI* _rel; bool _lbcn, _gesven, _gessal, _has_cg, _liscatven, _geslv; bool _savenew; @@ -51,8 +48,7 @@ protected: //////////// static bool ban_notify(TSheet_field& ban, int r, KEY key); - static bool indsp_notify(TSheet_field& indsp, int r, KEY key); - static bool spese_notify(TSheet_field& spese, int r, KEY key); + static bool indsp_notify(TSheet_field& s, int r, KEY key); static void indsp_sheet_rebuilder(); static bool effetti_notify(TSheet_field& s, int r, KEY key); @@ -70,8 +66,6 @@ protected: virtual void mask2ini(const TMask& m, TConfig& ini); TSheet_field& indsp_sheet() const; - TSheet_field& contatti_sheet() const; - TSheet_field& spese_sheet() const; TString_array& field_sheet(short id) const; void reset_sheet(); void indsp_pack(); @@ -327,8 +321,8 @@ HIDDEN bool cofi_handler(TMask_field& f, KEY key) m.set(F_TIPOPERS, isdigit(s1[0]) ? "G" : "F"); } else - if (key == K_ENTER) - return f.validate(key) && no_dup_fis(f, key); + if (f.final_check(key)) + return f.validate(key) && no_dup_fis(f, key) && almeno_cf_o_pi(f); } return true; } @@ -337,8 +331,7 @@ HIDDEN bool paiv_handler(TMask_field& f, KEY key) { const TMask& m = f.mask(); - if (!m.query_mode()) - if (key == K_ENTER) + if (!m.query_mode() && f.final_check(key)) return f.validate(key) && no_dup_iva(f, key) && almeno_cf_o_pi(f); return true; } @@ -440,7 +433,7 @@ bool TClifo_application::crea_percipienti(TMask_field& f, KEY key) TLocalisamfile anafis(LF_ANAGFIS); anafis.put(ANF_CODANAGR, percip); anafis.put(ANF_DATANASC, m.get(F_DATANASC)); - anafis.put(ANF_SESSO, atoi(m.get(F_COFI).smid(9, 2)) > 31 ? 'F' : 'M'); + anafis.put(ANF_SESSO, atoi(m.get(F_COFI).mid(9, 2)) > 31 ? 'F' : 'M'); anafis.put(ANF_COMNASC, m.get(F_COMNASC)); err = anafis.write(); if (err != NOERR) @@ -491,8 +484,8 @@ bool TClifo_application::percip_handler(TMask_field& f, KEY key) if (key == K_TAB && m.field(F_RAGSOC).empty() && yesno_box(FR("Ragione sociale mancante: assumo %s"), (const char*)r)) { - m.set(F_RAGSOC, r.sleft(30), true); - m.set(F_RAGSOCA, r.smid(30), true); + m.set(F_RAGSOC, r.left(30), true); + m.set(F_RAGSOCA, r.mid(30), true); } if (m.get(F_INDCF).empty()) m.set(F_INDCF, anag.get(ANA_INDRES)); @@ -746,41 +739,6 @@ HIDDEN bool altnewcli_handler(TMask_field& f, KEY key) return true; } -HIDDEN bool newclifor_handler(TMask_field& f, KEY key) -{ - TMask& m = f.mask(); - - if (key == K_SPACE) - { - long cod = 0L; - TString tipo = m.get(F_TIPOCF) == "C" ? "F" : "C"; - TToken_string key; - const long orig_cod = m.get_long(F_CODCF); - - if (cod == 0L) - { - m.set(F_TIPOCF, tipo); - app().get_next_key(key); - cod = key.get_long(3); - m.set(F_TIPOCF, m.get(F_TIPOCF) == "C" ? "F" : "C"); - m.set(F_CODASS, cod); - if (!app().pubsave(true)) - return false; - } - - if (cod > 0L) - { - m.set(F_TIPOCF, tipo); - m.set(F_CODCF, cod); - m.set(H_TIPOCF, m.get(F_TIPOCF) == "C" ? "F" : "C"); - m.set(F_CODASS, orig_cod, 0x3); - } - else - return false; - } - return true; -} - HIDDEN bool contrlav_handler(TMask_field& f, KEY key) { if (key == K_SPACE) @@ -848,7 +806,6 @@ void TClifo_application::init_query_mode(TMask& m) m.disable(DLG_CONTRLAV); if (m.id2pos(DLG_ALTNEWCLI) >= 0) m.enable(DLG_ALTNEWCLI); - m.disable(DLG_DUPL); } void TClifo_application::init_query_insert_mode(TMask& m) @@ -868,7 +825,6 @@ void TClifo_application::init_insert_mode(TMask& m) } if (m.id2pos(DLG_ALTNEWCLI) >= 0) m.enable(DLG_ALTNEWCLI); - m.enable(DLG_DUPL); } void TClifo_application::init_modify_mode(TMask& m) @@ -879,7 +835,6 @@ void TClifo_application::init_modify_mode(TMask& m) m.enable(DLG_CONTRLAV, _geslv && m.get(F_TIPOCF) == "C"); if (m.id2pos(DLG_ALTNEWCLI) >= 0) m.disable(DLG_ALTNEWCLI); - m.enable(DLG_DUPL); } void TClifo_application::set_pnae(TMask& m, TToken_string& nonacc, TToken_string& nonscd) @@ -990,23 +945,24 @@ int TClifo_application::read(TMask& m) if (_gesven) { + TToken_string riga(240); indsp_sheet().reset(); - for (i = 1; i <= _rel->indirizzi().rows(); i++) + for (i = 0; i < _rel->indirizzi(); i++) { - const TRectype& rec = _rel->indirizzi()[i]; - const int r = indsp_sheet().set_row_cell(F_RAGSOCI, rec.get(IND_RAGSOC)); - - indsp_sheet().set_row_cell(F_INDIRI, rec.get(IND_INDIR), r); - indsp_sheet().set_row_cell(F_CIVI, rec.get(IND_CIV), r); - indsp_sheet().set_row_cell(F_LOCALI, rec.get(IND_LOCALITA), r); - indsp_sheet().set_row_cell(F_CAPI, rec.get(IND_CAP), r); - indsp_sheet().set_row_cell(F_STATOI, rec.get(IND_STATO), r); - indsp_sheet().set_row_cell(F_COMI, rec.get(IND_COM), r); - indsp_sheet().set_row_cell(F_PTELI, rec.get(IND_PTEL), r); - indsp_sheet().set_row_cell(F_TELI, rec.get(IND_TEL), r); - indsp_sheet().set_row_cell(F_PFAXI, rec.get(IND_PFAX), r); - indsp_sheet().set_row_cell(F_FAXI, rec.get(IND_FAX), r); - indsp_sheet().set_row_cell(F_IVARIDI, rec.get(IND_IVARID), r); + TRectype& rec=_rel->indirizzo(i); + riga.cut(0); + riga.add(rec.get(IND_RAGSOC)); + riga.add(rec.get(IND_INDIR)); + riga.add(rec.get(IND_CIV)); + riga.add(rec.get(IND_LOCALITA)); + riga.add(rec.get(IND_CAP)); + riga.add(rec.get(IND_STATO)); + riga.add(rec.get(IND_COM)); + riga.add(rec.get(IND_PTEL)); + riga.add(rec.get(IND_TEL)); + riga.add(rec.get(IND_PFAX)); + riga.add(rec.get(IND_FAX)); + riga.add(rec.get(IND_IVARID)); TString8 key; @@ -1015,16 +971,16 @@ int TClifo_application::read(TMask& m) const TRectype& com = cache().get(LF_COMUNI, key); - indsp_sheet().set_row_cell(F_DENCOMI, com.get(COM_DENCOM), r); - indsp_sheet().set_row_cell(F_INDIR2, rec.get(IND_INDIR2), r); - indsp_sheet().set_row_cell(F_CODDEST, rec.get(IND_CODDEST), r); - indsp_sheet().set_row_cell(F_PADESTINI, rec.get(IND_PADESTIN), r); - indsp_sheet().set_row_cell(F_PARIFAMMI, rec.get(IND_PARIFAMM), r); + riga.add(com.get(COM_DENCOM)); + riga.add(rec.get(IND_INDIR2)); + riga.add(rec.get(IND_PADESTIN)); + riga.add(rec.get(IND_PARIFAMM)); + riga.add(rec.get(IND_CODIND)); + + indsp_sheet().row(i)=riga; // Load the sheets of CODINDDOC, CODINDSP, CODINDEFF. - - TToken_string riga; - + riga.cut(0); riga.add(rec.get(IND_CODIND)); riga.add(rec.get(IND_RAGSOC)); riga.add(rec.get(IND_INDIR)); @@ -1034,31 +990,20 @@ int TClifo_application::read(TMask& m) field_sheet(F_CODINDSP).add(riga); field_sheet(F_CODINDEFF).add(riga); } - contatti_sheet().reset(); - for (int i = 1; i <= _rel->contatti().rows(); i++) - { - const TRectype& contact = _rel->contatti()[i]; - TAuto_token_string data = contact.get("DATA"); - const int r = contatti_sheet().set_row_cell(F_CONTACT, data.get(0)); - for (int j = 0; j < MAX_CONT_DOC; j++) - contatti_sheet().set_row_cell(F_TIPO1 + j, data.get(), r); - contatti_sheet().check_row(r); - } - spese_sheet().reset(); - for (int i = 1; i <= _rel->cfspra().rows(); i++) - { - const TRectype& cfspra = _rel->cfspra()[i]; - const int r = spese_sheet().set_row_cell(F_CONTACT, cfspra.get(CFSPRA_TIPOSPRA)); - - spese_sheet().set_row_cell(F_CODSP, cfspra.get(CFSPRA_CODSPRA), r); - spese_sheet().set_row_cell(F_QTADEF, cfspra.get(CFSPRA_QTADEF), r); - spese_sheet().check_row(r); + TSheet_field& s = m.sfield(F_SHEET_CONT); + s.destroy(); + for (int c = 0; c < _rel->contatti(); c++) + { + const TRectype& contact = _rel->contatto(c); + TToken_string& row = s.row(-1); + row = contact.get("SECOND"); + row << "|||" << contact.get("DATA"); + s.check_row(c); } } TToken_string key; - key.add(m.get(F_TIPOCF)); key.add(m.get(F_CODCF)); key.add("V"); @@ -1130,40 +1075,37 @@ void TClifo_application::ini2mask(TConfig& ini, TMask& m, bool query) { TToken_string riga(240); TString16 para; - - indsp_sheet().reset(); for (i = 0; ; i++) { para.format("%d,%d", LF_INDSP, i+1); - if (ini.set_paragraph(para)) - { - const int r = indsp_sheet().set_row_cell(F_RAGSOCI, ini.get(IND_RAGSOC)); + if (!ini.set_paragraph(para)) + break; + if (i == 0) + indsp_sheet().reset(); - indsp_sheet().set_row_cell(F_INDIRI, ini.get(IND_INDIR), r); - indsp_sheet().set_row_cell(F_CIVI, ini.get(IND_CIV), r); - indsp_sheet().set_row_cell(F_LOCALI, ini.get(IND_LOCALITA), r); - indsp_sheet().set_row_cell(F_CAPI, ini.get(IND_CAP), r); - indsp_sheet().set_row_cell(F_STATOI, ini.get(IND_STATO), r); - indsp_sheet().set_row_cell(F_COMI, ini.get(IND_COM), r); - indsp_sheet().set_row_cell(F_PTELI, ini.get(IND_PTEL), r); - indsp_sheet().set_row_cell(F_TELI, ini.get(IND_TEL), r); - indsp_sheet().set_row_cell(F_PFAXI, ini.get(IND_PFAX), r); - indsp_sheet().set_row_cell(F_FAXI, ini.get(IND_FAX), r); - indsp_sheet().set_row_cell(F_IVARIDI, ini.get(IND_IVARID), r); + riga.cut(0); + riga.add(ini.get(IND_RAGSOC)); + riga.add(ini.get(IND_INDIR)); + riga.add(ini.get(IND_CIV)); + riga.add(ini.get(IND_LOCALITA)); + riga.add(ini.get(IND_CAP)); + riga.add(ini.get(IND_STATO)); + riga.add(ini.get(IND_COM)); + riga.add(ini.get(IND_PTEL)); + riga.add(ini.get(IND_TEL)); + riga.add(ini.get(IND_PFAX)); + riga.add(ini.get(IND_FAX)); + riga.add(ini.get(IND_IVARID)); TString16 key; - key << ini.get(IND_STATO); key << '|' << ini.get(IND_COM); - const TRectype & com = cache().get(LF_COMUNI, key); + riga.add(com.get(COM_DENCOM)); + riga.add(ini.get(IND_INDIR2)); + riga.add(ini.get(IND_CODIND)); - indsp_sheet().set_row_cell(F_DENCOMI, com.get(COM_DENCOM), r); - indsp_sheet().set_row_cell(F_INDIR2, ini.get(IND_INDIR2), r); - indsp_sheet().set_row_cell(F_CODDEST, ini.get(IND_CODDEST), r); - indsp_sheet().set_row_cell(F_PADESTINI, ini.get(IND_PADESTIN), r); - indsp_sheet().set_row_cell(F_PARIFAMMI, ini.get(IND_PARIFAMM), r); - indsp_sheet().set_row_cell(F_CODIND, ini.get(IND_CODIND), r); + indsp_sheet().row(i)=riga; // Load the sheets of CODINDDOC, CODINDSP, CODINDEFF. riga.cut(0); @@ -1176,42 +1118,8 @@ void TClifo_application::ini2mask(TConfig& ini, TMask& m, bool query) field_sheet(F_CODINDSP).add(riga); field_sheet(F_CODINDEFF).add(riga); } - else - break; } - contatti_sheet().reset(); - for (i = 0; ; i++) - { - para.format("%d,%d", LF_MULTIREL, i + 1); - if (ini.set_paragraph(para)) - { - TAuto_token_string data = ini.get("DATA"); - const int r = contatti_sheet().set_row_cell(F_CONTACT, data.get(0)); - - for (int i = 0; i < MAX_CONT_DOC; i++) - contatti_sheet().set_row_cell(F_TIPO1 + i, data.get(), r); - } - else - break; - } - spese_sheet().reset(); - for (i = 0; ; i++) - { - para.format("%d,%d", LF_CFSPRA, i + 1); - if (ini.set_paragraph(para)) - { - const int r = spese_sheet().set_row_cell(F_CONTACT, ini.get(CFSPRA_TIPOSPRA)); - - spese_sheet().set_row_cell(F_CODSP, ini.get(CFSPRA_CODSPRA), r); - spese_sheet().set_row_cell(F_QTADEF, ini.get(CFSPRA_QTADEF), r); - } - else - break; - } - } - TString p; - p << LF_CFBAN << ",V"; TSheet_field & ns_sh = m.sfield(F_BANA); @@ -1268,9 +1176,9 @@ int TClifo_application::write(const TMask& m) bool TClifo_application::remove() { - bool ok = TRelation_application::remove(); + int err = TRelation_application::remove(); - if (ok) + if (err == NOERR) { TRelation * r = get_relation(); TToken_string key; @@ -1292,7 +1200,7 @@ bool TClifo_application::remove() vs_ban.remove(); } - return ok; + return err == NOERR; } void TClifo_application::mask2ini(const TMask& m, TConfig& ini) @@ -1405,19 +1313,7 @@ TString_array& TClifo_application::field_sheet(short id) const TSheet_field& TClifo_application::indsp_sheet() const { - TSheet_field& o_sheet = _msk->sfield(F_SHEET_G_VEN); - return o_sheet; -} - -TSheet_field& TClifo_application::contatti_sheet() const -{ - TSheet_field& o_sheet = _msk->sfield(F_SHEET_CONT); - return o_sheet; -} - -TSheet_field& TClifo_application::spese_sheet() const -{ - TSheet_field& o_sheet = _msk->sfield(F_SHEET_SPESE); + TSheet_field& o_sheet=_msk->sfield(F_SHEET_G_VEN); return o_sheet; } @@ -1477,7 +1373,7 @@ void TClifo_application::common_f(const TMask& m) { const TString& alter = m.get(F_RICALT); if (alter.blank() && m.mode() == MODE_INS) - ((TMask &)m).set(F_RICALT, m.get(F_RAGSOC).sleft(m.field(F_RICALT).size())); + ((TMask &)m).set(F_RICALT, m.get(F_RAGSOC).left(m.field(F_RICALT).size())); TToken_string nonacceff(30, ';'), nonscadeff(30, ';'); get_pnae(m, nonacceff, nonscadeff); @@ -1489,119 +1385,63 @@ void TClifo_application::common_f(const TMask& m) { const char tipocf = m.get(F_TIPOCF)[0]; const long codcf = m.get_long(F_CODCF); - TRectype recind(LF_INDSP); _rel->destroy_rows(); indsp_pack(); - if (_rel->indirizzi().key().empty()) + TArray& rows=indsp_sheet().rows_array(); + int n_items = rows.items(); + + for (int i = 0; i < n_items; i++) { - recind.put(IND_TIPOCF, tipocf); - recind.put(IND_CODCF, codcf); - _rel->indirizzi().set_key(&recind); - } - FOR_EACH_SHEET_ROW_LOOP(indsp_sheet(), r) - { - recind.zero(); - recind.put(IND_TIPOCF,tipocf); - recind.put(IND_CODCF,codcf); - recind.put(IND_CODIND, r + 1); - recind.put(IND_RAGSOC, indsp_sheet().get_str_row_cell(r, F_RAGSOCI)); - recind.put(IND_INDIR, indsp_sheet().get_str_row_cell(r, F_INDIRI)); - recind.put(IND_CIV, indsp_sheet().get_str_row_cell(r, F_CIVI)); - recind.put(IND_LOCALITA, indsp_sheet().get_str_row_cell(r, F_LOCALI)); - recind.put(IND_CAP, indsp_sheet().get_str_row_cell(r, F_CAPI)); - recind.put(IND_STATO, indsp_sheet().get_str_row_cell(r, F_STATOI)); - recind.put(IND_COM, indsp_sheet().get_str_row_cell(r, F_COMI)); - recind.put(IND_PTEL, indsp_sheet().get_str_row_cell(r, F_PTELI)); - recind.put(IND_TEL, indsp_sheet().get_str_row_cell(r, F_TELI)); - recind.put(IND_PFAX, indsp_sheet().get_str_row_cell(r, F_PFAXI)); - recind.put(IND_FAX, indsp_sheet().get_str_row_cell(r, F_FAXI)); - recind.put(IND_IVARID, indsp_sheet().get_str_row_cell(r, F_IVARIDI)); - recind.put(IND_INDIR2, indsp_sheet().get_str_row_cell(r, F_DENCOMI)); - recind.put(IND_PADESTIN, indsp_sheet().get_str_row_cell(r, F_PADESTINI)); - recind.put(IND_CODDEST, indsp_sheet().get_str_row_cell(r, F_CODDEST)); - recind.put(IND_PARIFAMM, indsp_sheet().get_str_row_cell(r, F_PARIFAMMI)); - _rel->indirizzi().add_row(recind); + TToken_string& row=(TToken_string&)rows[i]; + TRectype& rec=_rel->indirizzo(i); + row.restart(); + rec.zero(); + rec.put(IND_TIPOCF,tipocf); + rec.put(IND_CODCF,codcf); + rec.put(IND_RAGSOC,row.get()); + rec.put(IND_INDIR,row.get()); + rec.put(IND_CIV,row.get()); + rec.put(IND_LOCALITA,row.get()); + rec.put(IND_CAP,row.get()); + rec.put(IND_STATO,row.get()); + rec.put(IND_COM,row.get()); + rec.put(IND_PTEL,row.get()); + rec.put(IND_TEL,row.get()); + rec.put(IND_PFAX,row.get()); + rec.put(IND_FAX,row.get()); + rec.put(IND_IVARID,row.get()); + row.get(); + rec.put(IND_INDIR2,row.get()); + rec.put(IND_PADESTIN, row.get()); + rec.put(IND_PARIFAMM, row.get()); + rec.put(IND_CODIND,i+1); } - int err = _rel->indirizzi().write(true); - if (err != NOERR) + TToken_string data; + TString8 first, second; + first.format("%c%06ld", m.get(F_TIPOCF)[0], m.get_long(F_CODCF)); + TSheet_field& s = m.sfield(F_SHEET_CONT); + FOR_EACH_SHEET_ROW(s, r, row) + { + TRectype& rec=_rel->contatto(r); + rec.put("COD", "BACON"); + rec.put("FIRST", first); + second.format("%06ld", row->get_long(0)); + rec.put("SECOND", second); + row->get(2); + data.cut(0); + const char* d = NULL; + while ((d = row->get())) { - error_box(FR("Errore %d nella scrittura indirizzi"), err); - return; - } - - TRectype recsp(LF_CFSPRA); - - if (_rel->cfspra().key().empty()) - { - recsp.put(CFSPRA_TIPOCF, tipocf); - recsp.put(CFSPRA_CODCF, codcf); - _rel->cfspra().set_key(&recsp); - } - - FOR_EACH_SHEET_ROW_LOOP(spese_sheet(), rs) - { - recsp.zero(); - recsp.put(CFSPRA_TIPOCF, tipocf); - recsp.put(CFSPRA_CODCF, codcf); - recsp.put(CFSPRA_NRIGA, rs + 1); - recsp.put(CFSPRA_TIPOSPRA, spese_sheet().get_str_row_cell(rs, F_TIPOSPRA)); - recsp.put(CFSPRA_CODSPRA, spese_sheet().get_str_row_cell(rs, F_CODSP)); - recsp.put(CFSPRA_QTADEF, spese_sheet().get_str_row_cell(rs, F_QTADEF)); - _rel->cfspra().add_row(recsp); - } - err = _rel->cfspra().write(true); - if (err != NOERR) - { - error_box(FR("Errore %d nella scrittura spese"), err); - return; + if (*d > ' ') + data.add(d); } + rec.put("DATA", data); } - - TRectype reccon(LF_MULTIREL); - TString first, second; - int len = reccon.rec_des().field("SECOND").len(); - - if (_rel->contatti().key().empty()) - { - reccon.put("COD", "BACON"); - first.format("%s%06ld", (const char *)m.get(F_TIPOCF), m.get_long(F_CODCF)); - reccon.put("FIRST", first); - _rel->contatti().set_key(&reccon); - } - FOR_EACH_SHEET_ROW_LOOP(contatti_sheet(), rc) - { - reccon.put("COD", "BACON"); - first.format("%s%06ld", (const char *)m.get(F_TIPOCF), m.get_long(F_CODCF)); - reccon.put("FIRST", first); - - second.cut(0); - second << rc + 1; - second.right_just(len, '0'); - reccon.put("SECOND", second); - - TToken_string data(contatti_sheet().get_str_row_cell(rc, F_CONTACT), ','); - - for (int i = 0; i < MAX_CONT_DOC; i++) - { - const TString & tipo = contatti_sheet().get_str_row_cell(rc, F_TIPO1 + i); - - if (tipo.full()) - data.add(tipo); - } - reccon.put("DATA", data); - _rel->contatti().add_row(reccon); - } - int err = _rel->contatti().write(true); - if (err != NOERR) - { - error_box(FR("Errore %d nella scrittura contatto"), err); - return; } TToken_string key; - key.add(m.get(F_TIPOCF)); key.add(m.get(F_CODCF)); key.add("V"); @@ -1728,22 +1568,6 @@ bool TClifo_application::indsp_notify(TSheet_field& indsp, int r, KEY key) return true; } -bool TClifo_application::spese_notify(TSheet_field& spese, int r, KEY key) -{ - switch (key) - { - case K_CTRL + K_INS: - // request to add the row #r - // Set tipo to S - spese.set_row_cell(F_TIPOSPRA, "S", r); - spese.check_row(r); - break; - default: - break; - } - return true; -} - bool TClifo_application::effetti_notify(TSheet_field& pnae, int r, KEY key) { if (key == K_INS) @@ -1792,7 +1616,9 @@ bool TClifo_application::user_create() // initvar e arrmask //gestisce i campi salvati sulla tabella di modulo lv020 (lvclifo) _rel->add("&LV020" ,"CODTAB==" CLI_TIPOCF "+" CLI_CODCF, 1, LF_CLIFO, LVAUT); _rel->write_enable(-LVAUT); //abilita la lettura / scrittura sul record collegato + _msk = new TMask("cg0200a") ; + _msk->set_handler(F_TIPOCF, tipocf_handler); _msk->set_handler(F_COFI, cofi_handler); _msk->set_handler(F_PAIV, paiv_handler); @@ -1808,7 +1634,6 @@ bool TClifo_application::user_create() // initvar e arrmask _msk->set_handler(LST_TIPO_RFSO, rfso_handler); _msk->set_handler(F_STATOCF, stato_handler); _msk->set_handler(F_PADESTIN, coddest_handler); - _msk->set_handler(DLG_DUPL, newclifor_handler); TSheet_field & ns_sh = _msk->sfield(F_BANA); @@ -1817,23 +1642,22 @@ bool TClifo_application::user_create() // initvar e arrmask TSheet_field& ind = _msk->sfield(F_SHEET_G_VEN); ind.set_notify(indsp_notify); - - TSheet_field& spese = _msk->sfield(F_SHEET_SPESE); - - spese.set_notify(spese_notify); ind.sheet_mask().set_handler(F_COMI, comi_handler); ind.sheet_mask().set_handler(F_PADESTINI, coddest_handler); TSheet_field& pnae = _msk->sfield(F_NONACCEFF); pnae.set_notify(effetti_notify); + + _savenew = !ini_get_bool(CONFIG_STUDIO, "cg", "Cg02SN"); + return true; } bool TClifo_application::user_destroy() // releasev e arrmask { -// da errore in inserimento da controllare safe_delete(_rel); + delete _rel; return true; }