Patch level : 12.0 854

Files correlati     : ef0.exe
Commento            : Modifica effetti per banca appoggio presentazione
This commit is contained in:
Simone Palacino 2019-07-08 17:53:32 +02:00
parent 96c3948cd6
commit bd61635e79
5 changed files with 68 additions and 50 deletions

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

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