diff --git a/src/cg/cg4300.h b/src/cg/cg4300.h index cddfe7c78..b4d44670c 100755 --- a/src/cg/cg4300.h +++ b/src/cg/cg4300.h @@ -168,7 +168,7 @@ public: real _r0, _r1, _r2, _r3, _r4, _r5, _r6, _r7, _r8, _r9, _r10, _r11, _r12, _r13, _r14, _r15, _r16, _r17, _r18, _r19, _r20, _r21, _r22, _r23, _r24, _r25, _r26, _r27, _r28, _r29, - _r30, _r31, _r32, _r33; + _r30, _r31, _r32, _r33, _r34; real _ra0, _ra1, _ra2, _ra3, _ra4 ,_ra5, _ra6, _ra7, _ra8; TArray _arr; TDate _d0, _d1; @@ -304,6 +304,7 @@ class TLiquidazione_app : public TPrint_application int _monthinatt; // mese inizio attivita' (serve per differita) bool _lim_cleared; bool _definitiva; + bool _is_liq_acconto; bool _end_cassa; real _diff_ven_ap, _diff_ven_ap_iva, _diff_acq_ap, _diff_acq_ap_iva; diff --git a/src/cg/cg4301.cpp b/src/cg/cg4301.cpp index 6488b579f..1014e5a14 100755 --- a/src/cg/cg4301.cpp +++ b/src/cg/cg4301.cpp @@ -3730,6 +3730,7 @@ void TLiquidazione_app::write_liq(int month, const char* codatts) real detrazioni = ZERO; real versamenti = ZERO; + real versamenti_interessi = ZERO; real vers_int = ZERO; real rimborsi = ZERO; real rettifiche = ZERO; @@ -3943,7 +3944,9 @@ void TLiquidazione_app::write_liq(int month, const char* codatts) // nei casi previsti e non in annuale (vedi sotto) real vs(versamenti_IVA(m , m == 12 ? "1" : "1|7")); real vi(versamenti_IVA(m,"5")); + real vls(versamenti_IVA(m, m == 12 ? "1" : "1|7", true)); versamenti += vs; + versamenti_interessi += (vls - vs); vers_int += vi; res_cred += vs + vi; } @@ -4367,15 +4370,16 @@ void TLiquidazione_app::write_liq(int month, const char* codatts) lim.put("R12", res_cred); lim.put("R13", res_debt); - lim.put("R26", fdiff_imp); // Imponibile IVA diff Fatture di vendita - lim.put("R27", fdiff_iva); // Imposta IVA diff Fatture di vendita - lim.put("R28", fdiffinc_imp); // Imponibile IVA diff Incassi - lim.put("R29", fdiffinc_iva); // Imposta IVA diff Incassi + lim.put("R26", fdiff_imp); // Imponibile IVA diff Fatture di vendita + lim.put("R27", fdiff_iva); // Imposta IVA diff Fatture di vendita + lim.put("R28", fdiffinc_imp); // Imponibile IVA diff Incassi + lim.put("R29", fdiffinc_iva); // Imposta IVA diff Incassi lim.put("R30", fdiff_imp_acq); // Imponibile IVA diff Fatture di acquisto - lim.put("R31", fdiff_iva_acq); // Imposta IVA diff Fatture di acquisto - lim.put("R32", fdiffinc_imp_acq); // Imponibile IVA diff Pagamenti - lim.put("R33", fdiffinc_iva_acq); // Imposta IVA diff Pagamenti + lim.put("R31", fdiff_iva_acq); // Imposta IVA diff Fatture di acquisto + lim.put("R32", fdiffinc_imp_acq); // Imponibile IVA diff Pagamenti + lim.put("R33", fdiffinc_iva_acq); // Imposta IVA diff Pagamenti + lim.put("R34", versamenti_interessi); look_lam(month+deltam, true); _lam->put("R0", iva_vend); diff --git a/src/cg/cg4302.cpp b/src/cg/cg4302.cpp index 6494e6ac9..782e6fc28 100755 --- a/src/cg/cg4302.cpp +++ b/src/cg/cg4302.cpp @@ -57,7 +57,7 @@ bool TLiquidazione_app::is_month_ok(int x, int mtocalc) const { // per l'annuale ritorna true per tutti i mesi da liquidare ret = x <= 13; - } + } return ret; } @@ -138,7 +138,7 @@ bool TLiquidazione_app::is_date_ok(const TDate& d, int month, int liqmonth, int else // Nuova selezione dal 1998 in poi { if (month <= 12) - return (regyear == year) && ((regmonth == month && liqmonth == 0) || (liqmonth == month)); + return (regyear == year) && ((regmonth == month && liqmonth == 0) || (liqmonth == month)); else // Annuale, month == 13 return (regyear == year && liqmonth != 12) || (regyear == year + 1 && liqmonth == 12); } @@ -930,8 +930,9 @@ real TLiquidazione_app::versamenti_IVA(int month, const char* types, bool intr) ret += importo_dovuto_arrotondato; //gli interessi vengono memorizzati solo se si //devono pagare (=> nessun controllo su intra) - if (!(_is_visliq && _freqviva == "T" && _month != 13)) // toglie gli interessi se non siamo in visualiz. o la ditta non e' TRIM o siamo in annuale - ret -= interessi; // al netto degli interessi + if (!intr) + if (!(_is_visliq && _freqviva == "T" && _month != 13)) // toglie gli interessi se non siamo in visualiz. o la ditta non e' TRIM o siamo in annuale + ret -= interessi; // al netto degli interessi // In caso di 13a liq e per trimestrali... devo fare la somma // degli importi netti dovuti, ecco perche' leggo R2, // perche togliendo poi gli interessi ottengo il dovuto netto! diff --git a/src/cg/cg4304.cpp b/src/cg/cg4304.cpp index 0b1895986..bc5778bc7 100755 --- a/src/cg/cg4304.cpp +++ b/src/cg/cg4304.cpp @@ -1296,7 +1296,8 @@ void TLiquidazione_app::describe_liq(int month, const char* codatts, _DescrItem* // rispettiamo tutte le casistiche per i versamenti se non siamo in visualizzazione // analogamente in Visualizzazione ma solo nel caso dell'annuale. // In tutti gli altri casi va a cercare la delega - d->_r8 = (_month == 13 || !_is_visliq) ? lim.get_real("R8") : versamenti_IVA(_month, "1"); + d->_r8 = (_month == 13 || !_is_visliq) ? lim.get_real("R8") : versamenti_IVA(_month, "1"); + d->_r34 = (_month == 13 || !_is_visliq) ? lim.get_real("R34") : ZERO; if (_month == 13) { @@ -2296,6 +2297,7 @@ void TLiquidazione_app::set_grand_2000(_DescrItem& d, int &rw) const real& detrazioni = d._r6; const real& interessi = d._r7; const real& versamenti = d._r8; + const real& versamenti_interessi = d._r34; const real& vers_int = d._r9; real diffinc_iva = d._ra5; @@ -2446,26 +2448,29 @@ void TLiquidazione_app::set_grand_2000(_DescrItem& d, int &rw) set_row(rw++,FR("@11gInteressi dovuti per liquidazioni trimestrali %6.2r%%@75g%r"),&interesse, &interessi); else if (_is_visliq) rw++; - if (!acc_dec.is_zero()) set_row(rw++,FR("%s@11gAcconto versato%s@58g%r"), _is_visliq ? "$[r]" : "", _is_visliq ? "$[n]" : "", &acc_dec); else if (_is_visliq) rw++; - // versamenti effettuati - if (!versamenti.is_zero() && (_month==13 || !_is_visliq)) - set_row(rw++,FR("@11gVersamenti effettuati@58g%r"), &versamenti); + if (!versamenti.is_zero() && (_month == 13 || !_is_visliq)) + set_row(rw++, FR("@11gVersamenti effettuati@58g%r"), &versamenti); else if (_is_visliq) rw++; - // versamenti integrativi if (!vers_int.is_zero() && !_is_visliq) set_row(rw++,FR("@11gVersamenti integrativi@58g%r"), &vers_int); else if (_is_visliq) rw++; - const real iva = risultato + interessi; + const real tot_vers = acc_dec + versamenti + vers_int; + if (!tot_vers.is_zero() && (_month == 13 || !_is_visliq)) + set_row(rw++, FR("@11gTotale versamenti effettuati@58g%r"), &tot_vers); + else + if (_is_visliq) rw++; + + const real iva = risultato + interessi; if (_month == 13 && credito_compensabile) { real credito_utilizzabile = lia.get_real("R0"); @@ -2506,7 +2511,10 @@ void TLiquidazione_app::set_grand_2000(_DescrItem& d, int &rw) set_row(rw++,FR("@11g$[r]Versamenti effettuati$[n]@58g%r"), &versamenti); set_row(rw++, ""); set_row(rw++, ""); - } + } + else + if (_month == 13 && !versamenti_interessi.is_zero()) + set_row(rw++, FR("@11gVersamenti effettuati interessi @58g%r"), &versamenti_interessi); if (!_is_visliq) { @@ -2861,8 +2869,8 @@ bool TLiquidazione_app::set_annual(_DescrItem& d) set_row(row++,FR("@6gdi cui cessione beni ammortizzabili @69g%r"), &(d._r8)); set_row(row++,FR("C1A - Operazioni esenti di cui all'art.10 n. 27 quinquies @69g%r"), &(d._r7)); set_row(row++,FR("@6gdi cui cessione beni ammortizzabili @69g%r"), &(d._r9)); - // set_row(row++, FR("Volume d'affari @69g%r"), &vol_aff); - // set_row(row++, FR("Totale vendite al fine del calcolo del pro-rata @69g%r"), &vol_aff); +// set_row(row++, FR("Volume d'affari @69g%r"), &vol_aff); +// set_row(row++, FR("Totale vendite al fine del calcolo del pro-rata @69g%r"), &vol_aff); set_print_zero(false); } diff --git a/src/cg/cg5300a.h b/src/cg/cg5300a.h index 8a613df71..f8f9fee97 100755 --- a/src/cg/cg5300a.h +++ b/src/cg/cg5300a.h @@ -19,7 +19,7 @@ #define F_GESMANCRED 219 #define F_RCDAL 223 #define F_RCAL 224 -#define F_PRORATA 225 +#define F_PRORATAC 225 #define F_ROUNDLIQ 221 #define F_ROUNDDIC 222 diff --git a/src/cg/cg5300a.uml b/src/cg/cg5300a.uml index ecd184ca2..f922d23d3 100755 --- a/src/cg/cg5300a.uml +++ b/src/cg/cg5300a.uml @@ -151,7 +151,7 @@ BEGIN FIELD B6 END -BOOLEAN F_PRORATA +BOOLEAN F_PRORATAC BEGIN PROMPT 50 9 "Calcolo Pro rata" FIELD B7 diff --git a/src/cg/cg5500.cpp b/src/cg/cg5500.cpp index d6b0bb796..3f8f2bdb3 100755 --- a/src/cg/cg5500.cpp +++ b/src/cg/cg5500.cpp @@ -532,6 +532,48 @@ bool Visliq_app::sel_mese_sh2 (TMask_field& f, KEY k) return true; } +bool Visliq_app::calc_int(TMask_field& f, KEY k) +{ + if (k == K_TAB && f.dirty()) + { + TSheet_field& sv = *app()._vers_sheet; + + int sel = sv.selected(); + int m = sv.selected() + 1; + if (sv.items() < 12) + { + m *= 3; + if (app().look_lim(m)) + { + const real intt = app()._lim->get_real("R10"); + + if (intt > ZERO) // interessi + { + TExchange c; + real vers(f.get()); + real vers_netto = vers * CENTO / (intt + CENTO); + + vers_netto.round(c.decimals()); + + real intr = vers - vers_netto; + + round_imposta(intr); + vers = vers_netto + intr; + f.mask().set(106, vers); + f.mask().set(107, intr); + + TToken_string& row = sv.row(sel); + + row.add(vers, 5); + row.add(intr, 6); + sv.force_update(sel); + } + } + } + } + return true; +} + void Visliq_app::vis_liq() { @@ -601,7 +643,8 @@ bool Visliq_app::vis_all() sh.sheet_mask().set_handler(110, check_date); sv.sheet_mask().set_handler(100, sel_mese_sh2); - + sv.sheet_mask().set_handler(106, calc_int); + const bool new_print_2000 = true; // _year >= 2000; const bool compensabile = _lia->get("S9") == "CM"; TMask& shm = sh.sheet_mask(); @@ -1513,7 +1556,7 @@ void Visliq_app::write_liq() _lim->rewrite(); } -void Visliq_app::write_del() +void Visliq_app::write_del(const real& v) { bool wasdel = false; @@ -1522,7 +1565,10 @@ void Visliq_app::write_del() TString8 cab(_lim->get("S5")); TString4 con(_lim->get("S6")); TDate date(_lim->get("D0")); - real vers(_lim->get_real("R8")); + real vers = v; + + if (vers == ZERO) + vers = _lim->get_real("R8"); real intr(_lim->get_real("R10")); if (vers.is_zero() && (wasdel = look_del(month,1))) @@ -1536,14 +1582,18 @@ void Visliq_app::write_del() look_del(month,1,true); // Crea delega real inter; - + if (!intr.is_zero()) { // riapplica il tasso di interesse // se trimestrale e' stato scorporato rispetto all'eventuale input utente - inter = vers*CENTO/(CENTO+intr); - inter = vers - inter; - inter.ceil(); + TExchange c; + real vers_netto = vers * CENTO / (intr + CENTO); + + vers_netto.round(c.decimals()); + inter = vers - vers_netto; + round_imposta(inter); + vers = vers_netto + inter; } _del->put("R0",vers); @@ -1671,8 +1721,9 @@ void Visliq_app::read_general(TMask& m) sh.force_update(); // calcola versamenti - real versamenti[13]; - TDate date[13]; + real versamenti[13]; + real interessi[13]; + TDate date[13]; TToken_string banche[13]; for (_del->first(); !_del->eof(); _del->next()) @@ -1694,7 +1745,8 @@ void Visliq_app::read_general(TMask& m) // supercauto if (m <= 0) continue; - versamenti[m-1] += _del->get_real("R0"); + 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]; b.add(_del->get("S7"),0); @@ -1722,8 +1774,9 @@ void Visliq_app::read_general(TMask& m) tt.add(banche[i-1].get(0),2); // azienda tt.add(banche[i-1].get(1),3); // dipendenza tt.add(banche[i-1].get(2),4); // concessionaria - tt.add(versamenti[i-1].string(),5);// versamenti - + tt.add(versamenti[i - 1].string(), 5);// versamenti + tt.add(interessi[i - 1].string(), 6);// interessi + sv.row(-1) = tt; if (i == 12) sv.enable_cell(sv.items() - 1, -1, false); @@ -1900,7 +1953,7 @@ void Visliq_app::write_general(TMask& m) _lim->put("S4", nabi); _lim->put("S5", ncab); _lim->put("S6", ncon); - write_del(); + write_del(nvers); vr_mod = true; } diff --git a/src/cg/cg5500.h b/src/cg/cg5500.h index 858008180..ea310a9b3 100755 --- a/src/cg/cg5500.h +++ b/src/cg/cg5500.h @@ -60,7 +60,8 @@ protected: static bool sel_mese_sh1 (TMask_field&, KEY); static bool enable_date (TMask_field&, KEY); static bool check_date (TMask_field&, KEY); - static bool sel_mese_sh2 (TMask_field&, KEY); + static bool sel_mese_sh2(TMask_field&, KEY); + static bool calc_int(TMask_field&, KEY); static bool ch_year_handler(TMask_field& f, KEY key); static const char* link_handler(TMask&, int, const char*, bool doubleclick); @@ -85,7 +86,7 @@ public: void read_general(TMask& m); void write_general(TMask& m); void write_liq(); - void write_del(); + void write_del(const real &v = ZERO); void set_freqviva(); void set_freqviva(const char* f) { _freqviva = f; } diff --git a/src/cg/cg5500b.uml b/src/cg/cg5500b.uml index ca88f3dcf..aed7092cf 100755 --- a/src/cg/cg5500b.uml +++ b/src/cg/cg5500b.uml @@ -108,6 +108,7 @@ BEGIN ITEM "CAB@5" ITEM "Conc.@5" ITEM "Versamenti@15" + ITEM "Interessi@15" END ENDPAGE @@ -311,6 +312,14 @@ BEGIN PROMPT 1 6 "Versamenti " END +CURRENCY 107 15 +BEGIN + PROMPT 1 6 "Interessi " + FLAGS "RD" +END + + + BUTTON 100 10 2 BEGIN PROMPT -11 -1 "Dettaglio" diff --git a/src/cg/cg5500c.uml b/src/cg/cg5500c.uml index 338d8bb6c..04fe5c445 100755 --- a/src/cg/cg5500c.uml +++ b/src/cg/cg5500c.uml @@ -84,6 +84,7 @@ BEGIN ITEM "CAB@5" ITEM "Conc.@5" ITEM "Versamenti@15" + ITEM "Interessi@15" END ENDPAGE @@ -259,6 +260,12 @@ BEGIN FLAGS "R" END +CURRENCY 107 15 +BEGIN + PROMPT 1 6 "Interessi " + FLAGS "RD" +END + BUTTON DLG_OK 10 2 BEGIN PROMPT -13 -1 ""