From 7fb4f596b61e15c1c1887f7e25dc2be834a9932f Mon Sep 17 00:00:00 2001 From: luca83 Date: Fri, 29 Jan 2010 17:46:42 +0000 Subject: [PATCH] Patch level : 10.0 patch 305 Files correlati : lv2 Ricompilazione Demo : [ ] Commento : Corretta la gestione delle causali di solo ritiro git-svn-id: svn://10.65.10.50/trunk@20024 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- lv/lv2400.cpp | 94 ++++++++++++++++++++++++++++----------------------- 1 file changed, 51 insertions(+), 43 deletions(-) diff --git a/lv/lv2400.cpp b/lv/lv2400.cpp index b79950166..086dc46db 100755 --- a/lv/lv2400.cpp +++ b/lv/lv2400.cpp @@ -491,44 +491,62 @@ void TGenera_documenti_app::crea_riga(TToken_string& chiave, const char modpas, { TRiga_documento& rdoc = doc.new_row(tiporiga); - const real quantita_noarr = qta - conguaglio; - real quantita_arr = quantita_noarr > ZERO ? quantita_noarr : ZERO; - //se devo arrotondare - if (quantita_arr > ZERO && arrot) - { - //calcolo di quanti pezzi sforo - long arr = quantita_arr.integer() % ppconf.integer(); - //se sforo (arr > 0) allora calcolo quanti pezzi in più gli devo dare e aggiorno la quantità - if (arr > 0) - if (arr > ppconf.integer() * perarr / 100) //arr <= ppconf*perarr/100 -> formula calcolo congualgio di Tassan - { - arr = ppconf.integer() - arr; - quantita_arr += arr; - } - else - quantita_arr -= arr; - } - - //scrivo le quantità - rdoc.put(RDOC_QTA, quantita_arr); //quantità consegnata eventualmente arrotondata - //se no scrivo le quantità sbalgiate - if (tmp && rcont.get_bool(LVRCONDV_RITAUDTTMP)) - rdoc.put(RDOC_QTAGG1, qta); //quantità ritirata - else - rdoc.put(RDOC_QTAGG1, qta1); //quantità ritirata - rdoc.put(RDOC_QTAGG2, conguaglio); //conguaglio - rdoc.put(RDOC_QTAGG3, quantita_arr); //copia della quantità consegnata - rdoc.put(RDOC_QTAGG4, quantita_noarr); //quantità che avrei consegnato se non arrotondavo (qta ritirata) - rdoc.put(RDOC_GENERATA, true); - //causale da mettere sulle righe documento const TCausale_lavanderie cau(causale); const TString4 codcau = cau.caucol().empty() ? cau.codice() : cau.caucol(); rdoc.put(RDOC_CODAGG1, codcau); - //aggiorno il conguaglio sulla riga del contratto - if (!rcont.empty()) - aggiorna_conguaglio((TRectype&)rcont, quantita_arr - quantita_noarr); + if(cau.is_consegna()) + { + const real quantita_noarr = qta - conguaglio; + real quantita_arr = quantita_noarr > ZERO ? quantita_noarr : ZERO; + //se devo arrotondare + if (quantita_arr > ZERO && arrot) + { + //calcolo di quanti pezzi sforo + long arr = quantita_arr.integer() % ppconf.integer(); + //se sforo (arr > 0) allora calcolo quanti pezzi in più gli devo dare e aggiorno la quantità + if (arr > 0) + if (arr > ppconf.integer() * perarr / 100) //arr <= ppconf*perarr/100 -> formula calcolo congualgio di Tassan + { + arr = ppconf.integer() - arr; + quantita_arr += arr; + } + else + quantita_arr -= arr; + } + + //scrivo le quantità + rdoc.put(RDOC_QTA, quantita_arr); //quantità consegnata eventualmente arrotondata + rdoc.put(RDOC_QTAGG2, conguaglio); //conguaglio + rdoc.put(RDOC_QTAGG3, quantita_arr); //copia della quantità consegnata + rdoc.put(RDOC_QTAGG4, quantita_noarr); //quantità che avrei consegnato se non arrotondavo (qta ritirata) + rdoc.put(RDOC_GENERATA, true); + + //aggiorno il conguaglio sulla riga del contratto + //altrimenti se il record di riga contratto è vuoto aggiorno il log + if (!rcont.empty()) + aggiorna_conguaglio((TRectype&)rcont, quantita_arr - quantita_noarr); + else + { + TString str; + str << "L'articolo " << codart << " inserito nel documento " << doc.get(DOC_CODNUM) << "-" << doc.get(DOC_TIPODOC) + << " numero " << doc.get(DOC_NDOC) << " per la quantità di " << quantita_arr << " unità" + << " non è prsente sul contratto del cliente " << codcli; + rep.log(1, str); + } + } + + if(cau.is_ritiro()) + { + //se no scrivo le quantità sbalgiate + if (tmp && rcont.get_bool(LVRCONDV_RITAUDTTMP)) + rdoc.put(RDOC_QTAGG1, qta); //quantità ritirata + else + rdoc.put(RDOC_QTAGG1, qta1); //quantità ritirata + } + + //elaborazione sul prezzo da utilizzare real prezzo; @@ -644,16 +662,6 @@ void TGenera_documenti_app::crea_riga(TToken_string& chiave, const char modpas, rdoc.put(RDOC_CODMAG, magazzino); rdoc.put(RDOC_CODMAGC, magazzinoc); - - //se il record di riga contratto è vuoto aggiorno il log - if (rcont.empty()) - { - TString str; - str << "L'articolo " << codart << " inserito nel documento " << doc.get(DOC_CODNUM) << "-" << doc.get(DOC_TIPODOC) - << " numero " << doc.get(DOC_NDOC) << " per la quantità di " << quantita_arr << " unità" - << " non è prsente sul contratto del cliente " << codcli; - rep.log(1, str); - } } if (dottmp == 0)