diff --git a/cd/test/cg0852.txt b/cd/test/cg0852.txt index f9ac5aefa..9d260cec0 100644 --- a/cd/test/cg0852.txt +++ b/cd/test/cg0852.txt @@ -1,4 +1,5 @@ cg2.exe +cg2100c.msk cg2100t.msk Modificati bottoni maschera fatture SDI diff --git a/cd/test/cg0852a.ini b/cd/test/cg0852a.ini index 08337a0e3..28cea07c2 100644 --- a/cd/test/cg0852a.ini +++ b/cd/test/cg0852a.ini @@ -3,83 +3,84 @@ Demo=0 [cg2] Edit_23 = cg2 -0 -File(154) = cg2.exe|X -File(165) = cg2100t.msk|X -Patch = 0852 +File(2) = cg2.exe|X +File(5) = cg2100c.msk|X +File(13) = cg2100t.msk|X +Patch = 852 Versione = 21511200 [cg99] -Kill(0) = batbins.msk|x -Kill(1) = bastpor.rep|x -Kill(2) = batbcfi.msk|x -Kill(3) = batbntb.msk|x -Kill(4) = bastleg.msk|x -Kill(5) = batbdel.msk|x -Kill(6) = bastnot.msk|x -Kill(7) = bastvet.rep|x -Kill(8) = bastpor.msk|x -Kill(9) = bastcve.msk|x -Kill(10) = batbpdb.msk|x -Kill(11) = batbpor.msk|x -Kill(12) = bastivd.msk|x +Kill(0) = batbpdb.msk|x +Kill(1) = bastndo.rep|x +Kill(2) = batbarb.msk|x +Kill(3) = batbpor.msk|x +Kill(4) = bastesc.msk|x +Kill(5) = batbzon.msk|x +Kill(6) = batblia.msk|x +Kill(7) = batbver.msk|x +Kill(8) = bastcco.rep|x +Kill(9) = bastpdb.rep|x +Kill(10) = bastesc.rep|x +Kill(11) = bastivd.msk|x +Kill(12) = bastcfi.msk|x Kill(13) = batbind.msk|x -Kill(14) = batblbu.msk|x -Kill(15) = bastdpn.msk|x +Kill(14) = bastarb.msk|x +Kill(15) = bastdpn.rep|x Kill(16) = batbleg.msk|x -Kill(17) = bastcfi.msk|x -Kill(18) = batbdpn.msk|x -Kill(19) = bastcam.msk|x +Kill(17) = batbinl.msk|x +Kill(18) = batbvet.msk|x +Kill(19) = bastdpn.msk|x Kill(20) = bastcco.msk|x -Kill(21) = batbvet.msk|x -Kill(22) = bastarb.msk|x -Kill(23) = bastesc.rep|x -Kill(24) = cg2fppro.msk|x -Kill(25) = bastver.msk|x -Kill(26) = batbtit.msk|x -Kill(27) = batbcco.msk|x -Kill(28) = bastzon.rep|x +Kill(21) = batblbu.msk|x +Kill(22) = bastreg.msk|x +Kill(23) = batbdel.msk|x +Kill(24) = bastmsp.rep|x +Kill(25) = batbins.msk|x +Kill(26) = bastnot.msk|x +Kill(27) = batbntb.msk|x +Kill(28) = bastleg.msk|x Kill(29) = bastndo.msk|x -Kill(30) = bastreg.rep|x -Kill(31) = batbndo.msk|x -Kill(32) = bastscc.rep|x -Kill(33) = batbnot.msk|x -Kill(34) = batbscc.msk|x -Kill(35) = bastntb.rep|x -Kill(36) = batbivd.msk|x -Kill(37) = bastnot.rep|x -Kill(38) = batbtra.msk|x +Kill(30) = bastnot.rep|x +Kill(31) = bastcve.msk|x +Kill(32) = cgtbcon.msk|x +Kill(33) = bastcam.rep|x +Kill(34) = batbreg.msk|x +Kill(35) = batbivd.msk|x +Kill(36) = bastpor.rep|x +Kill(37) = bastvet.msk|x +Kill(38) = bastpor.msk|x Kill(39) = bastver.rep|x -Kill(40) = bastcam.rep|x +Kill(40) = batblia.msk|x Kill(41) = batbmsp.msk|x -Kill(42) = bastmsp.rep|x -Kill(43) = bastvet.msk|x -Kill(44) = batbesc.msk|x -Kill(45) = bastpdb.msk|x -Kill(46) = bastleg.rep|x -Kill(47) = batblia.msk|x -Kill(48) = bastpdb.rep|x +Kill(42) = bastmsp.msk|x +Kill(43) = bastcfi.rep|x +Kill(44) = bastntb.rep|x +Kill(45) = bastleg.rep|x +Kill(46) = batbscc.msk|x +Kill(47) = bastcve.rep|x +Kill(48) = bastzon.rep|x Kill(49) = bastarb.rep|x -Kill(50) = bastcfi.rep|x +Kill(50) = batbcam.msk|x Kill(51) = bastntb.msk|x -Kill(52) = cgtbcon.msk|x -Kill(53) = bastcve.rep|x -Kill(54) = batbver.msk|x -Kill(55) = batbzon.msk|x -Kill(56) = batbcve.msk|x -Kill(57) = batbcam.msk|x -Kill(58) = bastesc.msk|x -Kill(59) = batbinl.msk|x -Kill(60) = bastivd.rep|x -Kill(61) = batbarb.msk|x -Kill(62) = bastmsp.msk|x -Kill(63) = bastscc.msk|x -Kill(64) = bastndo.rep|x -Kill(65) = bastdpn.rep|x -Kill(66) = bastzon.msk|x -Kill(67) = batblia.msk|x -Kill(68) = batbreg.msk|x -Kill(69) = bastreg.msk|x -Kill(70) = bastcco.rep|x +Kill(52) = bastzon.msk|x +Kill(53) = bastivd.rep|x +Kill(54) = bastpdb.msk|x +Kill(55) = batbcve.msk|x +Kill(56) = batbesc.msk|x +Kill(57) = bastscc.msk|x +Kill(58) = batbtra.msk|x +Kill(59) = bastvet.rep|x +Kill(60) = batbcfi.msk|x +Kill(61) = bastscc.rep|x +Kill(62) = batbtit.msk|x +Kill(63) = bastver.msk|x +Kill(64) = bastcam.msk|x +Kill(65) = bastreg.rep|x +Kill(66) = cg2fppro.msk|x +Kill(67) = batbdpn.msk|x +Kill(68) = batbndo.msk|x +Kill(69) = batbnot.msk|x +Kill(70) = batbcco.msk|x [cg] Data = 04-07-2019 diff --git a/cd/test/cg0852a1.zip b/cd/test/cg0852a1.zip index cb1a4dc8d..eaac21217 100644 Binary files a/cd/test/cg0852a1.zip and b/cd/test/cg0852a1.zip differ diff --git a/cd/test/cg0854.txt b/cd/test/cg0854.txt new file mode 100644 index 000000000..730badb66 --- /dev/null +++ b/cd/test/cg0854.txt @@ -0,0 +1,3 @@ +cg2.exe + +Blocco il ricalcolo automatico delle scadenze quando cambio il codice pagamento se sto utilizzando l'F1 diff --git a/cd/test/cg0854a.ini b/cd/test/cg0854a.ini new file mode 100644 index 000000000..31b9c56fd --- /dev/null +++ b/cd/test/cg0854a.ini @@ -0,0 +1,95 @@ +[Main] +Demo=0 + +[cg2] +Edit_23 = cg2 -0 +File(2) = cg2.exe|X +Patch = 0854 +Versione = 21511200 + +[cg99] +Kill(0) = bastdpn.msk|x +Kill(1) = batbins.msk|x +Kill(2) = bastcve.msk|x +Kill(3) = batbvet.msk|x +Kill(4) = bastmsp.rep|x +Kill(5) = bastnot.rep|x +Kill(6) = batbntb.msk|x +Kill(7) = bastcam.rep|x +Kill(8) = bastnot.msk|x +Kill(9) = cgtbcon.msk|x +Kill(10) = bastdpn.rep|x +Kill(11) = batblbu.msk|x +Kill(12) = bastarb.msk|x +Kill(13) = bastcco.msk|x +Kill(14) = batbinl.msk|x +Kill(15) = batbdel.msk|x +Kill(16) = batbleg.msk|x +Kill(17) = bastreg.msk|x +Kill(18) = bastivd.msk|x +Kill(19) = bastesc.rep|x +Kill(20) = batbind.msk|x +Kill(21) = bastcfi.msk|x +Kill(22) = bastvet.rep|x +Kill(23) = bastreg.rep|x +Kill(24) = batbtra.msk|x +Kill(25) = bastcam.msk|x +Kill(26) = batbcco.msk|x +Kill(27) = batbdpn.msk|x +Kill(28) = cg2fppro.msk|x +Kill(29) = bastarb.rep|x +Kill(30) = batbcve.msk|x +Kill(31) = bastscc.rep|x +Kill(32) = bastzon.rep|x +Kill(33) = bastpdb.msk|x +Kill(34) = batbcfi.msk|x +Kill(35) = bastscc.msk|x +Kill(36) = bastver.msk|x +Kill(37) = batbesc.msk|x +Kill(38) = batbtit.msk|x +Kill(39) = bastver.rep|x +Kill(40) = bastleg.rep|x +Kill(41) = bastntb.msk|x +Kill(42) = bastpor.msk|x +Kill(43) = bastntb.rep|x +Kill(44) = batbcam.msk|x +Kill(45) = bastcve.rep|x +Kill(46) = bastivd.rep|x +Kill(47) = batbscc.msk|x +Kill(48) = bastzon.msk|x +Kill(49) = bastndo.msk|x +Kill(50) = batbivd.msk|x +Kill(51) = batbmsp.msk|x +Kill(52) = bastleg.msk|x +Kill(53) = batbreg.msk|x +Kill(54) = batblia.msk|x +Kill(55) = bastvet.msk|x +Kill(56) = bastcfi.rep|x +Kill(57) = bastpor.rep|x +Kill(58) = bastmsp.msk|x +Kill(59) = batbnot.msk|x +Kill(60) = batbndo.msk|x +Kill(61) = bastpdb.rep|x +Kill(62) = bastcco.rep|x +Kill(63) = bastndo.rep|x +Kill(64) = batbpdb.msk|x +Kill(65) = batbzon.msk|x +Kill(66) = bastesc.msk|x +Kill(67) = batbpor.msk|x +Kill(68) = batbarb.msk|x +Kill(69) = batbver.msk|x +Kill(70) = batblia.msk|x + +[cg] +Data = 08-07-2019 +Descrizione = Contabilita' Generale +Dischi = 1 +Moduli = ba +OEM = +Patch = 854 +PostProcess = bainst -0 CG +PreProcess = +Prezzo(1) = +Prezzo(2) = +Versione = 21511200 + diff --git a/cd/test/cg0854a1.zip b/cd/test/cg0854a1.zip new file mode 100644 index 000000000..ab3aefbee Binary files /dev/null and b/cd/test/cg0854a1.zip differ diff --git a/cd/test/ef0854.txt b/cd/test/ef0854.txt new file mode 100644 index 000000000..e4bc077cc --- /dev/null +++ b/cd/test/ef0854.txt @@ -0,0 +1,3 @@ +ef0.exe + +Aggiornata modifica per banca presentazione e appoggio della gestione effetti diff --git a/cd/test/ef0854a.ini b/cd/test/ef0854a.ini new file mode 100644 index 000000000..313fa0872 --- /dev/null +++ b/cd/test/ef0854a.ini @@ -0,0 +1,28 @@ +[Main] +Demo=0 + +[ef0] +Edit_163 = ef0 -1 +Edit_5 = ef0 -6 +File(5) = ef0.exe|X +Patch = 0854 +Versione = 21511200 + +[ef99] +Kill(0) = eftbbnp.msk|x +Kill(1) = efstbnp.msk|x +Kill(2) = efstbnp.rep|x + +[ef] +Data = 09-07-2019 +Descrizione = Effetti +Dischi = 1 +Moduli = ve +OEM = +Patch = 854 +PostProcess = bainst -0 EF +PreProcess = +Prezzo(1) = +Prezzo(2) = +Versione = 21511200 + diff --git a/cd/test/ef0854a1.zip b/cd/test/ef0854a1.zip new file mode 100644 index 000000000..571c78f43 Binary files /dev/null and b/cd/test/ef0854a1.zip differ diff --git a/cd/test/fp0854.txt b/cd/test/fp0854.txt new file mode 100644 index 000000000..70bbcdf53 --- /dev/null +++ b/cd/test/fp0854.txt @@ -0,0 +1,4 @@ +fp0.exe +fp0400a.msk + +Aggiunta associazione fornitori automatica all'avvio del monitor della fatt. passive diff --git a/cd/test/fp0854a.ini b/cd/test/fp0854a.ini new file mode 100644 index 000000000..290b8e8a7 --- /dev/null +++ b/cd/test/fp0854a.ini @@ -0,0 +1,20 @@ +[Main] +Demo=0 + +[fp1] +File(0) = fp0.exe|X +File(4) = fp0400a.msk|X +Patch = 0854 +Versione = 21511200 + +[fp] +Data = 08-07-2019 +Descrizione = Fattura Elettronica +Dischi = 1 +Moduli = cg,ve +OEM = +Patch = 854 +PostProcess = +PreProcess = +Versione = 21511200 + diff --git a/cd/test/fp0854a1.zip b/cd/test/fp0854a1.zip new file mode 100644 index 000000000..3b5541d48 Binary files /dev/null and b/cd/test/fp0854a1.zip differ diff --git a/cd/test/fp0856.txt b/cd/test/fp0856.txt new file mode 100644 index 000000000..fd235e4d2 --- /dev/null +++ b/cd/test/fp0856.txt @@ -0,0 +1,4 @@ +fp0.exe + +Bloccata selezione multipla per contabilizzazione +Corretto codice causale da fornitore: andava a leggere il codforn dalla colonna sbagliata diff --git a/cd/test/fp0856a.ini b/cd/test/fp0856a.ini new file mode 100644 index 000000000..021dce941 --- /dev/null +++ b/cd/test/fp0856a.ini @@ -0,0 +1,19 @@ +[Main] +Demo=0 + +[fp1] +File(0) = fp0.exe|X +Patch = 856 +Versione = 21511200 + +[fp] +Data = 15-07-2019 +Descrizione = Fattura Elettronica +Dischi = 1 +Moduli = cg,ve +OEM = +Patch = 856 +PostProcess = +PreProcess = +Versione = 21511200 + diff --git a/cd/test/fp0856a1.zip b/cd/test/fp0856a1.zip new file mode 100644 index 000000000..aaa3e3f4d Binary files /dev/null and b/cd/test/fp0856a1.zip differ diff --git a/cd/test/ve0854.txt b/cd/test/ve0854.txt new file mode 100644 index 000000000..df9bf3267 --- /dev/null +++ b/cd/test/ve0854.txt @@ -0,0 +1,3 @@ +ve6100a.msk + +Repubblicata maschera per patch mancante [n. 0426] diff --git a/cd/test/ve0854a.ini b/cd/test/ve0854a.ini new file mode 100644 index 000000000..5c6d07f39 --- /dev/null +++ b/cd/test/ve0854a.ini @@ -0,0 +1,129 @@ +[Main] +Demo=0 + +[ve6] +File(93) = ve6100a.msk|X +Patch = 0854 +Versione = 21511200 + +[ve99] +Kill(0) = batbcld.msk|x +Kill(1) = bastspp.rep|x +Kill(2) = basttri.msk|x +Kill(3) = batbeld.msk|x +Kill(4) = ve7700a.msk|x +Kill(5) = batbspt.msk|x +Kill(6) = ve7300a.msk|x +Kill(7) = bastcra.rep|x +Kill(8) = batbfca.msk|x +Kill(9) = bastgcg.rep|x +Kill(10) = bastabe.rep|x +Kill(11) = batbpro.msk|x +Kill(12) = bastgca.msk|x +Kill(13) = ve7400a.msk|x +Kill(14) = batbtag.msk|x +Kill(15) = batbtri.msk|x +Kill(16) = baststd.msk|x +Kill(17) = baststd.rep|x +Kill(18) = batbrfc.msk|x +Kill(19) = ve7200a.msk|x +Kill(20) = batbmre.msk|x +Kill(21) = bastctr.msk|x +Kill(22) = batbcau.msk|x +Kill(23) = ve7400a.ini|x +Kill(24) = basteld.rep|x +Kill(25) = batbrfa.msk|x +Kill(26) = bastcaa.rep|x +Kill(27) = ve7701a.ini|x +Kill(28) = bastfrd.rep|x +Kill(29) = batbgcg.msk|x +Kill(30) = bastums.rep|x +Kill(31) = bastgca.rep|x +Kill(32) = basttri.rep|x +Kill(33) = batbfrr.msk|x +Kill(34) = batbums.msk|x +Kill(35) = bastimb.rep|x +Kill(36) = bastfca.msk|x +Kill(37) = bastfrr.msk|x +Kill(38) = batbbnp.msk|x +Kill(39) = bastasf.msk|x +Kill(40) = bastnum.msk|x +Kill(41) = bastfca.rep|x +Kill(42) = ve7400conf.ini|x +Kill(43) = ve7500a.msk|x +Kill(44) = bastgmc.msk|x +Kill(45) = bastfrm.rep|x +Kill(46) = batbfsa.msk|x +Kill(47) = basttip.rep|x +Kill(48) = batbstd.msk|x +Kill(49) = bastcau.msk|x +Kill(50) = bastrfa.msk|x +Kill(51) = bastnum.rep|x +Kill(52) = bastubi.msk|x +Kill(53) = ve7600a.msk|x +Kill(54) = ve7100a.msk|x +Kill(55) = batbprs.msk|x +Kill(56) = batbspp.msk|x +Kill(57) = batbcaa.msk|x +Kill(58) = bastrfc.msk|x +Kill(59) = bastimb.msk|x +Kill(60) = bastums.msk|x +Kill(61) = batbctr.msk|x +Kill(62) = batbfid.msk|x +Kill(63) = bastspp.msk|x +Kill(64) = batbubi.msk|x +Kill(65) = bastctr.rep|x +Kill(66) = bastubi.rep|x +Kill(67) = basttag.msk|x +Kill(68) = bastcaa.msk|x +Kill(69) = bastfrr.rep|x +Kill(70) = bastcau.rep|x +Kill(71) = batbtip.msk|x +Kill(72) = basteld.msk|x +Kill(73) = bastgcg.msk|x +Kill(74) = ve7200a.frm|x +Kill(75) = bastprs.rep|x +Kill(76) = bastbnp.msk|x +Kill(77) = batbgsa.msk|x +Kill(78) = batbasf.msk|x +Kill(79) = efstbnp.rep|x +Kill(80) = eftbbnp.msk|x +Kill(81) = basttag.rep|x +Kill(82) = batbgca.msk|x +Kill(83) = ve7.exe|x +Kill(84) = ve7300a.frm|x +Kill(85) = batbfrm.msk|x +Kill(86) = bastrfc.rep|x +Kill(87) = batbnum.msk|x +Kill(88) = bastcra.msk|x +Kill(89) = bastfrd.msk|x +Kill(90) = bastprs.msk|x +Kill(91) = batbcra.msk|x +Kill(92) = bastasf.rep|x +Kill(93) = bastabe.msk|x +Kill(94) = batbgmc.msk|x +Kill(95) = bastbnp.rep|x +Kill(96) = efstbnp.msk|x +Kill(97) = batbabe.msk|x +Kill(98) = batbacr.msk|x +Kill(99) = batbimb.msk|x +Kill(100) = batbfrd.msk|x +Kill(101) = batbprv.msk|x +Kill(102) = bastgmc.rep|x +Kill(103) = bastfrm.msk|x +Kill(104) = basttip.msk|x +Kill(105) = bastrfa.rep|x + +[ve] +Data = 08-07-2019 +Descrizione = Vendite +Dischi = 1 +Moduli = ba,cg9,pr9,mg9,sv9,in9,ef9 +OEM = +Patch = 854 +PostProcess = bainst -0 VE +PreProcess = +Prezzo(1) = +Prezzo(2) = +Versione = 21511200 + diff --git a/cd/test/ve0854a1.zip b/cd/test/ve0854a1.zip new file mode 100644 index 000000000..9ccc1cb7a Binary files /dev/null and b/cd/test/ve0854a1.zip differ diff --git a/src/cg/cg2104.cpp b/src/cg/cg2104.cpp index a1e786925..b9b06e377 100755 --- a/src/cg/cg2104.cpp +++ b/src/cg/cg2104.cpp @@ -328,8 +328,8 @@ bool TPrimanota_application::codpag_handler(TMask_field& f, KEY key) TMask& m = f.mask(); TPrimanota_application& a = app(); const bool set_scad = a.is_fattura() && m.page_enabled(2); // E' attiva pagina 3 - if (key == K_ENTER) - { + if (key == K_ENTER && (!a._f1_ini && (!a._f1_ini && (a._pro_mask == nullptr || !a._pro_mask->should_bring_back())))) + { if (set_scad && f.empty()) { ok = f.error_box(TR("Il codice di pagamento è obbligatorio!")); @@ -355,7 +355,7 @@ bool TPrimanota_application::codpag_handler(TMask_field& f, KEY key) } } - if (key == K_TAB && f.focusdirty() && m.insert_mode() && set_scad) + if (key == K_TAB && f.focusdirty() && m.insert_mode() && set_scad && (!a._f1_ini && (a._pro_mask == nullptr || !a._pro_mask->should_bring_back()))) a.set_scadenze(m); return ok; diff --git a/src/ef/ef0100.cpp b/src/ef/ef0100.cpp index 4a3f053e9..8a370df70 100755 --- a/src/ef/ef0100.cpp +++ b/src/ef/ef0100.cpp @@ -22,6 +22,7 @@ class TVariazione_effetti: public TRelation_application TMask *_msk; TEffetto *_effetto; TRelation *_rel; + TCli_for * _cli; protected: virtual void init_query_mode(TMask&); @@ -57,8 +58,11 @@ protected: public: virtual bool protected_record(TRectype&); virtual TRelation* get_relation() const {return _rel;} - TVariazione_effetti() {}; - virtual ~TVariazione_effetti() {}; + TVariazione_effetti(): _msk(nullptr), _effetto(nullptr), _rel(nullptr), _cli(nullptr) + { + } + + virtual ~TVariazione_effetti() = default; }; // restituisce un riferimento all' applicazione @@ -366,8 +370,15 @@ bool TVariazione_effetti::clifo_handler(TMask_field& f, KEY k) if (k == K_TAB && f.to_check(k)) { TMask& m = f.mask(); - TString iban; iban << get_iban(m.get(F_CODCF)); - if (iban.not_empty()) + const char tipocf = m.get(F_TIPOCF)[0]; + const long codcf = m.get_long(F_CODCF); + if (app()._cli == nullptr) + app()._cli = new TCli_for(); + if (app()._cli->tipo() != tipocf || app()._cli->codice() != codcf) + app()._cli->read(tipocf, codcf); + const TString & iban = app()._cli->get_iban(); + + if (iban.full()) { m.set(F_IBAN, iban); m.set(F_IBAN_STATO, iban.left(2)); @@ -379,7 +390,15 @@ bool TVariazione_effetti::clifo_handler(TMask_field& f, KEY k) m.set(F_BBAN_CONTO, iban.mid(15)); m.efield(F_IBAN_STATO).validate(K_TAB); } - } + TToken_string& banp = app()._cli->get_ban_pres(); + if (banp.full()) + { + m.set(F_CODABIP, banp.get()); + m.set(F_CODCABP, banp.get()); + m.set(F_PROG, banp.get()); + m.efield(F_PROG).validate(K_TAB); + } + } return true; } diff --git a/src/fp/fp0400.cpp b/src/fp/fp0400.cpp index 45219c578..71b9e17e9 100644 --- a/src/fp/fp0400.cpp +++ b/src/fp/fp0400.cpp @@ -82,6 +82,8 @@ protected: static bool causfa_handler(TMask_field& f, KEY k); void fattsel(int dlg, TField_event& e); + // Non permette la selezione multipla delle righe + void sel(); bool on_field_event(TOperable_field& o, TField_event e, long jolly) override; void check_buttons(int p); void next_page(int p) override; @@ -98,6 +100,7 @@ protected: public: TString& get_fattsel() const; + void auto_assoc(); TPassive_mask(bool f1); }; @@ -412,6 +415,48 @@ TString& TPassive_mask::get_fattsel() const return fattsel << get(F_ASSOC); } +void TPassive_mask::auto_assoc() +{ + TString query = "SELECT PZ_TIPOPROT AS TIPO_PROT, YEAR(P7_DATA) AS ANNO, P7_TIPODOC AS [TIPO_SDI], P7_NUMERO AS [NUM_DOC], \n" + "P7_DATA AS[DATA_DOC], PZ_DATAORARIC AS[DATA_RIC], PQ_IMPTOTDOC AS[TOT_DOC], PZ_NUMREGCONT AS NUMREGCONT, PZ_DATAREGCONT AS DATAREGCONT, P2_ANADENOMIN AS[RAG_SOC], P2_ANANOME AS NOME, \n" + "P2_ANACOGNOME AS COGNOME, P2_FISCIVACOD AS[P_IVA], P2_CODFISCALE AS[COD_FISC], P2_FISCIVAPAESE AS[COD_PAESE], \n" + "COUNT(PP_ATTACHMENT) AS ATTACHMENT, P1_CODDEST AS[COD_SDI], PU_PEC AS PEC, P1_KEYPRGINVIO AS KEYPROG, P1_KEYHEADERFATT AS KEYHEAD, P1_KEYBODYFATT AS KEYFATT, \n" + "PZ_NUMPROT AS[NUM_PROT], PZ_ANNOPROT AS[ANNO_PROT], PZ_TIPOCF AS[TIPO_CF], PZ_CLIFOR AS[COD_CLIFOR] \n" + "FROM PAA0100F PAA01 \n" + "JOIN PAA0200F PAA02 ON P1_KEYPRGINVIO = P2_KEYPRGINVIO and P1_KEYHEADERFATT = P2_KEYHEADERFATT and P1_KEYBODYFATT = P2_KEYBODYFATT \n" + "JOIN PAA0700F PAA07 ON P1_KEYPRGINVIO = P7_KEYPRGINVIO and P1_KEYHEADERFATT = P7_KEYHEADERFATT and P1_KEYBODYFATT = P7_KEYBODYFATT \n" + "JOIN PAA2700F PAA27 ON P1_KEYPRGINVIO = PQ_KEYPRGINVIO and P1_KEYHEADERFATT = PQ_KEYHEADERFATT and P1_KEYBODYFATT = PQ_KEYBODYFATT \n" + "LEFT JOIN PAA2600F PAA26 ON P1_KEYPRGINVIO = PP_KEYPRGINVIO and P1_KEYHEADERFATT = PP_KEYHEADERFATT and P1_KEYBODYFATT = PP_KEYBODYFATT \n" + "LEFT JOIN PAA3200F PAA32 ON P1_KEYPRGINVIO = PU_KEYPRGINVIO and P1_KEYHEADERFATT = PU_KEYHEADERFATT and P1_KEYBODYFATT = PU_KEYBODYFATT \n" + "LEFT JOIN FPPRO00F FPPRO ON P1_KEYPRGINVIO = PZ_KEYPRGINVIO and P1_KEYHEADERFATT = PZ_KEYHEADERFATT and P1_KEYBODYFATT = PZ_KEYBODYFATT \n" + "WHERE PZ_CLIFOR = '' \n" + "GROUP BY YEAR(P7_DATA), P7_TIPODOC, P7_NUMERO, P7_DATA, PZ_DATAORARIC, PQ_IMPTOTDOC, PZ_NUMREGCONT, PZ_DATAREGCONT, P2_ANADENOMIN, P2_ANANOME, P2_ANACOGNOME, P2_FISCIVACOD, P2_CODFISCALE, P2_FISCIVAPAESE, \n" + "P1_CODDEST, PU_PEC, P1_KEYPRGINVIO, P1_KEYHEADERFATT, P1_KEYBODYFATT, PZ_TIPOPROT, PZ_NUMPROT, PZ_ANNOPROT, PZ_TIPOCF, PZ_CLIFOR;"; + + fp_db().sq_set_exec(query, false); + SSimple_query update_db; set_connection(update_db); update_db.sq_set_autocommit(false); // Non posso usare contemporaneamente due volte fp_db() + + TLocalisamfile clifo(LF_CLIFO); + for(bool ok = fp_db().sq_next(); ok; ok = fp_db().sq_next()) + { + TToken_string key("",';'); + key.add(fp_db().sq_get("KEYPROG")); key.add(fp_db().sq_get("KEYHEAD")); key.add(fp_db().sq_get("KEYFATT")); + + clifo.zero(); + clifo.put(CLI_TIPOCF, "F"); + + int for_cod = find_fornitore(clifo); + if(for_cod > 0) + { + static TString update; + update.cut(0) << "UPDATE FPPRO00F \nSET PZ_TIPOCF = 'F', PZ_CLIFOR = '" << clifo.get(CLI_CODCF) << "' \n" << + "WHERE PZ_KEYPRGINVIO = '" << key.get(0) << "' AND PZ_KEYHEADERFATT = '" << key.get(1) << "' AND PZ_KEYBODYFATT = '" << key.get(2) << "';"; + update_db.sq_set_exec(update); + } + } + update_db.sq_commit(); +} + int TPassive_mask::find_fornitore(TLocalisamfile& clifo) { TString paa_codfisc = fp_db().sq_get("COD_FISC"); @@ -607,7 +652,7 @@ int TPassive_mask::prepara_contab() const { TString prokeys = row->get(sf.cid2index(S_PROKEY)); TToken_string keys(prokeys, ';'); - TString codcaus(get_codcaus(row->get(2), row->get(10))); + TString codcaus(get_codcaus(row->get(cid2index(S_TIPODOCSDI)), row->get(cid2index(S_FORNITORE)))); TString tipodoc(row->get(sf.cid2index(S_TIPODOCSDI))); if(tipodoc == "TD01" && !check_causale(codcaus, "FA", true)) @@ -768,7 +813,7 @@ int TPassive_mask::check_err() const { if (row->starts_with("X")) { - TString codcaus(get_codcaus(row->get(2), row->get(10))); + TString codcaus(get_codcaus(row->get(cid2index(S_TIPODOCSDI)), row->get(cid2index(S_FORNITORE)))); if (codcaus.empty()) return no_codcaus; if (TString(row->get(cid2index(S_FORNITORE))).empty()) @@ -988,21 +1033,33 @@ void TPassive_mask::fattsel(const int dlg, TField_event& e) field(F_DATAENDREG).enable(get_bool(F_CONTABIL)); } +void TPassive_mask::sel() +{ + TSheet_field& sf = sfield(F_DOCS); + FOR_EACH_SHEET_ROW(sf, nr, row) + { + if (*row->get(0) == 'X') { + row->add("", 0); + break; + } + } + sf.force_update(); +} + bool TPassive_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) { switch (o.dlg()) { case S_SELCODPROT: - if(e == fe_modify) + if (e == fe_modify) { set_filter_changed(); + sel(); + } break; case F_PROT: if(e == fe_init) init(); break; - case F_DOCS: - if (e == se_query_modify) - break; case DLG_USER: if (e == fe_button && jolly > 0 && get_fattsel() == FILTER_CONT) { @@ -1114,6 +1171,7 @@ TPassive_mask::TPassive_mask(bool f1) : TAutomask("fp0400a"), _f1(f1), _filter_c _tmp_dir = _tmp_dir.tempdir(); TMask::set_handler(F_CAUSFA, causfa_handler); TMask::set_handler(F_FORNITORE, clifo_handler); + auto_assoc(); } @@ -1178,9 +1236,7 @@ void TPassive_app::main_loop() TPassive_mask mask(check_f1()); load_mask(mask); mask.first_focus(F_DATAINI); - while(mask.run() == K_ENTER) - { - } + while (mask.run() == K_ENTER) {} save_field(mask); } diff --git a/src/fp/fp0400a.uml b/src/fp/fp0400a.uml index 2b2730d9d..12388022d 100644 --- a/src/fp/fp0400a.uml +++ b/src/fp/fp0400a.uml @@ -30,7 +30,7 @@ END BUTTON DLG_EXPORT 10 2 BEGIN - PROMPT 4 1 "Contabilizzaz." + PROMPT 4 1 "Contabilizza" PICTURE TOOL_EXPORT END @@ -43,8 +43,8 @@ PAGE "Fatture Passive" 0 2 0 0 RADIOBUTTON F_ASSOC 20 50 BEGIN PROMPT 0 1 "@BFornitori" - ITEM "|Non Associate" ITEM "E|Associate" + ITEM "|Non Associate" ITEM "A|Tutte" FLAGS "Z" END diff --git a/src/fp/fplib.h b/src/fp/fplib.h index 7eb4c7646..6f46946a6 100644 --- a/src/fp/fplib.h +++ b/src/fp/fplib.h @@ -23,6 +23,7 @@ class TDoc_fp; enum { no_pdf = -1, pdf_ok = 0, no_alleg = -2}; +bool set_connection(SSimple_query& s); // Ritorna la connessione al DB paf secondo i parametri impostati nel programma di configurazione SSimple_query& fp_db(); // Lancia una maschera di password FP diff --git a/src/include/utility.cpp b/src/include/utility.cpp index 39d3a8886..4323dd3ca 100755 --- a/src/include/utility.cpp +++ b/src/include/utility.cpp @@ -721,45 +721,4 @@ TString& to_tstring(long n) TString& to_tstring(int n) { return to_tstring(static_cast(n)); -} - -bool get_bnp_iban(const TString& abi, const TString& cab, int nprog, TString& iban) -{ - TTable bnp("BNP"); - TString16 key; - key << abi << cab; - if (nprog > 0) - { - TString4 sprog; - sprog.format("%02d", nprog); - key << sprog; - } - bnp.put("CODTAB", key); - int err = bnp.read(_isgteq); - if (err == NOERR && !bnp.get("CODTAB").starts_with(abi)) - err = _iskeynotfound; - if (err == NOERR) - iban = bnp.get("S3"); - return err == NOERR; -} - -TString get_iban(const TString& codcf) -{ - TString iban; - TToken_string key; - key.add("C"); - key.add(codcf); - key.add("V"); - key.add(1); - const TRectype& cfban = cache().get(LF_CFBAN, key); - if (!cfban.empty()) - { - const TString& abi_cf = cfban.get(CFBAN_ABI); - const TString& cab_cf = cfban.get(CFBAN_CAB); - const bool found_cf = abi_cf.full() && cab_cf.full(); - iban = cfban.get(CFBAN_IBAN); - if (found_cf && iban.blank()) - get_bnp_iban(abi_cf, cab_cf, -1, iban); - } - return iban; } \ No newline at end of file diff --git a/src/include/utility.h b/src/include/utility.h index c96575e8e..a4ef32942 100755 --- a/src/include/utility.h +++ b/src/include/utility.h @@ -81,7 +81,4 @@ TString& to_tstring(int n); inline bool is_multi_table(const int file) { return file == LF_TAB || file == LF_TABGEN || file == LF_TABCOM || file == LF_TABMOD; } -TString get_iban(const TString& codcf); - - #endif /* __UTILITY_H */ diff --git a/src/ve/clifor.cpp b/src/ve/clifor.cpp index 72fd8dbd5..8946bf392 100755 --- a/src/ve/clifor.cpp +++ b/src/ve/clifor.cpp @@ -295,7 +295,47 @@ void TCli_for::cli2doc(TDocumento& doc) //aggiungere gestione spese e bolli??? } - +const TString& TCli_for::get_iban() +{ + TString & iban = get_tmp_string(30); + TToken_string key; + + key.add(tipo()); + key.add(codice()); + key.add("V"); + key.add(1); + + const TRectype& cfban = cache().get(LF_CFBAN, key); + + if (!cfban.empty()) + { + const TString& abi_cf = cfban.get(CFBAN_ABI); + const TString& cab_cf = cfban.get(CFBAN_CAB); + iban = cfban.get(CFBAN_IBAN); + } + return iban; +} + +TToken_string& TCli_for::get_ban_pres(int nprog) +{ + TToken_string & ban = get_tmp_string(30); + TToken_string key; + + key.add(tipo()); + key.add(codice()); + key.add("N"); + key.add(nprog); + + const TRectype& cfban = cache().get(LF_CFBAN, key); + + if (!cfban.empty()) + { + ban.add(cfban.get(CFBAN_ABI)); + ban.add(cfban.get(CFBAN_CAB)); + ban.add(cfban.get(CFBAN_PROGPR)); + } + return ban; +} TCli_for::TCli_for(char tipo, long codice) : TMultiple_rectype( LF_CLIFO ), _ven_rec(LF_CFVEN), _letint(LF_LETINT), _use_lettere(false), _lettera_found(false), _extended(false) { diff --git a/src/ve/clifor.h b/src/ve/clifor.h index 80928f20c..44b4bc0b0 100755 --- a/src/ve/clifor.h +++ b/src/ve/clifor.h @@ -66,6 +66,9 @@ public: void cli2doc(TDocumento& doc); const TString& find_listino_al(const TDate& datadoc) const; + const TString & get_iban(); + TToken_string & get_ban_pres(int nprog = 1); + TCli_for(char tipo = ' ', long codice = 0L); TCli_for(const TRectype & rec); TCli_for(const TCli_for & c);