Patch level : 12.0 1096
Files correlati : cg4.exe Commento : Corretta la stampa dei progressivi sui registri nel caso di provressivi precedenti
This commit is contained in:
parent
1a2184724d
commit
4fbb00fdb5
@ -1,6 +1,7 @@
|
||||
#include "cg0800a.h"
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
|
||||
BUTTON DLG_PRINT 2 2
|
||||
BEGIN
|
||||
PROMPT 1 1 "Stampa"
|
||||
|
@ -956,8 +956,6 @@ bool TStampa_registri_app::user_destroy()
|
||||
// del periodo precedente.
|
||||
void TStampa_registri_app::calcola_progressivi()
|
||||
{
|
||||
TString80 chiave, codtab;
|
||||
|
||||
int num=0;
|
||||
if (_tipo_stampa == libro_unico)
|
||||
num = _fino_a_mese; else
|
||||
@ -965,83 +963,144 @@ void TStampa_registri_app::calcola_progressivi()
|
||||
num = _datareg.month();
|
||||
|
||||
// Chiave per selezione records progressivi
|
||||
chiave << _annoIVA << _codatt;
|
||||
|
||||
//calcolo i totali del periodo; calcola anche i totali da Periodo Precedente (se _annoIVA > 1997)
|
||||
//calcolo i totali del periodo; calcola anche i totali da Periodo Precedente (se _annoIVA > 1997)
|
||||
//_codatt e' gia' Z perche' lo leggo dal registro
|
||||
//calcolo i totali progressivi e del periodo (tra questi anche quelli di cui periodo precedente)
|
||||
for (int i=1; i<=num; i++)
|
||||
{
|
||||
const int start = 0, stop = (i == num) ? 1 : 0;
|
||||
TRelation * rel = new TRelation(_tabname);
|
||||
TRectype from(rel->curr());
|
||||
TRectype to(rel->curr());
|
||||
|
||||
TString keyf;
|
||||
TString keyt;
|
||||
TString select("(CODTAB[11,15]==\"");
|
||||
|
||||
for (int j = start; j <= stop; j++)
|
||||
select << _codreg << format("%02d", i) << "\")";
|
||||
|
||||
keyf <<_annoIVA << _codatt << 1 << _codreg << format("%02d", i);
|
||||
keyt << _annoIVA << _codatt << 2 << _codreg << format("%02d", i);
|
||||
from.put("CODTAB", keyf);
|
||||
to.put("CODTAB", keyt);
|
||||
|
||||
TCursor c(rel, select, 1, &from, &to, 0x2);
|
||||
TRectype & r = c.curr();
|
||||
const int items = c.items();
|
||||
|
||||
for (c = 0L; c.pos() < items; ++c)
|
||||
{
|
||||
const bool calc_prp = j == 1; // Calcola progressivi precedenti
|
||||
TTable tab(calc_prp ? "PRP" : _tabname);
|
||||
|
||||
tab.zero();
|
||||
tab.put("CODTAB", chiave);
|
||||
|
||||
const TRectype r(tab.curr());
|
||||
const TString & codtab = r.get("CODTAB");
|
||||
const int mese = atoi(codtab.mid(13, 2));
|
||||
const TString4 codiva = codtab.mid(16,4);
|
||||
const int tipodet = atoi(codtab.mid(20,1));
|
||||
real impo = r.get_real("R0");
|
||||
real impos = r.get_real("R1");
|
||||
real implo = r.get_real("R2");
|
||||
|
||||
tab.read(_isgteq);
|
||||
for (; !tab.eof() && tab.curr() == r; tab.next())
|
||||
//se il registro e' corrispettivi l'imponibile e l'iva li trovo in S2
|
||||
if (_corrispettivi)
|
||||
{
|
||||
codtab = tab.get("CODTAB");
|
||||
TString4 codreg = codtab.mid(10,3); codreg.trim();
|
||||
const int mese = atoi(codtab.mid(13,2));
|
||||
if (_codreg == codreg && mese == i)
|
||||
TToken_string cs (r.get("S2"),'!');
|
||||
|
||||
impo = cs.get(0);
|
||||
impos = cs.get(1);
|
||||
}
|
||||
//se in sospensione d'imposta l'imponibile e l'iva li trovo in R11 e R12
|
||||
if (_sosp_imposta)
|
||||
{
|
||||
impo = r.get_real("R11");
|
||||
impos = r.get_real("R12");
|
||||
}
|
||||
TToken_string fatt_rit (r.get("S1"),'!');
|
||||
|
||||
real im (fatt_rit.get(0));
|
||||
real is (fatt_rit.get(1));
|
||||
impo += im;
|
||||
impos += is;
|
||||
implo += im+is;
|
||||
if (impo != ZERO || impos != ZERO || implo != ZERO)
|
||||
{
|
||||
if (_tipo_stampa != prova)
|
||||
_tot_iva_array.add_riga(ZERO,ZERO,ZERO,impo,impos,implo,codiva); // progressivi
|
||||
if (mese == num)
|
||||
_tot_iva_array.add_riga(impo,impos,implo,ZERO,ZERO,ZERO,codiva); // periodo
|
||||
}
|
||||
if (_tipo_reg == acquisto) //registro acquisti
|
||||
{
|
||||
if (impo != ZERO || impos != ZERO)
|
||||
{
|
||||
const TString4 codiva = codtab.mid(16,4);
|
||||
const int tipodet = atoi(codtab.mid(20,1));
|
||||
real impo = tab.get_real("R0");
|
||||
real impos = tab.get_real("R1");
|
||||
real implo = tab.get_real("R2");
|
||||
//se il registro e' corrispettivi l'imponibile e l'iva li trovo in S2
|
||||
if (_corrispettivi)
|
||||
{
|
||||
TToken_string cs (tab.get("S2"),'!');
|
||||
impo = cs.get(0);
|
||||
impos = cs.get(1);
|
||||
}
|
||||
//se in sospensione d'imposta l'imponibile e l'iva li trovo in R11 e R12
|
||||
if (_sosp_imposta)
|
||||
{
|
||||
impo = tab.get_real("R11");
|
||||
impos = tab.get_real("R12");
|
||||
}
|
||||
TToken_string fatt_rit (tab.get("S1"),'!');
|
||||
real im (fatt_rit.get(0));
|
||||
real is (fatt_rit.get(1));
|
||||
impo += im;
|
||||
impos += is;
|
||||
implo += im+is;
|
||||
if (impo != ZERO || impos != ZERO || implo != ZERO)
|
||||
{
|
||||
if (!calc_prp && _tipo_stampa != prova)
|
||||
_tot_iva_array.add_riga(ZERO,ZERO,ZERO,impo,impos,implo,codiva); // progressivi
|
||||
if (mese == num)
|
||||
{
|
||||
if (calc_prp)
|
||||
_tot_prec_iva_array.add_riga(impo,impos,implo,ZERO,ZERO,ZERO,codiva); // periodo prec
|
||||
else
|
||||
_tot_iva_array.add_riga(impo,impos,implo,ZERO,ZERO,ZERO,codiva); // periodo
|
||||
}
|
||||
}
|
||||
|
||||
if (!calc_prp && _tipo_reg == acquisto) //registro acquisti
|
||||
{
|
||||
if (impo != ZERO || impos != ZERO)
|
||||
{
|
||||
if (_tipo_stampa != prova)
|
||||
_iva_array.add_riga(ZERO,ZERO,impo,impos,codiva,tipodet,0,true, 0); //progressivi
|
||||
if (mese == num)
|
||||
_iva_array.add_riga(impo,impos,ZERO,ZERO,codiva,tipodet,0,true, 0); // periodo
|
||||
}
|
||||
}
|
||||
}
|
||||
} // for table
|
||||
} // for start to stop
|
||||
if (_tipo_stampa != prova)
|
||||
_iva_array.add_riga(ZERO,ZERO,impo,impos,codiva,tipodet,0,true, 0); //progressivi
|
||||
if (mese == num)
|
||||
_iva_array.add_riga(impo,impos,ZERO,ZERO,codiva,tipodet,0,true, 0); // periodo
|
||||
}
|
||||
}
|
||||
} // for cursor
|
||||
TRelation * relp = new TRelation("PRP");
|
||||
TRectype fromp(relp->curr());
|
||||
TRectype top(relp->curr());
|
||||
|
||||
keyf.trim();
|
||||
keyt.trim();
|
||||
fromp.put("CODTAB", keyf);
|
||||
top.put("CODTAB", keyt);
|
||||
|
||||
TCursor cp(relp, select, 1, &fromp, &top, 0x2);
|
||||
TRectype & rp = cp.curr();
|
||||
const int itemsp = cp.items();
|
||||
|
||||
for (cp = 0L; cp.pos() < itemsp; ++cp)
|
||||
{
|
||||
const TString & codtab = rp.get("CODTAB");
|
||||
const int mese = atoi(codtab.mid(13, 2));
|
||||
const TString4 codiva = codtab.mid(16, 4);
|
||||
const int tipodet = atoi(codtab.mid(20, 1));
|
||||
real impo = rp.get_real("R0");
|
||||
real impos = rp.get_real("R1");
|
||||
real implo = rp.get_real("R2");
|
||||
|
||||
//se il registro e' corrispettivi l'imponibile e l'iva li trovo in S2
|
||||
if (_corrispettivi)
|
||||
{
|
||||
TToken_string cs(rp.get("S2"), '!');
|
||||
|
||||
impo = cs.get(0);
|
||||
impos = cs.get(1);
|
||||
}
|
||||
//se in sospensione d'imposta l'imponibile e l'iva li trovo in R11 e R12
|
||||
if (_sosp_imposta)
|
||||
{
|
||||
impo = rp.get_real("R11");
|
||||
impos = rp.get_real("R12");
|
||||
}
|
||||
TToken_string fatt_rit(rp.get("S1"), '!');
|
||||
real im(fatt_rit.get(0));
|
||||
real is(fatt_rit.get(1));
|
||||
|
||||
impo += im;
|
||||
impos += is;
|
||||
implo += im + is;
|
||||
if (impo != ZERO || impos != ZERO || implo != ZERO)
|
||||
{
|
||||
if (mese == num - 1)
|
||||
{
|
||||
_tot_prec_iva_array.add_riga(impo, impos, implo, ZERO, ZERO, ZERO, codiva); // periodo prec
|
||||
_tot_iva_array.add_riga(impo, impos, implo, ZERO, ZERO, ZERO, codiva);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (mese == num)
|
||||
_tot_iva_array.add_riga(-impo, -impos, -implo, ZERO, ZERO, ZERO, codiva); // periodo prec
|
||||
if (_tipo_stampa != prova)
|
||||
{
|
||||
_tot_iva_array.add_riga(ZERO, ZERO, ZERO, -impo, -impos, -implo, codiva); // progressivi
|
||||
if (_tipo_reg == acquisto && (impo != ZERO || impos != ZERO))
|
||||
_iva_array.add_riga(ZERO, ZERO, -impo, -impos, codiva, tipodet, 0, true, 0); //progressivi
|
||||
}
|
||||
}
|
||||
}
|
||||
} // for cursor
|
||||
} // for i to num
|
||||
}
|
||||
|
||||
@ -4072,7 +4131,7 @@ bool TStampa_registri_app::stampa_riepilogo(int m)
|
||||
TString80 chiave; chiave << _annoIVA << _tabreg->get("S8");
|
||||
|
||||
// Calcolo riepilogo del periodo e progressivi in caso di stampa su bollato
|
||||
for (int i=1; i<=m; i++)
|
||||
/* for (int i=1; i<=m; i++)
|
||||
{
|
||||
int start = 0, stop = i==m ? 1 : 0; // Per il mese attuale si calcolano anche i progressivi precedenti a questo periodo (PRP)
|
||||
for (int j = start; j <= stop; j++)
|
||||
@ -4136,8 +4195,8 @@ bool TStampa_registri_app::stampa_riepilogo(int m)
|
||||
}
|
||||
} // for table
|
||||
} // for start to stop
|
||||
} // for i to m
|
||||
|
||||
} // for i to m */
|
||||
calcola_progressivi();
|
||||
if (vect.items() > 0)
|
||||
{
|
||||
stampato = true;
|
||||
|
@ -450,7 +450,7 @@ int TParaliq_app::read(TMask& m)
|
||||
TCursor cur(&relpla, "", 1, &pla, &pla);
|
||||
const TRecnotype items = cur.items();
|
||||
|
||||
sf.destroy();
|
||||
sf.reset();
|
||||
if (items == 0)
|
||||
init_array(sf); // Carica tutti i codici attività
|
||||
else
|
||||
|
@ -112,30 +112,9 @@ class TProgind;
|
||||
|
||||
|
||||
static const char * __date_field_name[] = { MOV_DATAREG, MOV_DATACOMP, MOV_DATACOMPCR };
|
||||
|
||||
enum TipoIVA
|
||||
{
|
||||
iva_errata = -1,
|
||||
nessuna_iva = 0,
|
||||
iva_vendite = 1,
|
||||
iva_acquisti = 2,
|
||||
libro_giornale = 5,
|
||||
iva_generica = 9
|
||||
};
|
||||
|
||||
enum tipo_movimento
|
||||
{
|
||||
tm_nessuno = 0,
|
||||
tm_fattura = 1,
|
||||
tm_nota_credito = 2,
|
||||
tm_pagamento = 3,
|
||||
tm_insoluto = 5,
|
||||
tm_pagamento_insoluto = 6
|
||||
};
|
||||
|
||||
|
||||
enum cgrowtypes
|
||||
{
|
||||
typedef enum { iva_errata = -1, nessuna_iva = 0, iva_vendite = 1, iva_acquisti = 2, libro_giornale = 5, iva_generica = 9 } TipoIVA;
|
||||
typedef enum { tm_nessuno = 0, tm_fattura = 1, tm_nota_credito = 2, tm_pagamento = 3, tm_insoluto = 5, tm_pagamento_insoluto = 6 } tipo_movimento;
|
||||
typedef enum {
|
||||
cgrowtype_contabile = ' ', // riga contabile
|
||||
cgrowtype_totale = 'T', // Totale documento
|
||||
cgrowtype_abbattivo = 'A', // Abbuoni attivi
|
||||
@ -153,47 +132,12 @@ enum cgrowtypes
|
||||
cgrowtype_imponibile = 'I', // Imponibile/contropartita saldaconto
|
||||
cgrowtype_clisplit = '1', // Cliente per scissione pagamenti art.17-ter DPR 633/72
|
||||
cgrowtype_spese = 'G' // Spese del saladaconto
|
||||
};
|
||||
|
||||
enum tipo_sospensione
|
||||
{
|
||||
nessuna_sospensione,
|
||||
sospensione_normale,
|
||||
vol_affari,
|
||||
liquidazione
|
||||
};
|
||||
|
||||
enum tipobil
|
||||
{
|
||||
DataLimite = 1,
|
||||
UltimaImmissione
|
||||
};
|
||||
|
||||
enum tiposal
|
||||
{
|
||||
saldo_normale,
|
||||
saldo_apertura,
|
||||
saldo_chiusura
|
||||
};
|
||||
|
||||
enum TTipo_data
|
||||
{
|
||||
Registrazione,
|
||||
Competenza,
|
||||
CostiRicavi
|
||||
};
|
||||
|
||||
enum tiporeg
|
||||
{
|
||||
vendita = 1,
|
||||
acquisto = 2,
|
||||
riepilogativo = 3,
|
||||
incassi = 4,
|
||||
giornale = 5,
|
||||
sociale = 6,
|
||||
cespiti = 7,
|
||||
giornale_magazzino = 9
|
||||
};
|
||||
} cgrowtypes;
|
||||
typedef enum { nessuna_sospensione, sospensione_normale, vol_affari, liquidazione } tipo_sospensione;
|
||||
typedef enum { DataLimite = 1, UltimaImmissione} tipobil;
|
||||
typedef enum { saldo_normale, saldo_apertura, saldo_chiusura} tiposal;
|
||||
typedef enum { Registrazione, Competenza, CostiRicavi } TTipo_data;
|
||||
typedef enum { vendita = 1, acquisto = 2, riepilogativo = 3, incassi = 4, giornale = 5, sociale = 6, cespiti = 7, giornale_magazzino = 9 } tiporeg;
|
||||
|
||||
inline bool check_mov(const int tipomovprovv, const TString & provvis)
|
||||
{
|
||||
|
@ -172,6 +172,7 @@ public: // TObject
|
||||
real imposta(const real& imponibile, int ndec = AUTO_DECIMALS, const char * codval = "") const; // Calcola l'imposta sull'imponibile l'imposta e la ritorna
|
||||
real scorpora(real& imponibile, int ndec = AUTO_DECIMALS, const char * codval = "") const; // Scorpora dall'imponibile l'imposta e la ritorna
|
||||
real lordo(const real& imponibile, int ndec = AUTO_DECIMALS, const char * codval = "") const; // Calcola il lordo dell'imponibile l'imposta e la ritorna
|
||||
real imponibile(const real& imposta, int ndec = AUTO_DECIMALS, const char * codval = "") const; // Calcola l'imponibile dell'imposta e lo ritorna
|
||||
|
||||
// bool reverse_charge() const;
|
||||
// bool reverse_charge_pubb() const;
|
||||
|
@ -403,26 +403,25 @@ bool TRiga_array::add_riga(const real& imponibile, const real& imposta, const
|
||||
const char* codiva)
|
||||
{
|
||||
bool found = false;
|
||||
for (int i = 0; i < items(); i++)
|
||||
|
||||
for (int i = 0; !found && i < items(); i++)
|
||||
{
|
||||
TRiga& r = riga(i);
|
||||
if (r._codiva==codiva)
|
||||
|
||||
found = r._codiva == codiva;
|
||||
if (found)
|
||||
{
|
||||
found = true;
|
||||
|
||||
r._imponibile += imponibile;
|
||||
r._imposta += imposta;
|
||||
r._implordo += implordo;
|
||||
r._imponibilep += imponibilep;
|
||||
r._impostap += impostap;
|
||||
r._implordop += implordop;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found)
|
||||
{
|
||||
TRiga* r = new TRiga(imponibile,imposta,implordo,imponibilep,impostap,implordop,codiva);
|
||||
add(r);
|
||||
}
|
||||
add(new TRiga(imponibile, imposta, implordo, imponibilep, impostap, implordop, codiva));
|
||||
return found;
|
||||
}
|
||||
|
||||
|
@ -31,11 +31,11 @@ bool classify_pim(const TRectype& pimr, real& imp, real& iva, tiporec& t, bool t
|
||||
|
||||
switch(tocheck)
|
||||
{
|
||||
case acq_norm:
|
||||
case acq_norm:
|
||||
//found = tipomov == 2 && tipoiva != "NS";
|
||||
found = tipomov == 2;
|
||||
found &= (tipodet == 0 /* || tipodet == 1 || tipodet == 3 ||
|
||||
tipodet == 5 || tipodet == 9 */);
|
||||
tipodet == 5 || tipodet == 9 */);
|
||||
if (found)
|
||||
{
|
||||
if (tipost) //stampa
|
||||
@ -57,7 +57,7 @@ bool classify_pim(const TRectype& pimr, real& imp, real& iva, tiporec& t, bool t
|
||||
break;
|
||||
case vend_norm:
|
||||
//found = tipomov == 1 /* && corrisp == 1 */ && tipoiva != "NS";
|
||||
found = tipomov == 1 /* && corrisp == 1 */;
|
||||
found = tipomov == 1 /* && corrisp == 1 */;
|
||||
if (found)
|
||||
{
|
||||
imp = pimr.get_real("R0");
|
||||
|
Loading…
x
Reference in New Issue
Block a user