Patch level :

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :


git-svn-id: svn://10.65.10.50/branches/R_10_00@21516 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2011-01-26 14:05:12 +00:00
parent a0b3256f45
commit b336320820

View File

@ -210,6 +210,8 @@ bool THardy_movimenti::test_moviva()
_conf->set(MOV_TIPO, tipoc); _conf->set(MOV_TIPO, tipoc);
_conf->set(MOV_CODCF, so); _conf->set(MOV_CODCF, so);
real totdoc = recset.get("TotDocumento").as_real(); real totdoc = recset.get("TotDocumento").as_real();
if (totdoc == ZERO)
_conf->set("SOLAIVA", "X");
_conf->set(MOV_TOTDOC, totdoc.string(0,2)); _conf->set(MOV_TOTDOC, totdoc.string(0,2));
} }
} }
@ -409,55 +411,72 @@ bool THardy_movimenti::scrivi_righe()
// se lo trovo assegno quel codice iva al conto contabile trovato e cancello la riga iva e la riga contabile // se lo trovo assegno quel codice iva al conto contabile trovato e cancello la riga iva e la riga contabile
for (int i=0;i<_righeiva->items();i++) for (int i=0;i<_righeiva->items();i++)
{ {
TRectype& rec_rmoviva = *(TRectype*)_righeiva->objptr(i); // se le righe contabili sono 1, su tutte le righe iva metto quel conto, da brava massaia ...
const char* codiva = rec_rmoviva.get(RMI_CODIVA); if (_righecont->items()==1)
const TString* codind = (TString*)_ivaind->objptr(codiva);
TCodiceIVA c(codiva);
const bool riga_omaggio = _ivaoma->is_key(codiva);
real imponibile = get_imponibile(rec_rmoviva);
for (int j=0;j<_righecont->items();j++)
{ {
TRectype& rec_rmov = *(TRectype*)_righecont->objptr(j); TRectype& rec_rmoviva = *(TRectype*)_righeiva->objptr(i);
real importo = rec_rmov.get_real(RMV_IMPORTO); TRectype& rec_rmov = *(TRectype*)_righecont->objptr(0);
if ((!riga_omaggio) && (importo <= imponibile)) rec_rmoviva.put(RMI_TIPOC, rec_rmov.get(RMV_TIPOC));
rec_rmoviva.put(RMI_GRUPPO, rec_rmov.get(RMV_GRUPPO));
rec_rmoviva.put(RMI_CONTO, rec_rmov.get(RMV_CONTO));
rec_rmoviva.put(RMI_SOTTOCONTO, rec_rmov.get(RMV_SOTTOCONTO));
paragraph.format("%d,%d",LF_RMOVIVA, nrigai++);
_conf->set_paragraph(paragraph); // riga iva
rec2ini(rec_rmoviva);
rec_rmoviva.zero();
}
else
{
TRectype& rec_rmoviva = *(TRectype*)_righeiva->objptr(i);
const char* codiva = rec_rmoviva.get(RMI_CODIVA);
const TString* codind = (TString*)_ivaind->objptr(codiva);
TCodiceIVA c(codiva);
const bool riga_omaggio = _ivaoma->is_key(codiva);
real imponibile = get_imponibile(rec_rmoviva);
for (int j=0;j<_righecont->items();j++)
{ {
const real impon = rec_rmoviva.get_real(RMI_IMPONIBILE); TRectype& rec_rmov = *(TRectype*)_righecont->objptr(j);
const real iva = rec_rmoviva.get_real(RMI_IMPOSTA); real importo = rec_rmov.get_real(RMV_IMPORTO);
c.imposta(importo); if ((!riga_omaggio) && (importo <= imponibile))
// se il codice iva ha una indetraibilità, metto il codice di ind. nella riga iva
if (codind != NULL)
rec_rmoviva.put(RMI_TIPODET, *codind);
rec_rmoviva.put(RMI_TIPOC, rec_rmov.get(RMV_TIPOC));
rec_rmoviva.put(RMI_GRUPPO, rec_rmov.get(RMV_GRUPPO));
rec_rmoviva.put(RMI_CONTO, rec_rmov.get(RMV_CONTO));
rec_rmoviva.put(RMI_SOTTOCONTO, rec_rmov.get(RMV_SOTTOCONTO));
real wimp = impon ;
if (importo < imponibile)
{ {
wimp *= importo / imponibile; const real impon = rec_rmoviva.get_real(RMI_IMPONIBILE);
wimp.round(2); const real iva = rec_rmoviva.get_real(RMI_IMPOSTA);
} c.imposta(importo);
const real wiva = c.imposta(wimp); // se il codice iva ha una indetraibilità, metto il codice di ind. nella riga iva
if (importo < imponibile) if (codind != NULL)
{ rec_rmoviva.put(RMI_TIPODET, *codind);
rec_rmoviva.put(RMI_IMPONIBILE, wimp); rec_rmoviva.put(RMI_TIPOC, rec_rmov.get(RMV_TIPOC));
rec_rmoviva.put(RMI_IMPOSTA, wiva); rec_rmoviva.put(RMI_GRUPPO, rec_rmov.get(RMV_GRUPPO));
} rec_rmoviva.put(RMI_CONTO, rec_rmov.get(RMV_CONTO));
paragraph.format("%d,%d",LF_RMOVIVA, nrigai++); rec_rmoviva.put(RMI_SOTTOCONTO, rec_rmov.get(RMV_SOTTOCONTO));
_conf->set_paragraph(paragraph); // riga iva real wimp = impon ;
rec2ini(rec_rmoviva); if (importo < imponibile)
_righecont->destroy(j, true); {
j = _righecont->items(); wimp *= importo / imponibile;
if (importo == imponibile) wimp.round(2);
rec_rmoviva.zero(); }
else const real wiva = c.imposta(wimp);
{ if (importo < imponibile)
rec_rmoviva.put(RMI_IMPONIBILE, impon - wimp); {
rec_rmoviva.put(RMI_IMPOSTA, iva - wiva); rec_rmoviva.put(RMI_IMPONIBILE, wimp);
} rec_rmoviva.put(RMI_IMPOSTA, wiva);
} }
paragraph.format("%d,%d",LF_RMOVIVA, nrigai++);
_conf->set_paragraph(paragraph); // riga iva
rec2ini(rec_rmoviva);
_righecont->destroy(j, true);
j = _righecont->items();
if (importo == imponibile)
rec_rmoviva.zero();
else
{
rec_rmoviva.put(RMI_IMPONIBILE, impon - wimp);
rec_rmoviva.put(RMI_IMPOSTA, iva - wiva);
}
}
}
} }
} }
_righecont->pack(); _righecont->pack();