Patch level : 12.0 862

Files correlati     : fp0.exe
Commento            : Aggiunta importazione f1 per split payment
This commit is contained in:
Simone Palacino 2019-07-30 10:49:16 +02:00
parent 3b4bd8fb71
commit 7b8755a33a

View File

@ -42,6 +42,7 @@ class TPassive_mask : public TAutomask
real imposta;
real aliquota;
TString4 natura;
char esigibilita;
};
TLog_report* _log;
@ -79,6 +80,8 @@ protected:
int check_err() const;
void contabilizza();
TDate load_data() const;
bool is_doc_split(const vector<iva>& riva) const;
const TString& get_tot_imp_riva(const vector<iva>& riva) const;
// Handlers
static bool causfa_handler(TMask_field& f, KEY k);
@ -257,7 +260,7 @@ vector<TPassive_mask::iva>& TPassive_mask::get_righe_iva(TToken_string& keys)
TString where_q; where_q << "WHERE PL_KEYPRGINVIO = '" << keys.get(0);
where_q << "' AND PL_KEYHEADERFATT = '" << keys.get();
where_q << "' AND PL_KEYBODYFATT = '" << keys.get() << "'";
TString query; query << "SELECT PL_IMPONIBILE AS IMPONIBILE, PL_IMPOSTA AS IMPOSTA, PL_ALIQUOTAIVA AS ALIQUOTA, PL_NATURA AS NATURA\n" <<
TString query; query << "SELECT PL_IMPONIBILE AS IMPONIBILE, PL_IMPOSTA AS IMPOSTA, PL_ALIQUOTAIVA AS ALIQUOTA, PL_NATURA AS NATURA, PL_ESIGIVA AS ESIGIBILITA\n" <<
"FROM PAA2200F \n" << where_q;
fp_db().sq_set_exec(query, false);
for (bool ok = fp_db().sq_next(); ok; ok = fp_db().sq_next())
@ -265,7 +268,7 @@ vector<TPassive_mask::iva>& TPassive_mask::get_righe_iva(TToken_string& keys)
TString imponibile = fp_db().sq_get("IMPONIBILE");
TString imposta = fp_db().sq_get("IMPOSTA");
if (imponibile != "0" || imposta != "0")
riva.insert(riva.end(), { real(imponibile), real(imposta), real(fp_db().sq_get("ALIQUOTA")), fp_db().sq_get("NATURA") });
riva.insert(riva.end(), { real(imponibile), real(imposta), real(fp_db().sq_get("ALIQUOTA")), fp_db().sq_get("NATURA"), fp_db().sq_get_char("ESIGIBILITA") });
}
return riva;
}
@ -654,7 +657,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(cid2index(S_TIPODOCSDI)), row->get(cid2index(S_FORNITORE))));
const 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))
@ -691,13 +694,19 @@ int TPassive_mask::prepara_contab() const
totdoc.cut(0) << imp;
}
real rit = fppro_db().set_keys(keys).get_ritenute();
if(rit != ZERO)
if (rit != ZERO)
{
contab_ini.set("TOTDOC", (abs(real(totdoc)) - rit).string());
contab_ini.set("RITFIS", rit.string());
}
else if (is_doc_split(riva)) // Documento con split
{
contab_ini.set("TOTDOC", get_tot_imp_riva(riva));
}
else
{
contab_ini.set("TOTDOC", abs(real(totdoc)).string());
}
contab_ini.set("KEYFPPRO", prokeys);
// Esporto righe iva
@ -880,6 +889,27 @@ TDate TPassive_mask::load_data() const
return start_date;
}
bool TPassive_mask::is_doc_split(const vector<iva>& riva) const
{
for (iva const& riga : riva)
{
if (riga.esigibilita == 'S')
return true;
}
return true;
}
const TString & TPassive_mask::get_tot_imp_riva(const vector<iva>& riva) const
{
real tot = ZERO;
for (iva const& riga : riva)
{
if (riga.imposta > ZERO)
tot += riga.imponibile;
}
return get_tmp_string() << abs(tot).string();
}
void TPassive_mask::new_forn()
{
TSheet_field& sf = sfield(F_ERR);