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

This commit is contained in:
Mattia Tollari 2019-07-17 12:26:09 +02:00
commit 1427503e8b
27 changed files with 515 additions and 130 deletions

View File

@ -1,4 +1,5 @@
cg2.exe
cg2100c.msk
cg2100t.msk
Modificati bottoni maschera fatture SDI

View File

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

Binary file not shown.

3
cd/test/cg0854.txt Normal file
View File

@ -0,0 +1,3 @@
cg2.exe
Blocco il ricalcolo automatico delle scadenze quando cambio il codice pagamento se sto utilizzando l'F1

95
cd/test/cg0854a.ini Normal file
View File

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

BIN
cd/test/cg0854a1.zip Normal file

Binary file not shown.

3
cd/test/ef0854.txt Normal file
View File

@ -0,0 +1,3 @@
ef0.exe
Aggiornata modifica per banca presentazione e appoggio della gestione effetti

28
cd/test/ef0854a.ini Normal file
View File

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

BIN
cd/test/ef0854a1.zip Normal file

Binary file not shown.

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

@ -0,0 +1,4 @@
fp0.exe
fp0400a.msk
Aggiunta associazione fornitori automatica all'avvio del monitor della fatt. passive

20
cd/test/fp0854a.ini Normal file
View File

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

BIN
cd/test/fp0854a1.zip Normal file

Binary file not shown.

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

@ -0,0 +1,4 @@
fp0.exe
Bloccata selezione multipla per contabilizzazione
Corretto codice causale da fornitore: andava a leggere il codforn dalla colonna sbagliata

19
cd/test/fp0856a.ini Normal file
View File

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

BIN
cd/test/fp0856a1.zip Normal file

Binary file not shown.

3
cd/test/ve0854.txt Normal file
View File

@ -0,0 +1,3 @@
ve6100a.msk
Repubblicata maschera per patch mancante [n. 0426]

129
cd/test/ve0854a.ini Normal file
View File

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

BIN
cd/test/ve0854a1.zip Normal file

Binary file not shown.

View File

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

View File

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

View File

@ -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);
}

View File

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

View File

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

View File

@ -721,45 +721,4 @@ TString& to_tstring(long n)
TString& to_tstring(int n)
{
return to_tstring(static_cast<long>(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;
}

View File

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

View File

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

View File

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