Patch level : 12.0 862
Files correlati : cg2.exe Commento : - Corretto calcolo totale contando anche reverse charge - Aggiunta importazione f1 da 'fatture sdi' se split payment
This commit is contained in:
parent
72e3cd23a0
commit
6c730637a1
@ -2634,8 +2634,10 @@ int TPrimanota_application::save_fppro()
|
||||
const TDate data_documento(msk.get(F_DATADOC));
|
||||
const TString& numero_docext = msk.get(F_NUMDOCEXT);
|
||||
real tot_doc = msk.get_real(F_TOTALE);
|
||||
const real ritenute = msk.get_real(F_RITFIS);
|
||||
tot_doc += ritenute;
|
||||
const real ritfis = msk.get_real(F_RITFIS);
|
||||
const real ritsoc = msk.get_real(F_RITSOC);
|
||||
const real revcharge = msk.get_real(F_REVCHARGE);
|
||||
tot_doc = tot_doc + ritfis + ritsoc + revcharge;
|
||||
TToken_string fppro_keys(msk.get(F_PROKEY), ';');
|
||||
const TString& keyprginvio = fppro_keys.get();
|
||||
const TString& keyheaderfatt = fppro_keys.get();
|
||||
|
@ -3897,7 +3897,7 @@ void TPrimanota_application::write_righe_iva_f1(TMask& cg_msk, const shared_ptr<
|
||||
bool TPrimanota_application::write_scad_f1(const TMask& cg_msk, const shared_ptr<TPro_msk>& msk)
|
||||
{
|
||||
TSheet_field& sf = cg_msk.sfield(FS_RATESHEET);
|
||||
int items = sf.items();
|
||||
const int items = sf.items();
|
||||
const vector<TPro_msk::scadenza_s>& righe = msk->get_scadenze();
|
||||
int i = 0;
|
||||
for (auto it = righe.begin(); it != righe.end(); ++it, ++i)
|
||||
@ -3968,12 +3968,14 @@ void TPrimanota_application::set_totale(TMask& cg_msk, const shared_ptr<TPro_msk
|
||||
if(totale == ZERO)
|
||||
totale = app().calcola_imp();
|
||||
const real rit = msk->get_ritenute();
|
||||
if(rit != ZERO)
|
||||
if (rit != ZERO)
|
||||
{
|
||||
totale -= rit;
|
||||
cg_msk.set(F_RITFIS, rit);
|
||||
app().add_cgs_ritenute('F');
|
||||
}
|
||||
else if (msk->is_doc_split())
|
||||
totale = msk->get_tot_imp_riva();
|
||||
cg_msk.set(F_TOTALE, totale);
|
||||
}
|
||||
|
||||
@ -4251,11 +4253,21 @@ bool TPro_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TPro_msk::is_doc_split()
|
||||
{
|
||||
for(riga_iva_s const& riga : _righe_iva)
|
||||
{
|
||||
if (riga.esigibilita == 'S')
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void TPro_msk::set_righeiva(const char* fpprokeys)
|
||||
{
|
||||
TToken_string keys(fpprokeys, ';');
|
||||
TString query;
|
||||
query << "SELECT PL_ALIQUOTAIVA AS ALIQUOTA, PL_NATURA AS NATURA, PL_IMPONIBILE AS IMPONIBILE, PL_IMPOSTA AS IMPOSTA \nFROM PAA2200F\n" <<
|
||||
query << "SELECT PL_ALIQUOTAIVA AS ALIQUOTA, PL_NATURA AS NATURA, PL_IMPONIBILE AS IMPONIBILE, PL_IMPOSTA AS IMPOSTA, PL_ESIGIVA AS ESIGIBILITA\nFROM PAA2200F\n" <<
|
||||
"WHERE PL_KEYPRGINVIO = '" << keys.get(0) << "' AND PL_KEYHEADERFATT = '" << keys.get(1) << "' AND PL_KEYBODYFATT = '" << keys.get(2) << "';";
|
||||
fp_db().sq_set_exec(query, false);
|
||||
for(bool ok = fp_db().sq_next(); ok; ok = fp_db().sq_next())
|
||||
@ -4263,7 +4275,8 @@ void TPro_msk::set_righeiva(const char* fpprokeys)
|
||||
add_rigaiva(real(fp_db().sq_get("IMPONIBILE")),
|
||||
real(fp_db().sq_get("IMPOSTA")),
|
||||
real(fp_db().sq_get("ALIQUOTA")),
|
||||
fp_db().sq_get("NATURA"));
|
||||
fp_db().sq_get("NATURA"),
|
||||
fp_db().sq_get("ESIGIBILITA")[0]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -4293,9 +4306,20 @@ void TPro_msk::set_doc(const char* numero, const char* datadoc, const char* totd
|
||||
set_scadenze(fpprokeys);
|
||||
}
|
||||
|
||||
void TPro_msk::add_rigaiva(const real& imponibile, const real& imposta, const real& aliquota, const TString4& natura)
|
||||
real TPro_msk::get_tot_imp_riva()
|
||||
{
|
||||
_righe_iva.insert(_righe_iva.end(), { imponibile, imposta, aliquota, natura });
|
||||
real tot = ZERO;
|
||||
for(riga_iva_s const& riga : _righe_iva)
|
||||
{
|
||||
if (riga.imposta > ZERO)
|
||||
tot += riga.imponibile;
|
||||
}
|
||||
return tot;
|
||||
}
|
||||
|
||||
void TPro_msk::add_rigaiva(const real& imponibile, const real& imposta, const real& aliquota, const TString4& natura, char esigib)
|
||||
{
|
||||
_righe_iva.insert(_righe_iva.end(), { imponibile, imposta, aliquota, natura, esigib });
|
||||
}
|
||||
|
||||
void TPro_msk::add_scad(const TDate& date, const real& importo)
|
||||
|
@ -443,6 +443,7 @@ public:
|
||||
real imposta;
|
||||
real aliquota;
|
||||
TString4 natura;
|
||||
char esigibilita;
|
||||
};
|
||||
struct scadenza_s
|
||||
{
|
||||
@ -450,34 +451,40 @@ public:
|
||||
real importo;
|
||||
};
|
||||
|
||||
bool should_bring_back() const { return _riporta; }
|
||||
bool is_doc_split();
|
||||
|
||||
void set_righeiva(const char* fpprokeys);
|
||||
void set_scadenze(const char* fpprokeys);
|
||||
void set_doc(const char* numero, const char* datadoc, const char* totdoc, const char* ritenute, const char* protfppro, const char* fpprokeys, const char* codforn, const char* piva);
|
||||
|
||||
TString get_numdoc() const { return _numero; }
|
||||
TDate get_datadoc() const { return _datadoc; }
|
||||
real get_totdoc() const { return _totdoc; }
|
||||
real get_ritenute() { return _ritenute; }
|
||||
TProtocollo& get_protocollo() { return _protfppro; }
|
||||
TString get_fpprokeys() const { return _fpprokeys; }
|
||||
TString get_codforn() const { return _codforn; }
|
||||
TString get_numdoc() const { return _numero; }
|
||||
TDate get_datadoc() const { return _datadoc; }
|
||||
real get_totdoc() const { return _totdoc; }
|
||||
real get_ritenute() const { return _ritenute; }
|
||||
TString get_fpprokeys() const { return _fpprokeys; }
|
||||
TString get_codforn() const { return _codforn; }
|
||||
TString get_piva() const { return _piva; }
|
||||
const vector<riga_iva_s>& get_righeiva() const { return _righe_iva; }
|
||||
TProtocollo& get_protocollo() { return _protfppro; }
|
||||
vector<scadenza_s>& get_scadenze() { return _scadenze; }
|
||||
real get_tot_imp_riva();
|
||||
|
||||
TString get_piva() const { return _piva; }
|
||||
const vector<riga_iva_s>& get_righeiva() { return _righe_iva; }
|
||||
vector<scadenza_s>& get_scadenze() { return _scadenze; }
|
||||
void add_rigaiva(const real& imponibile, const real& imposta, const real& aliquota, const TString4& natura);
|
||||
|
||||
void add_rigaiva(const real& imponibile, const real& imposta, const real& aliquota, const TString4& natura, char esigib);
|
||||
void add_scad(const TDate& date, const real& importo);
|
||||
bool should_bring_back() const { return _riporta; }
|
||||
|
||||
|
||||
static TString& query_fppro(const TString& codforn, const TString& date);
|
||||
static TString& query_fppro(const TString& stato_piva, const TString& piva, const TString& date);
|
||||
static TString& query_fppro(const TString& codforn, const TString& stato_piva, const TString& piva, const TString& where_str, const TString& date, const TString& keyprginvio, const TString& keyheaderfatt, const TString& keybodyfatt, bool order = true, bool piva_research = false);
|
||||
static TString& query_string();
|
||||
|
||||
static void abilita_piva(TMask* msk);
|
||||
//bool is_fp();
|
||||
|
||||
// Carica documenti FPPRO sulla maschera
|
||||
static bool load_fppro_mask(TMask* msk, KEY k = 32);
|
||||
|
||||
TPro_msk() = delete;
|
||||
TPro_msk(TMask& cg_msk);
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user