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:
villa 1994-12-07 09:03:51 +00:00
parent d84c15ec9b
commit 74197d129b
6 changed files with 88 additions and 71 deletions

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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");

View File

@ -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();
} }

View File

@ -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() &&