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
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);

View File

@ -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

View File

@ -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;
}

View File

@ -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");

View File

@ -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";