diff --git a/src/cg/cg5500.cpp b/src/cg/cg5500.cpp index ab51824bd..f713c222c 100755 --- a/src/cg/cg5500.cpp +++ b/src/cg/cg5500.cpp @@ -398,7 +398,7 @@ bool Visliq_app::sel_mese_sh1 (TMask_field& f, KEY k) if (sh.items() == 5) month *= 3; - if (month >13) + if (month > 13) month = 13; if (sm.is_running() && !sm.stop_run(K_ENTER)) @@ -426,7 +426,7 @@ bool Visliq_app::sel_mese_sh1 (TMask_field& f, KEY k) app().set_liq_rows(sh); - if (sm.is_running()) + /*if (sm.is_running()) { // TBC controllare se sono i dati giusti in tt sm.field(S_RISULTATO).set(tt.get(cid2index(S_RISULTATO))); @@ -450,7 +450,7 @@ bool Visliq_app::sel_mese_sh1 (TMask_field& f, KEY k) sv.set_row_cell(S_CONC, app().del()->get("S9"), nrow); sv.set_row_cell(S_VERSAMENTO, app().del()->get("R0"), nrow); sv.force_update(nrow); - } + }*/ } return true; } @@ -548,28 +548,24 @@ bool Visliq_app::sel_mese_sh2 (TMask_field& f, KEY k) bool Visliq_app::calc_int(TMask_field& f, KEY k) { - if (k == K_TAB && f.dirty()) + if (f.running_check(k) && app()._freqviva == "T") { - TSheet_field& sv = *app()._vers_sheet; + TSheet_field& sv = *app()._vers_sheet; + const int sel = sv.selected(); + int m = (sv.selected() + 1) * 3; - int sel = sv.selected(); - int m = sv.selected() + 1; - if (sv.items() < 12) - { - m *= 3; - if (app().look_lim(m)) + if (m > 12) + m = 12; + if (app().look_lim(m)) { - const real intt = app()._lim->get_real("R10"); - - if (intt > ZERO) // interessi - { - TExchange c; + const real intt = app()._lim->get_real("R10"); + TExchange c; real vers(f.get()); real vers_netto = vers * CENTO / (intt + CENTO); vers_netto.round(c.decimals()); - real intr = vers - vers_netto; + real intr = vers - vers_netto; round_imposta(intr); vers = vers_netto + intr; @@ -581,9 +577,7 @@ bool Visliq_app::calc_int(TMask_field& f, KEY k) sv.set_row_cell(row, S_VERSAMENTO, vers); sv.set_row_cell(row, S_INTERESSI, intr); sv.force_update(sel); - } } - } } return true; } @@ -926,7 +920,7 @@ bool Visliq_app::vis_one(int m) if (k == K_SAVE) { { write_liq(); recalc_next_liq(m, _liq_sheet, _vers_sheet); } - if (d_mod) { write_del(m); } + if (d_mod) { write_del(m, 1); } l_mod = d_mod = false; recorded = true; } @@ -938,7 +932,7 @@ bool Visliq_app::vis_one(int m) if (kk == K_YES) { if (l_mod) { write_liq(); recalc_next_liq(m, _liq_sheet, _vers_sheet); } - if (d_mod) { write_del(m); } + if (d_mod) { write_del(m, 1); } l_mod = d_mod = false; recorded = true; } @@ -1139,9 +1133,9 @@ void Visliq_app::recalc_liq_data(TViswin* vsw, real& rimb, real& rett, real& ver _lim->put("B0", "X"); } - real intr; + real intr = itt; - if (!itt.is_zero() && risul > ZERO) + if (_freqviva == "T" && itt != ZERO && risul > ZERO) { // calcola interesse intr = risul * itt / CENTO; @@ -1472,13 +1466,14 @@ void Visliq_app::recalc_next_liq(int start_month, TSheet_field* sl, TSheet_field _lim->put("R0", risl); _lim->put("R12", risc); _lim->put("R13", risd); - if (intt > ZERO) // interessi + if (_freqviva == "T" && intt > ZERO) // interessi { - real intr = risl * intt / real(100.0); + intt = risl * intt / CENTO; if (_year >= 2000) - round_imposta(intr); - _lim->put("R14",intr); + round_imposta(intt); + } + _lim->put("R14", intt); _lim->put("R16", crf24); _lim->put("R20", autf24); @@ -1563,36 +1558,23 @@ void Visliq_app::recalc_next_liq(int start_month, TSheet_field* sl, TSheet_field look_lim(start_month); } -void Visliq_app::write_del(const int month, const char * codabi, const char * codcab, const char * codcon, +void Visliq_app::write_del(const int month, const int tipodel, const char * codabi, const char * codcab, const char * codcon, const TDate & d, const real& v, const real& i, bool stampato) { - int tipodel = 1; - - if (month == 12) - tipodel = 7; - else - if (month == 13) - tipodel = 2; - const bool wasdel = look_del(month, tipodel); + const bool wasdel = look_del(month, tipodel, true); TString8 abi(codabi == nullptr ? _lim->get("S4") : codabi); TString8 cab(codcab == nullptr ? _lim->get("S5") : codcab); TString4 con(codcon == nullptr ? _lim->get("S6") : codcon); TDate date(d == TDate(NULLDATE) ? _lim->get_date("D0") : d); const real vers(v >= ZERO ? v : _lim->get_real("R8")); - if (!wasdel) - { - - look_del(month, tipodel, true); // Crea delega - } - if (vers == ZERO) _del->remove(); else { real inter = i; - if (i == ZERO) + if (_freqviva == "T" && i == ZERO) { real percint = _lim->get_real("R10"); @@ -1731,26 +1713,24 @@ void Visliq_app::read_general(TMask& m) // uso solo deleghe normali (tipo == 1), annuali (tipo == 2) e acconti (tipo == 7) int tipod = atoi(*_del_tipo); + // somma versamenti nel mese adeguato + int month = atoi(*_del_mese); - if (tipod < 3 || tipod == 7) + if (tipod == 1 || tipod == 7) { - - // somma versamenti nel mese adeguato - int m = atoi(*_del_mese); - - if (m >= 12) - m = tipod == 7 ? 12 : 13; + if (month >= 12) + month = tipod == 7 ? 12 : 13; // supercauto - if (m > 0) + if (month > 0) { - versamenti[m - 1] += _del->get_real("R0"); - interessi[m - 1] += _del->get_real("R1"); - date[m - 1] = _del->get_date("D0"); - TToken_string& b = banche[m - 1]; + versamenti[month - 1] += _del->get_real("R0"); + interessi[month - 1] += _del->get_real("R1"); + date[month - 1] = _del->get_date("D0"); + TToken_string& b = banche[month - 1]; b.add(_del->get("S7"), 0); b.add(_del->get("S8"), 1); b.add(_del->get("S9"), 2); - stampato[m - 1] = _del->get_bool("B0"); + stampato[month - 1] = _del->get_bool("B0"); } } } @@ -1833,7 +1813,7 @@ void Visliq_app::write_general(TMask& m) for (int i = step; i < last_month; i += step) { - int m = (i > 12) ? 13 : i; + int m = (i > 12) ? 12 : i; // this is a true bordel const int row = (i/step) - 1; @@ -1890,7 +1870,9 @@ void Visliq_app::write_general(TMask& m) if (ndbcr == "C") nrett = -nrett; // acconto (si considererà solo a dicembre) - +// crea/aggiorna le deleghe + if (nvers != overs || nint != oint || ndate != odate || nabi != oabi || ncab != ocab || ncon != ocon || osta != nsta) + write_del(m, i == 12 ? 7 : 1, nabi, ncab, ncon, ndate, nvers, nint, nsta); was_lim = look_lim(m); if (!was_lim) carry = false; // blocca riporto crediti e debiti @@ -1916,8 +1898,6 @@ void Visliq_app::write_general(TMask& m) } } // ricalcola versamenti se occorre -// e crea/aggiorna le deleghe - if (nvers != overs || nint != oint|| ndate != odate || nabi != oabi || ncab != ocab || ncon != ocon || osta != nsta) { _lim->put("R8", nvers); @@ -1929,9 +1909,7 @@ void Visliq_app::write_general(TMask& m) _lim->put("S4", nabi); _lim->put("S5", ncab); _lim->put("S6", ncon); - write_del(m, nabi, ncab, ncon, ndate, nvers, nint, nsta); } - // se modificate rettifiche // sistemare if (nrett != orett && !_from_one) @@ -2032,13 +2010,14 @@ void Visliq_app::write_general(TMask& m) _lim->put("R12", risc); _lim->put("R13", risd); - if (intt > ZERO) // interessi + if (_freqviva == "T" && intt > ZERO) // interessi { - real intr = risl * intt / real(100.0); + intt = risl * intt / CENTO; if (_year >= 2000) - round_imposta(intr); - _lim->put("R14",intr); + round_imposta(intt); + } + _lim->put("R14", intt); _lim->put("R16", crf24); _lim->put("R20", autf24); _lim->put("D1", dautf24); diff --git a/src/cg/cg5500.h b/src/cg/cg5500.h index db4ef70bb..29d55ab34 100755 --- a/src/cg/cg5500.h +++ b/src/cg/cg5500.h @@ -87,7 +87,7 @@ public: void read_general(TMask& m); void write_general(TMask& m); void write_liq() { _lim->rewrite(); } - void write_del(const int month, const char * codabi = nullptr, const char * codcab = nullptr, const char * codcon = nullptr, + void write_del(const int month, const int tipodel, const char * codabi = nullptr, const char * codcab = nullptr, const char * codcon = nullptr, const TDate & d = TDate(NULLDATE), const real &v = MENOUNO, const real &i = ZERO, bool stampato = false); void set_freqviva();