From da127e575d9f66142062ddb49837793b20aa2435 Mon Sep 17 00:00:00 2001 From: rajitgill Date: Mon, 30 Mar 2009 16:18:50 +0000 Subject: [PATCH] =?UTF-8?q?Patch=20level=20=20=20=20=20=20=20=20=20:10.0?= =?UTF-8?q?=20Files=20correlati=20=20=20=20=20:lv2.exe=20Ricompilazione=20?= =?UTF-8?q?Demo=20:=20[=20]=20Commento=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?:=20Completata=20la=20gestione=20delle=20quantit=C3=A0=20della?= =?UTF-8?q?=20fatturazione=20lavanderie?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: svn://10.65.10.50/trunk@18637 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- lv/lv2500.cpp | 74 ++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 61 insertions(+), 13 deletions(-) diff --git a/lv/lv2500.cpp b/lv/lv2500.cpp index 1fbcf6da2..3d39a9b7d 100755 --- a/lv/lv2500.cpp +++ b/lv/lv2500.cpp @@ -28,6 +28,7 @@ protected: virtual bool doc_raggruppabile(const TDocumento & doc) const { return true; } virtual bool gestione_riferimenti() const { return true; } virtual bool riferimenti_in_testa() const { return true; } + virtual TRiga_documento& find_or_create_row(TDocumento& doc_out, const TString& codart,const char lavtype); public: virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out, @@ -45,7 +46,7 @@ TFatturazione_lavanderie::TFatturazione_lavanderie(const char* cod) bool TFatturazione_lavanderie::da_raggruppare(const TRiga_documento & rin) { - const long clifo = rin.doc().get_long(DOC_CODCF); + /* const long clifo = rin.doc().get_long(DOC_CODCF); const int indsped = rin.doc().get_int(DOC_CODINDSP); TLaundry_contract contr(clifo, indsped, _data_elab); const TString80 codart = rin.get(RDOC_CODART); @@ -71,7 +72,7 @@ bool TFatturazione_lavanderie::da_raggruppare(const TRiga_documento & rin) } if (cau.get_bool("B4")) // Causale di rotto - return true; + return true; */ return false; } @@ -170,9 +171,11 @@ void TFatturazione_lavanderie::post_process_output(TLista_documenti& doc_out) } + + void TFatturazione_lavanderie::add_rows(TRiga_documento & rout, TRiga_documento & rin) { - const TString8 causale = rin.get(RDOC_CODAGG1); + /*const TString8 causale = rin.get(RDOC_CODAGG1); const TRectype& cau = cache().get("&CAU", causale); const TCausale_magazzino& rit = cached_causale_magazzino(cau.get("S1")); const TCausale_magazzino& con = cached_causale_magazzino(cau.get("S2")); //movimento o meno la dotazione temporanea/odierna a seconda di cosa prevede la causale @@ -200,31 +203,76 @@ void TFatturazione_lavanderie::add_rows(TRiga_documento & rout, TRiga_documento const real qta = con.sgn(s_consmese) * rin.get_real(RDOC_QTA); rout.add(RDOC_QTA, qta); } + } */ +} + +TRiga_documento& TFatturazione_lavanderie::find_or_create_row(TDocumento& doc_out, const TString& codart,const char lavtype) +{ + int r; + for (r=doc_out.physical_rows();r>0;r--) + { + const char tipo=doc_out[r].get_char("LVTYPE"); + const TString& cod=doc_out[r].get(RDOC_CODARTMAG); + if (cod==codart && tipo==lavtype) + break; + } + if (r<=0) + { + TRiga_documento& row=doc_out.new_row("01"); + row.put(RDOC_CODART,codart); + row.put(RDOC_CODARTMAG,codart); + row.put(RDOC_CHECKED,"X"); + row.put("LVTYPE",lavtype); + r=row.get_int(RDOC_NRIGA); } - + return doc_out[r]; } void TFatturazione_lavanderie::create_row(TDocumento& doc_out, const TRiga_documento & rin) { - real qta; - const TString8 causale = rin.get(RDOC_CODAGG1); + const TString8 causale = rin.get(RDOC_CODAGG1); const TRectype& cau = cache().get("&CAU", causale); - //movimento o meno la dotazione temporanea/odierna a seconda di cosa prevede la causale + + const long clifo = rin.doc().get_long(DOC_CODCF); + const int indsped = rin.doc().get_int(DOC_CODINDSP); + TLaundry_contract contr(clifo, indsped, _data_elab); - if (cau.get_bool("B0")) + const TString80 codart=rin.get(RDOC_CODARTMAG); + const real qta=rin.get_real(RDOC_QTA); + const real qta1=rin.get_real(RDOC_QTAGG1); + + // Guardo se è una causale di rotto e se è abilitato nella testata del contratto la fatturazione dei rotti + if (cau.get_bool("B4") && contr.get_int(LVCONDV_ADDCAPROT) && !qta1.is_zero()) + { + TRiga_documento& rd=find_or_create_row(doc_out,codart,'D'); + rd.add(RDOC_QTA, qta1); + rd.put(RDOC_PREZZO,contr.row(codart).get_real(LVRCONDV_PREZDAN)); + } + if (cau.get_bool("B0")) // movimenta ritirato { const TCausale_magazzino& rit = cached_causale_magazzino(cau.get("S1")); - qta += rit.sgn(s_consmese) * rin.get_real(RDOC_QTA); + TRiga_documento& rr=find_or_create_row(doc_out,codart,'R'); + rr.add(RDOC_QTA,rit.sgn(s_consmese) * qta1); } - if (cau.get_bool("B1")) + if (cau.get_bool("B1") && !qta.is_zero()) // movimenta consegnato { const TCausale_magazzino& con = cached_causale_magazzino(cau.get("S2")); - qta += con.sgn(s_consmese) * rin.get_real(RDOC_QTA); + const real sgntmp=con.sgn(s_dottm); + if (!sgntmp.is_zero() && contr.get_bool(LVCONDV_DOTTMPPRZD)) + { + TRiga_documento& rt=find_or_create_row(doc_out,codart,'T'); + rt.add(RDOC_QTA,sgntmp * qta); + rt.put(RDOC_PREZZO,contr.row(codart).get_real(LVRCONDV_PRZDTTMP)); + } + else + { + TRiga_documento& rc=find_or_create_row(doc_out,codart,'C'); + rc.add(RDOC_QTA,con.sgn(s_consmese) * qta); + } } - if (qta != ZERO) - TFatturazione_bolle::create_row(doc_out, rin); + } bool TFatturazione_lavanderie::elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,