Patch level : 12.0 1010
Files correlati : fp0.exe Commento : Troncati a due(2 char) i codici natura IVA nell'invio Fatture Modifiche all'invio dei tipi di documento SDI per gestire i nuovi tracciati SDI (TD24,TD25,TD27 -->TD01; se la data di invio è antecedente alla data di inizio nuovo tracciato fatturazione elettronica) Interno :
This commit is contained in:
parent
0893127eaf
commit
4560e43bd6
@ -56,6 +56,18 @@ public:
|
|||||||
disable(DLG_SAVEREC);
|
disable(DLG_SAVEREC);
|
||||||
disable(DLG_FINDREC);
|
disable(DLG_FINDREC);
|
||||||
load_all_fields();
|
load_all_fields();
|
||||||
|
const TDate data_inizio = fp_settings().get_date_start_new_fatt();
|
||||||
|
|
||||||
|
if (today < data_inizio)
|
||||||
|
{
|
||||||
|
const TSheet_field & sheet = sfield(F_DOCS);
|
||||||
|
const TMask & rowmask = sheet.sheet_mask();
|
||||||
|
TList_field & tdsdi = rowmask.lfield(S_CODSDI);
|
||||||
|
|
||||||
|
tdsdi.delete_item("TD24");
|
||||||
|
tdsdi.delete_item("TD25");
|
||||||
|
tdsdi.delete_item("TD27");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
void save_all_fields() const;
|
void save_all_fields() const;
|
||||||
};
|
};
|
||||||
@ -182,6 +194,7 @@ void TPA_mask::fill()
|
|||||||
|
|
||||||
// Disabilito la colonna del codice ufficio
|
// Disabilito la colonna del codice ufficio
|
||||||
docs.enable_column(docs.cid2index(S_UFFICIO), false);
|
docs.enable_column(docs.cid2index(S_UFFICIO), false);
|
||||||
|
const TDate data_inizio = fp_settings().get_date_start_new_fatt();
|
||||||
|
|
||||||
for (bool okc = rec.move_first(); okc; okc = rec.move_next())
|
for (bool okc = rec.move_first(); okc; okc = rec.move_next())
|
||||||
{
|
{
|
||||||
@ -215,13 +228,13 @@ void TPA_mask::fill()
|
|||||||
row.add(rec.get(DOC_CODNUM).as_string());
|
row.add(rec.get(DOC_CODNUM).as_string());
|
||||||
row.add(rec.get(DOC_TIPODOC).as_string());
|
row.add(rec.get(DOC_TIPODOC).as_string());
|
||||||
|
|
||||||
const TString & tipodoc = rec.get(DOC_TIPODOCSDI).as_string();
|
TString tipodoc = rec.get(DOC_TIPODOCSDI).as_string();
|
||||||
|
|
||||||
if (tipodoc.full())
|
if (tipodoc.blank())
|
||||||
|
tipodoc = td.tipo_doc_sdi();
|
||||||
|
if (today <data_inizio && (tipodoc == "TD24" || tipodoc == "TD25" || tipodoc == "TD27"))
|
||||||
|
tipodoc = "TD01";
|
||||||
row.add(tipodoc);
|
row.add(tipodoc);
|
||||||
else
|
|
||||||
row.add(td.tipo_doc_sdi());
|
|
||||||
|
|
||||||
row.add(rec.get(DOC_NDOC).as_int());
|
row.add(rec.get(DOC_NDOC).as_int());
|
||||||
row.add(rec.get(DOC_DATADOC).as_date());
|
row.add(rec.get(DOC_DATADOC).as_date());
|
||||||
row.add(rec.get(CFV_CODCF).as_int());
|
row.add(rec.get(CFV_CODCF).as_int());
|
||||||
|
@ -533,7 +533,7 @@ protected:
|
|||||||
const TRectype& cco(const TRectype& doc) const; // Contratto/Convenzione/Offerta
|
const TRectype& cco(const TRectype& doc) const; // Contratto/Convenzione/Offerta
|
||||||
|
|
||||||
void log(int severity, const char* msg);
|
void log(int severity, const char* msg);
|
||||||
static const char* natura(const TString& codiva);
|
const TString & natura(const char* codiva, const bool corto=true) const;
|
||||||
static const char* get_esigibilita_iva(const TDocumentoEsteso& doc);
|
static const char* get_esigibilita_iva(const TDocumentoEsteso& doc);
|
||||||
void set_IVA(TString codiva, TPaf_record& paf) const;
|
void set_IVA(TString codiva, TPaf_record& paf) const;
|
||||||
void set_IVA(const TRiga_documento& rdoc, TPaf_record& paf) const;
|
void set_IVA(const TRiga_documento& rdoc, TPaf_record& paf) const;
|
||||||
@ -541,7 +541,7 @@ protected:
|
|||||||
bool add_row_alleg(TFilename& file, long& nprogr, TPaf_record& paf);
|
bool add_row_alleg(TFilename& file, long& nprogr, TPaf_record& paf);
|
||||||
const TString& converti_prezzo(const real& prezzo) const;
|
const TString& converti_prezzo(const real& prezzo) const;
|
||||||
void set_qta_prezzo(TPaf_record& paf1800f, TFPRiga_documento* rdoc) const;
|
void set_qta_prezzo(TPaf_record& paf1800f, TFPRiga_documento* rdoc) const;
|
||||||
void add_ritenuta(const TDocumentoEsteso& doc, const TSpesa_prest& sp, TPaf_record& paf0700f) const;
|
void add_ritenuta(const TRiga_documento & rdoc, TPaf_record& paf0700f) const;
|
||||||
bool add_riepilogo_iva(TPaf_record& paf2200f, const TCodiceIVA& cod_iva, const char* eiva, const real& imponibile = ZERO, const real& imposta = ZERO);
|
bool add_riepilogo_iva(TPaf_record& paf2200f, const TCodiceIVA& cod_iva, const char* eiva, const real& imponibile = ZERO, const real& imposta = ZERO);
|
||||||
bool add_cassa_previdenziale(TRiga_documento& rdoc);
|
bool add_cassa_previdenziale(TRiga_documento& rdoc);
|
||||||
bool export_info_articolo(TFPRiga_documento* rdoc, TPaf_record& paf1900f, TPaf_record& paf2100f, const long riga_xml, const int riga_doc);
|
bool export_info_articolo(TFPRiga_documento* rdoc, TPaf_record& paf1900f, TPaf_record& paf2100f, const long riga_xml, const int riga_doc);
|
||||||
|
@ -992,7 +992,7 @@ bool TDoc_fp::check_row(const TRiga_documento& rdoc)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
const TCodiceIVA& codice_iva = rdoc.iva();
|
const TCodiceIVA& codice_iva = rdoc.iva();
|
||||||
if (codice_iva.codice().full() && codice_iva.percentuale() == ZERO && codice_iva.natura().empty())
|
if (codice_iva.codice().full() && codice_iva.percentuale() == ZERO && natura(codice_iva.codice(),false).empty())
|
||||||
{
|
{
|
||||||
msg.cut(0) << "Impossibile avere la natura non valorizzata a fronte di una aliquota con percentuale zero. Codice IVA: "; msg << codice_iva.codice();
|
msg.cut(0) << "Impossibile avere la natura non valorizzata a fronte di una aliquota con percentuale zero. Codice IVA: "; msg << codice_iva.codice();
|
||||||
log(1, msg);
|
log(1, msg);
|
||||||
@ -1004,7 +1004,7 @@ bool TDoc_fp::check_riepilogo(const TDocumentoEsteso& doc, const TRiepilogo_iva&
|
|||||||
{
|
{
|
||||||
bool ok = true;
|
bool ok = true;
|
||||||
static TString msg;
|
static TString msg;
|
||||||
if(*get_esigibilita_iva(doc) == 'S' && riva.cod_iva().natura() == "N6")
|
if(*get_esigibilita_iva(doc) == 'S' && natura(riva.cod_iva().codice(),true) == "N6")
|
||||||
{
|
{
|
||||||
msg.cut(0) << "Impossibile avere un documento con scissione dei pagamenti e natura iva N6, codice: " << riva.cod_iva().codice();
|
msg.cut(0) << "Impossibile avere un documento con scissione dei pagamenti e natura iva N6, codice: " << riva.cod_iva().codice();
|
||||||
log(1, msg);
|
log(1, msg);
|
||||||
@ -1179,9 +1179,15 @@ int TDoc_fp::force_commit()
|
|||||||
_to_commit = true;
|
_to_commit = true;
|
||||||
return commit();
|
return commit();
|
||||||
}
|
}
|
||||||
const char* TDoc_fp::natura(const TString& codiva)
|
const TString & TDoc_fp::natura(const char* codiva, const bool corto) const
|
||||||
{
|
{
|
||||||
return cache().get("%IVA", codiva, "S12");
|
const TCodiceIVA iva(codiva);
|
||||||
|
TString & natura = get_tmp_string(4);
|
||||||
|
|
||||||
|
natura = iva.natura();
|
||||||
|
if (corto && natura.len() > 2)
|
||||||
|
natura = natura.sleft(2);
|
||||||
|
return natura;
|
||||||
}
|
}
|
||||||
const char* TDoc_fp::get_esigibilita_iva(const TDocumentoEsteso& doc)
|
const char* TDoc_fp::get_esigibilita_iva(const TDocumentoEsteso& doc)
|
||||||
{
|
{
|
||||||
@ -1291,16 +1297,18 @@ const real calc_ritenuta(const TDocumento& doc)
|
|||||||
}
|
}
|
||||||
return imponibile;
|
return imponibile;
|
||||||
}
|
}
|
||||||
void TDoc_fp::add_ritenuta(const TDocumentoEsteso& doc, const TSpesa_prest& sp, TPaf_record& paf0700f) const
|
void TDoc_fp::add_ritenuta(const TRiga_documento & rdoc, TPaf_record& paf0700f) const
|
||||||
{
|
{
|
||||||
// <DatiRitenuta>
|
// <DatiRitenuta>
|
||||||
const real importo_ritenute = doc.ritenute();
|
const TSpesa_prest & sp = rdoc.spesa();
|
||||||
|
const real importo_ritenuta = rdoc.ritenuta();
|
||||||
TString tipo_rit = sp.codice_tipo_ritenuta_fp();
|
TString tipo_rit = sp.codice_tipo_ritenuta_fp();
|
||||||
|
|
||||||
|
|
||||||
if (tipo_rit.empty())
|
if (tipo_rit.empty())
|
||||||
tipo_rit = _rec_clifo.get_char(CLI_TIPOPERS) == 'F' ? "RT01" : "RT02";
|
tipo_rit = _rec_clifo.get_char(CLI_TIPOPERS) == 'F' ? "RT01" : "RT02";
|
||||||
paf0700f.set("P7_TIPORITENUTA", tipo_rit);
|
paf0700f.set("P7_TIPORITENUTA", tipo_rit);
|
||||||
paf0700f.set("P7_IMPORTORIT", converti_prezzo(importo_ritenute));
|
paf0700f.set("P7_IMPORTORIT", converti_prezzo(importo_ritenuta));
|
||||||
paf0700f.set("P7_ALIQUOTARIT", sp.perc());
|
paf0700f.set("P7_ALIQUOTARIT", sp.perc());
|
||||||
static TString caus_la; caus_la.cut(0);
|
static TString caus_la; caus_la.cut(0);
|
||||||
caus_la << sp.get("S14")[0];
|
caus_la << sp.get("S14")[0];
|
||||||
@ -1361,7 +1369,7 @@ bool TDoc_fp::add_cassa_previdenziale(TRiga_documento& rdoc)
|
|||||||
paf0800f.set("P8_ALIQIVA", rdoc.iva().percentuale());
|
paf0800f.set("P8_ALIQIVA", rdoc.iva().percentuale());
|
||||||
if(sp.sogg_a_rit())
|
if(sp.sogg_a_rit())
|
||||||
paf0800f.set("P8_RITENUTA", "SI");
|
paf0800f.set("P8_RITENUTA", "SI");
|
||||||
paf0800f.set("P8_NATURA", rdoc.iva().natura());
|
paf0800f.set("P8_NATURA", natura(rdoc.iva().codice()));
|
||||||
// Inserisco il tutto nei dati riepilogo
|
// Inserisco il tutto nei dati riepilogo
|
||||||
/*TRiepilogo_agg& pop = _riepilogo_agg[rdoc.iva().codice()];
|
/*TRiepilogo_agg& pop = _riepilogo_agg[rdoc.iva().codice()];
|
||||||
pop.imponibile += importo_cassa;
|
pop.imponibile += importo_cassa;
|
||||||
@ -1981,7 +1989,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
{
|
{
|
||||||
paf1800f.set("PI_RITENUTA", "SI");
|
paf1800f.set("PI_RITENUTA", "SI");
|
||||||
// Todo: modifica nuovo tracciato xml: si possono aggiungere piu' casse prev. la prima sempre sul paf07, le altre sulla nuova tab paf35.
|
// Todo: modifica nuovo tracciato xml: si possono aggiungere piu' casse prev. la prima sempre sul paf07, le altre sulla nuova tab paf35.
|
||||||
add_ritenuta(doc, rdoc->spesa(), paf0700f);
|
add_ritenuta(*rdoc, paf0700f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user