Scaccolata liquidazione secondo indicazioni prassiche

git-svn-id: svn://10.65.10.50/trunk@1390 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
villa 1995-05-24 08:45:57 +00:00
parent 8928e14de5
commit dcfc69524d
5 changed files with 61 additions and 26 deletions

View File

@ -118,6 +118,7 @@ public: // vedi sopra per le fisime morali
int _month; // mese int _month; // mese
real _aliquota; // aliquota iva real _aliquota; // aliquota iva
TString _codiva; // codice iva TString _codiva; // codice iva
TString _codatt; // codice attivita'
int _tipodet; // tipo detraibilita' int _tipodet; // tipo detraibilita'
_CorrItem() : _codreg(5) {} _CorrItem() : _codreg(5) {}
virtual ~_CorrItem() {} virtual ~_CorrItem() {}
@ -403,7 +404,7 @@ public:
void add_vendite (int month, const char* codreg, int tipodet, real& r); 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_ventilation (real iva, real sum, const char* codiva, const char* other);
void add_corrisp (int month, const char* codreg, real& r, real& p, 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 // printappings
virtual void set_page(int file, int counter); virtual void set_page(int file, int counter);
@ -464,6 +465,7 @@ public:
// se il movimento deve essere considerato in calcolo e riepilogo // se il movimento deve essere considerato in calcolo e riepilogo
// per la liquidazione di month // per la liquidazione di month
bool is_date_ok (TDate& d, int month); bool is_date_ok (TDate& d, int month);
bool is_in_liq_period(TDate& d);
bool is_first_month (int m); bool is_first_month (int m);
int liq_month(int x); int liq_month(int x);

View File

@ -151,7 +151,12 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
return TRUE; return TRUE;
TConfig cnf(CONFIG_DITTA, "cg"); 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"); TConfig cnf1(CONFIG_STUDIO, "cg");
_isricacq = cnf1.get_bool("RicAcq"); _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; real perc = _iva->get_real("R0")/CENTO;
lor += imponibile + imposta; lor += imponibile + imposta;
real tot = 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") else if (tipodoc == "FS")
@ -1153,6 +1158,12 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
TToken_string atts(codatts); TToken_string atts(codatts);
const char* tmpatt; 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 risultato = 0.0;
real detrazioni = 0.0; real detrazioni = 0.0;
real versamenti = 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_debt += tot_cong;
if (tot_cong.sign() < 0) res_cred += abs(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) // azzeriamo tutto (tranne r1, r5, s7)
TString codtab = _lim->get("CODTAB"); TString codtab = _lim->get("CODTAB");
@ -1572,6 +1583,7 @@ void TLiquidazione_app::recalc_annual(const char* att)
look_iva(codiva); look_reg(reg); look_iva(codiva); look_reg(reg);
if ( // ESCLUSI: if ( // ESCLUSI:
strcmp(att,*_pim_codatt) != 0 ||
(int)_reg->get_long("I0") != vendita || // non vendite (int)_reg->get_long("I0") != vendita || // non vendite
tipocr == 4 || // cessioni beni ammortizzabili tipocr == 4 || // cessioni beni ammortizzabili
_iva->get("S1") == "NS" || // non soggetti _iva->get("S1") == "NS" || // non soggetti

View File

@ -67,6 +67,18 @@ int TLiquidazione_app::liq_month(int x)
else return x + (2 - ((x-1) % 3)); 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) bool TLiquidazione_app::is_first_month(int m)
{ {
return _freqviva == "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, 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; _CorrItem* ci = NULL;
const int nitems = _corr_arr.items(); 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]; ci = (_CorrItem*)&_corr_arr[i];
if (ci->_codreg == codreg && ci->_month == month && if (ci->_codreg == codreg && ci->_month == month &&
ci->_codiva == codiva && ci->_tipodet == tipodet) ci->_codiva == codiva && ci->_tipodet == tipodet &&
ci->_codatt == codatt)
break; break;
} }
if (i == nitems) if (i == nitems)
@ -154,6 +168,7 @@ void TLiquidazione_app::add_corrisp(int month, const char* codreg, real& r,
ci->_codreg = codreg; ci->_codreg = codreg;
ci->_month = month; ci->_month = month;
ci->_codiva = codiva; ci->_codiva = codiva;
ci->_codatt = codatt;
ci->_tipodet = tipodet; ci->_tipodet = tipodet;
ci->_aliquota = p; ci->_aliquota = p;
} }

View File

@ -83,12 +83,13 @@ void TLiquidazione_app::recalc_corrispettivi(int month, const char* codatt)
for (int i = 0; i < _corr_arr.items(); i++) for (int i = 0; i < _corr_arr.items(); i++)
{ {
_CorrItem* ci = (_CorrItem*)&_corr_arr[i]; _CorrItem* ci = (_CorrItem*)&_corr_arr[i];
if (ci->_month != month) if (ci->_month != month || ci->_codatt != codatt)
continue; continue;
real imponibile = ci->_totale/(1.00 + ci->_aliquota); real imposta = (abs(ci->_totale) * ci->_aliquota)/(ci->_aliquota + 1.00);
imponibile.ceil(ROUND_LIRA); imposta.ceil();
real imposta = ci->_totale - imponibile; if (ci->_totale.sign() < 0) imposta = -imposta;
real imponibile = ci->_totale - imposta;
// aggiusto l'IVA vendite nei plm // aggiusto l'IVA vendite nei plm
look_plm(month, codatt); look_plm(month, codatt);

View File

@ -492,7 +492,7 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt)
if (!corrisp || (!cfv.is_zero() || !cfi.is_zero())) 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 vendi = corrisp ? cfi : _pim->get_real("R0");
real vendv = corrisp ? cfv : _pim->get_real("R1"); 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->_r0 += vendi - adf;
d->_r1 += vendv - adi; d->_r1 += vendv - adi;
t0 += vendi - adf; t0 += vendi /* - adf */;
t1 += vendv - adi; t1 += vendv /* - adi */;
autodafe += adf; autodafe += adf;
autodafe_iva += adi; autodafe_iva += adi;
@ -540,6 +540,7 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt)
} }
// 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); look_lim(month);
real iva74t = _lim->get_real("R3"); real iva74t = _lim->get_real("R3");
if (iva74t.sign() > 0) if (iva74t.sign() > 0)
@ -693,6 +694,7 @@ void TLiquidazione_app::describe_liq(int month, const char* codatts,
_DescrItem* di) _DescrItem* di)
{ {
if (!_isprint || !_canprint) return; if (!_isprint || !_canprint) return;
if (!look_lim(month)) return; if (!look_lim(month)) return;
_DescrItem* d = new _DescrItem(THE_END); _DescrItem* d = new _DescrItem(THE_END);
@ -750,12 +752,15 @@ _DescrItem* TLiquidazione_app::describe_deleghe(int month)
_DescrItem* d = new _DescrItem(DELEGA); _DescrItem* d = new _DescrItem(DELEGA);
if (_del->get_bool("B0"))
{
d->_s0 = _del->get("S2"); // localita' d->_s0 = _del->get("S2"); // localita'
d->_s1 = _del->get("S1"); // banca d->_s1 = _del->get("S1"); // banca
d->_s2 = _del->get("S7"); // ABI d->_s2 = _del->get("S7"); // ABI
d->_s3 = _del->get("S8"); // CAB d->_s3 = _del->get("S8"); // CAB
d->_r0 = _del->get_real("R0") + _del->get_real("R1"); d->_r0 = _del->get_real("R0") + _del->get_real("R1");
d->_d0 = _del->get_date("D0"); d->_d0 = _del->get_date("D0");
} // altrimenti lascia tutto in bianco e ci scriveranno i dati a mano
return d; 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 B2@30g%r", &(d._r4));
set_row(row++,"Operazioni esenti riga B3@30g%r", &(d._r5)); 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++,"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())) if (!(d._r3.is_zero()))
{ {
const char* sss = d._r3.sign() < 0 ? "credito" : "debito"; const char* sss = d._r3.sign() < 0 ? "credito" : "debito";