Patch level : 12.0 386
Files correlati : tf Commento : - Aggiornata funzione di calcolo del credito precedente, adesso calcola anno + credito e fa le dovute verifiche. - Aggiunta variabile controllo per l'inizializzazione della maschera, in Release ci sono dei problemi durante il caricamento (viene calcolato il campo mese come se fossi in un trimestre). - Modificata lettura dati per il totale delle operazioni da PRM a PAM, in quest'ultima sono già presenti i totali per codice attività con i corrispettivi già sommati git-svn-id: svn://10.65.10.50/branches/R_10_00@23797 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
f4c571b032
commit
a9d9e1c1dc
@ -35,7 +35,7 @@ const TRectype getLIM(int anno, int mese)
|
||||
TString key; key << anno;
|
||||
if(mese < 10)
|
||||
key << "0";
|
||||
keyLim << mese;
|
||||
key << mese;
|
||||
return cache().get("LIM", key);
|
||||
}
|
||||
|
||||
@ -160,14 +160,13 @@ int calc_inc_diff(int anno, int mese, int tipoiva, real& imponibile_diff, real&
|
||||
}
|
||||
|
||||
/* Funzione per determinare il credito dell'anno precedente delle dichiarazioni precedenti */
|
||||
real calcolaCreditoAnnoPrec(bool mensile, int anno, int mese)
|
||||
void calcolaCreditoPrec(real& creprec, real& creaprec, bool mensile, int anno, int mese)
|
||||
{
|
||||
// Credito anno precedente
|
||||
/* Per calcolare il credito dell'anno precedente inizio a leggere i record precedenti su IVALIQ
|
||||
* fino a quando ne trovo uno >= 0.
|
||||
* Questi geni hanno messo la possibilità di mettere un valore <0 se voglio utilizzare del credito precedente */
|
||||
|
||||
real creaprec = ZERO;
|
||||
TRectype rowLia = getLIA(anno);
|
||||
|
||||
if(mensile || (!mensile && ((mese - 1) % 3) == 0))
|
||||
@ -179,11 +178,19 @@ real calcolaCreditoAnnoPrec(bool mensile, int anno, int mese)
|
||||
|
||||
TSorted_cursor curLiq(&ivaLiq, "MESE-", "GENERATA!=\"G\"", 1, &from, &to);
|
||||
bool trovato = false;
|
||||
for(curLiq = 0; curLiq.pos() < curLiq.items() && !trovato; ++curLiq)
|
||||
for(curLiq = 0; curLiq.pos() < curLiq.items(); ++curLiq)
|
||||
{
|
||||
TRectype rowLiq = curLiq.curr();
|
||||
if(rowLiq.get_int("MESE") >= mese) continue; // Perchè li prende lo stesso?
|
||||
creaprec = creaprec + rowLiq.get_real("CREAPREC") - rowLiq.get_real("IVADOV");
|
||||
|
||||
if(rowLiq.get_real("IVADOVC") > ZERO)
|
||||
creprec += rowLiq.get_real("IVADOVC");
|
||||
else
|
||||
creprec -= rowLiq.get_real("IVADOV");
|
||||
|
||||
// Sommo finchè non trovo il primo valore positivo
|
||||
if(!trovato)
|
||||
creaprec = creaprec + rowLiq.get_real("CREAPREC");
|
||||
|
||||
// Se è > 0 Ho trovato il primo valore messo nella dichiarazione
|
||||
if(rowLiq.get_real("CREAPREC") > ZERO)
|
||||
@ -191,35 +198,35 @@ real calcolaCreditoAnnoPrec(bool mensile, int anno, int mese)
|
||||
trovato = true;
|
||||
}
|
||||
}
|
||||
/* Se non ho trovato nessun valore positivo (i negativi senza nessun positivo prima non sono validi)
|
||||
* vado a leggere la liquidazione di quest'anno */
|
||||
if(!trovato)
|
||||
{
|
||||
creaprec = rowLia.get_real("R0");
|
||||
}
|
||||
else if(creaprec < ZERO)
|
||||
/* Se ho esaurito il credito del periodo precedente lo sottraggo a quello dell'anno precedente e lo azzero */
|
||||
if(creprec < ZERO)
|
||||
{
|
||||
creaprec = ZERO;
|
||||
creaprec -= creprec;
|
||||
creprec = ZERO;
|
||||
}
|
||||
}
|
||||
/* Se siamo in una liquidazione trimestrale la scadenza della dichiarazione IVA è il 28 febbraio
|
||||
* quindi so per certo che il valore calcolato in LIA.R0 è stato trasmesso */
|
||||
else if(!mensile && mese == 3)
|
||||
{
|
||||
creaprec = rowLia.get_real("R0");
|
||||
}
|
||||
return creaprec;
|
||||
}
|
||||
|
||||
class ComLiqPerIva_mask : public TAutomask
|
||||
{
|
||||
protected:
|
||||
bool mensile;
|
||||
// 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;
|
||||
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
void extractinator();
|
||||
void checkOldValue(int field, real val);
|
||||
public:
|
||||
ComLiqPerIva_mask() : TAutomask("tf0200a"), trueData(LF_IVALIQ) { first_focus(F_ANNO); }
|
||||
ComLiqPerIva_mask() : TAutomask("tf0200a"), trueData(LF_IVALIQ), initLiq(false) { first_focus(F_ANNO); }
|
||||
void saveGen();
|
||||
};
|
||||
|
||||
@ -240,25 +247,27 @@ bool ComLiqPerIva_mask::on_field_event(TOperable_field& o, TField_event e, long
|
||||
if(cache().get("%LIA", cod, "S7") == "M")
|
||||
{
|
||||
mensile = true;
|
||||
initLiq = true;
|
||||
enable(F_MESE);
|
||||
disable(F_TRIMESTRE);
|
||||
}
|
||||
else
|
||||
{
|
||||
mensile = false;
|
||||
initLiq = true;
|
||||
disable(F_MESE);
|
||||
enable(F_TRIMESTRE);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case F_MESE:
|
||||
if(e == fe_modify && mensile)
|
||||
if(e == fe_modify && mensile && initLiq)
|
||||
set(F_TRIMESTRE, (get_int(F_MESE) - 1) / 3 + 1);
|
||||
break;
|
||||
case F_TRIMESTRE:
|
||||
if(e == fe_init && !query_mode())
|
||||
disable(F_TRIMESTRE);
|
||||
if(e == fe_modify && !mensile && query_mode())
|
||||
if(e == fe_modify && !mensile && initLiq && query_mode())
|
||||
{
|
||||
set(F_MESE, get_int(F_TRIMESTRE) * 3);
|
||||
disable(F_TRIMESTRE);
|
||||
@ -349,11 +358,13 @@ bool ComLiqPerIva_mask::on_field_event(TOperable_field& o, TField_event e, long
|
||||
real creaprec = get_real(F_CREAPREC);
|
||||
if(creaprec < ZERO)
|
||||
{
|
||||
creaprec = calcolaCreditoAnnoPrec(mensile, get_int(F_ANNO), get_int(F_MESE)) + creaprec;
|
||||
real creprec = ZERO; real appcreaprec;
|
||||
calcolaCreditoPrec(creprec, appcreaprec, mensile, get_int(F_ANNO), get_int(F_MESE));
|
||||
creaprec = appcreaprec + creaprec;
|
||||
// Controllo che il credito non sia sforato sotto 0
|
||||
if (creaprec < ZERO)
|
||||
{
|
||||
TString msg = "Attenzione! hai sforato il tuo credito dell'anno precedente di "; msg << (creaprec * - UNO).stringa(0,2) << "€";
|
||||
TString msg = "Attenzione! Capienza del credito dell'anno precedente esaurita di "; msg << (creaprec * - UNO).stringa(0,2) << "€";
|
||||
warning_box(msg);
|
||||
}
|
||||
}
|
||||
@ -445,36 +456,20 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
|
||||
// Riga LIA
|
||||
const TRectype rowLia = getLIA(anno);
|
||||
|
||||
// Calcolo il cursore di PRM
|
||||
//TCursor curPrm = getPRM(anno);
|
||||
|
||||
static TRelation rprm(LF_TAB);
|
||||
TRectype from(rprm.curr()); from.put("COD", "PRM");from.put("CODTAB", anno);
|
||||
TRectype to(rprm.curr()); to.put("COD" , "PRM");to.put("CODTAB", anno);
|
||||
|
||||
TCursor curPrm(&rprm, "", 1, &from, &to);
|
||||
for(curPrm = 0; curPrm.pos() < curPrm.items(); ++curPrm)
|
||||
/* Sembra che in PAM ci sia già tutto quello che mi serve!
|
||||
* Chiave PAM: ANNO + COD_ATTIVITA' + MESE */
|
||||
static TRelation rpam(LF_TAB);
|
||||
TRectype from(rpam.curr()); from.put("COD", "PAM");from.put("CODTAB", anno);
|
||||
TRectype to(rpam.curr()); to.put("COD" , "PAM");to.put("CODTAB", anno);
|
||||
TCursor curPam(&rpam, "", 1, &from, &to);
|
||||
for(curPam = 0; curPam.pos() < curPam.items(); ++curPam)
|
||||
{
|
||||
TRectype rowPrm = curPrm.curr();
|
||||
// Controllo il mese
|
||||
TString codtab = rowPrm.get("CODTAB");
|
||||
if(atoi(rowPrm.get("CODTAB").sub(13,15)) != start) continue;
|
||||
|
||||
|
||||
// Verifico su che registro mi trovo
|
||||
int tiporeg = rowPrm.get_int("I1");
|
||||
bool detraibile = atoi(rowPrm.get("CODTAB").mid(20,1)) == 0; // Se > è indetraibile
|
||||
if(!detraibile) continue; // Non mi interessa
|
||||
|
||||
if(tiporeg == reg_att)
|
||||
{
|
||||
totopatt = totopatt + rowPrm.get_real("R0");
|
||||
}
|
||||
else if(tiporeg == reg_pas)
|
||||
{
|
||||
totoppas = totoppas + rowPrm.get_real("R0");
|
||||
}
|
||||
TRectype rowPam = curPam.curr();
|
||||
if(atoi(rowPam.get("CODTAB").right(2)) != start) continue;
|
||||
totopatt = totopatt + rowPam.get_real("R1");
|
||||
totoppas = totoppas + rowPam.get_real("R0");
|
||||
}
|
||||
|
||||
// Se ha attiva l'IVA x cassa
|
||||
if(gestione_IVAxCassa(data_da))
|
||||
{
|
||||
@ -524,22 +519,11 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
|
||||
|
||||
real appReal = ZERO;
|
||||
|
||||
// Credito periodo precedente
|
||||
if(start != 1) // A gennaio non lo calcolo
|
||||
{
|
||||
/* Se sono in una liquidazione mensile o nel primo mese di una trimestrale
|
||||
* es. aprile ((4 - 1) % 3) = 0, maggio ((5 - 1) % 3) = 1 */
|
||||
if(mensile || (!mensile && ((start - 1) % 3) == 0))
|
||||
{
|
||||
TString key; key << anno << "|" << start - 1 << "|U";
|
||||
real appCredito(cache().get(LF_IVALIQ, key, "IVADOVC"));
|
||||
if(appCredito > ZERO)
|
||||
creprec = creprec + appCredito;
|
||||
}
|
||||
}
|
||||
// Credito periodo precedente e anno precedente
|
||||
calcolaCreditoPrec(creprec, creaprec, mensile, anno, start);
|
||||
|
||||
// Credito anno precedente
|
||||
creaprec = calcolaCreditoAnnoPrec(mensile, anno, start);
|
||||
if(creaprec < ZERO)
|
||||
creaprec = ZERO;
|
||||
|
||||
intliqtri = intliqtri + rowLim.get_real("R14");
|
||||
accdov = accdov + rowLim.get_real("R11");
|
||||
|
Loading…
x
Reference in New Issue
Block a user