diff --git a/cg/cg4300.h b/cg/cg4300.h index cd6b11282..69dab7cc0 100755 --- a/cg/cg4300.h +++ b/cg/cg4300.h @@ -118,6 +118,7 @@ public: // vedi sopra per le fisime morali int _month; // mese real _aliquota; // aliquota iva TString _codiva; // codice iva + TString _codatt; // codice attivita' int _tipodet; // tipo detraibilita' _CorrItem() : _codreg(5) {} virtual ~_CorrItem() {} @@ -403,7 +404,7 @@ public: void add_vendite (int month, const char* codreg, int tipodet, real& r); void add_ventilation (real iva, real sum, const char* codiva, const char* other); void add_corrisp (int month, const char* codreg, real& r, real& p, - int tipodet, const char * codiva); + int tipodet, const char* codiva, const char* codatt); // printappings virtual void set_page(int file, int counter); @@ -464,6 +465,7 @@ public: // se il movimento deve essere considerato in calcolo e riepilogo // per la liquidazione di month bool is_date_ok (TDate& d, int month); + bool is_in_liq_period(TDate& d); bool is_first_month (int m); int liq_month(int x); diff --git a/cg/cg4301.cpp b/cg/cg4301.cpp index 0455f6354..0c4202e4d 100755 --- a/cg/cg4301.cpp +++ b/cg/cg4301.cpp @@ -151,7 +151,12 @@ bool TLiquidazione_app::update_firm(int month, bool recalc) return TRUE; TConfig cnf(CONFIG_DITTA, "cg"); - _isdifferita = cnf.get_bool("GeLiDi"); + _isdifferita = cnf.get_bool("GeLiDi") && _month != 13; + // controlla che il periodo corrente non sia l'inizio dell'attivita' + // nel caso, differita va a FALSE + TDate inatt(_nditte->lfile().get("DINIZIOATT")); + if (is_in_liq_period(inatt)) _isdifferita = FALSE; + TConfig cnf1(CONFIG_STUDIO, "cg"); _isricacq = cnf1.get_bool("RicAcq"); @@ -929,7 +934,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt) real perc = _iva->get_real("R0")/CENTO; lor += imponibile + imposta; real tot = imponibile+imposta; - if (liq) add_corrisp(month, reg, tot, perc, tipodet, codiva); + if (liq) add_corrisp(month, reg, tot, perc, tipodet, codiva, codatt); } } else if (tipodoc == "FS") @@ -1153,6 +1158,12 @@ void TLiquidazione_app::write_liq(int month, const char* codatts) TToken_string atts(codatts); const char* tmpatt; + // liq. differita: considera mese precedente (solo per i risultati) + int deltam = month; + if (_isdifferita && !is_first_month(month) && month != 13) + month -= (_freqviva == "T" ? 3 : 1); + deltam -= month; + real risultato = 0.0; real detrazioni = 0.0; real versamenti = 0.0; @@ -1443,7 +1454,7 @@ void TLiquidazione_app::write_liq(int month, const char* codatts) if (tot_cong.sign() > 0) res_debt += tot_cong; if (tot_cong.sign() < 0) res_cred += abs(tot_cong); - look_lim(month,TRUE); + look_lim(month+deltam,TRUE); // azzeriamo tutto (tranne r1, r5, s7) TString codtab = _lim->get("CODTAB"); @@ -1568,10 +1579,11 @@ void TLiquidazione_app::recalc_annual(const char* att) int tipocr = atoi(*_pim_tipocr); TString16 codiva = *_pim_codiva; - TString16 reg = *_pim_codreg; + TString16 reg = *_pim_codreg; look_iva(codiva); look_reg(reg); - if ( // ESCLUSI: + if ( // ESCLUSI: + strcmp(att,*_pim_codatt) != 0 || (int)_reg->get_long("I0") != vendita || // non vendite tipocr == 4 || // cessioni beni ammortizzabili _iva->get("S1") == "NS" || // non soggetti diff --git a/cg/cg4302.cpp b/cg/cg4302.cpp index 42b0f3fda..344920e5e 100755 --- a/cg/cg4302.cpp +++ b/cg/cg4302.cpp @@ -67,6 +67,18 @@ int TLiquidazione_app::liq_month(int x) else return x + (2 - ((x-1) % 3)); } +bool TLiquidazione_app::is_in_liq_period(TDate& d) +{ + bool ok = FALSE; + if (_freqviva == "M") ok = d.month() == _month; + else + { + int m = liq_month(_month); + ok = d.month() > m - 3 && d.month() <= m; + } + return ok; +} + bool TLiquidazione_app::is_first_month(int m) { return _freqviva == "M" ? @@ -136,7 +148,8 @@ void TLiquidazione_app::add_vendite(int month, const char* codreg, } void TLiquidazione_app::add_corrisp(int month, const char* codreg, real& r, - real& p, int tipodet, const char * codiva) + real& p, int tipodet, const char* codiva, + const char* codatt) { _CorrItem* ci = NULL; const int nitems = _corr_arr.items(); @@ -145,7 +158,8 @@ 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->_tipodet == tipodet) + ci->_codiva == codiva && ci->_tipodet == tipodet && + ci->_codatt == codatt) break; } if (i == nitems) @@ -154,6 +168,7 @@ void TLiquidazione_app::add_corrisp(int month, const char* codreg, real& r, ci->_codreg = codreg; ci->_month = month; ci->_codiva = codiva; + ci->_codatt = codatt; ci->_tipodet = tipodet; ci->_aliquota = p; } diff --git a/cg/cg4303.cpp b/cg/cg4303.cpp index 3aaeec9b4..5ff556e1e 100755 --- a/cg/cg4303.cpp +++ b/cg/cg4303.cpp @@ -83,13 +83,14 @@ void TLiquidazione_app::recalc_corrispettivi(int month, const char* codatt) for (int i = 0; i < _corr_arr.items(); i++) { _CorrItem* ci = (_CorrItem*)&_corr_arr[i]; - if (ci->_month != month) - continue; + if (ci->_month != month || ci->_codatt != codatt) + continue; + + real imposta = (abs(ci->_totale) * ci->_aliquota)/(ci->_aliquota + 1.00); + imposta.ceil(); + if (ci->_totale.sign() < 0) imposta = -imposta; + real imponibile = ci->_totale - imposta; - real imponibile = ci->_totale/(1.00 + ci->_aliquota); - imponibile.ceil(ROUND_LIRA); - real imposta = ci->_totale - imponibile; - // aggiusto l'IVA vendite nei plm look_plm(month, codatt); real ive = _plm->get_real("R0"); diff --git a/cg/cg4304.cpp b/cg/cg4304.cpp index f8c99da6d..977301400 100755 --- a/cg/cg4304.cpp +++ b/cg/cg4304.cpp @@ -492,7 +492,7 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt) if (!corrisp || (!cfv.is_zero() || !cfi.is_zero())) { - real adf, adi; + real adf, adi; // autofatture non residenti art. 17 real vendi = corrisp ? cfi : _pim->get_real("R0"); real vendv = corrisp ? cfv : _pim->get_real("R1"); @@ -507,8 +507,8 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt) d->_r0 += vendi - adf; d->_r1 += vendv - adi; - t0 += vendi - adf; - t1 += vendv - adi; + t0 += vendi /* - adf */; + t1 += vendv /* - adi */; autodafe += adf; autodafe_iva += adi; @@ -539,7 +539,8 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt) _descr_arr.add(ads); } - // ag. viaggio: iva dovuta 74 ter la vogliono in mezzo ai progressivi + // ag. viaggio: iva dovuta 74 ter la vogliono in mezzo ai progressivi + // mi chiamano mimi', il perche' non so look_lim(month); real iva74t = _lim->get_real("R3"); if (iva74t.sign() > 0) @@ -693,6 +694,7 @@ void TLiquidazione_app::describe_liq(int month, const char* codatts, _DescrItem* di) { if (!_isprint || !_canprint) return; + if (!look_lim(month)) return; _DescrItem* d = new _DescrItem(THE_END); @@ -749,13 +751,16 @@ _DescrItem* TLiquidazione_app::describe_deleghe(int month) if (!look_del(month,1)) return NULL; _DescrItem* d = new _DescrItem(DELEGA); - - d->_s0 = _del->get("S2"); // localita' - d->_s1 = _del->get("S1"); // banca - d->_s2 = _del->get("S7"); // ABI - d->_s3 = _del->get("S8"); // CAB - d->_r0 = _del->get_real("R0") + _del->get_real("R1"); - d->_d0 = _del->get_date("D0"); + + if (_del->get_bool("B0")) + { + d->_s0 = _del->get("S2"); // localita' + d->_s1 = _del->get("S1"); // banca + d->_s2 = _del->get("S7"); // ABI + d->_s3 = _del->get("S8"); // CAB + d->_r0 = _del->get_real("R0") + _del->get_real("R1"); + d->_d0 = _del->get_date("D0"); + } // altrimenti lascia tutto in bianco e ci scriveranno i dati a mano return d; } @@ -1409,7 +1414,7 @@ bool TLiquidazione_app::set_annual(_DescrItem& d) set_row(row++,"Operazioni esenti riga B2@30g%r", &(d._r4)); set_row(row++,"Operazioni esenti riga B3@30g%r", &(d._r5)); set_row(row++,"Volume d'affari riga B4@30g%r", &(d._r0)); - set_row(row++,"Indetraibilita' @40g%r%%", &(d._r2)); + set_row(row++,"Indetraibilita'@30g%r%%", &(d._r2)); if (!(d._r3.is_zero())) { const char* sss = d._r3.sign() < 0 ? "credito" : "debito";