Patch level : 12.0 618
Files correlati : tf Commento : - Reso non vincolante il controllo della liquidazione, su alcune installazioni viene rilevato erroneamente - Sistemato errore calcolo del prorata, veniva effettuato solo se era presente iva differita
This commit is contained in:
parent
63a708a083
commit
611ca2c0aa
@ -1,4 +1,4 @@
|
||||
#include <relapp.h>
|
||||
#include <relapp.h>
|
||||
#include <automask.h>
|
||||
#include <config.h>
|
||||
#include <lffiles.h>
|
||||
@ -67,7 +67,7 @@ const TRectype getLAM(int anno, int mese)
|
||||
// Ritorna il record valido richiesto di tabcom.VER
|
||||
const TRectype getVER(int anno, int mese)
|
||||
{
|
||||
// Questa tabella ha come chiave l'inizio validità, creo un cursore e scorro finche non trovo l'ultimo periodo valido
|
||||
// Questa tabella ha come chiave l'inizio validità, creo un cursore e scorro finche non trovo l'ultimo periodo valido
|
||||
static TRelation rver(LF_TABCOM);
|
||||
static TRectype from(rver.curr()); from.put("COD", "VER");
|
||||
static TRectype to(rver.curr()); to.put("COD" , "VER");
|
||||
@ -97,7 +97,7 @@ const TRectype getVER(int anno, int mese)
|
||||
}
|
||||
|
||||
/* Scopiazzata e divisa in due da cg4304.cpp
|
||||
* Calcola solo le imposte, aggiunto controllo indetraibilità, non devono essere presi in considerazione
|
||||
* Calcola solo le imposte, aggiunto controllo indetraibilità, non devono essere presi in considerazione
|
||||
* i movimenti se indetraibili
|
||||
*/
|
||||
|
||||
@ -152,14 +152,23 @@ int calc_inc_diff(int anno, int mese, int tipoiva, real& imposta_diff, real& imp
|
||||
perc_prorata = p;
|
||||
}
|
||||
|
||||
if (imposta_diff > ZERO && perc_prorata > ZERO)
|
||||
if (perc_prorata > ZERO)
|
||||
{
|
||||
real ind = imposta_diff * perc_prorata / CENTO;
|
||||
ind.round(TCurrency::get_firm_dec());
|
||||
imposta_diff -= ind;
|
||||
ind = imposta_xcas * perc_prorata / CENTO;
|
||||
ind.round(TCurrency::get_firm_dec());
|
||||
imposta_xcas -= ind;
|
||||
real ind = ZERO;
|
||||
|
||||
if (imposta_diff > ZERO)
|
||||
{
|
||||
ind = imposta_diff * perc_prorata / CENTO;
|
||||
ind.round(TCurrency::get_firm_dec());
|
||||
imposta_diff -= ind;
|
||||
}
|
||||
|
||||
if (imposta_xcas > ZERO)
|
||||
{
|
||||
ind = imposta_xcas * perc_prorata / CENTO;
|
||||
ind.round(TCurrency::get_firm_dec());
|
||||
imposta_xcas -= ind;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -186,7 +195,7 @@ void calcolaCreditoPrec(real& creprec, real& creaprec, bool mensile, int anno, i
|
||||
for(curLiq = 0; curLiq.pos() < curLiq.items(); ++curLiq)
|
||||
{
|
||||
TRectype rowLiq = curLiq.curr();
|
||||
if(rowLiq.get_int("MESE") >= mese) break; // Perchè li prende lo stesso?
|
||||
if(rowLiq.get_int("MESE") >= mese) break; // Perchè li prende lo stesso?
|
||||
|
||||
trovato = trovato || rowLiq.get_real("CREAPREC") > ZERO;
|
||||
creprec = rowLiq.get_real("IVAVERC");
|
||||
@ -205,7 +214,7 @@ class ComLiqPerIva_mask : public TAutomask
|
||||
{
|
||||
protected:
|
||||
bool mensile;
|
||||
// Aggiunta questa variabile per specificare se è stato impostato un tipo di liquidazione.
|
||||
// Aggiunta questa variabile per specificare se è stato impostato un tipo di liquidazione.
|
||||
// In Release sembra che durante la ricerca salta l'inizializzazione e imposta prima gli altri campi
|
||||
bool initLiq;
|
||||
TRectype trueData;
|
||||
@ -269,10 +278,10 @@ bool ComLiqPerIva_mask::on_field_event(TOperable_field& o, TField_event e, long
|
||||
// Vado a prendere i dati di quel mese dalla liquidazione IVA
|
||||
if(e == fe_button)
|
||||
{
|
||||
// Controllo che non ci sia già
|
||||
// Controllo che non ci sia già
|
||||
if(!cache().get(LF_IVALIQ, TString(get(F_ANNO)) << "|" << get(F_MESE) << "|U").empty())
|
||||
{
|
||||
if(!yesno_box("Sono già stati elaborati questi dati, si desidera ricalcolarli?"))
|
||||
if(!yesno_box("Sono già stati elaborati questi dati, si desidera ricalcolarli?"))
|
||||
break;
|
||||
}
|
||||
extractinator();
|
||||
@ -342,7 +351,7 @@ bool ComLiqPerIva_mask::on_field_event(TOperable_field& o, TField_event e, long
|
||||
// Ricalcolo VP13 e VP14
|
||||
real debito = get_real(F_IVADOV) + get_real(F_DEBPREC) + get_real(F_INTLIQTRI);
|
||||
|
||||
/* Se il credito anno precedente è negativo devo mantenerlo tale ma sottrarlo al credito dell'anno precedente delle dichiarazioni precedenti */
|
||||
/* Se il credito anno precedente è negativo devo mantenerlo tale ma sottrarlo al credito dell'anno precedente delle dichiarazioni precedenti */
|
||||
real creaprec = get_real(F_CREAPREC);
|
||||
if(creaprec < ZERO)
|
||||
{
|
||||
@ -376,9 +385,9 @@ bool ComLiqPerIva_mask::on_field_event(TOperable_field& o, TField_event e, long
|
||||
// Funzione che effettivamente estrapola i dati necessari
|
||||
void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
|
||||
{
|
||||
/* Devo estrapolare più mesi, per farlo vado ciclo n volte (1 o 3) in base se stiamo parlando di trimestralità o meno
|
||||
/* Devo estrapolare più mesi, per farlo vado ciclo n volte (1 o 3) in base se stiamo parlando di trimestralità o meno
|
||||
* I dati da prelevare saranno in PRM, LIM e %LIA
|
||||
* In PRM e LIM troverò le informazioni suddivise per mese, mentre in %LIA ho l'anno di liquidazione
|
||||
* In PRM e LIM troverò le informazioni suddivise per mese, mentre in %LIA ho l'anno di liquidazione
|
||||
*/
|
||||
int start = mensile ? get_int(F_MESE) : (((get_int(F_TRIMESTRE) - 1) * 3) + 1);
|
||||
int end = mensile ? start : start + 2;
|
||||
@ -425,10 +434,9 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
|
||||
// Riga LIM
|
||||
const TRectype rowLim = getLIM(anno, start);
|
||||
|
||||
// Controllo che la liquidazione è stata effettuata, controllo da fare solo nella 12
|
||||
if(dongle().year_assist() > 2121 && (rowLim.empty() || rowLim.get_bool("B0")))
|
||||
// Controllo che la liquidazione è stata effettuata, controllo da fare solo nella 12
|
||||
if (dongle().year_assist() > 2121 && (rowLim.empty() || rowLim.get_bool("B0")) && !yesno_box("Attenzione non <20> stata calcolata la liquidazione del periodo corrente, si desidera proseguire ugualmente?"))
|
||||
{
|
||||
error_box("Attenzione non è stata calcolata la liquidazione del periodo corrente");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -459,7 +467,7 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
|
||||
real imp = curIva.get("25.IMPONIBILE").as_real();
|
||||
real imposta = curIva.get("25.IMPOSTA").as_real();
|
||||
|
||||
// Se è un movimento IvaXCassa o LiqDiff
|
||||
// Se è un movimento IvaXCassa o LiqDiff
|
||||
if(hasIXC && (curIva.get("23.IVAXCASSA").as_bool() || curIva.get("23.LIQDIFF").as_bool()))
|
||||
{
|
||||
if(tiporeg == REG_ATT)
|
||||
@ -476,10 +484,10 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
|
||||
TString keyRC = curIva.get("23.NUMREG").as_string(); keyRC << "|1";
|
||||
if(!cache().get(LF_RMOV, keyRC).empty())
|
||||
{
|
||||
// Controllo se è un corrispettivo non scorporato (imponibile e iva assieme)
|
||||
// Controllo se è un corrispettivo non scorporato (imponibile e iva assieme)
|
||||
if(isCorrispettivo && codiva.percentuale() > ZERO && imposta == ZERO)
|
||||
{
|
||||
// Nell'imponibile è presente il totale fattura, devo calcolare l'imposta e sottrarla
|
||||
// Nell'imponibile è presente il totale fattura, devo calcolare l'imposta e sottrarla
|
||||
// Es iva 22% => imp : 122 = x : 100
|
||||
codiva.scorpora(imp);
|
||||
}
|
||||
@ -495,7 +503,7 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
|
||||
// Sommiamo i corrispettivi al registro delle vendite
|
||||
|
||||
|
||||
// Se ha attiva l'IVA x cassa calcolo le imposte (imponibili per comodità già calcolati sopra)
|
||||
// Se ha attiva l'IVA x cassa calcolo le imposte (imponibili per comodità già calcolati sopra)
|
||||
if(hasIXC)
|
||||
{
|
||||
// IVA esigibile
|
||||
@ -522,7 +530,7 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
|
||||
|
||||
TRectype rowLam = getLAM(anno, start);
|
||||
|
||||
/* É saltato fuori che in caso di liquidazione trimestrale l'importo ivaes e ivadet
|
||||
/* É saltato fuori che in caso di liquidazione trimestrale l'importo ivaes e ivadet
|
||||
* viene scritto su ogni mese, quindi prendo solo quando
|
||||
* start == end -> iva mensile o ultimo mese della trimestrale */
|
||||
|
||||
@ -560,12 +568,12 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
|
||||
TRectype rowVer = getVER(anno, start);
|
||||
if(rowVer.empty() || rowVer.get_real("R5") == ZERO)
|
||||
{
|
||||
error_box("Non è stata valorizzato correttamente il campo \"Periodico\" in \"Versamenti ed interessi IVA\"");
|
||||
error_box("Non è stata valorizzato correttamente il campo \"Periodico\" in \"Versamenti ed interessi IVA\"");
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(debprec > rowVer.get_real("R5")) // Se è maggiore di 25.82€ va azzerato
|
||||
if(debprec > rowVer.get_real("R5")) // Se è maggiore di 25.82€ va azzerato
|
||||
debprec = ZERO;
|
||||
}
|
||||
// Calcolo ivadov/ivadovc
|
||||
@ -650,7 +658,7 @@ void ComLiqPerIva_mask::saveGen()
|
||||
trueData.put("ANNO", get(F_ANNO));
|
||||
trueData.put("MESE", get(F_MESE));
|
||||
trueData.put("TRIMESTRE", get(F_TRIMESTRE));
|
||||
trueData.put("GENERATA", 'G'); // Segno che è generata da campo
|
||||
trueData.put("GENERATA", 'G'); // Segno che è generata da campo
|
||||
trueData.put("TOTOPATT", get(F_TOTOPATT));
|
||||
trueData.put("TOTOPATTXC", get(F_TOTOPATTXC));
|
||||
trueData.put("TOTOPPAS", get(F_TOTOPPAS));
|
||||
@ -689,7 +697,7 @@ void ComLiqPerIva_mask::checkOldValue(int field, real val)
|
||||
}
|
||||
real trueVal = ZERO;
|
||||
|
||||
// Modo più intelligente di uno stupido switch case?
|
||||
// Modo più intelligente di uno stupido switch case?
|
||||
switch(field)
|
||||
{
|
||||
case F_TOTOPATT:
|
||||
|
Loading…
x
Reference in New Issue
Block a user