git-svn-id: svn://10.65.10.50/branches/R_10_00@23113 c028cbd2-c16b-5b4b-a496-9718f37d4682

This commit is contained in:
guy 2015-06-17 07:15:31 +00:00
parent be35d6065c
commit 6c86e3468a
2 changed files with 59 additions and 33 deletions

View File

@ -235,7 +235,7 @@ void TArchive_doc::archivia(const TMask& m)
orig << name;
dest << SLASH << name;
fcopy(orig, dest);
xvt_fsys_removefile(orig); //elimina il file di origine dopo averlo copiato
xvt_fsys_remove_file(orig); //elimina il file di origine dopo averlo copiato
}
}
}

View File

@ -31,7 +31,6 @@ void TMovimentoPN_VE::destroy_iva_row(int i)
TImporto TMovimentoPN_VE::real2imp(const real& r, char row_type)
{
CHECK(_caus, "Orgggssbb..._caus pointer is NULL!");
bool dare = false;
if (row_type == 'S')
dare = _caus->sezione_ritsoc() == 'D';
@ -142,7 +141,7 @@ int TMovimentoPN_VE::set_cg_rec(int n, const TImporto& imp, const TBill& conto,
else
{
int pos = -1;
if (tipo == 'F')
if (tipo == 'F' || tipo == '2')
{
pos = type2pos('D');
if (pos == -1)
@ -188,32 +187,32 @@ void TMovimentoPN_VE::enter_row(int i, const TString& descr_cr)
TRectype& cur = iva(i);
const TString4 tipodet = cur.get(RMI_TIPODET);
const TString4 zanicchi(cur.get(RMI_CODIVA)); // Codice IVA
const int anno = lfile().curr().get_date(MOV_DATAREG).year();
const TString4 zanicchi = cur.get(RMI_CODIVA); // Codice IVA
real imponibile = cur.get_real(RMI_IMPONIBILE);
real imposta = cur.get_real(RMI_IMPOSTA);
real imposta = cur.get_real(RMI_IMPOSTA);
if (imposta.is_zero() && _caus->corrispettivi()) // In caso di corrispettivi ...
{
const TCodiceIVA i(zanicchi);
imposta = i.scorpora(imponibile); // ... scorpora imposta dall'imponibile
imposta = i.scorpora(imponibile); // ... scorpora imposta dall'imponibile
}
// Calcola riga causale col conto opportuno
const int anno = curr().get_date(MOV_DATAREG).year();
real imp, impind, iva, ivaind;
int flag = analizza_riga_IVA(imponibile, imposta, *_caus, anno, zanicchi, tipodet, imp, iva, impind, ivaind);
const TBill conto(cur);
imponibile = imp + impind;
if (conto.ok() && !imponibile.is_zero()) // Se c'e' imponibile ...
if (conto.ok() && !imponibile.is_zero()) // Se c'e' imponibile ...
{ // crea una nuova riga contabile
// Aggiorna conto sulla riga contabile
// Aggiorna conto sulla riga contabile
const TImporto val(real2imp(imponibile, 'I'));
const int newpos = bill2pos(conto, 'I'); // Riga in cui andra' l'imponibile
const int newpos = bill2pos(conto, 'I'); // Riga in cui andrà l'imponibile
if (newpos < 0) // conto non esistente: da inserire
{
const TString d(_caus->desc_agg(2));
const TString80 d = _caus->desc_agg(2);
set_cg_rec(-1, val, conto, d.empty() ? descr_cr : d, 'I');
}
else
@ -222,25 +221,22 @@ void TMovimentoPN_VE::enter_row(int i, const TString& descr_cr)
}
// Aggiorna conto IVA sulla riga contabile
if (!iva.is_zero()) // Se c'e' imposta ...
if (!iva.is_zero()) // Se c'e' imposta ...
{
int newposiva = type2pos('D');
const TImporto val(real2imp(iva, 'I'));
const TRectype& head = lfile().curr();
int newposiva = type2pos('D'); // IVA detraibile
TImporto val(real2imp(iva, 'I'));
if (newposiva < 0)
{
const TRectype& head = lfile().curr();
int ri = RIGA_IVA_DETRAIBILE;
TBill contoiva;
if (head.get_bool(MOV_LIQDIFF))
_caus->bill(ri = RIGA_IVA_DIFFERITA, contoiva); else
if (head.get_bool(MOV_IVAXCASSA))
_caus->bill(ri = RIGA_IVA_PER_CASSA, contoiva);
if (!contoiva.ok())
_caus->bill(ri = RIGA_IVA_DETRAIBILE, contoiva);
_caus->bill(ri = RIGA_IVA_DETRAIBILE, contoiva);
if (contoiva.ok())
{
const TString80 d = _caus->desc_agg(ri);
@ -249,19 +245,43 @@ void TMovimentoPN_VE::enter_row(int i, const TString& descr_cr)
}
else
add_cg_rec(newposiva, val);
if (is_split_payment(head))
{
const char* desc = TR("IVA art.17-ter D.P.R. 633/1972");
const int r1 = type2pos('1');
if (r1 < 0)
{
const TBill cliente(cg(0));
set_cg_rec(r1, val, cliente, desc, '1');
}
else
add_cg_rec(r1, val);
val.swap_section();
const int r2 = type2pos('2');
if (r2 < 0)
{
const TBill contoiva(cg(newposiva));
set_cg_rec(r2, val, contoiva, desc, '2');
}
else
add_cg_rec(r2, val);
}
}
if (!ivaind.is_zero()) // Se c'e' imposta ...
if (!ivaind.is_zero()) // Se c'è IVA indetraibile ...
{
int newposiva = type2pos('N');
const TImporto val(real2imp(ivaind, 'I'));
if (newposiva < 0)
{
const TString80 d = _caus->desc_agg(RIGA_IVA_NON_DETRAIBILE);
const TString80 desc = _caus->desc_agg(RIGA_IVA_NON_DETRAIBILE);
TBill contoivaind;
_caus->bill(RIGA_IVA_NON_DETRAIBILE, contoivaind);
if (contoivaind.ok())
newposiva = set_cg_rec(-1, val, contoivaind, d, 'N');
newposiva = set_cg_rec(-1, val, contoivaind, desc, 'N');
}
else
add_cg_rec(newposiva, val);
@ -2773,17 +2793,19 @@ error_type TContabilizzazione::write_scadenze(TDocumento& doc, bool recontabiliz
const TCurrency totimponibili = td - totimposte - totspese;
TCurrency_documento anticipo(doc.get_real(DOC_IMPPAGATO), doc);
// Caso normale: anticipo inferiore all'intera cifra da pagare
if (anticipo.abs() < td.abs())
{
TGeneric_distrib d(anticipo.get_num(), ndec);
const real imposte_effettive = is_split_payment(head) ? ZERO : totimposte.get_num();
TGeneric_distrib d(anticipo.get_num(), ndec);
d.add(totimponibili.get_num());
d.add(totimposte.get_num());
d.add(imposte);
d.add(totspese.get_num());
const TCurrency_documento pagtotimponibili(totimponibili.get_num() - d.get(), doc);
TCurrency_documento diffiva(d.get(), doc);
const TCurrency_documento pagtotimposte (totimposte.get_num() - diffiva.get_num(), doc);
const TCurrency_documento pagtotimposte (imposte_effettive - diffiva.get_num(), doc);
const TCurrency_documento pagtotspese (totspese.get_num() - d.get(), doc);
if (in_valuta)
@ -2806,7 +2828,9 @@ error_type TContabilizzazione::write_scadenze(TDocumento& doc, bool recontabiliz
pag.set_total_valuta(pagtotimponibili, pagtotimposte, pagtotspese, val1, val2, val3);
}
else
{
pag.set_total( pagtotimponibili, pagtotimposte, pagtotspese);
}
pag.set_rate_auto( );
}
else
@ -2838,19 +2862,21 @@ error_type TContabilizzazione::write_scadenze(TDocumento& doc, bool recontabiliz
// Crea una rimessa diretta con la data del documento per il valore dell'anticipo
pag.set_rata(0, in_valuta ? anticipo.get_num() : ZERO, anticipo_base.get_num(), first_date, 1, "", false);
}
const int nr = pag.n_rate();
real imponibile, imponibile_val;
/*
real imponibile, imponibile_val;
for (int i = nr-1; i >= 0; i--)
{
if (in_valuta)
imponibile_val += pag.tval_rata(i);
imponibile += pag.tlit_rata(i);
}
partita.put(PART_IMPORTO, imponibile);
partita.put(PART_IMPORTOVAL, imponibile_val);
partita.put(PART_IMPOSTA, imposte);
*/
partita.put(PART_IMPORTO, pag.imponibile(false));
partita.put(PART_IMPORTOVAL, in_valuta ? pag.imponibile(true) : ZERO);
partita.put(PART_IMPOSTA, pag.imposta(in_valuta));
partita.put(PART_SPESE, totspese.get_num());
// Se sto ricontabilizzando meno rate di quante esistevano prima!
@ -2863,9 +2889,9 @@ error_type TContabilizzazione::write_scadenze(TDocumento& doc, bool recontabiliz
partita.elimina_rata(i);
}
const TString8 abipr(doc.get(DOC_CODABIP)), cabpr(doc.get(DOC_CODCABP)),
abi(doc.get(DOC_CODABIA)), cab(doc.get(DOC_CODCABA));
const TString8 codpag(head.get(MOV_CODPAG));
const TString8 abipr = doc.get(DOC_CODABIP), cabpr = doc.get(DOC_CODCABP),
abi = doc.get(DOC_CODABIA), cab = doc.get(DOC_CODCABA);
const TString4 codpag = head.get(MOV_CODPAG);
for (int i = 0; i < nr; i++)
{