diff --git a/lv/lv2.cpp b/lv/lv2.cpp index d213dc621..5bbf0e41e 100755 --- a/lv/lv2.cpp +++ b/lv/lv2.cpp @@ -11,7 +11,8 @@ int main(int argc, char** argv) case 1: lv2200(argc, argv); break; //manipolazione e stampa del planning case 2: lv2300(argc, argv); break; //Stampa Giri Giornaliero/Settimanale case 3: lv2400(argc, argv); break; //generazione automatica bolle di consegna - case 4: lv2600(argc, argv); break; //acquisizione bolle di rientro + case 4: lv2500(argc, argv); break; + case 5: lv2600(argc, argv); break; //acquisizione bolle di rientro case 6: lv2700(argc, argv); break; //Riepilogo Bolle di Lavanderie case 7: lv2800(argc, argv); break; //Venduto Per Cliente nei 12 Mesi default: lv2100(argc, argv); break; //generazione automatica del planning diff --git a/lv/lv2500.cpp b/lv/lv2500.cpp index add59e00e..761b27a7d 100755 --- a/lv/lv2500.cpp +++ b/lv/lv2500.cpp @@ -17,16 +17,19 @@ class TFatturazione_lavanderie:public TFatturazione_bolle { + TDate _data_elab; + protected: virtual void add_rows(TRiga_documento & rout, TRiga_documento & rin); virtual void create_row(TDocumento& doc_out, const TRiga_documento & rin); - // void fat_lav(TRiga_documento & rin, int& qta, real& prezzo); + real fat_lav_pre(TRiga_documento & rin, const real& qta); + virtual void post_process(TDocumento & doc); public: TFatturazione_lavanderie(const char* cod); virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out, const TDate& data_elab, bool interattivo = false); - + }; TFatturazione_lavanderie::TFatturazione_lavanderie(const char* cod) @@ -35,40 +38,33 @@ TFatturazione_lavanderie::TFatturazione_lavanderie(const char* cod) } - /* void TFatturazione_lavanderie::fat_lav_pre(TRiga_documento & rin, int& qta) + real TFatturazione_lavanderie::fat_lav_pre(TRiga_documento & rin, const real& qta) { const TString80 codart=rin.get(RDOC_CODART); - const long clifo=rin.get_long(RDOC_CLIFO); - const int indsped=rin.get_int(RDOC_CODINDSP); + const long clifo=rin.doc().get_long(DOC_CODCF); + const int indsped=rin.doc().get_int(DOC_CODINDSP); + const TString8 causale=rin.get(RDOC_CODAGG1); + + real new_qta; const TRectype& cau = cache().get("&CAU", causale); //movimento o meno la dotazione temporanea/odierna a seconda di cosa prevede la causale - int sgn_con = 0; - if (cau.get_bool("B0")) + + /* if (cau.get_bool("B0")) { const TCausale_magazzino& rit = cached_causale_magazzino(cau.get("S1")); - if (codmagcoll.blank() && rit.has_default_mag()) - { - codmagcoll = rit.default_mag(); - coddepcoll = rit.default_dep(); - } - sgn_rit = rit.sgn(s_consmese); - } + int sgn_rit = rit.sgn(s_consmese); + + }*/ + if (cau.get_bool("B1")) { const TCausale_magazzino& con = cached_causale_magazzino(cau.get("S2")); - if (codmag.blank() && con.has_default_mag()) - { - codmag = con.default_mag(); - coddep = con.default_dep(); - } - sgn_con = con.sgn(s_consmese); + int sgn_con = con.sgn(s_consmese); + new_qta=sgn_con*qta; } - - TFatturazione_msk msk; - TDate datafat=msk.get_date(F_DATAFAT); - - TLaundry_contract contr(clifo,indsped,datafat); + + TLaundry_contract contr(clifo,indsped,_data_elab); const TRectype & rcont=contr.row(codart); const TString4 tipodot=rcont.get(LVRCONDV_NOLCIC); @@ -77,110 +73,105 @@ TFatturazione_lavanderie::TFatturazione_lavanderie(const char* cod) TArticolo_lavanderie artlav(codart,'C',clifo,indsped); - } +return new_qta; } -void TFatturazione_lavanderie::fat_lav_post(TRiga_documento & rin, t& qta) +void TFatturazione_lavanderie::post_process(TDocumento & doc) { - const TString80 codart=rin.get(RDOC_CODART); - const long clifo=rin.get_long(RDOC_CLIFO); - const int indsped=rin.get_int(RDOC_CODINDSP); + const int rows = doc.physical_rows(); + for (int i = 1; i <= rows; i++) + { + TRiga_documento& rout = doc[i]; + const TString80 codart=rout.get(RDOC_CODART); + const long clifo=rout.doc().get_long(DOC_CODCF); + const int indsped=rout.doc().get_int(DOC_CODINDSP); + + TLaundry_contract contr(clifo,indsped,_data_elab); + const TRectype & rcont=contr.row(codart); - TFatturazione_msk msk; - TDate datafat=msk.get_date(F_DATAFAT); + const TString4 tipodot=rcont.get(LVRCONDV_NOLCIC); + const TString4 artcli=rcont.get(LVRCONDV_VCARTCLI); + real dot; + TArticolo_lavanderie artlav(codart,'C',clifo,indsped); - TLaundry_contract contr(clifo,indsped,datafat); - const TRectype & rcont=contr.row(codart); - - const TString4 tipodot=rcont.get(LVRCONDV_NOLCIC); - const TString4 artcli=rcont.get(LVRCONDV_VCARTCLI); - const real dot; - - if (tipodot=="I") - dot=artlav.get('DOTIN'); - else - dot=artlav.get('DOTOD'); - - TArticolo_lavanderie artlav(codart,'C',clifo,indsped); - - int tipoforf=rcont.get_int(LVRCONDV_TIPOFORF); - - switch (tipoforf) - { - case 0: - { - qta=rin.get_int(RDOC_QTA); - prezzo=rin.get_real(RODC_PREZZO); - } - break; - case 1: - { - qta=rin.get_int(RDOC_QTA); - prezzo=rcont.get_real(LVRCONDV_PREZZO); - } - break; - case 2: - { - qta=1; - prezzo=rcont.get_real(LVRCONDV_IMPFISART); - // gestione in base codice per valore fisso ??? tolta la scelta dell'articolo o del cliente - } - break; - case 3: - { - int tipolist=contr.get_int(LVCONDV_TIPOLIST); - - if (tipolist==0) - prezzo=rcont.get_real(LVRCONDV_PREZZO); - else + if (tipodot=="I") + dot=artlav.get_real("DOTIN"); + else + dot=artlav.get_real("DOTOD"); + + int tipoforf=rcont.get_int(LVRCONDV_TIPOFORF); + + switch (tipoforf) + { + case 0: + break; + case 1: + rout.put(RDOC_PREZZO, rcont.get_real(LVRCONDV_PREZZO)); + break; + case 2: { - TString query; - query << "USE UMART KEY 2 \n" - << "FROM " << "CODART=#CODART UM=#UM \n" - << "TO " << "TCODART=#CODART UM=#UM \n"; - - TISAM_recordset recset(query); - recset.set_var("#CODART",clifo); - recset.set_var("#UM",rcont.get(LVRCONDV_UM)); - - prezzo=recset.get(UMART_PREZZO).as_real(); + rout.put(RDOC_QTA, UNO); + rout.put(RDOC_PREZZO, rcont.get_real(LVRCONDV_IMPFISART)); + // gestione in base codice per valore fisso ??? tolta la scelta dell'articolo o del cliente } + break; + case 3: + { + int tipolist=contr.get_int(LVCONDV_TIPOLIS); - qta=dot; - } - break; - case 4: - { - prezzo=rcont.get_real(LVRCONDV_PREZZO); - - const real mincic=rcont.get_real(LVRCONDV_MINCIC); + if (tipolist==0) + rout.put(RDOC_PREZZO, rcont.get_real(LVRCONDV_PREZZO)); + else + { + TString query; + query << "USE UMART KEY 2 \n" + << "FROM " << "CODART=#CODART UM=#UM \n" + << "TO " << "TCODART=#CODART UM=#UM \n"; + + TISAM_recordset recset(query); + recset.set_var("#CODART",clifo); + recset.set_var("#UM",rcont.get(LVRCONDV_UM)); - } - break; - case 5: - { - prezzo=rcont.get_real(LVRCONDV_VALCONV); + rout.put(RDOC_PREZZO,recset.get(UMART_PREZZO).as_real()); + } - qta=dot*prezzo; - } - break; - case 6: - { - prezzo=rcont.get_real(LVRCONDV_VALCONV); + rout.put(RDOC_QTA, dot); + } + break; + case 4: + { + rout.put(RDOC_PREZZO, rcont.get_real(LVRCONDV_PREZZO)); + const real cicl=rcont.get_real(LVRCONDV_MINCIC)*dot; + const real qta=rout.get(RDOC_QTA); + rout.put(RDOC_QTA, cicl > qta ? cicl : qta); + } + break; + case 5: + { + rout.put(RDOC_PREZZO, rcont.get_real(LVRCONDV_VALCONV)); + rout.put(RDOC_QTA, dot*rcont.get_real(LVRCONDV_FORFPERCL)); + } + break; + case 6: + { + rout.put(RDOC_PREZZO, rcont.get_real(LVRCONDV_PREZZO)); - qta=dot*; - } - break; - default: - break; - } + rout.put(RDOC_QTA, dot); + } + break; + default: + break; + } + } -} */ +} void TFatturazione_lavanderie::add_rows(TRiga_documento & rout, TRiga_documento & rin) { - rout.add(RDOC_QTA, rin.get_real(RDOC_QTA)); + const real qta=rin.get_real(RDOC_QTA); + + rout.add(RDOC_QTA, fat_lav_pre(rin,qta) ); } void TFatturazione_lavanderie::create_row(TDocumento& doc_out, const TRiga_documento & rin) @@ -191,6 +182,7 @@ void TFatturazione_lavanderie::create_row(TDocumento& doc_out, const TRiga_docum bool TFatturazione_lavanderie::elabora(TLista_documenti& doc_in, TLista_documenti& doc_out, const TDate& data_elab, bool interattivo) { + _data_elab=data_elab; bool ok=TFatturazione_bolle::elabora(doc_in, doc_out, data_elab, interattivo); return ok; }