Patch level : 12.0 634

Files correlati     : fp
Commento            :
- Sistemata query per visualizzare fatture
- Non valorizzo più le colonne vuote
- Tolti dati sede per clienti stranieri
This commit is contained in:
Mattia Tollari 2018-10-15 12:58:46 +02:00
parent 3fb031ee91
commit 03f90ed4b8
3 changed files with 80 additions and 19 deletions

View File

@ -131,7 +131,12 @@ void TPA_mask::fill()
const TDate dal = get(F_DATAINI);
TString filter_selected = get(F_FATTSEL);
#ifdef DBG
enable(DLG_OK);
#else
enable(DLG_OK, filter_selected != "X");
#endif
// Record di controllo per eventuali elaborazioni precedenti
TString hfatt(LEN_HFATT), bfatt(LEN_BFATT);

View File

@ -26,6 +26,7 @@ BEGIN
PROMPT 1 2 "Fatture da visualizzare"
ITEM "|Da inviare"
ITEM "X|XML Generato"
ITEM "N|Notificato"
ITEM "E|In errore"
END

View File

@ -264,7 +264,8 @@ void TPaf_record::set(const char* fld, const char* val)
// Imposta il valore di un campo stringa
void TPaf_record::set(const char* fld, const TString& val)
{
const TVariant var(val);
const TVariant var(val);
if(!var.is_string() || (val.full()))
set(fld, var);
}
@ -401,7 +402,7 @@ bool TPaf_record::search()
if (!var.is_null())
query << fld << ", ";
}
query.rtrim(1) << "DESC;";
query.rtrim(2) << " DESC;";
// return xvt_sql_execute(_db, query, paf_search_record, this) == 1;
// TODO: Valutare
@ -988,12 +989,17 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
}
// DatiSede
paf0400f.set("P4_SEDEIND", cliente.via_residenza());
paf0400f.set("P4_SEDENRCIVICO", cliente.civico_residenza());
paf0400f.set("P4_SEDECAP", cliente.CAP_residenza());
paf0400f.set("P4_SEDECOMUNE", cliente.comune_residenza());
paf0400f.set("P4_SEDEPROV", cliente.provincia_residenza());
paf0400f.set("P4_SEDENAZ", cliente.stato_residenza_ISO());
if (cliente.italiano())
{
paf0400f.set("P4_SEDEIND", cliente.via_residenza());
paf0400f.set("P4_SEDENRCIVICO", cliente.civico_residenza());
paf0400f.set("P4_SEDECAP", cliente.CAP_residenza());
paf0400f.set("P4_SEDECOMUNE", cliente.comune_residenza());
paf0400f.set("P4_SEDEPROV", cliente.provincia_residenza());
paf0400f.set("P4_SEDENAZ", cliente.stato_residenza_ISO());
}
paf0400f.set("P4_GESTIONE", "D");
ok &= insert(paf0400f);
// </CessionarioCommittente>
@ -1187,8 +1193,10 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
paf1900f.set("PY_KEYBODYFATT", bfatt);
remove(paf1900f); // Cancella tutte le righe articoli del documento
if(doc.is_fattura())
doc.set_riga_esenzione();
TPaf_record paf3000f("PAF3000F");
paf3000f.set("PT_KEYHEADERFATT", hfatt);
paf3000f.set("PT_KEYBODYFATT", bfatt);
remove(paf3000f);
long riga = 0;
TString16 codivadefault;
@ -1200,6 +1208,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
break;
}
}
FOR_EACH_PHYSICAL_RDOC(doc, r, rdoc)
{
paf1800f.reset();
@ -1207,15 +1216,14 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
paf1800f.set("PI_KEYBODYFATT", bfatt);
paf1800f.set("PI_NUMEROLINEA", ++riga);
TPaf_record paf3000f("PAF3000F");
paf3000f.reset();
paf3000f.set("PT_KEYHEADERFATT", hfatt);
paf3000f.set("PT_KEYBODYFATT", bfatt);
remove(paf3000f);
paf3000f.set("PT_RIFNUMLINEA", riga);
paf3000f.set("PT_COMMENTO", descrizione(*rdoc));
// Nel dubbio preparo la riga di descrizione
paf1800f.set("PI_QUANTITA", ZERO);
paf1800f.set("PI_QUANTITA", UNO);
paf1800f.set("PI_PREZZOUNIT", ZERO);
paf1800f.set("PI_PRZTOTALE", ZERO);
paf1800f.set("PI_ALIQUOTAIVA", "22.00"); // Altrimenti scarta le righe di descrizione
@ -1401,6 +1409,33 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
ok &= insert(paf1800f) && insert(paf3000f);
}
// Controllo plafond
// Riga esenzione?
if (doc.is_fattura())
{
doc.set_riga_esenzione();
if(doc.ha_riga_esenzione())
{
const TRiga_documento& riga_es = doc.get_riga_esenzione();
paf1800f.reset();
paf1800f.set("PI_KEYHEADERFATT", hfatt);
paf1800f.set("PI_KEYBODYFATT", bfatt);
paf1800f.set("PI_NUMEROLINEA", ++riga);
paf3000f.reset();
paf3000f.set("PT_KEYHEADERFATT", hfatt);
paf3000f.set("PT_KEYBODYFATT", bfatt);
paf3000f.set("PT_RIFNUMLINEA", riga);
paf3000f.set("PT_COMMENTO", descrizione(riga_es));
paf1800f.set("PI_QUANTITA", UNO);
paf1800f.set("PI_PREZZOUNIT", ZERO);
paf1800f.set("PI_PRZTOTALE", ZERO);
paf1800f.set("PI_ALIQUOTAIVA", "22.00");
ok &= insert(paf1800f) && insert(paf3000f);
}
}
// Se il bollo va fatto pagare bisogna aggiungere una riga!
if(doc.get_bool("ADDBOLLI"))
{
@ -1409,33 +1444,53 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
paf1800f.set("PI_KEYBODYFATT", bfatt);
paf1800f.set("PI_NUMEROLINEA", ++riga);
TPaf_record paf3000f("PAF3000F");
paf3000f.reset();
paf3000f.set("PT_KEYHEADERFATT", hfatt);
paf3000f.set("PT_KEYBODYFATT", bfatt);
remove(paf3000f);
paf3000f.set("PT_RIFNUMLINEA", riga);
paf3000f.set("PT_COMMENTO", "Imposta bollo assolta in modo virtuale");
paf1800f.set("PI_QUANTITA", UNO);
paf1800f.set("PI_PREZZOUNIT", doc.get_real("BOLLI"));
paf1800f.set("PI_PRZTOTALE", doc.get_real("BOLLI"));
set_IVA(doc.codiva_bolli(), paf1800f);
ok &= insert(paf1800f) && insert(paf3000f);
}
// Controllo plafond
// Conai assolto
if(doc.clifor().vendite().get_bool("CONAIASS"))
{
paf1800f.reset();
paf1800f.set("PI_KEYHEADERFATT", hfatt);
paf1800f.set("PI_KEYBODYFATT", bfatt);
paf1800f.set("PI_NUMEROLINEA", ++riga);
paf3000f.reset();
paf3000f.set("PT_KEYHEADERFATT", hfatt);
paf3000f.set("PT_KEYBODYFATT", bfatt);
paf3000f.set("PT_RIFNUMLINEA", riga);
paf3000f.set("PT_COMMENTO", ini_get_string(CONFIG_DITTA, "ve", "DESCCONAIASS", "Contributo CONAI assolto ove dovuto"));
paf1800f.set("PI_QUANTITA", UNO);
paf1800f.set("PI_PREZZOUNIT", ZERO);
paf1800f.set("PI_PRZTOTALE", ZERO);
paf1800f.set("PI_ALIQUOTAIVA", "22.00");
ok &= insert(paf1800f) && insert(paf3000f);
}
// </DatiBeniServizi>
// <DatiTrasporto>
/*
* Non valorizziamo nulla al momento in quanto su Campo i dati obbligatori non ci sono/non sono obbligatori
TString cod_vettore = doc.get("CODVETT1");
// É una fattura accompagnatoria!
if(cod_vettore.full())
{
TRectype vettore = cache().get("%VET", cod_vettore);
// Controllo di avere tutto quello che mi interessa
}
*/
// </DatiTrasporto>
// Salvo la testata