diff --git a/cg/cg4300.cpp b/cg/cg4300.cpp index 37fe6ce96..645eb07fe 100755 --- a/cg/cg4300.cpp +++ b/cg/cg4300.cpp @@ -118,30 +118,31 @@ bool TLiquidazione_app::user_create() // in realta' composti dal codice attivita' piu' il // tipo attivita' (1 o 2) - _pim_anno = new TRecfield(*_pim_r,"CODTAB",0,3); - _pim_codatt = new TRecfield(*_pim_r,"CODTAB",4,9); - _pim_codreg = new TRecfield(*_pim_r,"CODTAB",10,12); - _pim_mese = new TRecfield(*_pim_r,"CODTAB",13,14); - _pim_tipocr = new TRecfield(*_pim_r,"CODTAB",15,15); - _pim_codiva = new TRecfield(*_pim_r,"CODTAB",16,19); - _ppa_year = new TRecfield(*_ppa_r,"CODTAB",0,3); - _ppa_codatt = new TRecfield(*_ppa_r,"CODTAB",4,9); - _ppa_month = new TRecfield(*_ppa_r,"CODTAB",10,11); - _ppa_kind = new TRecfield(*_ppa_r,"CODTAB",12,12); - _plm_anno = new TRecfield(*_plm_r,"CODTAB",0,3); - _plm_codatt = new TRecfield(*_plm_r,"CODTAB",4,9); - _plm_mese = new TRecfield(*_plm_r,"CODTAB",10,11); - _ptm_anno = new TRecfield(*_ptm_r,"CODTAB",0,3); - _ptm_codatt = new TRecfield(*_ptm_r,"CODTAB",4,9); - _ptm_mese = new TRecfield(*_ptm_r,"CODTAB",10,11); - _pla_anno = new TRecfield(*_pla_r,"CODTAB",0,3); - _pla_codatt = new TRecfield(*_pla_r,"CODTAB",4,9); - _del_ditta = new TRecfield(*_del_r,"CODTAB",0,4); - _del_anno = new TRecfield(*_del_r,"CODTAB",5,8); - _del_mese = new TRecfield(*_del_r,"CODTAB",9,10); - _del_tipo = new TRecfield(*_del_r,"CODTAB",11,11); - _lim_anno = new TRecfield(*_lim_r,"CODTAB",0,3); - _lim_mese = new TRecfield(*_lim_r,"CODTAB",4,6); + _pim_anno = new TRecfield(*_pim_r,"CODTAB",0,3); + _pim_codatt = new TRecfield(*_pim_r,"CODTAB",4,9); + _pim_codreg = new TRecfield(*_pim_r,"CODTAB",10,12); + _pim_mese = new TRecfield(*_pim_r,"CODTAB",13,14); + _pim_tipocr = new TRecfield(*_pim_r,"CODTAB",15,15); + _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_codatt = new TRecfield(*_ppa_r,"CODTAB",4,9); + _ppa_month = new TRecfield(*_ppa_r,"CODTAB",10,11); + _ppa_kind = new TRecfield(*_ppa_r,"CODTAB",12,12); + _plm_anno = new TRecfield(*_plm_r,"CODTAB",0,3); + _plm_codatt = new TRecfield(*_plm_r,"CODTAB",4,9); + _plm_mese = new TRecfield(*_plm_r,"CODTAB",10,11); + _ptm_anno = new TRecfield(*_ptm_r,"CODTAB",0,3); + _ptm_codatt = new TRecfield(*_ptm_r,"CODTAB",4,9); + _ptm_mese = new TRecfield(*_ptm_r,"CODTAB",10,11); + _pla_anno = new TRecfield(*_pla_r,"CODTAB",0,3); + _pla_codatt = new TRecfield(*_pla_r,"CODTAB",4,9); + _del_ditta = new TRecfield(*_del_r,"CODTAB",0,4); + _del_anno = new TRecfield(*_del_r,"CODTAB",5,8); + _del_mese = new TRecfield(*_del_r,"CODTAB",9,10); + _del_tipo = new TRecfield(*_del_r,"CODTAB",11,11); + _lim_anno = new TRecfield(*_lim_r,"CODTAB",0,3); + _lim_mese = new TRecfield(*_lim_r,"CODTAB",4,6); __firm = TApplication::get_firm(); diff --git a/cg/cg4300.h b/cg/cg4300.h index f0194aa04..fc7e6857e 100755 --- a/cg/cg4300.h +++ b/cg/cg4300.h @@ -84,7 +84,7 @@ public: // non e' bello, ma non e' bello neanche dover fare un real _imposta; // per comodita' real _aliquota; // aliquota iva real _totale; // totale acquisti - TString _codiva; // codice iva + TString _codiva; // codice iva _VentItem() : _imposta(0.0), _totale(0.0) {} virtual ~_VentItem() {} }; @@ -92,9 +92,10 @@ public: // non e' bello, ma non e' bello neanche dover fare un class _VendItem : public TObject { 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 int _month; // mese + int _tipodet; // tipo detraibilita' _VendItem() : _codreg(5) {} virtual ~_VendItem() {} }; @@ -107,6 +108,7 @@ public: // vedi sopra per le fisime morali int _month; // mese real _aliquota; // aliquota iva TString _codiva; // codice iva + int _tipodet; // tipo detraibilita' _CorrItem() : _codreg(5) {} virtual ~_CorrItem() {} }; @@ -234,6 +236,7 @@ class TLiquidazione_app : public TPrint_application TRecfield* _pim_mese; TRecfield* _pim_tipocr; TRecfield* _pim_codiva; + TRecfield* _pim_tipodet; TRecfield* _ppa_year; TRecfield* _ppa_codatt; TRecfield* _ppa_month; @@ -316,10 +319,10 @@ public: real interesse_trimestrale(int month); // 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_corrisp (int month, const char* codreg, real& r, real& p, - const char * codiva); + int tipodet, const char * codiva); // printappings virtual void set_page(int file, int counter); @@ -341,7 +344,7 @@ public: // cercapalle in tabelle con opzione di creazione se serve 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_ptm(int m, const char* a, bool create = FALSE); bool look_lim(int m, bool create = FALSE); diff --git a/cg/cg4301.cpp b/cg/cg4301.cpp index a1ab3bacb..6d2bd3be1 100755 --- a/cg/cg4301.cpp +++ b/cg/cg4301.cpp @@ -479,14 +479,12 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt) { acq_ies += imponibile; acq_ies_iva += imposta; - continue; // non entrano in liquidazione } if (tipodet == 3) // passaggi interni (solo ventilaz) { acq_pint += imponibile; acq_pint_iva += imposta; - continue; // precauzionale (in genere sono esenti IVA) } // acquisti non detraibili art. 19 @@ -495,7 +493,6 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt) { nond19_imp += imponibile; nond19_iva += imposta; - continue; } // ***************************************** @@ -508,20 +505,24 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt) * 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 ivp = _pim_r->get_real("R1"); // IVA su imp. 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 vendite += imponibile; vendite_iva += imposta; } - else if (tipomov == acquisto) + else if (liq && tipomov == acquisto) { // totale acquisti acquisti += imponibile; @@ -539,14 +540,14 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt) { lor += imponibile; _pim_r->put("I0",LORDO); - add_vendite(month, reg, imponibile); + add_vendite(month, reg, tipodet, imponibile); } else // non da ventilare, con imposta gia' conteggiata { real perc = _iva->get_real("R0") / CENTO; lor += imponibile + imposta; _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") @@ -556,14 +557,18 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt) if (tipoiva == "VE") { real rr = imponibile + imposta; - vendite += rr; imp += rr; - add_vendite(month, reg, rr); + if (liq) + vendite += rr; + add_vendite(month, reg, tipodet, rr); } else { - vendite += imponibile; - vendite_iva += imposta; + if (liq) + { + vendite += imponibile; + vendite_iva += imposta; + } imp += imponibile; ivp += imposta; } @@ -571,8 +576,11 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt) } else // vendite normali a tutti gli effetti { - vendite += imponibile; - vendite_iva += imposta; + if (liq) + { + vendite += imponibile; + vendite_iva += imposta; + } imp += imponibile; ivp += imposta; _pim_r->put("I0",NETTO); diff --git a/cg/cg4302.cpp b/cg/cg4302.cpp index 770c08c07..3437e412c 100755 --- a/cg/cg4302.cpp +++ b/cg/cg4302.cpp @@ -78,14 +78,15 @@ void TLiquidazione_app::add_ventilation(real iva, real howmuch, const char* cod 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; for (int i = 0; i < _vend_arr.items(); i++) { vi = (_VendItem*)&_vend_arr[i]; - if (vi->_codreg == codreg && vi->_month == month) + if (vi->_codreg == codreg && vi->_month == month && vi->_tipodet == tipodet) break; } 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); vi->_codreg = codreg; vi->_month = month; + vi->_tipodet = tipodet; } vi->_totale += 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; 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]; if (ci->_codreg == codreg && ci->_month == month && - ci->_codiva == codiva) + ci->_codiva == codiva && ci->_tipodet == tipodet) break; } if (i == nitems) @@ -116,6 +118,7 @@ void TLiquidazione_app::add_corrisp(int month, const char* codreg, real& r, ci->_codreg = codreg; ci->_month = month; ci->_codiva = codiva; + ci->_tipodet = tipodet; ci->_aliquota = p; } ci->_totale += r; @@ -123,19 +126,20 @@ 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, - const char* tipocr, const char* codiva, + const char* tipocr, const char* codiva, int tipodet, bool create) // ritorna il PIM corrispondente alla chiave passata; se // create = TRUE lo crea se non lo trova. Ritorna se c'era { bool ok = FALSE; _pim_r->zero(); - (*_pim_anno) = _year; - (*_pim_mese) = format("%d", month); - (*_pim_codreg) = codreg; - (*_pim_codiva) = codiva; - (*_pim_codatt) = codatt; - (*_pim_tipocr) = tipocr; + (*_pim_anno) = _year; + (*_pim_mese) = format("%d", month); + (*_pim_codreg) = codreg; + (*_pim_codiva) = codiva; + (*_pim_codatt) = codatt; + (*_pim_tipocr) = tipocr; + (*_pim_tipodet) = tipodet; TString s = _pim_r->get("CODTAB"); diff --git a/cg/cg4303.cpp b/cg/cg4303.cpp index 6f5a94360..af1293a20 100755 --- a/cg/cg4303.cpp +++ b/cg/cg4303.cpp @@ -89,7 +89,7 @@ void TLiquidazione_app::recalc_corrispettivi(int month, const char* codatt) _plm->rewrite(); // 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"); imposta += _pim->get_real("R1"); @@ -198,7 +198,7 @@ void TLiquidazione_app::recalc_ventilation(int month, const char* codatt) _plm->rewrite(); // 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"); 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->rewrite(); } - - - - - - - - - - - diff --git a/cg/cg4304.cpp b/cg/cg4304.cpp index 7b6119573..edf145ff5 100755 --- a/cg/cg4304.cpp +++ b/cg/cg4304.cpp @@ -171,11 +171,12 @@ void TLiquidazione_app::describe_ventilation(int month, const char* codatt) { if (strcmp(*_pim_codatt,att) != 0) continue; - + look_reg(*_pim_codreg); look_iva(*_pim_codiva); int tipocr = atoi(*_pim_tipocr); + int tipodet = atoi(*_pim_tipodet); int mese = atoi(*_pim_mese); bool corrisp = _reg->get_bool("B0"); real imponibile = _pim->get_real("R0"); @@ -183,7 +184,12 @@ void TLiquidazione_app::describe_ventilation(int month, const char* codatt) tiporeg tipomov = (tiporeg)_reg->get_long("I0"); 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 (tipocr == 1 && tipomov == acquisto) @@ -328,14 +334,20 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt) if (!ok) continue; tiporeg tipomov = (tiporeg)_reg->get_long("I0"); - bool corrisp = _reg->get_bool("B0"); + bool corrisp = _reg->get_bool("B0"); TString tipoiva = _iva->get("S1"); + int tipodet = atoi(*_pim_tipodet); TString codiva((const char*)(*_pim_codiva)); // se e' corrispettivo da ventilare non // scrivo un cannolo ripieno visto che e' stato ventilato 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 // movimenti esistenti if (_pim->get_real("R0").is_zero() &&