diff --git a/ef/ef0a00.cpp b/ef/ef0a00.cpp index 090beac6b..888e68fd4 100755 --- a/ef/ef0a00.cpp +++ b/ef/ef0a00.cpp @@ -268,6 +268,24 @@ bool TPE_mask::fill_row(const TRiga_scadenze& rs, TToken_string& row, bool& part row.add(""); row.add(cig); row.add(""); + TToken_string key; + + key.add(get(F_TIPOCF)); + key.add(rs.get_long(SCAD_SOTTOCONTO)); + key.add("V"); + key.add(1); + const TRectype & ns_ban = cache().get(LF_CFBAN, key); + if (ns_ban.empty()) + { + row.add(""); + row.add(""); + } + else + { + row.add(rs.get(SCAD_CODABI)); + row.add(rs.get(SCAD_CODCAB)); + } + row.add(""); } return ok; } @@ -484,6 +502,9 @@ bool TPE_mask::fill_distinta(bool clear_all) row.add(eff.get(EFF_CUP), sheet.cid2index(F_CUP)); row.add(eff.get(EFF_CIG), sheet.cid2index(F_CIG)); + row.add(eff.get(EFF_CODABI), sheet.cid2index(F_ABIAPP)); + row.add(eff.get(EFF_CODCAB), sheet.cid2index(F_CABAPP)); + row.add(eff.get(EFF_IBAN), sheet.cid2index(F_IBANAPP)); sheet.check_row(r - 1); if (partially_unassigned) sheet.disable_cell(r - 1, 1); // Non e' possibile mettere saldo @@ -584,51 +605,48 @@ bool TPE_mask::check_bank(TEffetto& effetto, TLog_report& log) const const int tipocf = effetto.get_char(EFF_TIPOCF); // Controllo solo ri.ba. clienti e bonifici fornitori - if ((tipocf=='F') ? (tipopag==9) : (tipopag==3)) + TString8 abi = effetto.get(EFF_CODABI); + TString8 cab = effetto.get(EFF_CODCAB); + TString80 iban = effetto.get(EFF_IBAN); + + TToken_string key(8); + key = effetto.get(EFF_TIPOCF); + key.add(effetto.get(EFF_CODCF)); + const TRectype& clifo = cache().get(LF_CLIFO, key); + + if (real::is_null(abi) || real::is_null(cab)) { - TString8 abi = effetto.get(EFF_CODABI); - TString8 cab = effetto.get(EFF_CODCAB); - TString80 iban = effetto.get(EFF_IBAN); + abi = clifo.get(CLI_CODABI); + cab = clifo.get(CLI_CODCAB); + } + if (iban.blank()) + iban = clifo.get(CLI_IBAN); + if (iban.starts_with("IT") && iban.len() > 15) + { + abi = iban.mid( 5, 5); + cab = iban.mid(10, 5); + } - TToken_string key(8); - key = effetto.get(EFF_TIPOCF); - key.add(effetto.get(EFF_CODCF)); - const TRectype& clifo = cache().get(LF_CLIFO, key); + effetto.put(EFF_CODABI, abi); + effetto.put(EFF_CODCAB, cab); + effetto.put(EFF_IBAN, iban); - if (real::is_null(abi) || real::is_null(cab)) - { - abi = clifo.get(CLI_CODABI); - cab = clifo.get(CLI_CODCAB); - } - if (iban.blank()) - iban = clifo.get(CLI_IBAN); - if (iban.starts_with("IT") && iban.len() > 15) - { - abi = iban.mid( 5, 5); - cab = iban.mid(10, 5); - } + if ((tipocf == 'C' || tipopag != 9) && (real::is_null(abi) || real::is_null(cab))) + { + TString msg; + msg.format(FR("Impossibile determinare ABI/CAB del %s sull'effetto %ld"), + (const char*)key, effetto.get_long(EFF_NPROGTR)); + log.log(2, msg); + return false; + } - effetto.put(EFF_CODABI, abi); - effetto.put(EFF_CODCAB, cab); - effetto.put(EFF_IBAN, iban); - - if (tipopag == 3 && (real::is_null(abi) || real::is_null(cab))) - { - TString msg; - msg.format(FR("Impossibile determinare ABI/CAB del %s sull'effetto %ld"), - (const char*)key, effetto.get_long(EFF_NPROGTR)); - log.log(2, msg); - return false; - } - - if (tipopag == 9 && iban.blank()) - { - TString msg; - msg.format(FR("Impossibile determinare IBAN del %s sull'effetto %ld"), - (const char*)key, effetto.get_long(EFF_NPROGTR)); - log.log(2, msg); - return false; - } + if ((tipocf == 'F' && tipopag == 9) && iban.blank()) + { + TString msg; + msg.format(FR("Impossibile determinare IBAN del %s sull'effetto %ld"), + (const char*)key, effetto.get_long(EFF_NPROGTR)); + log.log(2, msg); + return false; } return true; } @@ -717,26 +735,14 @@ void TPE_mask::save_rate() reff.put(REFF_NFATT, part.get(PART_NUMDOC)); reff.put(REFF_DATAFATT, part.get(PART_DATADOC)); reff.put(REFF_IMPFATT, part.get(PART_IMPORTO)); - - TString8 abi = scad.get(SCAD_CODABI); - TString8 cab = scad.get(SCAD_CODCAB); - - key.format("%c|%ld", tipocf, codcf); - const TRectype& clifo = cache().get(LF_CLIFO, key); - TString80 iban = clifo.get(CLI_IBAN); - if (iban.starts_with("IT") || real::is_null(abi) || real::is_null(cab)) - { - abi = clifo.get(CLI_CODABI); - cab = clifo.get(CLI_CODCAB); - } - + TEffetto& eff = distinta[rigadist-1]; eff.put(EFF_DSCVAL, row->get(sheet.cid2index(F_VALBEN))); eff.put(EFF_TIPOPAG, tipopag); - eff.put(EFF_CODABI, abi); - eff.put(EFF_CODCAB, cab); - eff.put(EFF_IBAN, iban); + eff.put(EFF_CODABI, row->get(sheet.cid2index(F_ABIAPP))); + eff.put(EFF_CODCAB, row->get(sheet.cid2index(F_ABIAPP))); + eff.put(EFF_IBAN, row->get(sheet.cid2index(F_IBANAPP))); } TEffetto& eff = distinta[rigadist-1]; diff --git a/ef/ef0a00a.h b/ef/ef0a00a.h index a3799d959..e55ca9055 100755 --- a/ef/ef0a00a.h +++ b/ef/ef0a00a.h @@ -48,3 +48,6 @@ #define F_DCUP 117 #define F_CIG 118 #define F_DCIG 119 +#define F_ABIAPP 120 +#define F_CABAPP 121 +#define F_IBANAPP 122 diff --git a/ef/ef0a00a.uml b/ef/ef0a00a.uml index 813d477c7..8b8c59a24 100755 --- a/ef/ef0a00a.uml +++ b/ef/ef0a00a.uml @@ -341,6 +341,9 @@ BEGIN ITEM "Descrizione CUP@50" ITEM "CIG@10" ITEM "Descrizione CIG@50" + ITEM "ABI@5" + ITEM "CAB@5" + ITEM "IBAN@27" END CURRENCY F_TOTAL 18 @@ -499,6 +502,40 @@ BEGIN COPY OUTPUT F_CIG END +STRING F_ABIAPP 5 +BEGIN + PROMPT 1 10 "Banca di appoggio" + USE LF_CFBAN KEY 2 + JOIN %BAN INTO CODTAB[1,5]==ABI CODTAB[6,10]==CAB + INPUT TIPOCF -F_TIPOCF SE + INPUT CODCF F_CODCF SE + INPUT TIPOBAN "V" + INPUT ABI F_ABIAPP + INPUT CAB F_CABAPP + DISPLAY "Cod. Istit." ABI + DISPLAY "Cod. Fil." CAB + DISPLAY "IBAN@27" IBAN + DISPLAY "Denominazione@50" %BAN->S0 + OUTPUT F_ABIAPP ABI + OUTPUT F_CABAPP CAB + OUTPUT F_IBANAPP IBAN + CHECTYPE NORMAL + FLAGS "Z" +ENDPAGE + +STRING F_CABAPP 5 +BEGIN + PROMPT 20 10 "" + COPY ALL F_ABIAPP + CHECTYPE NORMAL + FLAGS "Z" +END + +STRING F_IBANAPP 27 +BEGIN + PROMPT 30 10 "IBAN " + FLAGS "D" +END ENDPAGE TOOLBAR "" 0 0 0 2