diff --git a/cg/cg4305.cpp b/cg/cg4305.cpp index 61cf26128..7bd35b8c8 100755 --- a/cg/cg4305.cpp +++ b/cg/cg4305.cpp @@ -470,6 +470,7 @@ bool TLiquidazione_app::recalc_acconto(real& inf, real& ina) { // determina casistica enum { mm, tt, mt, tm, boh } history = boh; + real divide_by_three = 1.0; char thh = *_freqviva; TString16 thyear = _year; @@ -526,9 +527,9 @@ bool TLiquidazione_app::recalc_acconto(real& inf, real& ina) real av = _lim->get_real("R11"); bc += av; } - if (_basecalc == tm) + if (history == tm) // tm come tt ma si divide per 3 la base di calcolo prima di calcolare l'88% - bc /= real(3.0); + divide_by_three = 3.0; break; case mt: // basecalcolo: 10, 11, 12 anno prec., 10 e 11 se a debito, 12 vedi acconto; @@ -557,9 +558,10 @@ bool TLiquidazione_app::recalc_acconto(real& inf, real& ina) break; } + round_mille_lire(bc); if (bc.sign() > 0) //debito { - acc = (bc * _ver->get(isdifferita ? B_LIQ_DIFF : B_LIQ_NORM))/CENTO; + acc = ((bc / divide_by_three) * _ver->get(isdifferita ? B_LIQ_DIFF : B_LIQ_NORM))/CENTO; acc.round(ROUND_LIRA); } @@ -567,127 +569,128 @@ bool TLiquidazione_app::recalc_acconto(real& inf, real& ina) } _year = thyear; } -else if (_basecalc == incorso) -{ - // that's pazzesc but as it turns out there's no better way - _comp_acconto = TRUE; - // force recalc of current month - _recalc = one; - int need_refresh = FALSE; - for (int mese = 1; mese < _month; mese++) - if (is_month_ok_strict(mese) && (!look_lim(mese) || !_lim->get_bool("B0"))) - { - need_refresh = TRUE; - break; - } - if (need_refresh && yesno_box("Alcuni mesi precedenti non " - "risultano ricalcolati. E' consigliabile il ricalcolo. " - "Si desidera eseguirlo?")) - _recalc = ever; + else + if (_basecalc == incorso) + { + // that's pazzesc but as it turns out there's no better way + _comp_acconto = TRUE; + // force recalc of current month + _recalc = one; + int need_refresh = FALSE; + for (int mese = 1; mese < _month; mese++) + if (is_month_ok_strict(mese) && (!look_lim(mese) || !_lim->get_bool("B0"))) + { + need_refresh = TRUE; + break; + } + if (need_refresh && yesno_box("Alcuni mesi precedenti non " + "risultano ricalcolati. E' consigliabile il ricalcolo. " + "Si desidera eseguirlo?")) + _recalc = ever; - for (int m = 1; m <= _month; m++) - if (is_month_plain(m) || _recalc == ever) - { - if (_prind->iscancelled()) break; - update_firm(m); - } + for (int m = 1; m <= _month; m++) + if (is_month_plain(m) || _recalc == ever) + { + if (_prind->iscancelled()) break; + update_firm(m); + } - // calcola l'acconto - if (look_lim(12)) //posiziona anche la tabella lam - { - // bc = result_liq(12); - // somma i non fatturati/non annotati - // bc += inf + ina; - cre = _lim->get_real("R12"); - - //quando calcolo la 12° ci vado a sommare il - //versa. dovuto all'acconto - //allora devo ricalcolarmi l'effettivo credito - cre -= _lim->get_real("R11"); - deb = _lim->get_real("R13") + inf + ina; - - bc = deb - cre; - - if (bc.sign() > 0) acc = bc; - - // 11/09/1995 - iva_ven = _lam->get_real("R0"); //iva sulle vendite annotate fino al 20/12 - iva_acq = _lam->get_real("R1"); //iva sugli acquisti annotati fino al 20/12 - cre_pre = _lam->get_real("R2"); //credito precedente - iva_ret = _lim->get_real("R5"); //rettifica - iva_rim = _lim->get_real("R1"); //iva chiesta a rimborso - ult_det = _lim->get_real("R6"); //ulteriori detrazioni - //iva_pro: //iva relativa alla percentuale di prorata - TTable plm ("PLM"); - plm.zero(); - plm.put("CODTAB",_year); - TRectype rec (plm.curr()); - plm.read(_isgteq); - for (; !plm.eof(); plm.next()) - { - if (plm.curr() != rec) break; - iva_pro += plm.get_real("R2"); - } - //acq_intr - TTable pom ("POM"); - pom.zero(); - pom.put("CODTAB",_year); - rec = pom.curr(); - pom.read(_isgteq); - for (; !pom.eof(); pom.next()) - { - if (pom.curr() != rec) break; - acq_intr += pom.get_real("R0"); - } - tipo_acc = "A"; //flag per dire che si e' utilizzato il metodo analitico - //stop - } - else error = 1; + // calcola l'acconto + if (look_lim(12)) //posiziona anche la tabella lam + { + // bc = result_liq(12); + // somma i non fatturati/non annotati + // bc += inf + ina; + cre = _lim->get_real("R12"); - // pulisci il water - _comp_acconto = FALSE; - _isprint = FALSE; - /* - update_firm(12); - */ - for (int i = 1; i <= _month; i++) - if (is_month_plain(i)) - update_firm(i); + //quando calcolo la 12° ci vado a sommare il + //versa. dovuto all'acconto + //allora devo ricalcolarmi l'effettivo credito + cre -= _lim->get_real("R11"); + deb = _lim->get_real("R13") + inf + ina; + + bc = deb - cre; + + if (bc.sign() > 0) acc = bc; + + // 11/09/1995 + iva_ven = _lam->get_real("R0"); //iva sulle vendite annotate fino al 20/12 + iva_acq = _lam->get_real("R1"); //iva sugli acquisti annotati fino al 20/12 + cre_pre = _lam->get_real("R2"); //credito precedente + iva_ret = _lim->get_real("R5"); //rettifica + iva_rim = _lim->get_real("R1"); //iva chiesta a rimborso + ult_det = _lim->get_real("R6"); //ulteriori detrazioni + //iva_pro: //iva relativa alla percentuale di prorata + TTable plm ("PLM"); + plm.zero(); + plm.put("CODTAB",_year); + TRectype rec (plm.curr()); + plm.read(_isgteq); + for (; !plm.eof(); plm.next()) + { + if (plm.curr() != rec) break; + iva_pro += plm.get_real("R2"); + } + //acq_intr + TTable pom ("POM"); + pom.zero(); + pom.put("CODTAB",_year); + rec = pom.curr(); + pom.read(_isgteq); + for (; !pom.eof(); pom.next()) + { + if (pom.curr() != rec) break; + acq_intr += pom.get_real("R0"); + } + tipo_acc = "A"; //flag per dire che si e' utilizzato il metodo analitico + //stop + } + else error = 1; + + // pulisci il water + _comp_acconto = FALSE; + _isprint = FALSE; + /* + update_firm(12); + */ + for (int i = 1; i <= _month; i++) + if (is_month_plain(i)) + update_firm(i); - //18/10/1995 - _lim->put("B0",""); - _lim->rewrite(); - if (look_lim(13)) - { - _lim->put("B0",""); - _lim->rewrite(); - } - //fine - _isprint = TRUE; -} + //18/10/1995 + _lim->put("B0",""); + _lim->rewrite(); + if (look_lim(13)) + { + _lim->put("B0",""); + _lim->rewrite(); + } + //fine + _isprint = TRUE; + } -// sbatti l'acconto (e non solo!) in LIA -if (look_lia()) -{ - if (isdifferita && _basecalc == incorso) + // sbatti l'acconto (e non solo!) in LIA + if (look_lia()) { - acc *= real(2.0); - acc /= real(3.0); + if (isdifferita && _basecalc == incorso) + { + acc *= real(2.0); + acc /= real(3.0); + } + _lia->put("R4",acc); + _lia->put("R7",iva_ven); + _lia->put("R8",iva_acq); + _lia->put("R9",iva_ret); + _lia->put("R10",iva_rim); + _lia->put("R11",ult_det); + _lia->put("R12",iva_pro); + TToken_string rr("",'!'); + rr.add(cre_pre.string(),0); + rr.add(acq_intr.string(),1); + _lia->put("S1",rr); + _lia->put("S8",tipo_acc); + _lia->rewrite(); } - _lia->put("R4",acc); - _lia->put("R7",iva_ven); - _lia->put("R8",iva_acq); - _lia->put("R9",iva_ret); - _lia->put("R10",iva_rim); - _lia->put("R11",ult_det); - _lia->put("R12",iva_pro); - TToken_string rr("",'!'); - rr.add(cre_pre.string(),0); - rr.add(acq_intr.string(),1); - _lia->put("S1",rr); - _lia->put("S8",tipo_acc); - _lia->rewrite(); -} /*** Non bisogna aggiornare la delega Se in un prossimo futuro si decidesse di ripristinare questa @@ -710,26 +713,26 @@ if (look_lia()) ***/ // per questa volta lasciamo perdere la describe_acconto -if (_isprint) -{ + if (_isprint) + { // segnalazioni di errore da gesticolare: // error = 0: no error // error = 1: manca tabella risultati liquidazione per l'anno indicato // error = 2: manca tabella risultati liquidazione per l'anno precedente // error = 3: manca tabella dichiarazione annuale per l'anno precedente - _DescrItem* d = new _DescrItem(ACCONTO); - d->_r0 = bc; - d->_r1 = acc; - d->_r2 = cre; - d->_r3 = deb; - d->_f0 = _basecalc == incorso; - d->_f1 = _isbase; - d->_f2 = error; - d->_f3 = isdifferita; - d->_s0 = _nditte->curr().get("CODDITTA"); - d->_s1 = _nditte->curr().get("RAGSOC"); - _descr_arr.add(d); -} -return TRUE; + _DescrItem* d = new _DescrItem(ACCONTO); + d->_r0 = bc; + d->_r1 = acc; + d->_r2 = cre; + d->_r3 = deb; + d->_f0 = _basecalc == incorso; + d->_f1 = _isbase; + d->_f2 = error; + d->_f3 = isdifferita; + d->_s0 = _nditte->curr().get("CODDITTA"); + d->_s1 = _nditte->curr().get("RAGSOC"); + _descr_arr.add(d); + } + return TRUE; }