From da1d0a937bda0d229cbcca852e0ec422a8c1ec7e Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 16 May 2008 10:21:41 +0000 Subject: [PATCH] Patch level : 10.0 no patch Files correlati : crpa0.exe Ricompilazione Demo : [ ] Commento : indetr- git-svn-id: svn://10.65.10.50/trunk@16630 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- crpa/crpa0.cpp | 46 ++++++++++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/crpa/crpa0.cpp b/crpa/crpa0.cpp index a55cb9e6c..7dac8b52b 100755 --- a/crpa/crpa0.cpp +++ b/crpa/crpa0.cpp @@ -155,30 +155,36 @@ void TIni2Sql::leggidadoc(const TString& elabfield, TString& tmpstr) { if (_rigadoc != NULL) { - real importo; - if (_doc->tipocf() == 'F') + bool non_rilevante = false; + const bool acquisto = _doc->tipocf() == 'F'; + if (acquisto) { TString80 codcms = _rigadoc->codice_commessa(); - bool lordo = cache().get("CMS", codcms, "S7") == "NR"; - const TTipo_riga_documento tiporig = _rigadoc->tipo(); - //real perc_ind = tiporig.perc_indetraibilita(); - const TRectype& tri = cache().get("%TRI", tiporig.codice()); - real perc_ind = tri.get_real("R0"); - if (lordo) - perc_ind = 100.0; - if (perc_ind != ZERO) + non_rilevante = cache().get("CMS", codcms, "S7") == "NR"; + } + + real importo = _rigadoc->importo(true, non_rilevante); + + if (acquisto && !non_rilevante) + { + const TString4 tipodet = _rigadoc->get(RDOC_TIPODET); + + CHECK(_caus,"Causale documento non valida"); + if (tipodet.full()) { - importo = _rigadoc->importo(TRUE, FALSE); - real imposta = _rigadoc->imposta(); - importo = importo + (imposta*perc_ind)/100.0; - } - else - importo = _rigadoc->importo(TRUE, lordo); - } - else - importo = _rigadoc->importo(TRUE, FALSE); + const int anno = _doc->get_date(DOC_DATADOC).year(); + int tdet = 0; + const real perc_ind = indetraibile_al(tipodet, *_caus, anno, tdet); + const int dec = _rigadoc->doc().decimals(); + real impind = importo * perc_ind / CENTO; impind.round(dec); + const TCodiceIVA iva(_rigadoc->get(RDOC_CODIVA)); + const real ivaind = iva.imposta(impind, dec); + + importo += ivaind; + } + } if (test_swap()) - importo = importo * (-1); + importo = -importo; tmpstr = importo.string(); } }