Corretta contabilizzazione in caso di documento in valuta.
git-svn-id: svn://10.65.10.50/trunk@5027 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
5f80dd5869
commit
771a826749
@ -80,6 +80,7 @@ enum error_type {
|
|||||||
class TMovimentoPN_VE : public TMovimentoPN
|
class TMovimentoPN_VE : public TMovimentoPN
|
||||||
{
|
{
|
||||||
TCausale * _caus;
|
TCausale * _caus;
|
||||||
|
bool _valuta;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// simula il K_SPACE di iva_notify
|
// simula il K_SPACE di iva_notify
|
||||||
@ -109,7 +110,7 @@ public:
|
|||||||
// ricalcola le righe di contabilita' dalle righe iva presenti
|
// ricalcola le righe di contabilita' dalle righe iva presenti
|
||||||
// e verifica la quadratura del movimento. Ritorna TRUE se il movimento e' scrivibile
|
// e verifica la quadratura del movimento. Ritorna TRUE se il movimento e' scrivibile
|
||||||
bool recalc_cg_rows(TCausale* caus = NULL);
|
bool recalc_cg_rows(TCausale* caus = NULL);
|
||||||
TMovimentoPN_VE() {};
|
TMovimentoPN_VE(bool valuta) : _valuta(valuta) {};
|
||||||
virtual ~TMovimentoPN_VE() {}
|
virtual ~TMovimentoPN_VE() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -388,9 +389,13 @@ bool TMovimentoPN_VE::movement_ok()
|
|||||||
TImporto tot_imp;
|
TImporto tot_imp;
|
||||||
TImporto imp;
|
TImporto imp;
|
||||||
|
|
||||||
|
// Se siamo in valuta, forzera' la riga totale documento a cio' che si ottiene dalla somma
|
||||||
|
// delle singole righe per evitare sbilanci nel movimento di 2,3,4,5 lire dovuti agli arrotondamenti
|
||||||
const int max = cg_items();
|
const int max = cg_items();
|
||||||
for (int i = 0; i < max; i++)
|
for (int i = 0; i < max; i++)
|
||||||
{
|
{
|
||||||
|
if (i == 0 && _valuta)
|
||||||
|
continue;
|
||||||
TRectype& r = cg(i);
|
TRectype& r = cg(i);
|
||||||
const char sez = r.get_char(RMV_SEZIONE);
|
const char sez = r.get_char(RMV_SEZIONE);
|
||||||
const real val(r.get_real(RMV_IMPORTO));
|
const real val(r.get_real(RMV_IMPORTO));
|
||||||
@ -398,6 +403,17 @@ bool TMovimentoPN_VE::movement_ok()
|
|||||||
tot_imp+=imp;
|
tot_imp+=imp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (_valuta)
|
||||||
|
{
|
||||||
|
TRectype& r = cg(0);
|
||||||
|
// Setta la riga di totale documento...
|
||||||
|
r.put(RMV_IMPORTO,tot_imp.valore());
|
||||||
|
r.put(RMV_SEZIONE,tot_imp.sezione() == 'D' ? 'A' : 'D'); // Sezione contraria
|
||||||
|
// ...ed anche il totale documento sulla testata
|
||||||
|
lfile().curr().put(MOV_TOTDOC,tot_imp.valore());
|
||||||
|
tot_imp.valore() = 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
if (!tot_imp.is_zero())
|
if (!tot_imp.is_zero())
|
||||||
return FALSE;
|
return FALSE;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -1358,13 +1374,14 @@ error_type TContabilizzazione_app::create_iva_rows()
|
|||||||
if (in_valuta)
|
if (in_valuta)
|
||||||
{
|
{
|
||||||
imponibile = cur.imp() * cambio; // imponibile in lire
|
imponibile = cur.imp() * cambio; // imponibile in lire
|
||||||
imposta = (imponibile * cur.ali()) / 100.0; // questa e' l'imposta ricalcolata
|
imponibile.round();
|
||||||
|
imposta = abs(imponibile) * cur.ali() / 100.0; // questa e' l'imposta ricalcolata
|
||||||
|
imposta.ceil();
|
||||||
|
if (imponibile < 0.0)
|
||||||
|
imposta = -imposta;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
imposta = cur.iva();
|
imposta = cur.iva();
|
||||||
// In contabilita' abbiamo 2 decimali...
|
|
||||||
imponibile.ceil(2);
|
|
||||||
imposta.ceil(2);
|
|
||||||
TRectype& rec_iva = _movimento->iva(i);
|
TRectype& rec_iva = _movimento->iva(i);
|
||||||
rec_iva.put(RMI_ANNOES,annoes);
|
rec_iva.put(RMI_ANNOES,annoes);
|
||||||
rec_iva.put(RMI_NUMREG,numreg);
|
rec_iva.put(RMI_NUMREG,numreg);
|
||||||
@ -1509,9 +1526,10 @@ void TContabilizzazione_app::calc_pagament()
|
|||||||
if (valuta)
|
if (valuta)
|
||||||
{
|
{
|
||||||
const real change(head.get_real(MOV_CAMBIO));
|
const real change(head.get_real(MOV_CAMBIO));
|
||||||
real val1 = totimponibili * change;
|
//real val1 = totimponibili * change;
|
||||||
real val2 = totimposte * change;
|
real val2 = totimposte * change;
|
||||||
real val3 = totspese * change;
|
real val3 = totspese * change;
|
||||||
|
real val1 = head.get_real(MOV_TOTDOC) - val2 - val3; // Cosi' corregge eventuali scompensi di poche lirette
|
||||||
_pagamento->set_total_valuta( totimponibili, totimposte, totspese, change, val1, val2 ,val3);
|
_pagamento->set_total_valuta( totimponibili, totimposte, totspese, change, val1, val2 ,val3);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1763,7 +1781,7 @@ void TContabilizzazione_app::display_error()
|
|||||||
|
|
||||||
void TContabilizzazione_app::contabilize_document()
|
void TContabilizzazione_app::contabilize_document()
|
||||||
{
|
{
|
||||||
_movimento = new TMovimentoPN_VE;
|
_movimento = new TMovimentoPN_VE(_doc->in_valuta());
|
||||||
|
|
||||||
//_doc->compile_summary(); // ricalcola il documento
|
//_doc->compile_summary(); // ricalcola il documento
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user