From 4ea5af1eeb9e4e775d294ac8ab0c28a98ff8e00d Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 13 Mar 2009 00:43:07 +0000 Subject: [PATCH] Patch level : 10.0 258 Files correlati : 770.exe Ricompilazione Demo : [ ] Commento : MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Modificato l'aggiornamento pagamenti per non aggiornare i pagamenti giĆ  aggiornati git-svn-id: svn://10.65.10.50/trunk@18512 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- m770/770100.cpp | 57 +++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 48 insertions(+), 9 deletions(-) diff --git a/m770/770100.cpp b/m770/770100.cpp index ef8f80a41..88cd4a2b2 100755 --- a/m770/770100.cpp +++ b/m770/770100.cpp @@ -404,19 +404,60 @@ void TSchedaPercipienti::agg_pagamenti(const TRectype & sch) } bool found = false; - for (int i = 0; !found &&i < rows; i++) - { - const TRectype & pagrec = sc.pag(i); - found = num == pagrec.get_long(PAG_NUMREG); - } - if (!found) - { imppag += TImporto(sez, pag.get_real(PAGSCA_RITENUTE)); imppag += TImporto(sum.sezione_ritsoc(), pag.get_real(PAGSCA_RITSOC)); real abbuoni = pag.get_real(PAGSCA_ABBUONI); real abb = pag.get_real(PAGSCA_ABBUONI); if (!abb.is_zero()) imppag += TImporto(sez, abb); + for (int i = 0; !found &&i < rows; i++) + { + TRectype & pagrec = sc.pag(i); + const long numsch = pagrec.get_long(PAG_NUMREG); + found = num == numsch; + if (numsch == 0L && !found) + { + TDate data(sum.get_date(PART_DATADOC)); + if (!data.ok()) + data = sum.get_date(PART_DATAREG); + if (!data.ok()) + data = sum.get_date(PART_DATAPAG); + const TDate datasch(pagrec.get(PAG_DATAPAG)); + if (data == datasch) + { + pagrec.put(PAG_NUMREG, num); + found = true; + } + else + { + imppag.normalize('D'); + + real spesep = imppag.valore() * spperc; + real ivap = imppag.valore() * ivaperc; + + spesep.round(TCurrency::get_firm_dec()); + if (abs(spesep) > abs(spese)) + spesep = spese; + ivap.round(TCurrency::get_firm_dec()); + if (abs(ivap) > abs(iva)) + ivap = iva; + + real compensop = imppag.valore() - spesep - ivap; + + compensop += compensop * h_PercRitenuta; + compensop.round(TCurrency::get_firm_dec()); + if (abs(compensop) > abs(compenso)) + compensop = compenso; + if (compensop == pagrec.get_real(PAG_COMPENSO)) + { + pagrec.put(PAG_NUMREG, num); + found = true; + } + } + } + } + if (!found) + { tot[lastsch] += imppag; if (!datapag.ok()) datapag = sum.get_date(PART_DATADOC); @@ -456,8 +497,6 @@ void TSchedaPercipienti::agg_pagamenti(const TRectype & sch) compensopag.round(TCurrency::get_firm_dec()); if (abs(compensopag) > abs(compenso)) compensopag = compenso; - compensopag += pagrec.get_real(PAG_COMPENSO); - spesepag += pagrec.get_real(PAG_SPESA); pagrec.put(PAG_COMPENSO, compensopag); pagrec.put(PAG_SPESA, spesepag); pagrec.put(PAG_DATAPAG, datapag);