Liquidazione: generazione dei progressivi mensili per tutti i tipi
di indetraibilita' git-svn-id: svn://10.65.10.50/trunk@735 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
d84c15ec9b
commit
74197d129b
@ -124,6 +124,7 @@ bool TLiquidazione_app::user_create()
|
|||||||
_pim_mese = new TRecfield(*_pim_r,"CODTAB",13,14);
|
_pim_mese = new TRecfield(*_pim_r,"CODTAB",13,14);
|
||||||
_pim_tipocr = new TRecfield(*_pim_r,"CODTAB",15,15);
|
_pim_tipocr = new TRecfield(*_pim_r,"CODTAB",15,15);
|
||||||
_pim_codiva = new TRecfield(*_pim_r,"CODTAB",16,19);
|
_pim_codiva = new TRecfield(*_pim_r,"CODTAB",16,19);
|
||||||
|
_pim_tipodet = new TRecfield(*_pim_r,"CODTAB",20,20);
|
||||||
_ppa_year = new TRecfield(*_ppa_r,"CODTAB",0,3);
|
_ppa_year = new TRecfield(*_ppa_r,"CODTAB",0,3);
|
||||||
_ppa_codatt = new TRecfield(*_ppa_r,"CODTAB",4,9);
|
_ppa_codatt = new TRecfield(*_ppa_r,"CODTAB",4,9);
|
||||||
_ppa_month = new TRecfield(*_ppa_r,"CODTAB",10,11);
|
_ppa_month = new TRecfield(*_ppa_r,"CODTAB",10,11);
|
||||||
|
11
cg/cg4300.h
11
cg/cg4300.h
@ -92,9 +92,10 @@ public: // non e' bello, ma non e' bello neanche dover fare un
|
|||||||
class _VendItem : public TObject
|
class _VendItem : public TObject
|
||||||
{
|
{
|
||||||
public: // vedi sopra per le fisime morali
|
public: // vedi sopra per le fisime morali
|
||||||
real _totale; // totale vendite per registro
|
real _totale; // totale vendite per registro/tipo det.
|
||||||
TString _codreg; // codice registro
|
TString _codreg; // codice registro
|
||||||
int _month; // mese
|
int _month; // mese
|
||||||
|
int _tipodet; // tipo detraibilita'
|
||||||
_VendItem() : _codreg(5) {}
|
_VendItem() : _codreg(5) {}
|
||||||
virtual ~_VendItem() {}
|
virtual ~_VendItem() {}
|
||||||
};
|
};
|
||||||
@ -107,6 +108,7 @@ public: // vedi sopra per le fisime morali
|
|||||||
int _month; // mese
|
int _month; // mese
|
||||||
real _aliquota; // aliquota iva
|
real _aliquota; // aliquota iva
|
||||||
TString _codiva; // codice iva
|
TString _codiva; // codice iva
|
||||||
|
int _tipodet; // tipo detraibilita'
|
||||||
_CorrItem() : _codreg(5) {}
|
_CorrItem() : _codreg(5) {}
|
||||||
virtual ~_CorrItem() {}
|
virtual ~_CorrItem() {}
|
||||||
};
|
};
|
||||||
@ -234,6 +236,7 @@ class TLiquidazione_app : public TPrint_application
|
|||||||
TRecfield* _pim_mese;
|
TRecfield* _pim_mese;
|
||||||
TRecfield* _pim_tipocr;
|
TRecfield* _pim_tipocr;
|
||||||
TRecfield* _pim_codiva;
|
TRecfield* _pim_codiva;
|
||||||
|
TRecfield* _pim_tipodet;
|
||||||
TRecfield* _ppa_year;
|
TRecfield* _ppa_year;
|
||||||
TRecfield* _ppa_codatt;
|
TRecfield* _ppa_codatt;
|
||||||
TRecfield* _ppa_month;
|
TRecfield* _ppa_month;
|
||||||
@ -316,10 +319,10 @@ public:
|
|||||||
real interesse_trimestrale(int month);
|
real interesse_trimestrale(int month);
|
||||||
|
|
||||||
// minchia di puro suino
|
// minchia di puro suino
|
||||||
void add_vendite (int month, const char* codreg, real& r);
|
void add_vendite (int month, const char* codreg, int tipodet, real& r);
|
||||||
void add_ventilation (real iva, real sum, const char* codiva);
|
void add_ventilation (real iva, real sum, const char* codiva);
|
||||||
void add_corrisp (int month, const char* codreg, real& r, real& p,
|
void add_corrisp (int month, const char* codreg, real& r, real& p,
|
||||||
const char * codiva);
|
int tipodet, const char * codiva);
|
||||||
|
|
||||||
// printappings
|
// printappings
|
||||||
virtual void set_page(int file, int counter);
|
virtual void set_page(int file, int counter);
|
||||||
@ -341,7 +344,7 @@ public:
|
|||||||
|
|
||||||
// cercapalle in tabelle con opzione di creazione se serve
|
// cercapalle in tabelle con opzione di creazione se serve
|
||||||
bool look_pim(int m, const char* a, const char* r, const char* cr,
|
bool look_pim(int m, const char* a, const char* r, const char* cr,
|
||||||
const char* i, bool create = FALSE);
|
const char* i, int tipodet = 0, bool create = FALSE);
|
||||||
bool look_plm(int m, const char* a, bool create = FALSE);
|
bool look_plm(int m, const char* a, bool create = FALSE);
|
||||||
bool look_ptm(int m, const char* a, bool create = FALSE);
|
bool look_ptm(int m, const char* a, bool create = FALSE);
|
||||||
bool look_lim(int m, bool create = FALSE);
|
bool look_lim(int m, bool create = FALSE);
|
||||||
|
@ -479,14 +479,12 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
{
|
{
|
||||||
acq_ies += imponibile;
|
acq_ies += imponibile;
|
||||||
acq_ies_iva += imposta;
|
acq_ies_iva += imposta;
|
||||||
continue; // non entrano in liquidazione
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tipodet == 3) // passaggi interni (solo ventilaz)
|
if (tipodet == 3) // passaggi interni (solo ventilaz)
|
||||||
{
|
{
|
||||||
acq_pint += imponibile;
|
acq_pint += imponibile;
|
||||||
acq_pint_iva += imposta;
|
acq_pint_iva += imposta;
|
||||||
continue; // precauzionale (in genere sono esenti IVA)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// acquisti non detraibili art. 19
|
// acquisti non detraibili art. 19
|
||||||
@ -495,7 +493,6 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
{
|
{
|
||||||
nond19_imp += imponibile;
|
nond19_imp += imponibile;
|
||||||
nond19_iva += imposta;
|
nond19_iva += imposta;
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// *****************************************
|
// *****************************************
|
||||||
@ -508,20 +505,24 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
* cerca o crea progressivo IVA
|
* cerca o crea progressivo IVA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
look_pim(month, codatt, reg, tipocr_s, codiva, TRUE);
|
look_pim(month, codatt, reg, tipocr_s, codiva, tipodet, TRUE);
|
||||||
|
|
||||||
|
// se liq == FALSE gli importi non contano ai fini
|
||||||
|
// del calcolo liquidazione
|
||||||
|
bool liq = !(tipodet == 1 || tipodet == 3 || tipodet == 9);
|
||||||
|
|
||||||
real imp = _pim_r->get_real("R0"); // imponibile
|
real imp = _pim_r->get_real("R0"); // imponibile
|
||||||
real ivp = _pim_r->get_real("R1"); // IVA su imp.
|
real ivp = _pim_r->get_real("R1"); // IVA su imp.
|
||||||
real lor = _pim_r->get_real("R2"); // lordo
|
real lor = _pim_r->get_real("R2"); // lordo
|
||||||
|
|
||||||
|
|
||||||
if (tipomov == vendita && !corrisp) // i corrispettivi sono gestiti a parte
|
if (liq && tipomov == vendita && !corrisp) // i corrispettivi sono gestiti a parte
|
||||||
{
|
{
|
||||||
// totale vendite
|
// totale vendite
|
||||||
vendite += imponibile;
|
vendite += imponibile;
|
||||||
vendite_iva += imposta;
|
vendite_iva += imposta;
|
||||||
}
|
}
|
||||||
else if (tipomov == acquisto)
|
else if (liq && tipomov == acquisto)
|
||||||
{
|
{
|
||||||
// totale acquisti
|
// totale acquisti
|
||||||
acquisti += imponibile;
|
acquisti += imponibile;
|
||||||
@ -539,14 +540,14 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
{
|
{
|
||||||
lor += imponibile;
|
lor += imponibile;
|
||||||
_pim_r->put("I0",LORDO);
|
_pim_r->put("I0",LORDO);
|
||||||
add_vendite(month, reg, imponibile);
|
add_vendite(month, reg, tipodet, imponibile);
|
||||||
}
|
}
|
||||||
else // non da ventilare, con imposta gia' conteggiata
|
else // non da ventilare, con imposta gia' conteggiata
|
||||||
{
|
{
|
||||||
real perc = _iva->get_real("R0") / CENTO;
|
real perc = _iva->get_real("R0") / CENTO;
|
||||||
lor += imponibile + imposta;
|
lor += imponibile + imposta;
|
||||||
_pim_r->put("I0",LORDO);
|
_pim_r->put("I0",LORDO);
|
||||||
add_corrisp(month, reg, imponibile, perc, codiva);
|
if (liq) add_corrisp(month, reg, imponibile, perc, tipodet, codiva);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (tipodoc == "FS")
|
else if (tipodoc == "FS")
|
||||||
@ -556,23 +557,30 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
if (tipoiva == "VE")
|
if (tipoiva == "VE")
|
||||||
{
|
{
|
||||||
real rr = imponibile + imposta;
|
real rr = imponibile + imposta;
|
||||||
vendite += rr;
|
|
||||||
imp += rr;
|
imp += rr;
|
||||||
add_vendite(month, reg, rr);
|
if (liq)
|
||||||
|
vendite += rr;
|
||||||
|
add_vendite(month, reg, tipodet, rr);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
if (liq)
|
||||||
{
|
{
|
||||||
vendite += imponibile;
|
vendite += imponibile;
|
||||||
vendite_iva += imposta;
|
vendite_iva += imposta;
|
||||||
|
}
|
||||||
imp += imponibile;
|
imp += imponibile;
|
||||||
ivp += imposta;
|
ivp += imposta;
|
||||||
}
|
}
|
||||||
lor -= imponibile + imposta;
|
lor -= imponibile + imposta;
|
||||||
}
|
}
|
||||||
else // vendite normali a tutti gli effetti
|
else // vendite normali a tutti gli effetti
|
||||||
|
{
|
||||||
|
if (liq)
|
||||||
{
|
{
|
||||||
vendite += imponibile;
|
vendite += imponibile;
|
||||||
vendite_iva += imposta;
|
vendite_iva += imposta;
|
||||||
|
}
|
||||||
imp += imponibile;
|
imp += imponibile;
|
||||||
ivp += imposta;
|
ivp += imposta;
|
||||||
_pim_r->put("I0",NETTO);
|
_pim_r->put("I0",NETTO);
|
||||||
|
@ -78,14 +78,15 @@ void TLiquidazione_app::add_ventilation(real iva, real howmuch, const char* cod
|
|||||||
vi->_totale += howmuch;
|
vi->_totale += howmuch;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TLiquidazione_app::add_vendite(int month, const char* codreg, real& r)
|
void TLiquidazione_app::add_vendite(int month, const char* codreg,
|
||||||
|
int tipodet, real& r)
|
||||||
{
|
{
|
||||||
_VendItem* vi = NULL;
|
_VendItem* vi = NULL;
|
||||||
|
|
||||||
for (int i = 0; i < _vend_arr.items(); i++)
|
for (int i = 0; i < _vend_arr.items(); i++)
|
||||||
{
|
{
|
||||||
vi = (_VendItem*)&_vend_arr[i];
|
vi = (_VendItem*)&_vend_arr[i];
|
||||||
if (vi->_codreg == codreg && vi->_month == month)
|
if (vi->_codreg == codreg && vi->_month == month && vi->_tipodet == tipodet)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (i == _vend_arr.items())
|
if (i == _vend_arr.items())
|
||||||
@ -93,12 +94,13 @@ void TLiquidazione_app::add_vendite(int month, const char* codreg, real& r)
|
|||||||
_vend_arr.add(vi = new _VendItem);
|
_vend_arr.add(vi = new _VendItem);
|
||||||
vi->_codreg = codreg;
|
vi->_codreg = codreg;
|
||||||
vi->_month = month;
|
vi->_month = month;
|
||||||
|
vi->_tipodet = tipodet;
|
||||||
}
|
}
|
||||||
vi->_totale += r;
|
vi->_totale += r;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TLiquidazione_app::add_corrisp(int month, const char* codreg, real& r,
|
void TLiquidazione_app::add_corrisp(int month, const char* codreg, real& r,
|
||||||
real& p, const char * codiva)
|
real& p, int tipodet, const char * codiva)
|
||||||
{
|
{
|
||||||
_CorrItem* ci = NULL;
|
_CorrItem* ci = NULL;
|
||||||
const int nitems = _corr_arr.items();
|
const int nitems = _corr_arr.items();
|
||||||
@ -107,7 +109,7 @@ void TLiquidazione_app::add_corrisp(int month, const char* codreg, real& r,
|
|||||||
{
|
{
|
||||||
ci = (_CorrItem*)&_corr_arr[i];
|
ci = (_CorrItem*)&_corr_arr[i];
|
||||||
if (ci->_codreg == codreg && ci->_month == month &&
|
if (ci->_codreg == codreg && ci->_month == month &&
|
||||||
ci->_codiva == codiva)
|
ci->_codiva == codiva && ci->_tipodet == tipodet)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (i == nitems)
|
if (i == nitems)
|
||||||
@ -116,6 +118,7 @@ void TLiquidazione_app::add_corrisp(int month, const char* codreg, real& r,
|
|||||||
ci->_codreg = codreg;
|
ci->_codreg = codreg;
|
||||||
ci->_month = month;
|
ci->_month = month;
|
||||||
ci->_codiva = codiva;
|
ci->_codiva = codiva;
|
||||||
|
ci->_tipodet = tipodet;
|
||||||
ci->_aliquota = p;
|
ci->_aliquota = p;
|
||||||
}
|
}
|
||||||
ci->_totale += r;
|
ci->_totale += r;
|
||||||
@ -123,7 +126,7 @@ void TLiquidazione_app::add_corrisp(int month, const char* codreg, real& r,
|
|||||||
|
|
||||||
|
|
||||||
bool TLiquidazione_app::look_pim(int month, const char* codatt, const char* codreg,
|
bool TLiquidazione_app::look_pim(int month, const char* codatt, const char* codreg,
|
||||||
const char* tipocr, const char* codiva,
|
const char* tipocr, const char* codiva, int tipodet,
|
||||||
bool create)
|
bool create)
|
||||||
// ritorna il PIM corrispondente alla chiave passata; se
|
// ritorna il PIM corrispondente alla chiave passata; se
|
||||||
// create = TRUE lo crea se non lo trova. Ritorna se c'era
|
// create = TRUE lo crea se non lo trova. Ritorna se c'era
|
||||||
@ -136,6 +139,7 @@ bool TLiquidazione_app::look_pim(int month, const char* codatt, const char* codr
|
|||||||
(*_pim_codiva) = codiva;
|
(*_pim_codiva) = codiva;
|
||||||
(*_pim_codatt) = codatt;
|
(*_pim_codatt) = codatt;
|
||||||
(*_pim_tipocr) = tipocr;
|
(*_pim_tipocr) = tipocr;
|
||||||
|
(*_pim_tipodet) = tipodet;
|
||||||
|
|
||||||
TString s = _pim_r->get("CODTAB");
|
TString s = _pim_r->get("CODTAB");
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@ void TLiquidazione_app::recalc_corrispettivi(int month, const char* codatt)
|
|||||||
_plm->rewrite();
|
_plm->rewrite();
|
||||||
|
|
||||||
// Aggiorno i luridi pim
|
// Aggiorno i luridi pim
|
||||||
look_pim(month, codatt, ci->_codreg, "0", ci->_codiva, TRUE);
|
look_pim(month, codatt, ci->_codreg, "0", ci->_codiva, ci->_tipodet, TRUE);
|
||||||
|
|
||||||
imponibile += _pim->get_real("R0");
|
imponibile += _pim->get_real("R0");
|
||||||
imposta += _pim->get_real("R1");
|
imposta += _pim->get_real("R1");
|
||||||
@ -198,7 +198,7 @@ void TLiquidazione_app::recalc_ventilation(int month, const char* codatt)
|
|||||||
_plm->rewrite();
|
_plm->rewrite();
|
||||||
|
|
||||||
// Aggiorno i luridi pim
|
// Aggiorno i luridi pim
|
||||||
look_pim(month, codatt, vi->_codreg, "0", vv->_codiva, TRUE);
|
look_pim(month, codatt, vi->_codreg, "0", vv->_codiva, vi->_tipodet, TRUE);
|
||||||
|
|
||||||
imponibile += _pim->get_real("R0");
|
imponibile += _pim->get_real("R0");
|
||||||
imposta += _pim->get_real("R1");
|
imposta += _pim->get_real("R1");
|
||||||
@ -215,14 +215,3 @@ void TLiquidazione_app::recalc_ventilation(int month, const char* codatt)
|
|||||||
_ptm->put("S5",totven.string());
|
_ptm->put("S5",totven.string());
|
||||||
_ptm->rewrite();
|
_ptm->rewrite();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -176,6 +176,7 @@ void TLiquidazione_app::describe_ventilation(int month, const char* codatt)
|
|||||||
look_iva(*_pim_codiva);
|
look_iva(*_pim_codiva);
|
||||||
|
|
||||||
int tipocr = atoi(*_pim_tipocr);
|
int tipocr = atoi(*_pim_tipocr);
|
||||||
|
int tipodet = atoi(*_pim_tipodet);
|
||||||
int mese = atoi(*_pim_mese);
|
int mese = atoi(*_pim_mese);
|
||||||
bool corrisp = _reg->get_bool("B0");
|
bool corrisp = _reg->get_bool("B0");
|
||||||
real imponibile = _pim->get_real("R0");
|
real imponibile = _pim->get_real("R0");
|
||||||
@ -184,6 +185,11 @@ void TLiquidazione_app::describe_ventilation(int month, const char* codatt)
|
|||||||
|
|
||||||
if (imponibile.is_zero() && imposta.is_zero()) continue;
|
if (imponibile.is_zero() && imposta.is_zero()) continue;
|
||||||
|
|
||||||
|
// questi non vanno in liquidazione, i totali sono
|
||||||
|
// gia' calcolati altrove
|
||||||
|
if (tipodet == 1 || tipodet == 3 || tipodet == 9)
|
||||||
|
continue;
|
||||||
|
|
||||||
if (mese <= month)
|
if (mese <= month)
|
||||||
{
|
{
|
||||||
if (tipocr == 1 && tipomov == acquisto)
|
if (tipocr == 1 && tipomov == acquisto)
|
||||||
@ -330,12 +336,18 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt)
|
|||||||
tiporeg tipomov = (tiporeg)_reg->get_long("I0");
|
tiporeg tipomov = (tiporeg)_reg->get_long("I0");
|
||||||
bool corrisp = _reg->get_bool("B0");
|
bool corrisp = _reg->get_bool("B0");
|
||||||
TString tipoiva = _iva->get("S1");
|
TString tipoiva = _iva->get("S1");
|
||||||
|
int tipodet = atoi(*_pim_tipodet);
|
||||||
TString codiva((const char*)(*_pim_codiva));
|
TString codiva((const char*)(*_pim_codiva));
|
||||||
|
|
||||||
// se e' corrispettivo da ventilare non
|
// se e' corrispettivo da ventilare non
|
||||||
// scrivo un cannolo ripieno visto che e' stato ventilato
|
// scrivo un cannolo ripieno visto che e' stato ventilato
|
||||||
if (tipomov == vendita && tipoiva == "VE") continue;
|
if (tipomov == vendita && tipoiva == "VE") continue;
|
||||||
|
|
||||||
|
// questi non vanno in liquidazione, i totali sono
|
||||||
|
// gia' calcolati altrove
|
||||||
|
if (tipodet == 1 || tipodet == 3 || tipodet == 9)
|
||||||
|
continue;
|
||||||
|
|
||||||
// se ha tutti gli importi nulli viene da un annullamento di
|
// se ha tutti gli importi nulli viene da un annullamento di
|
||||||
// movimenti esistenti
|
// movimenti esistenti
|
||||||
if (_pim->get_real("R0").is_zero() &&
|
if (_pim->get_real("R0").is_zero() &&
|
||||||
|
Loading…
x
Reference in New Issue
Block a user