e151c78768
corrispettivi misti. git-svn-id: svn://10.65.10.50/trunk@4033 c028cbd2-c16b-5b4b-a496-9718f37d4682
2322 lines
70 KiB
C++
Executable File
2322 lines
70 KiB
C++
Executable File
// ------------------------------------------------------------
|
||
// Calcolo liquidazioni
|
||
// Part 5: stampa
|
||
// fv 21-1-94
|
||
// ------------------------------------------------------------
|
||
|
||
#include <utility.h>
|
||
#include "cg4300.h"
|
||
|
||
// flags per annuale
|
||
#define IS_PRORATA 0x0001
|
||
|
||
|
||
// minchietta per prospetto ventilazione
|
||
class _vDesc : public TObject
|
||
{
|
||
public:
|
||
TString _codiva;
|
||
real _acq;
|
||
real _vnd;
|
||
real _viv;
|
||
_vDesc() : _codiva(5) {}
|
||
virtual ~_vDesc() {}
|
||
};
|
||
|
||
static char sep[] =
|
||
"------------------------------------------------------------------"
|
||
"------------------------------------------------------------------";
|
||
|
||
void TLiquidazione_app::set_page(int file, int cnt)
|
||
{
|
||
_DescrItem& d = (_DescrItem&)_descr_arr[cnt];
|
||
|
||
set_auto_ff(FALSE);
|
||
reset_print();
|
||
|
||
switch(d._flags)
|
||
{
|
||
case CHG_PARMS:
|
||
set_att(d);
|
||
break;
|
||
case SET_FIRM:
|
||
set_firm(d);
|
||
break;
|
||
case PIM_ROW:
|
||
set_pim(d);
|
||
break;
|
||
case PIM_HEAD:
|
||
set_pim_head(d);
|
||
break;
|
||
case MISC_LIQ:
|
||
set_pumpam(d);
|
||
break;
|
||
case TOT_ROW:
|
||
set_plm(d);
|
||
break;
|
||
case PLAFOND:
|
||
set_plafond(d);
|
||
break;
|
||
case VENTILA:
|
||
set_ventila(d);
|
||
break;
|
||
case REGAGR:
|
||
set_regagr(d);
|
||
break;
|
||
case REGVIA:
|
||
set_viaggio(d);
|
||
break;
|
||
case THE_END:
|
||
set_grand(d);
|
||
break;
|
||
case LIQACC:
|
||
set_liqacc(d);
|
||
break;
|
||
case ACCONTO:
|
||
set_acconto_p(d);
|
||
break;
|
||
case ACCHEAD:
|
||
set_acchead_p(d);
|
||
break;
|
||
case DELDEB:
|
||
set_deltab(d, FALSE);
|
||
break;
|
||
case DELCRED:
|
||
set_deltab(d, TRUE);
|
||
break;
|
||
}
|
||
}
|
||
|
||
print_action TLiquidazione_app::postprocess_page(int file, int cnt)
|
||
{
|
||
if (_descr_arr.items() == 0 || cnt == _descr_arr.items()-1)
|
||
return NEXT_PAGE;
|
||
return REPEAT_PAGE;
|
||
}
|
||
|
||
bool TLiquidazione_app::preprocess_page(int file, int cnt)
|
||
{
|
||
return _descr_arr.items() != 0;
|
||
}
|
||
|
||
// ----------------------------------------------------------------
|
||
// Print description
|
||
// ----------------------------------------------------------------
|
||
|
||
void TLiquidazione_app::describe_att(int month, const char* codatt,
|
||
bool isresult, char flags)
|
||
{
|
||
TToken_string atts(codatt);
|
||
|
||
if (_isprint && _canprint)
|
||
{
|
||
describe_name(month, atts, flags);
|
||
if (atts.items() == 1 && _isplafond)
|
||
describe_plafond(month, codatt);
|
||
if (atts.items() == 1 && _isvent)
|
||
describe_ventilation(month, codatt);
|
||
if (atts.items() == 1 && _isagricolo)
|
||
describe_agricolo(month, codatt);
|
||
if (atts.items() == 1 && _isviaggio)
|
||
describe_viaggio(month, codatt);
|
||
if (/* isresult || month == 13 */ TRUE)
|
||
describe_pims(month,codatt);
|
||
if (atts.items() == 1)
|
||
describe_consistence(codatt);
|
||
}
|
||
}
|
||
|
||
void TLiquidazione_app::describe_name(int month, TToken_string& codatts, char flags)
|
||
{
|
||
_DescrItem* d = new _DescrItem(CHG_PARMS);
|
||
|
||
d->_s0 = _nditte->curr().get("CODDITTA");
|
||
d->_s1 = _nditte->curr().get("RAGSOC");
|
||
d->_s2 = _nditte->curr(LF_ATTIV).get("CODATT");
|
||
d->_s3 = codatts.items() == 1 ? (const char*)_nditte->curr(LF_ATTIV).get("DESCR") : "";
|
||
d->_s4 = _freqviva;
|
||
|
||
d->_f1 = month;
|
||
d->_f2 = _isbenzinaro;
|
||
d->_f3 = (word)flags;
|
||
|
||
if (_mixed && codatts.items() == 1)
|
||
d->_f0 = atoi(codatts.mid(5));
|
||
else d->_f0 = 0;
|
||
_descr_arr.add(d);
|
||
}
|
||
|
||
void TLiquidazione_app::describe_firm(int month)
|
||
{
|
||
if (!_isprint || !_canprint) return;
|
||
|
||
_DescrItem* d = new _DescrItem(SET_FIRM);
|
||
|
||
d->_s0 = _nditte->curr().get("CODDITTA");
|
||
d->_s1 = _nditte->curr().get("RAGSOC");
|
||
d->_s2 = _freqviva;
|
||
d->_f1 = month;
|
||
_descr_arr.add(d);
|
||
}
|
||
|
||
void TLiquidazione_app::describe_liqacc()
|
||
{
|
||
if (!_isprint || !_canprint) return;
|
||
|
||
if (!look_lia()) return;
|
||
|
||
if (_lia->get("S8") != "A") return;
|
||
|
||
_DescrItem* d = new _DescrItem(LIQACC);
|
||
|
||
d->_r0 = _lia->get_real("R7");
|
||
d->_r1 = _lia->get_real("R13");
|
||
d->_r2 = _lia->get_real("R14");
|
||
d->_r3 = _lia->get_real("R9");
|
||
d->_r4 = _lia->get_real("R10");
|
||
d->_r5 = _lia->get_real("R8");
|
||
d->_r6 = _lia->get_real("R12");
|
||
d->_r7 = _lia->get_real("R11");
|
||
d->_r8 = _lia->get_real("R4");
|
||
TToken_string ff(_lia->get("S1"),'!');
|
||
real cre_pre (ff.get(0));
|
||
real acq_intr (ff.get(1));
|
||
d->_r9 = cre_pre;
|
||
d->_r10 = acq_intr;
|
||
|
||
_descr_arr.add(d);
|
||
}
|
||
|
||
void TLiquidazione_app::describe_plafond(int month, const char* codatt)
|
||
{
|
||
TString att(codatt);
|
||
// prepara la descrizione del riepilogo da stampare e lo accoda
|
||
real t1, t2, t3;
|
||
_DescrItem* d = new _DescrItem(PLAFOND);
|
||
|
||
if (month == 13)
|
||
look_pla(codatt);
|
||
for (int jj = 1; jj <= 3; jj++) // three types of plafond
|
||
{
|
||
t1 = 0.0; t2 = 0.0; t3 = 0.0;
|
||
for (int m = 1; m <= month && m < 13; m++)
|
||
{
|
||
if (is_month_ok(m,month) && look_ppa(m,codatt,jj))
|
||
{
|
||
t1 += _ppa->get_real("R0");
|
||
t2 += _ppa->get_real("R1");
|
||
if (month < 13)
|
||
t3 = _ppa->get_real("R2");
|
||
}
|
||
}
|
||
switch (jj)
|
||
{
|
||
case 1:
|
||
d->_r0 = t1; d->_r1 = t2;
|
||
d->_r2 = month < 13 ? t3 : _pla->get_real("R5");
|
||
break;
|
||
case 2:
|
||
d->_r3 = t1; d->_r4 = t2;
|
||
d->_r5 = month < 13 ? t3 : _pla->get_real("R6");
|
||
break;
|
||
case 3:
|
||
d->_r6 = t1; d->_r7 = t2;
|
||
d->_r8 = month < 13 ? t3 : _pla->get_real("R7");
|
||
break;
|
||
}
|
||
} // for tipo esenzione plafond
|
||
|
||
_descr_arr.add(d);
|
||
|
||
// bookmark
|
||
}
|
||
|
||
void TLiquidazione_app::describe_ventilation(int month, const char* codatt)
|
||
{
|
||
if (!_isvent || _isagricolo || _isviaggio) return;
|
||
|
||
_DescrItem* d = new _DescrItem(VENTILA);
|
||
TString att(codatt);
|
||
|
||
look_plm(month, att);
|
||
|
||
for (_pim->first(); !_pim->eof(); _pim->next())
|
||
{
|
||
if (strcmp(*_pim_codatt,att) != 0)
|
||
continue;
|
||
|
||
look_reg(*_pim_codreg);
|
||
look_iva(*_pim_codiva);
|
||
|
||
int tipocr = atoi(*_pim_tipocr);
|
||
int tipodet = atoi(*_pim_tipodet);
|
||
int mese = atoi(*_pim_mese);
|
||
bool corrisp = _reg->get_bool("B0");
|
||
real imponibile = _pim->get_real("R0");
|
||
real imposta = _pim->get_real("R1");
|
||
tiporeg tipomov = (tiporeg)_reg->get_long("I0");
|
||
TString tipoiva = _iva->get("S1");
|
||
|
||
if (_year != *_pim_anno) continue;
|
||
|
||
if (imponibile.is_zero() && imposta.is_zero()) continue;
|
||
|
||
// questi non vanno in liquidazione, i totali sono
|
||
// gia' calcolati altrove
|
||
if (tipodet == 1 || (tipodet == 3 && tipocr == 5) || tipodet == 9)
|
||
continue;
|
||
|
||
// questi non si devono vedere perche' so' bbrutti
|
||
if (tipoiva == "NS" || tipoiva == "ES" || tipoiva == "NI")
|
||
continue;
|
||
|
||
if (mese <= month)
|
||
{
|
||
if (tipocr == 1 && tipomov == acquisto)
|
||
{
|
||
// somma agli acquisti
|
||
_vDesc* vd = NULL;
|
||
for (int i = 0; i < d->_arr.items(); i++)
|
||
{
|
||
_vDesc* vv = (_vDesc*)&(d->_arr[i]);
|
||
if (strcmp(vv->_codiva,*_pim_codiva) == 0)
|
||
{ vd = vv; break; }
|
||
}
|
||
if (vd == NULL) { vd = new _vDesc; }
|
||
|
||
vd->_acq += (imponibile+imposta);
|
||
d->_r0 += (imponibile+imposta);
|
||
|
||
if (vd->_codiva.empty())
|
||
{
|
||
vd->_codiva = *_pim_codiva;
|
||
d->_arr.add(vd);
|
||
}
|
||
}
|
||
else if ((is_month_ok(mese,month) || month == 13) && corrisp
|
||
&& _pim->get_bool("B1") &&
|
||
tipocr == 0 && tipomov == vendita)
|
||
// non sono sicurissimo della above condition
|
||
{
|
||
// somma alle vendite
|
||
_vDesc* vd = NULL;
|
||
for (int i = 0; i < d->_arr.items(); i++)
|
||
{
|
||
_vDesc* vv = (_vDesc*)&(d->_arr[i]);
|
||
if (strcmp(vv->_codiva,*_pim_codiva) == 0)
|
||
{ vd = vv; break; }
|
||
}
|
||
if (vd == NULL) { vd = new _vDesc; }
|
||
|
||
vd->_vnd += imponibile;
|
||
vd->_viv += imposta;
|
||
|
||
d->_r1 += imponibile+imposta;
|
||
|
||
if (vd->_codiva.empty())
|
||
{
|
||
vd->_codiva = *_pim_codiva;
|
||
d->_arr.add(vd);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if (d->_r1.is_zero() || d->_r0.is_zero())
|
||
delete d;
|
||
else
|
||
_descr_arr.add(d);
|
||
}
|
||
|
||
void TLiquidazione_app::describe_agricolo(int month, const char* codatt)
|
||
{
|
||
_DescrItem* d = new _DescrItem(REGAGR);
|
||
|
||
for (int mese = 1; mese <= month; mese++)
|
||
{
|
||
if (!is_month_ok(mese,month))
|
||
continue;
|
||
|
||
if (!look_plm(mese, codatt))
|
||
continue;
|
||
|
||
d->_r0 += _plm->get_real("R5");
|
||
d->_r1 += _plm->get_real("R6");
|
||
d->_r2 += _plm->get_real("R7");
|
||
d->_r3 += _plm->get_real("R8");
|
||
d->_r4 += _plm->get_real("R9");
|
||
d->_r5 += _plm->get_real("R10");
|
||
d->_r6 += _plm->get_real("R11");
|
||
d->_r7 += _pum->get_real("R10");
|
||
d->_r8 += _pum->get_real("R11");
|
||
}
|
||
// Aggiungo anche questi per comodita' futura.
|
||
// in caso di ditta a regime agricolo
|
||
// alias:
|
||
// _r9 mantiene la percentuale (gia' arrotondata!)
|
||
// _r10 mantiene l'iva detraibile calcolata!
|
||
d->_r9 = (d->_r8 / (d->_r7 + d->_r8));
|
||
d->_r9.round(2);
|
||
d->_r10 = d->_r6 * d->_r9;
|
||
d->_r9 *= CENTO;
|
||
d->_r9.round(ROUND_LIRA);
|
||
d->_r10.round(ROUND_LIRA);
|
||
|
||
_descr_arr.add(d);
|
||
}
|
||
|
||
void TLiquidazione_app::describe_viaggio(int month, const char* codatt)
|
||
{
|
||
if (!look_lim(month)) return;
|
||
|
||
_DescrItem* d = new _DescrItem(REGVIA);
|
||
|
||
for (int mese = 1; mese <= month; mese++)
|
||
{
|
||
if (!is_month_ok(mese,month) || !look_plm(mese, codatt))
|
||
continue;
|
||
|
||
d->_r0 += _plm->get_real("R5"); // corrispettivi CEE
|
||
d->_r1 += _plm->get_real("R9"); // corrispettivi misti CEE
|
||
d->_r2 += _plm->get_real("R6"); // corrispettivi fuori CE
|
||
d->_r3 += _plm->get_real("R7"); // acquisti CEE
|
||
d->_r4 += _plm->get_real("R10"); // acquisti misti parte CEE
|
||
d->_r5 += _plm->get_real("R8"); // acquisti fuori CEE
|
||
d->_r6 += _plm->get_real("R11"); // acquisti misti parte fuori CEE
|
||
}
|
||
|
||
// credito di costo precedente (CHECK annuale)
|
||
d->_r8 = credito_costo_prec(month);
|
||
|
||
// Solita minchiatina dell'arrotondamento alle 1000 lirette se siamo in annuale
|
||
if (month == 13)
|
||
{
|
||
d->_r0.round(ROUND_MILLELIRE);
|
||
d->_r1.round(ROUND_MILLELIRE);
|
||
d->_r2.round(ROUND_MILLELIRE);
|
||
d->_r3.round(ROUND_MILLELIRE);
|
||
d->_r4.round(ROUND_MILLELIRE);
|
||
d->_r5.round(ROUND_MILLELIRE);
|
||
d->_r6.round(ROUND_MILLELIRE);
|
||
d->_r8.round(ROUND_MILLELIRE);
|
||
}
|
||
|
||
d->_r7 = (d->_r4 * CENTO)/(d->_r4 + d->_r6); d->_r7.round(2); // percentuale
|
||
d->_r9 = (d->_r1 * d->_r7)/CENTO;
|
||
|
||
if (month==13)
|
||
d->_r9.round(ROUND_MILLELIRE);
|
||
else
|
||
d->_r9.round(ROUND_LIRA);
|
||
|
||
// Calcola l'iva a debito, visto che servira' anche nel calcolo liquidazione (solo annuale)
|
||
const real aliva = aliquota_agvia();
|
||
const real alcnt = aliva + CENTO;
|
||
d->_r10 = (d->_r0 + d->_r9) - (d->_r3 + d->_r4 + d->_r8); // base imponibile lorda
|
||
if (d->_r10.sign() > 0)
|
||
{
|
||
d->_r11 = (d->_r10/(alcnt/CENTO)) * (aliva/CENTO); // iva dovuta
|
||
if (month == 13) d->_r11.round(ROUND_MILLELIRE);
|
||
else d->_r11.ceil(ROUND_LIRA);
|
||
}
|
||
if (month == 13)
|
||
{
|
||
look_plm(month,codatt); // Scrive l'iva dovuta, visto che la describe_pims() viene chiamata successivamente.
|
||
_pom->put("R13",d->_r11);
|
||
_pom->rewrite();
|
||
}
|
||
|
||
_descr_arr.add(d);
|
||
}
|
||
|
||
|
||
void TLiquidazione_app::describe_pims(int month, const char* codatt)
|
||
// le si passa una tokenstring (o un codatt) e lei, da brava, calcola
|
||
// cumulando per tutte le attivita' nominatele
|
||
// ogni riga riguarda un codiva ma tutti i registri
|
||
// se il mese e' 13 si guarda tutto l'anno
|
||
// se si tratta di una sola attivita' in att. mista evidenziata o servizievole,
|
||
// stampa solo vendite e corrispettivi
|
||
{
|
||
TToken_string atts(codatt);
|
||
TString ref(atts.items() == 1 ? codatt : "ALL");
|
||
const char* tmpatt;
|
||
int last = _descr_arr.last();
|
||
bool isfirst = TRUE;
|
||
real t0, t1, t2, t3, t4, t5;
|
||
real autodafe, autodafe_iva, art40, art40_iva;
|
||
|
||
bool skip_acq = atts.items() == 1 && _mixed;
|
||
|
||
// descrittore riga autodafe'
|
||
_DescrItem* ads = NULL;
|
||
// descrittore riga iva dovuta ag. viaggio'
|
||
_DescrItem* iads = NULL;
|
||
// questa cazzata serve per far apparire l'intestazione delle colonne
|
||
// anche se le colonne non ci sono; in tal modo si ottiene una peggior
|
||
// chiarezza, una peggiore efficienza, una gran rottura di coglioni,
|
||
// ma risulta identico al dio Sistema.
|
||
_DescrItem* hea = new _DescrItem(PIM_HEAD);
|
||
hea->_f0 = skip_acq; // cosi' non compare nemmeno la colonnina! contento?
|
||
_descr_arr.add(hea);
|
||
|
||
while ((tmpatt = atts.get()) != NULL)
|
||
{
|
||
TString att(tmpatt);
|
||
|
||
for (_pim->first(); !_pim->eof(); _pim->next())
|
||
{
|
||
_DescrItem* d = NULL;
|
||
// compute
|
||
bool ok = look_reg(*_pim_codreg);
|
||
ok |= look_iva(*_pim_codiva);
|
||
bool isnew = FALSE;
|
||
|
||
if (!ok) continue;
|
||
|
||
tiporeg tipomov = (tiporeg)_reg->get_long("I0");
|
||
bool corrisp = _reg->get_bool("B0");
|
||
TString tipoiva = _iva->get("S1");
|
||
int tipodet = atoi(*_pim_tipodet);
|
||
TString codiva((const char*)(*_pim_codiva));
|
||
TString other = _pim->get("S4");
|
||
|
||
// ACHTUNG! Corrispettivi da ventileer possono ventilare
|
||
// ad un altro codiva; in tal caso si scrive quello
|
||
if (corrisp && !other.empty())
|
||
{
|
||
look_iva(other);
|
||
codiva = other;
|
||
}
|
||
// se e' corrispettivo da ventilare non
|
||
// scrivo un cannolo ripieno visto che e' stato ventilato
|
||
if (tipomov == vendita && tipoiva == "VE") continue;
|
||
|
||
// se e' il dettaglio di una attivita' mista non stampa
|
||
// gli acquisti, il perche' losalamadonna
|
||
if (tipomov == acquisto && skip_acq) continue;
|
||
|
||
// questi non vanno in liquidazione, i totali sono
|
||
// gia' calcolati altrove
|
||
if (tipodet == 1 || tipodet == 3 || tipodet == 9)
|
||
continue;
|
||
|
||
// se ha tutti gli importi nulli viene da un annullamento di
|
||
// progressivi esistenti (achtung fatture con scontrino)
|
||
if (_pim->get_real("R0").is_zero() &&
|
||
_pim->get_real("R1").is_zero() &&
|
||
_pim->get_real("R2").is_zero() &&
|
||
_pim->get_real("R5").is_zero() &&
|
||
_pim->get_real("R6").is_zero())
|
||
continue;
|
||
|
||
if (strcmp((const char*)*_pim_codatt, att) == 0 &&
|
||
(is_month_ok(atoi(*_pim_mese),month)) &&
|
||
_year == (const char*)*_pim_anno)
|
||
{
|
||
// vedi se c'e' gia' un item corrispondente
|
||
for(int i = last+1; i < _descr_arr.items(); i++)
|
||
{
|
||
d = (_DescrItem*)&_descr_arr[i];
|
||
if (d->_flags == PIM_ROW &&
|
||
d->_s0 == ref &&
|
||
d->_s1 == codiva)
|
||
break;
|
||
if (d->_s1 > codiva)
|
||
{
|
||
isnew = TRUE;
|
||
_DescrItem* dd = new _DescrItem(PIM_ROW);
|
||
// CicciaPrassi li vuole in ordine crescente
|
||
_descr_arr.insert(dd,i);
|
||
// che due maron stereofonic: se quello dopo
|
||
// era il primo, quello prima va dopo
|
||
if (d->_f0)
|
||
{
|
||
dd->_f0 = TRUE;
|
||
d->_f0 = FALSE;
|
||
}
|
||
else if (isfirst)
|
||
{
|
||
d->_f0 = TRUE;
|
||
isfirst = FALSE;
|
||
}
|
||
d = dd;
|
||
break;
|
||
}
|
||
}
|
||
if (!isnew && i == _descr_arr.items())
|
||
{
|
||
isnew = TRUE;
|
||
d = new _DescrItem(PIM_ROW);
|
||
if (isfirst) { d->_f0 = TRUE; isfirst = FALSE; }
|
||
_descr_arr.add(d);
|
||
}
|
||
|
||
if (tipomov == acquisto)
|
||
{
|
||
d->_r4 += _pim->get_real("R0");
|
||
d->_r5 += _pim->get_real("R1");
|
||
t4 += _pim->get_real("R0");
|
||
t5 += _pim->get_real("R1");
|
||
}
|
||
else // vendita
|
||
{
|
||
// vedi corrispettivi veri e falsi
|
||
real cvi = _pim->get_real("R0"); // imp. totale
|
||
real cvv = _pim->get_real("R1"); // iva totale
|
||
real cfi = _pim->get_real("R13"); // imp. falsi corrispettivi
|
||
real cfv = _pim->get_real("R14"); // iva falsi corrispettivi
|
||
// Qui comincia la modifica per l'errore MI3404...
|
||
// Giochiamo sopra la particolarita' che se non e' un registro di corrispettivi
|
||
// allora se R5 o R6 sono <> 0 significa che trattasi di documento FS,
|
||
// che pertanto va stornato dal totale corrispettivi. (Cosi' vuole Vladimiro,
|
||
// anche se sono sempre piu' convinto che sia una trojata).
|
||
// Va beh, OBBEDISCO.
|
||
real ifs(_pim->get_real("R5")); // imp. fatture con scontrino
|
||
real vfs(_pim->get_real("R6")); // iva fatture con scontrino
|
||
if (!corrisp)
|
||
{
|
||
d->_r2 -= ifs; // tolgo FS dai corrispettivi
|
||
d->_r3 -= vfs;
|
||
t2 -= ifs; // idem per i totali
|
||
t3 -= vfs;
|
||
}
|
||
// ... E qui finisce.
|
||
|
||
if (corrisp)
|
||
{
|
||
cvi -= cfi;
|
||
cvv -= cfv;
|
||
}
|
||
|
||
if (corrisp)
|
||
{
|
||
// usa R0 e R1 visto che la ventilazione e' gia'
|
||
// stata calcolata
|
||
|
||
d->_r2 += (cvi /* - ifs */); // tolgo FS dai corrispettivi
|
||
d->_r3 += (cvv /* - vfs */);
|
||
d->_r0 += ifs; // aggiungo FS alle vendite
|
||
d->_r1 += vfs;
|
||
t2 += (cvi /* - ifs */); // idem per i totali
|
||
t3 += (cvv /* - vfs */); // non sono molto convinto ma vogliono cio'
|
||
t0 += ifs; // ...avevo ragione e infatti l'ho cambiato
|
||
t1 += vfs;
|
||
}
|
||
|
||
if (!corrisp || (!cfv.is_zero() || !cfi.is_zero()))
|
||
{
|
||
real adf, adi; // autofatture non residenti art. 17
|
||
real a13i, a13v; // ammontare art 40 c. 5/6/8
|
||
|
||
real vendi = corrisp ? cfi : _pim->get_real("R0");
|
||
real vendv = corrisp ? cfv : _pim->get_real("R1");
|
||
|
||
// si scorporano solo per l'annuale, altrimenti
|
||
// vengono normalmente considerati nelle vendite
|
||
if (month == 13)
|
||
{
|
||
TToken_string kr(_pim->get("S0"),'!');
|
||
a13i = kr.get(0);
|
||
a13v = kr.get(1);
|
||
adf = _pim->get_real("R7");
|
||
adi = _pim->get_real("R8");
|
||
}
|
||
|
||
d->_r0 += vendi - adf - a13i;
|
||
d->_r1 += vendv - adi - a13v;
|
||
t0 += vendi /* - adf */;
|
||
t1 += vendv /* - adi */;
|
||
|
||
autodafe += adf;
|
||
autodafe_iva += adi;
|
||
art40 += a13i;
|
||
art40_iva += a13v;
|
||
}
|
||
}
|
||
if (isnew)
|
||
{
|
||
d->_s0 = ref;
|
||
d->_s1 = codiva;
|
||
// flag per stampare l'intestazione colonne
|
||
}
|
||
}
|
||
}
|
||
|
||
look_plm(month,att);
|
||
real iva74t = _pom->get_real("R13");
|
||
if (iva74t.sign() > 0)
|
||
{
|
||
if(iads == NULL) iads = new _DescrItem(PIM_ROW);
|
||
iads->_s0 = "74TER"; // cosi' vollero
|
||
iads->_s1 = "IVA "; // cosi' vollero
|
||
iads->_s2 = " dovuta - 74 ter"; // cosi' vollero
|
||
iads->_r1 += iva74t;
|
||
t1 += iva74t;
|
||
if (isfirst)
|
||
{
|
||
isfirst = FALSE;
|
||
iads->_f0 = TRUE;
|
||
}
|
||
}
|
||
}
|
||
|
||
if (art40.sign() > 0 || art40_iva.sign() > 0)
|
||
{
|
||
_DescrItem* ads = new _DescrItem(PIM_ROW);
|
||
ads->_s0 = ref;
|
||
ads->_s1 = "A13";
|
||
ads->_r0 = art40;
|
||
ads->_r1 = art40_iva;
|
||
if (isfirst)
|
||
{
|
||
isfirst = FALSE;
|
||
ads->_f0 = TRUE;
|
||
}
|
||
_descr_arr.add(ads);
|
||
}
|
||
|
||
if (autodafe.sign() > 0 || autodafe_iva.sign() > 0)
|
||
{
|
||
_DescrItem* ads = new _DescrItem(PIM_ROW);
|
||
ads->_s0 = ref;
|
||
ads->_s1 = "AF"; // cosi' vollero, inoltre non e' piu' A35 ma AF, come sul dio sistema
|
||
ads->_r0 = autodafe;
|
||
ads->_r1 = autodafe_iva;
|
||
if (isfirst)
|
||
{
|
||
isfirst = FALSE;
|
||
ads->_f0 = TRUE;
|
||
}
|
||
_descr_arr.add(ads);
|
||
}
|
||
|
||
// ag. viaggio: iva dovuta 74 ter la vogliono in mezzo ai progressivi
|
||
if (iads != NULL) _descr_arr.add(iads);
|
||
|
||
// prepara una bella riga di totali
|
||
if (/* !isfirst */ TRUE)
|
||
{
|
||
_DescrItem* d = new _DescrItem(TOT_ROW);
|
||
d->_r0 = t0; d->_r1 = t1;
|
||
d->_r2 = t2; d->_r3 = t3;
|
||
d->_r4 = t4; d->_r5 = t5;
|
||
|
||
// aggiunge dati ptm
|
||
_DescrItem* t = new _DescrItem(MISC_LIQ);
|
||
t->_f1 = isfirst; // per il form feed
|
||
|
||
TToken_string ttm("0|0|0");
|
||
|
||
for (int m = 1; m <= month && m < 13; m++)
|
||
{
|
||
if (!is_month_ok(m,month)) continue;
|
||
|
||
atts.restart();
|
||
while ((tmpatt = atts.get()) != NULL)
|
||
{
|
||
TString att(tmpatt);
|
||
look_plm(m, att);
|
||
real ad1, ad2;
|
||
|
||
d->_r6 += _pom->get_real("R0"); // acq. intracomunitari
|
||
d->_r7 += _pom->get_real("R1"); // inded. art 19
|
||
d->_r8 += _pom->get_real("R2"); // IVA su inded. art. 19
|
||
t->_r0 += _pom->get_real("R3"); // acq. ammortizz. detr
|
||
t->_r1 += _pom->get_real("R4"); // IVA acq. ammort. detr
|
||
t->_r2 += _pum->get_real("R2"); // ammort. detr. 6%
|
||
t->_r3 += _pum->get_real("R3"); // IVA ammort detr. 6%
|
||
t->_r4 += _pom->get_real("R5"); // acq. beni rivendita
|
||
t->_r5 += _pom->get_real("R6"); // IVA acq. beni rivendita
|
||
t->_r6 += _pom->get_real("R7"); // acq. leasing
|
||
t->_r7 += _pom->get_real("R8"); // IVA acq. leasing
|
||
t->_r8 += _pum->get_real("R0"); // cessioni beni ammort.
|
||
t->_r9 += _pum->get_real("R1"); // IVA su cessioni ammort.
|
||
t->_r10 += _pum->get_real("R4"); // tot. esenti IVA
|
||
t->_r11 += _plm->get_real("R2"); // pro-rata indetraibile
|
||
|
||
ad1 = real(ttm.get(1));
|
||
ad2 = real(ttm.get(2));
|
||
ad1 += _pom->get_real("R11");
|
||
ad2 += _pom->get_real("R12");
|
||
ttm.add(_plm->get("R12"), 0); // % pro-rata
|
||
ttm.add(ad1.string(),1); // imp. acq. amm. indetr.
|
||
ttm.add(ad2.string(),2); // IVA acq. amm. indetr
|
||
t->_s0 = ttm;
|
||
|
||
t->_f0 = !_prorata.is_zero() && (month != 13); // flag per segnalare l'esistenza
|
||
d->_r9 += _pom->get_real("R9"); // acq. inded. su ricavi esenti
|
||
d->_r10 += _pom->get_real("R10"); // IVA acq. inded. su ricavi esenti
|
||
|
||
// passaggi interni
|
||
real aipip(d->_s0); // progressivo ...
|
||
real aipivp(d->_s1); // ... (che mazzata sulle palle...)
|
||
aipip += _pum->get_real("R8"); // acq. inded. per pass. int
|
||
aipivp += _pum->get_real("R9"); // IVA acq. inded. per pass. int
|
||
d->_s0 = aipip.string(); // risbatto ...
|
||
d->_s1 = aipivp.string(); // ..
|
||
|
||
// spese generali.
|
||
real spgnp(t->_s2); // progressivo ...
|
||
real spgnvp(t->_s3); // ... (che doppia mazzata sulle palle...)
|
||
spgnp += _pam->get_real("R10"); // spese generali.
|
||
spgnvp += _pam->get_real("R11"); // IVA spese generali.
|
||
t->_s2 = spgnp.string(); // risbatto ...
|
||
t->_s3 = spgnvp.string(); // ..
|
||
|
||
// sospensione imposta: non piu' due palle, ma QUATTRO
|
||
TToken_string tt(t->_s4);
|
||
real aqsi(tt.get(0));
|
||
real aqsv(tt.get(1));
|
||
real vnsi(tt.get(2));
|
||
real vnsv(tt.get(3));
|
||
|
||
aqsi += _pam->get_real("R6");
|
||
aqsv += _pam->get_real("R7");
|
||
vnsi += _pam->get_real("R8");
|
||
vnsv += _pam->get_real("R9");
|
||
|
||
tt = "";
|
||
tt.add(aqsi.string());
|
||
tt.add(aqsv.string());
|
||
tt.add(vnsi.string());
|
||
tt.add(vnsv.string());
|
||
t->_s4 = tt;
|
||
|
||
} // while (attivita')
|
||
} // for (mese ok)
|
||
|
||
|
||
// annual follows in _arr
|
||
if (month == 13 && ref != "ALL")
|
||
{
|
||
// tutte quelle cose che vanno alla liquidazione annuale, come il
|
||
// calcolo del prorata o del nuovo plafond o ....
|
||
if (look_pla(codatt))
|
||
{
|
||
real v1 = _pla->get_real("R14");
|
||
real v2(_pla->get("S1"));
|
||
real ris = v1 + v2;
|
||
real e1 = _pla->get_real("R1");
|
||
real e2 = _pla->get_real("R2");
|
||
real e3 = _pla->get_real("R3");
|
||
real am = _pla->get_real("R4");
|
||
real iaq = _pla->get_real("R11"); // IVA acquisti
|
||
real ppg = _pla->get_real("R12"); // pro-rata pagato
|
||
|
||
// calcola nuovo prorata per ogni attivita' (miste: 1+2)
|
||
real pr(0.0);
|
||
if (!ris.is_zero())
|
||
pr = (e1/ris) * CENTO;
|
||
real co = 0.0;
|
||
real topay = 0.0;
|
||
pr.round(ROUND_LIRA);
|
||
if (pr != _prorata)
|
||
{
|
||
// calcolo conguaglio -- se positivo e' a debito
|
||
if (pr > 0.0)
|
||
{
|
||
topay = (iaq + ppg) * (pr / CENTO);
|
||
topay.round(ROUND_MILLELIRE);
|
||
}
|
||
co = topay - ppg;
|
||
co.round(ROUND_MILLELIRE);
|
||
}
|
||
|
||
_DescrItem* dd = new _DescrItem(ANNUAL);
|
||
|
||
// MonsterFish: arrotonda alle 1000 LIRE B1,B2,B3,B4
|
||
e1.round(ROUND_MILLELIRE);
|
||
e2.round(ROUND_MILLELIRE);
|
||
e3.round(ROUND_MILLELIRE);
|
||
ris.round(ROUND_MILLELIRE);
|
||
// prorata
|
||
if (!pr.is_zero())
|
||
dd->_f0 |= IS_PRORATA;
|
||
dd->_r0 = ris;
|
||
dd->_r1 = e1;
|
||
dd->_r2 = pr > 0.0 ? pr : 0.0 ;
|
||
dd->_r3 = co;
|
||
dd->_r4 = e2;
|
||
dd->_r5 = e3;
|
||
dd->_r6 = topay;
|
||
t->_arr.add(dd);
|
||
}
|
||
}
|
||
_descr_arr.add(d);
|
||
_descr_arr.add(t);
|
||
}
|
||
}
|
||
|
||
|
||
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);
|
||
|
||
// gli diamo la stessa struttura di LIM
|
||
d->_r0 = _lim->get_real("R0");
|
||
d->_r1 = _lim->get_real("R1");
|
||
d->_r2 = _lim->get_real("R2");
|
||
d->_r3 = _lim->get_real("R3");
|
||
d->_r4 = _lim->get_real("R4");
|
||
d->_r5 = _lim->get_real("R5");
|
||
d->_r6 = _lim->get_real("R6");
|
||
d->_r7 = _lim->get_real("R14");
|
||
d->_r9 = _lim->get_real("R9");
|
||
d->_r10 = _lim->get_real("R7"); // totale conguaglio prorata
|
||
|
||
TToken_string tt(80);
|
||
tt.add(_lam->get_real("R0").string());
|
||
tt.add(_lam->get_real("R1").string());
|
||
tt.add(_lam->get_real("R2").string());
|
||
tt.add(_lam->get_real("R3").string());
|
||
|
||
d->_s0 = tt;
|
||
d->_s1 = _lim->get_real("R11").string();
|
||
d->_s2 = _lim->get_real("R12").string();
|
||
d->_s3 = _lim->get_real("R13").string();
|
||
|
||
// descrizione rettifiche
|
||
if (month < 13)
|
||
{
|
||
d->_s4 = _lim->get("S0");
|
||
d->_s5 = _lim->get("S1");
|
||
}
|
||
d->_r11 = (const char*)_lim->get("R10"); // tasso di interesse
|
||
|
||
d->_f1 = is_first_month(month);
|
||
|
||
// 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");
|
||
|
||
|
||
// aggiunge eventuale satellite per rimborso infraannuale
|
||
if (di != NULL)
|
||
{
|
||
if (d->_r0.sign() < 0)
|
||
d->_arr.add(di);
|
||
else delete di;
|
||
}
|
||
iva11_write(di == NULL || d->_r0.sign() >= 0); // scrive su tab1100 at last.
|
||
|
||
if (!_is_visliq)
|
||
{
|
||
_DescrItem* dv = describe_deleghe(month);
|
||
if (dv != NULL) d->_arr.add(dv);
|
||
}
|
||
_descr_arr.add(d);
|
||
}
|
||
|
||
_DescrItem* TLiquidazione_app::describe_deleghe(int month)
|
||
{
|
||
_stampa_vers = _stampa_acc = FALSE;
|
||
|
||
if (_lim->get_real("R0") > ZERO)
|
||
{
|
||
real iva = _lim->get_real("R0") + _lim->get_real("R14");
|
||
if (month == 13) iva.round(ROUND_MILLELIRE);
|
||
if (iva >= IVA_DA_RIPORTARE)
|
||
_stampa_vers = TRUE;
|
||
}
|
||
|
||
/***13/02/1996
|
||
int mese = month;
|
||
if (_freqviva == "T" && _isannual) mese = 12;
|
||
if (!look_del(mese,7) && !stampa_vers) return NULL;
|
||
***/
|
||
|
||
_stampa_acc = (month == 12 && (_freqviva == "M" || (_isbenzinaro && _gest4)))
|
||
||(month == 13 && _freqviva == "T" && !(_isbenzinaro && _gest4));
|
||
|
||
if (!_stampa_vers && !(_stampa_acc && look_del(12,7))) return NULL;
|
||
|
||
_DescrItem* d = new _DescrItem(DELEGA);
|
||
|
||
d->_f0 = 0;
|
||
|
||
//prospettino versamento
|
||
if (_stampa_vers) //solo se sono a debito
|
||
if (look_del(month,month == 13 ? 2 : 1))
|
||
{
|
||
if (_del->get("S9").not_empty())
|
||
d->_f0 = 2;
|
||
else d->_f0 = 1;
|
||
if (_del->get_bool("B0"))
|
||
{
|
||
d->_s0 = _del->get("S2"); // ufficio iva/concessione
|
||
d->_s1 = _del->get("S1"); // descrizione banca
|
||
d->_s2 = _del->get("S7"); // ABI
|
||
d->_s3 = _del->get("S8"); // CAB
|
||
d->_r0 = _del->get_real("R0");
|
||
d->_d0 = _del->get_date("D0");
|
||
} // altrimenti lascia tutto in bianco e ci scriveranno i dati a mano
|
||
}
|
||
//prospettino acconto
|
||
if ( (month == 12 && (_freqviva == "M" || (_isbenzinaro && _gest4)))
|
||
|| (month == 13 && _freqviva == "T" && !(_isbenzinaro && _gest4)) )
|
||
if (look_del(12,7)) //sia che sia a debito che a credito
|
||
{
|
||
d->_s4 = "ACC";
|
||
if (_del->get("S9").not_empty())
|
||
d->_f1 = 2;
|
||
else d->_f1 = 1;
|
||
TToken_string t;
|
||
if (_del->get_bool("B0"))
|
||
{
|
||
t.add(_del->get("S2"));
|
||
t.add(_del->get("S1"));
|
||
t.add(_del->get("S7"));
|
||
t.add(_del->get("S8"));
|
||
t.add(_del->get_real("R0").string());
|
||
t.add(_del->get("D0"));
|
||
}
|
||
d->_s5 = t;
|
||
}
|
||
|
||
return d;
|
||
}
|
||
|
||
void TLiquidazione_app::describe_consistence(const char* codatt)
|
||
{
|
||
// controlla eventuali condizioni di conflitto con le normative
|
||
// per la ditta e crea i messaggi appropriati
|
||
// tutte le condizioni sono valutate sull'esercizio precedente
|
||
int pryear = atoi(_year) - 1;
|
||
TString att = codatt;
|
||
|
||
_pla->zero();
|
||
*_pla_ditta = get_firm();
|
||
*_pla_anno = pryear;
|
||
*_pla_codatt = att;
|
||
|
||
if (_pla->read() == NOERR)
|
||
{
|
||
real va = _pla->get_real("R0");
|
||
|
||
// 1) consistenza volume d'affari <-> frequenza versamenti
|
||
// deve essere: trimestrale ammesso solo se < 360.000.000
|
||
// per servizi, < 1.000.000.000 per altre imprese
|
||
// a meno che non sia benzinaro che ha diritto comunque
|
||
|
||
if (_freqviva == "T" && !_isbenzinaro)
|
||
{
|
||
bool err = FALSE;
|
||
if (_isservizio) err = va > SOGLIA_TRIM_SERVIZI;
|
||
else err = va > SOGLIA_TRIM_ALTRE;
|
||
if (err)
|
||
describe_error("Incoerenza volume affari/frequenza versamenti",
|
||
att);
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
void TLiquidazione_app::describe_error(const char* err, const char* codatt)
|
||
{
|
||
//if (!_isprint || !_canprint) return;
|
||
//06/12/1995
|
||
if (!_isprint || !_canprint || (_isregis && _isfinal)) return;
|
||
//fine
|
||
_errors.add(new _ErrItem(err,codatt,_nditte->curr().get("CODDITTA")));
|
||
}
|
||
|
||
// ----------------------------------------------------------------
|
||
// Setrows
|
||
// ----------------------------------------------------------------
|
||
|
||
void TLiquidazione_app::set_firm(_DescrItem& d)
|
||
{
|
||
TString tim_title(80);
|
||
tim_title << "Liquidazione IVA";
|
||
|
||
if (d._f1 == 13)
|
||
tim_title << format(": Riepilogo Annuale %s",(const char*)_year);
|
||
else
|
||
{
|
||
if (d._s2 == "T")
|
||
tim_title << format(" del %d<> Trimestre %s", d._f1/3, (const char *) _year);
|
||
else
|
||
tim_title << format(" del mese di %s %s", itom(d._f1),
|
||
(const char*)_year);
|
||
}
|
||
|
||
reset_header();
|
||
int soh = 1;
|
||
if (!_isregis)
|
||
{
|
||
set_header(soh++,"Ditta %s %s@109gData @<@125gPag. @#",
|
||
(const char*)(d._s0), (const char*)(d._s1));
|
||
set_header(soh++,"");
|
||
}
|
||
set_header(soh++,sep);
|
||
set_header(soh++,"%s@102gFrequenza %s",
|
||
(const char*)tim_title,
|
||
d._s2 == "T" ? "Trimestrale" : "Mensile");
|
||
set_header(soh++,sep);
|
||
set_header(soh++,"");
|
||
|
||
// notify errors if any
|
||
int j = 0;
|
||
for (int i = 0; i < _errors.items(); i++)
|
||
{
|
||
_ErrItem& s = (_ErrItem&)_errors[i];
|
||
if (s._att == "ALL" && s._firm == d._s0)
|
||
{ j++; set_row(i+3, "@5g@b*** %s ***@r", (const char*)s._err); }
|
||
}
|
||
if (j) set_row(i+3,"");
|
||
}
|
||
|
||
|
||
void TLiquidazione_app::set_att(_DescrItem& d)
|
||
{
|
||
// set header
|
||
TString tim_title(78);
|
||
TString att_title(48);
|
||
|
||
// Bookmark
|
||
TString book_name(d._s3);
|
||
char flags = (char)d._f3;
|
||
|
||
if (flags == '1') book_name << " (servizi)";
|
||
else if (flags == '2') book_name << " (altre)";
|
||
else if (flags == 'M') book_name = "Riepilogo att. mista";
|
||
else if (flags == 'Q') book_name = "Riepilogo quater";
|
||
|
||
if (_firm_bookmark == -1)
|
||
_firm_bookmark = set_bookmark(d._s1);
|
||
_att_bookmark = set_bookmark(book_name, _firm_bookmark);
|
||
|
||
tim_title << "Liquidazione IVA";
|
||
|
||
if (d._f1 == 13)
|
||
{
|
||
if (d._s4 == "T" && !(d._f2)) // trimestrale e non benzinaro
|
||
tim_title << format(": Riepilogo Annuale %s",(const char*)_year);
|
||
else
|
||
tim_title << format(": Dichiarazione Annuale %s",(const char*)_year);
|
||
}
|
||
else
|
||
{
|
||
if (d._s4 == "T")
|
||
tim_title << format(" del %d<> Trimestre %s", d._f1/3, (const char *) _year);
|
||
else
|
||
tim_title << format(" del mese di %s %s", itom(d._f1),
|
||
(const char*)_year);
|
||
}
|
||
|
||
TString tipatt;
|
||
|
||
if (d._f0 > 0)
|
||
tipatt.format(d._f0 == 1 ? "SERVIZI" : "ALTRE ATTIVITA'");
|
||
|
||
if (d._s3.empty())
|
||
{
|
||
att_title = flags == 'M' ? "Riepilogo attivita' mista" :
|
||
"Riepilogo quater";
|
||
// att_title << d._s2;
|
||
}
|
||
else
|
||
att_title = format("Attivita' %s %s %s",
|
||
(const char*)(d._s2),
|
||
(const char*)(d._s3),
|
||
(const char*)tipatt);
|
||
|
||
reset_header();
|
||
int soh = 1;
|
||
if (!_isregis)
|
||
{
|
||
set_header(soh++,"Ditta %s %s@109gData @<@125gPag. @#",
|
||
(const char*)(d._s0), (const char*)(d._s1));
|
||
set_header(soh++,"");
|
||
}
|
||
set_header(soh++,sep);
|
||
set_header(soh++,"%s@55g%s", (const char*)tim_title, (const char*)att_title);
|
||
set_header(soh++,sep);
|
||
set_header(soh++,"");
|
||
|
||
// notify errors if any
|
||
int j = 0;
|
||
for (int i = 0; i < _errors.items(); i++)
|
||
{
|
||
_ErrItem& s = (_ErrItem&)_errors[i];
|
||
if (d._s2 == s._att && s._firm == d._s0)
|
||
{ j++; set_row(i+10, "@5g@b*** %s ***@r", (const char*)s._err); }
|
||
}
|
||
if (j) set_auto_ff(TRUE);
|
||
}
|
||
|
||
|
||
void TLiquidazione_app::set_plafond(_DescrItem& d)
|
||
{
|
||
//if (_isregis) return;
|
||
if (_isregis && _isfinal) return;
|
||
|
||
set_bookmark("Quadro plafond", _att_bookmark);
|
||
|
||
real r1 = d._r2 - d._r1 - d._r0;
|
||
real r2 = d._r5 - d._r4 - d._r3;
|
||
real r3 = d._r8 - d._r7 - d._r6;
|
||
|
||
set_print_zero(TRUE);
|
||
|
||
set_row(1,"QUADRO RELATIVO ALLA DISPONIBILITA' ED ALL'UTILIZZO "
|
||
"MENSILE DEI PLAFONDS");
|
||
|
||
set_row(2,""); set_row(3,"");
|
||
set_row(4,"Art. 8 1<> comma lettere a-b@31gDisponibile@48g%r",
|
||
&(d._r2));
|
||
set_row(5,"Utilizzato all'interno@48g%r", &(d._r0));
|
||
set_row(6,"Utilizzato per l'importazione@48g%r@69gRiporto@78g%r",
|
||
&(d._r1), &r1);
|
||
|
||
set_row(7,"");
|
||
set_row(8,"Art. 8bis 1<> comma@31gDisponibile@48g%r",
|
||
&(d._r5));
|
||
set_row(9,"Utilizzato all'interno@48g%r", &(d._r3));
|
||
set_row(10,"Utilizzato per l'importazione@48g%r@69gRiporto@78g%r",
|
||
&(d._r4), &(r2));
|
||
|
||
set_row(11,"");
|
||
set_row(12,"Art. 9 1<> comma@31gDisponibile@48g%r",
|
||
&(d._r8));
|
||
set_row(13,"Utilizzato all'interno@48g%r", &(d._r6));
|
||
set_row(14,"Utilizzato per l'importazione@48g%r@69gRiporto@78g%r",
|
||
&(d._r7), &r3);
|
||
|
||
set_print_zero(FALSE);
|
||
set_auto_ff();
|
||
}
|
||
|
||
void TLiquidazione_app::set_liqacc(_DescrItem& d)
|
||
{
|
||
real r1 = d._r0 + d._r1 + d._r2 + d._r4;
|
||
real r2 = d._r5;// + d._r10; //MI2258 (A me sembra una cagata, ma con certa gente non si riesce a parlare)
|
||
real r3 = r2 + d._r9 + d._r7;
|
||
if ((d._r3).sign() > 0) r1 += d._r3;
|
||
else r3 += abs(d._r3);
|
||
|
||
set_row(1,""); set_row(2,""); set_row(3,""); set_row(4,"");
|
||
set_row(5,"@11gCALCOLO ACCONTO SU OPERAZIONI EFFETTUATE");
|
||
set_row(6,"");
|
||
set_row(7,"@72gCredito@90gDebito"); set_row(8,"");
|
||
if (!_isdiffacc)
|
||
set_row(9,"@11gIva sulle operazioni annotate fino al 20 Dicembre@81g%r",
|
||
&(d._r0));
|
||
else set_row(9,"@11gIva sulle operazioni di vendita@81g%r",
|
||
&(d._r0));
|
||
int i = 10;
|
||
if (!_isdiffacc)
|
||
{
|
||
set_row(i++,"@11gIva su operazioni fino al 20 Dic., ma non fatturate@81g%r",
|
||
&(d._r1));
|
||
set_row(i++,"@11gIva su operazioni fino al 20 Dic., ma non annotate@81g%r",
|
||
&(d._r2));
|
||
}
|
||
set_row(i,"@11gRettifiche iva a debito");
|
||
if (d._r3.sign() > 0)
|
||
set_row(i,"@81g%r", &(d._r3));
|
||
i++;
|
||
set_row(i++,"@11gIva chiesta a rimborso@81g%r", &(d._r4));
|
||
set_row(i++,"@11gRISULTATO@81g%r", &r1);
|
||
|
||
if (!_isdiffacc)
|
||
set_row(i++,"@11gIva sugli acquisti annotati fino al 20 Dicembre@64g%r",
|
||
&r2);
|
||
else set_row(i++,"@11gIva sulle operazioni di acquisto@64g%r", &r2);
|
||
if (d._r6 != ZERO)
|
||
set_row(i++,"@11gmeno perc. di prorata pari a lire %r", &(d._r6));
|
||
set_row(i++, "@11gCredito precedente@64g%r", &(d._r9));
|
||
set_row(i, "@11gRettifiche iva a credito");
|
||
if ((d._r3).sign() <= 0)
|
||
{
|
||
real ab = abs(d._r3);
|
||
set_row(i,"@64g%r", &ab);
|
||
}
|
||
i++;
|
||
set_row(i++,"@11gRISULTATO@64g%r", &r3);
|
||
if ((d._r8).sign() < 0)
|
||
{
|
||
real ab = abs(d._r8);
|
||
set_row(i++,"@23gCREDITO DA EVIDENZIARE@64g%r", &ab);
|
||
}
|
||
else if ((d._r8).sign() > 0 && d._r8 > _ver->get(I_ACCONTOIVA))
|
||
set_row(i++,"@23gACCONTO DA VERSARE@81g%r", &(d._r8));
|
||
else if ((d._r8).sign() > 0 && d._r8 <= _ver->get(I_ACCONTOIVA))
|
||
set_row(i++,"@23gACCONTO DA NON VERSARE@64g%r", &(d._r8));
|
||
|
||
set_auto_ff();
|
||
}
|
||
|
||
void TLiquidazione_app::set_pim_head(_DescrItem& d)
|
||
{
|
||
set_bookmark("Riepilogo progressivi", _att_bookmark);
|
||
if (d._f0)
|
||
{
|
||
set_row(1," Cod.@41gVENDITE@71gCORRISPETTIVI");
|
||
set_row(2," IVA Descrizione@30gImponibile@49gImposta@63gImponibile@82gImposta");
|
||
}
|
||
else
|
||
{
|
||
set_row(1," Cod.@41gVENDITE@71gCORRISPETTIVI@106gACQUISTI");
|
||
set_row(2," IVA Descrizione@30gImponibile@49gImposta@63gImponibile"
|
||
"@82gImposta@96gImponibile@115gImposta");
|
||
}
|
||
set_row(3,"");
|
||
}
|
||
|
||
void TLiquidazione_app::set_pim(_DescrItem& d)
|
||
{
|
||
// succede con le autocazzate non residenti non movimentate eccetera
|
||
const bool a = (d._r0 + d._r1) == ZERO;
|
||
const bool b = (d._r2 + d._r3) == ZERO;
|
||
const bool c = (d._r4 + d._r5) == ZERO;
|
||
|
||
if (a && b && c)
|
||
return;
|
||
|
||
int rw = 1;
|
||
if (d._s1 == "AF") //Il dio sistema colpisce ancora, non va bene A35, ma AF...
|
||
d._s2 = "Artt.17c3/74c1"; // La descrizione non la metto uguale perche' cosi e' piu' fika
|
||
else if (d._s1 == "A13") // Sempre per merito del dio sistema ho dovuto aggiungere A13.
|
||
d._s2 = "Art.40c5/6/8 a.i.";
|
||
else if (d._s0 == "74TER")
|
||
rw++;
|
||
else
|
||
{
|
||
look_iva(d._s1);
|
||
d._s2 = _iva->get("S0");
|
||
if (d._s2.len() > 19) d._s2.cut(19);
|
||
}
|
||
|
||
if (d._f0) // e' il primo: non fa piu' nulla perche' l'intestazione
|
||
// viene fatta comunque da set_pim_head
|
||
{}
|
||
|
||
set_row(rw++,"%4s %s@25g%r@41g%r@58g%r@74g%r@91g%r@107g%r",
|
||
(const char*)d._s1,
|
||
(const char*)d._s2,
|
||
&(d._r0),
|
||
&(d._r1),
|
||
&(d._r2),
|
||
&(d._r3),
|
||
&(d._r4),
|
||
&(d._r5));
|
||
}
|
||
|
||
void TLiquidazione_app::set_plm(_DescrItem& d)
|
||
{
|
||
int rw = 1;
|
||
if (!(d._r0.is_zero() &&
|
||
d._r1.is_zero() &&
|
||
d._r2.is_zero() &&
|
||
d._r3.is_zero() &&
|
||
d._r4.is_zero() &&
|
||
d._r5.is_zero()))
|
||
{
|
||
set_row(rw++,""); set_row(rw++,"");
|
||
set_row(rw++,"Totale@25g%r@41g%r@58g%r@74g%r@91g%r@107g%r",
|
||
&(d._r0),
|
||
&(d._r1),
|
||
&(d._r2),
|
||
&(d._r3),
|
||
&(d._r4),
|
||
&(d._r5));
|
||
set_row(rw++,"");
|
||
}
|
||
if (!(d._r7.is_zero() && d._r8.is_zero()))
|
||
{
|
||
set_row(rw++,"Totali acquisti indeducibili per art.19@91g%r@107g%r",
|
||
&(d._r7), &(d._r8));
|
||
}
|
||
if (! (d._r9.is_zero() && d._r10.is_zero()))
|
||
{
|
||
set_row(rw++, "Totale acquisti indeducibili su ricavi esenti@91g%r@107g%r",
|
||
&(d._r9),
|
||
&(d._r10));
|
||
}
|
||
|
||
real acq_pint(d._s0);
|
||
real acq_pint_iva(d._s1);
|
||
|
||
if (! (acq_pint.is_zero() && acq_pint_iva.is_zero()))
|
||
{
|
||
set_row(rw++, "Totale acquisti indeducibili per passaggi interni@91g%r@107g%r",
|
||
&acq_pint,
|
||
&acq_pint_iva);
|
||
}
|
||
|
||
real tot1 = d._r7 + d._r4 + d._r9 + acq_pint;
|
||
real tot2 = d._r8 + d._r5 + d._r10 + acq_pint_iva;
|
||
|
||
if (tot1 != d._r4 || tot2 != d._r5)
|
||
{
|
||
// i corrispettivi finiscono nelle vendite
|
||
d._r0 += d._r2;
|
||
d._r1 += d._r3;
|
||
d._r2 = ZERO;
|
||
d._r3 = ZERO;
|
||
// per ora lascio r2 e r3 anche se sono sempre 0
|
||
set_row(rw++, "");
|
||
set_row(rw++,"Totale Generale IVA@25g%r@41g%r@58g%r@74g%r@91g%r@107g%r",
|
||
&(d._r0),
|
||
&(d._r1),
|
||
&(d._r2),
|
||
&(d._r3),
|
||
&tot1,
|
||
&tot2);
|
||
}
|
||
}
|
||
|
||
|
||
void TLiquidazione_app::set_pumpam(_DescrItem& d)
|
||
{
|
||
bool printed = FALSE;
|
||
|
||
// d._f1 dice se c'era qualcosa sopra nella stessa pagina
|
||
real spgn(d._s2);
|
||
real spgn_iva(d._s3);
|
||
|
||
TToken_string tt(d._s4); // Token String
|
||
TToken_string dp(d._s0); // Due Palle
|
||
real aqsi(tt.get(0));
|
||
real aqsv(tt.get(1));
|
||
real vnsi(tt.get(2));
|
||
real vnsv(tt.get(3));
|
||
real ammindi(dp.get(1));
|
||
real ammindv(dp.get(2));
|
||
|
||
int row = 5;
|
||
|
||
if (!(aqsi.is_zero() && aqsv.is_zero()))
|
||
{
|
||
printed = TRUE;
|
||
set_row(row++, "Acquisti in sospensione di imposta@50g%r@69g%r",
|
||
&aqsi,
|
||
&aqsv);
|
||
}
|
||
if (!(vnsi.is_zero() && vnsv.is_zero()))
|
||
{
|
||
printed = TRUE;
|
||
set_row(row++, "Vendite in sospensione di imposta@50g%r@69g%r",
|
||
&vnsi,
|
||
&vnsv);
|
||
}
|
||
if (!(d._r8.is_zero() && d._r9.is_zero()))
|
||
{
|
||
printed = TRUE;
|
||
set_row(row++, "Cessione beni ammortizzabili@50g%r@69g%r",
|
||
&(d._r8),
|
||
&(d._r9));
|
||
}
|
||
if (! (d._r4.is_zero() && d._r5.is_zero()))
|
||
{
|
||
printed = TRUE;
|
||
set_row(row++, "Acquisto beni destinati alla rivendita@50g%r@69g%r",
|
||
&(d._r4),
|
||
&(d._r5));
|
||
}
|
||
if (! (ammindi.is_zero() && ammindv.is_zero()))
|
||
{
|
||
printed = TRUE;
|
||
set_row(row++, "Acquisto beni ammortizzabili IVA indetraibile@50g%r@69g%r",
|
||
&ammindi,
|
||
&ammindv);
|
||
}
|
||
if (! (d._r0.is_zero() && d._r1.is_zero()))
|
||
{
|
||
printed = TRUE;
|
||
set_row(row++, "Acquisto beni ammortizzabili IVA detraibile@50g%r@69g%r",
|
||
&(d._r0),
|
||
&(d._r1));
|
||
}
|
||
if (!(d._r6.is_zero() && d._r7.is_zero()))
|
||
{
|
||
printed = TRUE;
|
||
set_row(row++, "Altri beni strumentali acquisiti in leasing@50g%r@69g%r",
|
||
&(d._r6),
|
||
&(d._r7));
|
||
}
|
||
if (!(d._r2.is_zero() && d._r3.is_zero()))
|
||
{
|
||
printed = TRUE;
|
||
real rn = d._r2 * real(DETRAZIONE_6PERCENTO);
|
||
set_row(row++, "Acquisto beni soggetti a detrazione (6%%)"
|
||
"@50g%r@69g%r@86g%r",
|
||
&(d._r2),
|
||
&(d._r3),
|
||
&rn);
|
||
}
|
||
if (!(spgn.is_zero() && spgn_iva.is_zero()))
|
||
{
|
||
printed = TRUE;
|
||
set_row(row++, "Spese generali@50g%r@69g%r",
|
||
&spgn,
|
||
&spgn_iva);
|
||
}
|
||
if (d._f0)
|
||
{
|
||
printed = TRUE;
|
||
real prc(dp.get(0));
|
||
|
||
set_row(row++, "%% PRO-RATA ed IVA non detraibile (%s%%)@69g%r",
|
||
(const char*)prc.string(), &(d._r11));
|
||
}
|
||
|
||
// items vari per dichiarazione annuale
|
||
for (int i = 0; i < d._arr.items(); i++)
|
||
{
|
||
_DescrItem& dd = (_DescrItem&)d._arr[i];
|
||
printed |= set_annual(dd);
|
||
}
|
||
|
||
if (printed)
|
||
{
|
||
set_bookmark("Altri dati", _att_bookmark);
|
||
|
||
set_row(1,"");
|
||
set_row(2,"");
|
||
set_row(3,"ALTRI DATI RELATIVI ALLA DICHIARAZIONE@55gimponibile"
|
||
"@77gimposta@91gdetrazione");
|
||
set_row(4,"");
|
||
}
|
||
else /* if (!d._f1) */
|
||
set_row(1,"");
|
||
|
||
// form feed
|
||
/* if (printed || !d._f1) */ set_auto_ff(TRUE);
|
||
}
|
||
|
||
void TLiquidazione_app::set_grand(_DescrItem& d)
|
||
{
|
||
real& risultato = d._r0;
|
||
real& rimborso = d._r1;
|
||
real& cred_cost = d._r2;
|
||
real& deb_mens = d._r3;
|
||
real& rettifiche = d._r5;
|
||
real& detrazioni = d._r6;
|
||
real& interessi = d._r7;
|
||
real& versamenti = d._r8;
|
||
real& vers_int = d._r9;
|
||
real& conguaglio = d._r10;
|
||
TToken_string tt(d._s0);
|
||
real iva_vend(tt.get(0));
|
||
real iva_acq(tt.get(1));
|
||
real cred_prec(tt.get(2));
|
||
real debt_prec(tt.get(3));
|
||
|
||
real acc_dec(d._s1);
|
||
real res_cred(d._s2);
|
||
real res_debt(d._s3);
|
||
real rett_debt(0.0);
|
||
real rett_cred(0.0);
|
||
real& interesse = d._r11;
|
||
|
||
if (rettifiche.sign() > 0) rett_debt = rettifiche;
|
||
if (rettifiche.sign() < 0) rett_cred = -rettifiche;
|
||
|
||
set_bookmark("Riepilogativo liquidazione", _firm_bookmark);
|
||
|
||
set_row(1,""); set_row(2,""); set_row(3,""); set_row(4,"");
|
||
set_row(5,"@11g@bCALCOLO LIQUIDAZIONE D'IMPOSTA@r");
|
||
set_row(6,""); int rw = 7;
|
||
set_row(rw++," @66gCredito@84gDebito"); set_row(rw++,"");
|
||
set_row(rw++,"@11gIva sulle operazioni di vendita@75g%r", &iva_vend);
|
||
set_row(rw++,"%s@11gRettifiche IVA a debito%s@75g%r",
|
||
_is_visliq ? "$[r]" : "", _is_visliq ? "$[n]" : "", &rett_debt);
|
||
set_row(rw++,"%s@11gIva chiesta a rimborso%s@75g%r",
|
||
_is_visliq ? "$[r]" : "", _is_visliq ? "$[n]" : "", &rimborso);
|
||
|
||
// conguaglio prorata
|
||
if (conguaglio.sign() > 0)
|
||
set_row(rw++,"@11gConguaglio pro-rata@75g%r", &conguaglio);
|
||
|
||
// debito liq. precedente < 50000
|
||
if (debt_prec > ZERO)
|
||
set_row(rw++,"@11gDebito da liquidazione precedente@75g%r", &debt_prec);
|
||
|
||
set_row(rw++,"@11gRISULTATO@75g%r", &res_debt);
|
||
set_row(rw++,"@11gIva sulle operazioni di acquisto@58g%r", &iva_acq);
|
||
if (_isannual || d._f1)
|
||
set_row(rw++,"@11gCredito inizio anno@58g%r", &cred_prec);
|
||
else
|
||
set_row(rw++,"@11gCredito precedente@58g%r", &cred_prec);
|
||
|
||
if (!acc_dec.is_zero())
|
||
set_row(rw++,"%s@11gVersamento acconto dicembre%s@58g%r",
|
||
_is_visliq ? "$[r]" : "", _is_visliq ? "$[n]" : "", &acc_dec);
|
||
|
||
if (!detrazioni.is_zero())
|
||
set_row(rw++,"@11gUlteriori detrazioni@58g%r", &detrazioni);
|
||
|
||
set_row(rw++,"%s@11gRettifiche IVA a credito%s@58g%r",
|
||
_is_visliq ? "$[r]" : "", _is_visliq ? "$[n]" : "", &rett_cred);
|
||
|
||
// versamenti effettuati
|
||
if (!versamenti.is_zero() && (_month==13 || !_is_visliq))
|
||
{
|
||
set_row(rw++,"@11gVersamenti effettuati@58g%r", &versamenti);
|
||
}
|
||
// versamenti integrativi
|
||
if (!vers_int.is_zero() && !_is_visliq)
|
||
{
|
||
set_row(rw++,"@11gVersamenti integrativi@58g%r", &vers_int);
|
||
}
|
||
if (conguaglio.sign() < 0)
|
||
{
|
||
real cg = conguaglio;
|
||
cg = -cg;
|
||
set_row(rw++,"@11gConguaglio pro-rata@58g%r", &cg);
|
||
}
|
||
|
||
set_row(rw++,"@11gRISULTATO@58g%r", &res_cred);
|
||
|
||
// se non c'e' nulla da versare stampa solo una riga vuota
|
||
// Serve, non toglierla, stronzo.
|
||
if (risultato.is_zero())
|
||
set_row(rw++,"");
|
||
else
|
||
{
|
||
if (risultato.sign() < 0)
|
||
{
|
||
real iva = abs(risultato);
|
||
if (_isannual || _isriepilogo) iva.round(ROUND_MILLELIRE);
|
||
set_row(rw++,"@23gCREDITO ATTUALE@58g%r",&iva);
|
||
if (_is_visliq)
|
||
{ // se chiamata dalla visualizzazione mette 2 righe vuote se non vi sono interessi
|
||
// poiche' con le rettifiche a credito/debito posso volerle visualizzare
|
||
set_row(rw++,"");
|
||
set_row(rw++,"");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (_month == 13) interessi.round(ROUND_MILLELIRE);
|
||
real iva = risultato + interessi;
|
||
if (_isannual || _isriepilogo) iva.round(ROUND_MILLELIRE);
|
||
if (!iva.is_zero())
|
||
{
|
||
if (!interessi.is_zero())
|
||
{
|
||
set_row(rw++,"@23gIVA DOVUTA@75g%r",&risultato);
|
||
set_row(rw++,"@23gInteresse @33g%6.2r @41g%%@75g%r",&interesse, &interessi);
|
||
}
|
||
else
|
||
if (_is_visliq)
|
||
{ // vedi sopra...
|
||
set_row(rw++,"");
|
||
set_row(rw++,"");
|
||
}
|
||
if (iva >= IVA_DA_RIPORTARE || _isannual || _isriepilogo)
|
||
set_row(rw++,"@23gIVA DA VERSARE@75g%r",&iva);
|
||
else
|
||
set_row(rw++,"@23gIVA A DEBITO DA NON VERSARE@75g%r",&iva);
|
||
}
|
||
}
|
||
}
|
||
|
||
if (_is_visliq && _month != 13)
|
||
{
|
||
// stampa versamenti (anche 0) ad uso visualizzazione liquidazione IVA
|
||
rw ++;
|
||
set_row(rw++,"@11g$[r]Versamenti effettuati$[n]@58g%r", &versamenti);
|
||
set_row(rw++, "");
|
||
set_row(rw++, "");
|
||
}
|
||
|
||
if (!_is_visliq)
|
||
{
|
||
// descrizione rettifiche
|
||
if (!(d._s4.empty() && d._s5.empty()))
|
||
{
|
||
rw++;
|
||
set_row(rw++, "@11g@bDESCRIZIONE RETTIFICHE@r");
|
||
rw++;
|
||
}
|
||
if (!d._s4.empty()) { set_row(rw++, "@11g%t", &(d._s4)); }
|
||
if (!d._s5.empty()) { set_row(rw++, "@11g%t", &(d._s5)); }
|
||
}
|
||
|
||
// rapportini per rimborso infraannuale
|
||
// non si stampano se la stampa serve per la visualizz.
|
||
//modifica del 07/07/1995
|
||
//*** solo in st.di prova in coda ai registri deve scendere
|
||
// il prospetto di rimborso
|
||
//*** sempre (cioe' in bollato e in prova) deve scendere
|
||
// il prospettino versamento (boh???????????????????)
|
||
//if (d._arr.items() > 0 && !_is_visliq && !_isregis)
|
||
if (d._arr.items() > 0 && !_is_visliq)
|
||
{
|
||
for (int i = 0; i < d._arr.items(); i++)
|
||
{
|
||
_DescrItem& di = (_DescrItem&)d._arr[i];
|
||
|
||
if (di._flags == RIMBORSO)
|
||
{
|
||
if (!_isregis || (_isregis && !_isfinal))
|
||
{
|
||
set_print_zero(TRUE);
|
||
set_row(rw++,"");
|
||
set_row(rw++,"");
|
||
|
||
set_bookmark("Prospetto di rimborso", _firm_bookmark);
|
||
|
||
set_row(rw++, " PROSPETTO DI RIMBORSO");
|
||
|
||
if (di._f0)
|
||
{
|
||
// esenti e non imponibili
|
||
set_row(rw++,"");
|
||
set_row(rw++,"1) Soggetto con quota di operazioni esenti e non"
|
||
" imponibili superiore al 25%%");
|
||
|
||
real perc = (di._r0/di._r1); perc *= CENTO; perc.ceil(ROUND_LIRA);
|
||
|
||
TString sep(strlen(REAL_PICTURE)+2); sep.fill('-');
|
||
set_row(rw++,"");
|
||
set_row(rw++,"@26gTotale operazioni esenti e non imp.@66g%r",
|
||
&(di._r0));
|
||
set_row(rw++,"@66g%t x 100 = %3r%%", &sep, &perc);
|
||
set_row(rw++,"@26gVolume di affari lordo@66g%r", &(di._r1));
|
||
set_row(rw++,"");
|
||
}
|
||
|
||
if (di._f1)
|
||
{
|
||
set_row(rw++,"");
|
||
set_row(rw++,"2) Soggetto con acquisti ad aliquota media "
|
||
"superiore a quella delle vendite");
|
||
TString sep(strlen(REAL_PICTURE)+2); sep.fill('-');
|
||
set_row(rw++,"");
|
||
set_row(rw++,"@26gTotale imposte sugli acquisti@66g%r", &(di._r5));
|
||
set_row(rw++,"@66g%t x 100 = %5.2r%%", &sep, &(di._r7));
|
||
set_row(rw++,"@26gTotale imponibili sugli acquisti@66g%r",
|
||
&(di._r3));
|
||
set_row(rw++,"");
|
||
set_row(rw++,"@26gTotale imposte sulle vendite@66g%r", &(di._r4));
|
||
set_row(rw++,"@66g%t x 100 = %5.2r%%", &sep, &(di._r6));
|
||
set_row(rw++,"@26gTotale imponibili sulle vendite@66g%r", &(di._r2));
|
||
}
|
||
|
||
set_print_zero(FALSE);
|
||
}
|
||
}
|
||
// prospettino versamento
|
||
else if (di._flags == DELEGA)
|
||
{
|
||
int rr = rw;
|
||
/*
|
||
if (rw < (printer().formlen() - 10))
|
||
rw = printer().formlen() - 10;
|
||
*/
|
||
//11/10/1995
|
||
int cont = 10;
|
||
if (di._s4 == "ACC")
|
||
{
|
||
TToken_string ac(di._s5);
|
||
if (!ac.empty_items() && _stampa_vers)
|
||
cont = 14;
|
||
}
|
||
if (rw < (printer().formlen() - cont))
|
||
rw = printer().formlen() - cont;
|
||
//fine
|
||
|
||
for (int i = rr; i < rw; i++) set_row(i,"");
|
||
|
||
set_bookmark("Riepilogo versamenti", _firm_bookmark);
|
||
|
||
TString dt = di._d0.string();
|
||
TString vr = di._r0.string("###.###.###.###");
|
||
|
||
// la cincia non vuole lo zero
|
||
if (atof(vr) == 0.0 && vr[vr.len()-1] == '0') vr[vr.len()-1] = ' ';
|
||
|
||
//11/10/1995
|
||
if (di._s4 == "ACC")
|
||
{
|
||
TToken_string ac(di._s5);
|
||
if (!ac.empty_items())
|
||
{
|
||
TString dt (ac.get(5));
|
||
real app (ac.get(4));
|
||
TString vr (app.string("###.###.###.###"));
|
||
TString loc (ac.get(0));
|
||
TString ban (ac.get(1));
|
||
TString abi (ac.get(2));
|
||
TString cab (ac.get(3));
|
||
if (atof(vr) == 0.0 && vr[vr.len()-1] == '0') vr[vr.len()-1] = ' ';
|
||
set_row(rw++, "- ACCONTO DICEMBRE -");
|
||
set_row(rw, " Versamento di L. %s effettuato il %s",
|
||
(const char*)vr,
|
||
(const char*)dt);
|
||
if (di._f1 == 1)
|
||
{
|
||
set_row(rw++, "@68gdiretto all'ufficio IVA di %s", (const char*)loc);
|
||
set_row(rw++, "@68gtramite %s", (const char*)ban);
|
||
set_row(rw++, "@68gcodice azienda %s codice dipendenza %s",
|
||
(const char*)abi, (const char*)cab);
|
||
}
|
||
else if (di._f1 == 2)
|
||
{
|
||
set_row(rw++, "@68gdiretto al Ministero delle Finanze");
|
||
set_row(rw++, "@68gConcessione %s", (const char*)loc);
|
||
}
|
||
}
|
||
//if (_stampa_vers) set_row(rw++, "- SALDO -");
|
||
}
|
||
|
||
if (_stampa_acc && _stampa_vers) set_row(rw++, "- SALDO -");
|
||
|
||
if (_stampa_vers)
|
||
{
|
||
set_row(rw, " Versamento di L. %s effettuato il %s",
|
||
(const char*)vr,
|
||
(const char*)dt);
|
||
if (di._f0 == 1)
|
||
{
|
||
set_row(rw++, "@68gdiretto all'ufficio IVA di %s",
|
||
(const char*)(di._s0));
|
||
set_row(rw++, "@68gtramite %s", (const char*)(di._s1));
|
||
set_row(rw++, "@68gcodice azienda %s codice dipendenza %s",
|
||
(const char*)(di._s2), (const char*)(di._s3));
|
||
}
|
||
else if (di._f0 == 2)
|
||
{
|
||
set_row(rw++, "@68gdiretto al Ministero delle Finanze");
|
||
set_row(rw++, "@68gConcessione %s", (const char*)(di._s0));
|
||
}
|
||
else
|
||
{
|
||
set_row(rw++, "@68gdiretto");
|
||
set_row(rw++, "@68gtramite");
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
if (!_is_visliq) set_auto_ff(TRUE);
|
||
else set_auto_ff(FALSE);
|
||
|
||
_firm_bookmark = -1;
|
||
}
|
||
|
||
|
||
bool TLiquidazione_app::set_annual(_DescrItem& d)
|
||
{
|
||
// chiamata internamente a set_pims
|
||
bool ret = FALSE;
|
||
|
||
int row = get_maxrow()+1;
|
||
//14/12/1995. Correzione errore MI0952
|
||
if (row == 1) row = 4;
|
||
//fine
|
||
|
||
if (d._f0 & IS_PRORATA)
|
||
{
|
||
// non lo ha stampato prima se annuale, perche' vladimiro il nefido
|
||
// pretende l'assurdo aggiornamento della perc. a quella nuova
|
||
|
||
//set_row(++row, "%% PRO-RATA ed IVA non detraibile (%s%%)@69g%r",
|
||
// (const char*)(d._r2.string()), &(d._r6));
|
||
set_row(++row,"CALCOLO DELLA PERCENTUALE DI INDETRAIBILITA'");
|
||
row++;
|
||
|
||
set_bookmark("Calcolo pro-rata", _att_bookmark);
|
||
|
||
ret = TRUE;
|
||
set_print_zero(TRUE);
|
||
set_row(row++,"");
|
||
//set_row(row++,"CALCOLO DELLA PERCENTUALE DI INDETRAIBILITA'");
|
||
set_row(row++, "%% PRO-RATA ed IVA non detraibile (%s%%)@69g%r",
|
||
(const char*)(d._r2.string()), &(d._r6));
|
||
//set_row(row++,"");
|
||
set_row(row++,"B1 - Operazioni esenti, escluse da nr. 1 a 9 e 11 art. 10 %r", &(d._r1));
|
||
set_row(row++,"B2 - Operazioni esenti, di cui nr. 11 art. 10 %r", &(d._r4));
|
||
set_row(row++,"B3 - Operazioni esenti da nr. 1 a 9 art. 10 %r", &(d._r5));
|
||
set_row(row++,"Volume d'affari - B3 %r", &(d._r0));
|
||
set_row(row++,"Indetraibilita'@30g%r%%", &(d._r2));
|
||
if (!(d._r3.is_zero()))
|
||
{
|
||
const char* sss = d._r3.sign() < 0 ? "credito" : "debito";
|
||
real ccc = abs(d._r3);
|
||
set_row(row++,"Conguaglio a %s@30g%r", sss, &ccc);
|
||
}
|
||
set_print_zero(FALSE);
|
||
}
|
||
return ret;
|
||
}
|
||
|
||
|
||
void TLiquidazione_app::set_ventila(_DescrItem& d)
|
||
{
|
||
if (d._arr.items() == 0 || d._r0.is_zero())
|
||
return;
|
||
|
||
set_bookmark("Prospetto ventilazione", _att_bookmark);
|
||
|
||
set_row(1,"@54gPROSPETTO VENTILAZIONE");
|
||
set_row(2,"");
|
||
set_row(3,"");
|
||
set_row(4,"@10gTotale acquisti destinati alla rivendita@55g%r",
|
||
&(d._r0));
|
||
set_row(5,"@10gTotale dei corrispettivi da ventilare@55g%r",
|
||
&(d._r1));
|
||
real m = d._r1 / d._r0;
|
||
set_row(6,"@10gMoltiplicatore@59g%3.9r",&m);
|
||
set_row(7,"");
|
||
set_row(8,"@10gCod.");
|
||
set_row(9,"@10gIVA@17gDescrizione@48gAcquisti"
|
||
"@65gImponibile vendite@89gImposta vendite");
|
||
set_row(10,"");
|
||
int row = 11;
|
||
real t1, t2, t3;
|
||
for(int i = 0; i < d._arr.items(); i++)
|
||
{
|
||
_vDesc& vd = (_vDesc&)d._arr[i];
|
||
look_iva(vd._codiva);
|
||
TString s0 = _iva->get("S0");
|
||
set_row(row+i,"@8g%5s@17g%s@41g%r@68g%r@89g%r",
|
||
(const char*)vd._codiva,
|
||
(const char*)s0,
|
||
&(vd._acq),
|
||
&(vd._vnd),
|
||
&(vd._viv));
|
||
t1 += vd._acq;
|
||
t2 += vd._vnd;
|
||
t3 += vd._viv;
|
||
}
|
||
set_row(row+i+1,"");
|
||
set_row(row+i+2,"@10gTotale@41g%r@68g%r@89g%r",
|
||
&t1, &t2, &t3);
|
||
set_auto_ff(TRUE);
|
||
}
|
||
|
||
void TLiquidazione_app::set_regagr(_DescrItem& d)
|
||
{
|
||
set_print_zero(TRUE);
|
||
|
||
real& agr_1 = d._r0;
|
||
real& agr_2 = d._r1;
|
||
real& agr_3 = d._r2;
|
||
real& agr_4 = d._r3;
|
||
real& agr_5 = d._r4;
|
||
real& agr_6 = d._r5;
|
||
real& agr_7 = d._r6;
|
||
real& agr_1i = d._r7;
|
||
real& agr_2i = d._r8;
|
||
real& pdetr = d._r9;
|
||
real& ivadt = d._r10;
|
||
|
||
real ara = agr_5 + agr_6;
|
||
real arn = agr_3 + agr_4;
|
||
|
||
// percentuale detraibilita'
|
||
// real pdetr = ();
|
||
set_bookmark("Prospetto regime agricolo", _att_bookmark);
|
||
|
||
set_row(1,"@50gPROSPETTO REGIME AGRICOLO");
|
||
set_row(2,"");
|
||
set_row(3, "Cessioni in regime agricolo (Tabella A/I)@54g%r",&agr_1);
|
||
set_row(4, "");
|
||
set_row(5, "Cessioni non in regime agricolo@54g%r",&agr_2);
|
||
set_row(6, "");
|
||
set_row(7, "Acquisti in regime agricolo@54g%r",&ara);
|
||
set_row(8, "");
|
||
set_row(9, "Acquisti non in regime agricolo@54g%r",&arn);
|
||
set_row(10, "... di cui beni ammortizzabili@54g%r",&agr_4);
|
||
set_row(11, "");
|
||
set_row(12, "Acquisti ad uso promiscuo@54g%r",&agr_7);
|
||
|
||
if (/*agr_7.sign() > 0*/ TRUE)
|
||
{ /* Il calcolo della percentuale e' stato spostato in describe_agricolo() */
|
||
TString up = agr_2i.string(".");
|
||
up << " x 100";
|
||
TString dn = agr_1i.string(".");
|
||
dn << " + " << agr_2i.string(".");
|
||
int ln = max(up.len(), dn.len()) + 2;
|
||
TString den(ln); den.fill('-');
|
||
up.center_just(ln); dn.center_just(ln);
|
||
|
||
set_row(13, "");
|
||
set_row(14, "@31g%s", (const char*)up);
|
||
set_row(15, "Percentuale di detraibilita'@31g%s = @54g%r",
|
||
(const char*)den,
|
||
&pdetr);
|
||
set_row(16, "@31g%s", (const char*)dn);
|
||
|
||
up = agr_7.string(".");
|
||
up << " x " << pdetr.string(".");
|
||
dn = "100";
|
||
if ((max(up.len(), dn.len()) + 2) > ln)
|
||
ln = max(up.len(), dn.len()) + 2;
|
||
TString den1(ln); den1.fill('-');
|
||
up.center_just(ln); dn.center_just(ln);
|
||
|
||
set_row(17, "");
|
||
set_row(18, "@31g%s", (const char*)up);
|
||
set_row(19, "Iva detraibile@31g%s = @54g%r",
|
||
(const char*)den1,
|
||
&ivadt);
|
||
set_row(20, "@31g%s", (const char*)dn);
|
||
}
|
||
|
||
set_auto_ff(TRUE);
|
||
set_print_zero(FALSE);
|
||
}
|
||
|
||
void TLiquidazione_app::set_viaggio(_DescrItem& d)
|
||
{
|
||
// the longest & stronzest
|
||
// Nel corso della scrittura di questa funzione
|
||
// Berlusconi + Fini + Bossi hanno vinto le elezioni
|
||
// ... lungo commento cancellato
|
||
|
||
real& corr_CEE = d._r0;
|
||
real& corr_misCEE = d._r1;
|
||
real& corr_noCEE = d._r2;
|
||
real& acq_CEE = d._r3;
|
||
real& acq_misCEE = d._r4;
|
||
real& acq_noCEE = d._r5;
|
||
real& acq_misnoCEE = d._r6;
|
||
real& perc_r = d._r7;
|
||
real& cred_cos = d._r8;
|
||
real& ivm = d._r9;
|
||
|
||
//real perc_r = (acq_misCEE * CENTO)/(acq_misCEE + acq_misnoCEE); perc_r.round(2);
|
||
//real ivm = (corr_misCEE * perc_r)/CENTO; ivm.round(ROUND_LIRA);
|
||
real tc = (corr_CEE + ivm);
|
||
real ta = (acq_CEE + acq_misCEE);
|
||
//real bi = tc - ta - cred_cos;
|
||
real& bi = d._r10;
|
||
real& dovuta = d._r11;
|
||
|
||
real tcc = corr_CEE + corr_noCEE + corr_misCEE;
|
||
real tco = acq_CEE + acq_noCEE + acq_misCEE + acq_misnoCEE;
|
||
real tma = acq_CEE + acq_misCEE;
|
||
// real rip = perc_r; rip.round(2);
|
||
// real cim = (d._r1 * d._r7)/CENTO; cim.round(ROUND_LIRA);
|
||
|
||
|
||
set_print_zero(TRUE);
|
||
|
||
set_bookmark("Prospetto 74 ter", _att_bookmark);
|
||
|
||
set_row(1,"");
|
||
set_row(2,"@54gRIEPILOGO 74 TER");
|
||
set_row(3,"");
|
||
set_row(4,"Ammontare dei corrispettivi relativi a viaggi eseguiti"
|
||
" interamente nella CEE .....................@100g%r", &(corr_CEE));
|
||
set_row(5,"Ammontare dei corrispettivi relativi a viaggi misti (dentro"
|
||
" e fuori CEE) ......................... @100g%r", &(corr_misCEE));
|
||
set_row(6,"Ammontare dei corrispettivi relativi a viaggi eseguiti"
|
||
" interamente fuori CEE ..................... @100g%r", &(corr_noCEE));
|
||
|
||
|
||
set_row(7,"");
|
||
set_row(8,"@56gTotale corrispettivi@100g%r", &tcc);
|
||
set_row(9,"");
|
||
|
||
set_row(10,"Ammontare dei costi relativi a viaggi interamente"
|
||
" svolti nella CEE ............................... @100g%r",
|
||
&(acq_CEE));
|
||
set_row(11,"Ammontare dei costi relativi a viaggi misti (per la"
|
||
" parte CEE) ................................... @100g%r",
|
||
&(acq_misCEE));
|
||
set_row(12,"Ammontare dei costi relativi a viaggi interamente"
|
||
" svolti fuori CEE ............................... @100g%r",
|
||
&(acq_noCEE));
|
||
set_row(13,"Ammontare dei costi relativi a viaggi misti (per la"
|
||
" parte fuori CEE) .............................@100g%r",
|
||
&(acq_misnoCEE));
|
||
|
||
|
||
set_row(14,"");
|
||
set_row(15,"@64gTotale costi@100g%r", &tco);
|
||
|
||
set_row(16,"");
|
||
set_row(17,"DETERMINAZIONE CORRISPETTIVI IMPONIBILI "
|
||
"RELATIVI A VIAGGI MISTI");
|
||
set_row(18,"");
|
||
|
||
// la bella frazioncina della percentuale di ripartizione
|
||
TString tmp(acq_misCEE.string(REAL_PICTURE)); tmp.ltrim();
|
||
TString up = tmp;
|
||
up << " x 100";
|
||
TString dn = tmp;
|
||
tmp = acq_misnoCEE.string(REAL_PICTURE); tmp.ltrim();
|
||
dn << " + " << tmp;
|
||
int ln = max(up.len(), dn.len()) + 2;
|
||
TString den(ln); den.fill('-');
|
||
up.center_just(ln); dn.center_just(ln);
|
||
|
||
// la bella frazioncina degli imponibili viaggi misti
|
||
TString tmp2 = corr_misCEE.string(REAL_PICTURE); tmp2.ltrim();
|
||
TString up2 = tmp2;
|
||
up2 << " x " << perc_r.string(2);
|
||
TString dn2 = "100";
|
||
int ln2 = max(up2.len(), 3) + 2;
|
||
TString den2(ln2); den2.fill('-');
|
||
up2.center_just(ln2); dn2.center_just(ln2);
|
||
|
||
// la gran frazionazza centrata e stupenda
|
||
int tot = 35 + ln + ln2;
|
||
int rem1 = (100 - tot)/2; if (rem1 < 0) rem1 = 0;
|
||
int pos1 = rem1 + 13;
|
||
int rem2 = pos1+ den.len() + 11;
|
||
int pos2 = rem2 + 20;
|
||
|
||
|
||
set_row(19,format("@%dg%%t@%dg%%t", pos1, pos2),
|
||
&up, &up2);
|
||
set_row(20,format("@%dgPerc. rip. = %%t = %%5.2r; @%dg"
|
||
"Imp. viaggi misti = %%t = @100g%%r",
|
||
rem1, rem2),
|
||
&den, &perc_r, &den2, &ivm);
|
||
set_row(21,format("@%dg%%t@%dg%%t", pos1, pos2),
|
||
&dn, &dn2);
|
||
|
||
real tmr = corr_CEE + ivm;
|
||
|
||
// whew, come dicono su Topolino
|
||
|
||
tmp = corr_CEE.string(REAL_PICTURE); tmp.ltrim();
|
||
up = "("; up << tmp << " + ";
|
||
tmp = ivm.string(REAL_PICTURE); tmp.ltrim();
|
||
up << tmp << ")";
|
||
den.fill('.',59-up.len());
|
||
set_row(23,"Ammontare dei corrispettivi imponibili@40g%t %t@100g%r",
|
||
&up, &den, &tmr);
|
||
|
||
// se e' l'annuale non ha senso altro
|
||
if (d._f1) return;
|
||
|
||
tmp = acq_CEE.string(REAL_PICTURE); tmp.ltrim();
|
||
up = "("; up << tmp << " + ";
|
||
tmp = acq_misCEE.string(REAL_PICTURE); tmp.ltrim();
|
||
up << tmp << ")";
|
||
den.fill('.',59-up.len());
|
||
set_row(24,"Ammontare dei costi deducibili@40g%t %t@100g%r",
|
||
&up, &den, &tma);
|
||
den.fill('.',60);
|
||
set_row(25,"Credito di costo precedente @40g%t@100g%r", &den, &(cred_cos));
|
||
|
||
tmp = tmr.string(REAL_PICTURE); tmp.ltrim();
|
||
up = "["; up << tmp << " - (";
|
||
tmp = tma.string(REAL_PICTURE); tmp.ltrim();
|
||
up << tmp << " + ";
|
||
tmp = d._r8.string(REAL_PICTURE); tmp.ltrim();
|
||
up << tmp << ")]";
|
||
den.fill('.',59-up.len());
|
||
|
||
set_row(26,"Base imponibile lorda@40g%t %t@100g%r", &up, &den, &bi);
|
||
set_row(27,"");
|
||
|
||
if (bi.sign() > 0)
|
||
{
|
||
real aliva = aliquota_agvia();
|
||
real alcnt = aliva + CENTO;
|
||
//real dovuta = (bi/(alcnt/CENTO)) * (aliva/CENTO);
|
||
//dovuta.ceil(ROUND_LIRA); // ceil voluto da MI3074
|
||
|
||
tmp = bi.string(REAL_PICTURE); tmp.ltrim();
|
||
up = tmp;
|
||
up << " x " << aliva.string(5,2);
|
||
dn = alcnt.string();
|
||
ln = max(up.len(), 3) + 2;
|
||
den.fill('-',ln);
|
||
up.center_just(ln); dn.center_just(ln);
|
||
|
||
tmp.fill('.', 59 - den.len());
|
||
|
||
set_row(28,"@40g%t",&up);
|
||
set_row(29,"IVA A DEBITO@40g%t %t@100g%r", &den, &tmp, &dovuta);
|
||
set_row(30,"@40g%t", &dn);
|
||
}
|
||
else if (bi.sign() < 0)
|
||
{
|
||
bi = abs(bi);
|
||
set_row(28,"");
|
||
set_row(29,"CREDITO DI COSTO DA RIPORTARE@100g%r", &bi);
|
||
}
|
||
|
||
set_print_zero(FALSE);
|
||
set_auto_ff(TRUE);
|
||
}
|
||
|
||
void TLiquidazione_app::set_acconto_p(_DescrItem& d)
|
||
{
|
||
//set_print_zero(TRUE);
|
||
|
||
const char* errmsg[3] = {
|
||
{"manca la tabella risultati liquidazione per l'anno corrente"},
|
||
{"manca la tabella risultati liquidazione per l'anno precedente"},
|
||
{"manca la tabella dichiarazione annuale per l'anno precedente"}};
|
||
|
||
set_row(1,"%t@7g%t",&(d._s0), &(d._s1));
|
||
if (d._f2)
|
||
set_row(1,"@50g@b*** %s ***@r", errmsg[d._f2 -1]);
|
||
else
|
||
{
|
||
if (d._f0) // base anno in corso
|
||
{
|
||
if (d._f1) // stampa base di calcolo
|
||
{
|
||
/***
|
||
real bc = d._r0;
|
||
if (bc.sign() < 0)
|
||
{
|
||
bc = abs(bc);
|
||
set_row(1,"@73g%r@86g%r@119g%s", &bc, &d._r1,
|
||
d._f3 ? "Si" : "No");
|
||
}
|
||
else
|
||
set_row(1,"@55g%r@86g%r@119g%s", &bc, &(d._r1),
|
||
d._f3 ? "Si" : "No");
|
||
***/
|
||
set_row(1,"@58g%r@74g%r@96g%r@122g%s", &(d._r3),
|
||
&(d._r2), &(d._r1), d._f3 ? "Si" : "No");
|
||
}
|
||
else set_row(1,"@62g%r@91g%s", &(d._r1), d._f3 ? "Si" : "No");
|
||
}
|
||
else //metodo storico
|
||
{
|
||
if (d._f1 && (d._r0).sign()>0) // stampa base di calcolo
|
||
set_row(1,"@58g%r@88g%r", &(d._r0), &(d._r1));
|
||
else
|
||
set_row(1,"@87g%r",&(d._r1));
|
||
}
|
||
}
|
||
//set_print_zero(FALSE);
|
||
}
|
||
|
||
void TLiquidazione_app::set_acchead_p(_DescrItem& d)
|
||
{
|
||
reset_header();
|
||
set_header(1,"Gestione IVA@109gData @<@125gPag. @#");
|
||
set_header(3,sep);
|
||
|
||
if (d._f0) // base anno in corso
|
||
{
|
||
set_header(2,"@40gCALCOLO ACCONTI IVA DICEMBRE %s "
|
||
"(base anno in corso)", (const char*) _year);
|
||
if (d._f1) // stampa base calcolo
|
||
{
|
||
set_header(4,"@58g------- Base di calcolo -------");
|
||
set_header(5,"Ditta@7gDenominazione@62gDebito@78gCredito"
|
||
"@94gACCONTO calcolato@115gLiq. differita");
|
||
set_header(6,sep);
|
||
set_header(7,"");
|
||
}
|
||
else
|
||
{
|
||
set_header(4,"Ditta@7gDenominazione@60gACCONTO calcolato"
|
||
"@84gLiq. differita");
|
||
set_header(5,sep);
|
||
set_header(6,"");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
set_header(2,"@40gCALCOLO ACCONTI IVA DICEMBRE %s", (const char*) _year);
|
||
set_header(5,sep);
|
||
set_header(6,"");
|
||
if (d._f1)
|
||
set_header(4,"Ditta@7gDenominazione@58gBase di calcolo"
|
||
"@86gACCONTO calcolato");
|
||
else
|
||
set_header(4,"Ditta@7gDenominazione@85gACCONTO calcolato");
|
||
}
|
||
}
|
||
|
||
|
||
// ---------------------------------------------------------------------
|
||
// Tabulato deleghe
|
||
// ---------------------------------------------------------------------
|
||
|
||
void TLiquidazione_app::set_deltab(_DescrItem& d, bool iscred)
|
||
{
|
||
reset_header();
|
||
int rw = 1;
|
||
static bool credpr;
|
||
|
||
if (iscred)
|
||
{
|
||
// set header
|
||
set_header(1,"ELENCO DITTE A CREDITO@30g%s %s@109gData @<@125gPag. @#",
|
||
d._f0 == 13 ? "Annuale " : itom(d._f0), (const char*)_year);
|
||
set_header(2,sep);
|
||
set_header(3,"@40gF@60gImporto a");
|
||
set_header(4,"Cod.@8gDenominazione@40gR@62gcredito");
|
||
set_header(5,sep);
|
||
set_header(6,"");
|
||
|
||
// set rows
|
||
for (int i = 0; i < d._arr.items(); i++)
|
||
{
|
||
TToken_string& tt = (TToken_string&)(d._arr)[i];
|
||
TString cod(tt.get(0));
|
||
TParagraph_string rgs(tt.get(1), 30);
|
||
TString diocantaro(rgs.get(0));
|
||
TString frq(tt.get(2));
|
||
real tp (tt.get(3));
|
||
real in (tt.get(4));
|
||
tp -= in;
|
||
tp = -tp;
|
||
set_row(rw++, "%-5s@8g%-30s@40g%1s@54g%r",
|
||
(const char*)cod, (const char*)diocantaro,
|
||
(const char*)frq, &tp);
|
||
for (int i = 1; i < rgs.items(); i++)
|
||
set_row(rw++, "@8g%-30s", (const char*)rgs.get(i));
|
||
}
|
||
}
|
||
else
|
||
{
|
||
// set header
|
||
set_header(1,"ELENCO DITTE A DEBITO@30g%s %s@109gData @<@125gPag. @#",
|
||
d._f0 == 13 ? "Annuale " : itom(d._f0), (const char*)_year);
|
||
set_header(2,sep);
|
||
set_header(3,"@40gF@60gImporto da@73gCodice@83gCod.");
|
||
set_header(4,"Cod.@8gDenominazione@40gR Numero telefonico@63gversare Banca Dip. Con.");
|
||
set_header(5,sep);
|
||
set_header(6,"");
|
||
|
||
|
||
// set rows
|
||
for (int i = 0; i < d._arr.items(); i++)
|
||
{
|
||
TToken_string& tt = (TToken_string&)(d._arr)[i];
|
||
TString cod(tt.get(0));
|
||
TParagraph_string rgs(tt.get(1), 30);
|
||
TString diocantaro(rgs.get(0));
|
||
TString frq(tt.get(2));
|
||
real tp (tt.get(3));
|
||
real in (tt.get(4));
|
||
TString abi(tt.get(5));
|
||
TString cab(tt.get(6));
|
||
TString con(tt.get(7));
|
||
TString tel(tt.get(8));
|
||
if (!tel.blank())
|
||
tel << '/';
|
||
tel << tt.get(9);
|
||
TString desc(tt.get(10));
|
||
|
||
//tp += in; //comprendeva gia' gli interessi!
|
||
|
||
set_row(rw++, "%-5s@8g%-30s@40g%1s %s @55g%r %5s %5s %3s %-.45s",
|
||
(const char*)cod, (const char*)diocantaro, (const char*)frq,
|
||
(const char*)tel, &tp, (const char*)abi,
|
||
(const char*)cab, (const char*)con, (const char*)desc);
|
||
|
||
for (int i = 1; i < rgs.items(); i++)
|
||
set_row(rw++, "@8g%-30s", (const char*)rgs.get(i));
|
||
}
|
||
}
|
||
set_auto_ff(TRUE);
|
||
}
|