From dc91a5c34153cb168045b674a0bb6a12489f7132 Mon Sep 17 00:00:00 2001 From: guy Date: Tue, 22 Nov 2011 16:17:42 +0000 Subject: [PATCH] Patch level : 10.0 Files correlati : lv0.exe lv0600a.msk lv0600a.rep lv3.exe Ricompilazione Demo : [ ] Commento : Riportate Bonazzate git-svn-id: svn://10.65.10.50/branches/R_10_00@22500 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- lv/lv0400.cpp | 121 +++++++++++++++++++++++++------------------------ lv/lv0600a.rep | 33 ++++++++------ lv/lv0600a.uml | 3 ++ lv/lv3800.cpp | 112 ++++++++++++++++++++++++++++++++++++++------- 4 files changed, 181 insertions(+), 88 deletions(-) diff --git a/lv/lv0400.cpp b/lv/lv0400.cpp index 6df07e4cb..83b6309f5 100755 --- a/lv/lv0400.cpp +++ b/lv/lv0400.cpp @@ -689,63 +689,6 @@ bool TContratti_msk::on_field_event(TOperable_field& o,TField_event e,long jolly } - //PROPONI PREZZO - TToken_string key; - key.add('C'); - key.add(field(F_CODCF).get()); - const TRectype& cfven = cache().get(LF_CFVEN, key); - - bool trvlst = false; - - if (!cfven.empty()) - { - //se č settata la categoria merceologica, leggo sia il listino che la cat merc, altrimenti solo il listino - TString8 codlis = cfven.get(CFV_CODLIST); - TString8 catven; - if (!ini_get_bool(CONFIG_DITTA,"ve", "GESLISCV")) - catven = ""; - else - catven = cfven.get(CFV_CATVEN); - - //cerco il prezzo sul listino - key.cut(0); - key.add('L'); //tipo - key.add(catven); //catven - key.add(""); //tipocf - key.add(""); //codcf - key.add(codlis); //codlis - key.add('A'); //tiporiga - key.add(codart); //codriga - key.add(""); //um - key.add(""); //nscagl - const TRectype& rcondv = cache().get(LF_RCONDV, key); - - if (!rcondv.empty()) - { - m.set(S_PREZZOST, rcondv.get_real(RCONDV_PREZZO)); - trvlst = true; - } - } - - real prezzo; - //se non ho trovato un listino, o se non c'č un listino impostato - //propongo come prezzo il valore convenzionale - if (!trvlst) - { - key.cut(0); - key.add(codart); - key.add(1); - const TRectype& umart = cache().get(LF_UMART, key); - m.set(S_PREZZOST, umart.get_real(UMART_PREZZO)); - if (umart.get(UMART_PREZZO).full()) - { - prezzo = umart.get_real(UMART_PREZZO); - trvlst = true; - } - } - - if (!trvlst && insert_mode()) - warning_box(TR("Non č stato trovato nessun prezzo da proporre")); //se ho scritto un articolo diverso da quello che esisteva prima //e se si desidera veramente modificarlo, allora permetto la modifica @@ -753,14 +696,74 @@ bool TContratti_msk::on_field_event(TOperable_field& o,TField_event e,long jolly //e lascio tutto invariato if (codart != _artrig) { + TToken_string& row = ss.row(ss.selected()); + real prezzo(row.get(ss.cid2index(S_PREZZOST))); + if (_artrig.empty() || noyes_box("Si desidera veramente modificare l'articolo %s",(const char*) _artrig)) + { _artrig = codart; + //PROPONI PREZZO + TToken_string key; + key.add('C'); + key.add(field(F_CODCF).get()); + const TRectype& cfven = cache().get(LF_CFVEN, key); + bool trvlst = false; + + if (!cfven.empty()) + { + //se č settata la categoria merceologica, leggo sia il listino che la cat merc, altrimenti solo il listino + + TString8 codlis = cfven.get(CFV_CODLIST); + TString8 catven; + if (!ini_get_bool(CONFIG_DITTA,"ve", "GESLISCV")) + catven = ""; + else + catven = cfven.get(CFV_CATVEN); + + //cerco il prezzo sul listino + key.cut(0); + key.add('L'); //tipo + key.add(catven); //catven + key.add(""); //tipocf + key.add(""); //codcf + key.add(codlis); //codlis + key.add('A'); //tiporiga + key.add(codart); //codriga + key.add(""); //um + key.add(""); //nscagl + const TRectype& rcondv = cache().get(LF_RCONDV, key); + + if (!rcondv.empty()) + { + prezzo = rcondv.get_real(RCONDV_PREZZO); + trvlst = true; + } + } + + //se non ho trovato un listino, o se non c'č un listino impostato + //propongo come prezzo il valore convenzionale + if (!trvlst) + { + key.cut(0); + key.add(codart); + key.add(1); + const TRectype& umart = cache().get(LF_UMART, key); + m.set(S_PREZZOST, umart.get_real(UMART_PREZZO)); + if (umart.get(UMART_PREZZO).full()) + { + prezzo = umart.get_real(UMART_PREZZO); + trvlst = true; + } + } + + if (!trvlst && insert_mode()) + warning_box(TR("Non č stato trovato nessun prezzo da proporre")); + } else m.set(S_CODART, _artrig); - TToken_string& row = ss.row(ss.selected()); - row.add(_artrig, ss.cid2index(S_CODART)); row.add(prezzo.string(), ss.cid2index(S_PREZZOST)); + row.add(_artrig, ss.cid2index(S_CODART)); ss.force_update(ss.selected()); } //se all'articolo č associata un'unitā di misura, la propongo diff --git a/lv/lv0600a.rep b/lv/lv0600a.rep index 8aae32c05..ae62fbb06 100755 --- a/lv/lv0600a.rep +++ b/lv/lv0600a.rep @@ -2,7 +2,7 @@ Stampa Storico Consegne per Cliente -
+
@@ -15,8 +15,8 @@ MESSAGE _PAGENO
-
-
+
+
33.CODCF @@ -37,6 +37,9 @@ + + + @@ -54,7 +57,7 @@
-
+
CODART 34.CODART @@ -63,8 +66,11 @@ 3000@.DESCR
-
-
+
+
+ + 34.NDOC + 1000@.DATADOC @@ -78,17 +84,18 @@ 34.CODAGG1 - 34.PREZZO + 34.IMPNS
-
-
-
-
+
+
+
+
USE 34 -SELECT ((34.CODNUM="B01")(BETWEEN(33.DATADOC,#F_DATA_FROM,#F_DATA_TO))(BETWEEN(33.CODCF,#F_CODCF_FROM,#F_CODCF_TO))(BETWEEN(CODART,#F_CODARTI_FROM,#F_CODARTI_TO))(BETWEEN(CODAGG1,#F_CODCAUSA_FROM,#F_CODCAUSA_TO))) +SELECT ((BETWEEN(33.DATADOC,#F_DATA_FROM,#F_DATA_TO))(BETWEEN(33.CODCF,#F_CODCF_FROM,#F_CODCF_TO))(BETWEEN(CODART,#F_CODARTI_FROM,#F_CODARTI_TO))(BETWEEN(CODAGG1,#F_CODCAUSA_FROM,#F_CODCAUSA_TO))) BY 33.CODCF 34.CODART 33.DATADOC JOIN 33 TO 34 ALIAS 1000 INTO CODNUM==CODNUM ANNO==ANNO PROVV==PROVV NDOC==NDOC JOIN 20 TO 33 ALIAS 2000 INTO TIPOCF==TIPOCF CODCF==CODCF -JOIN 47 TO 34 ALIAS 3000 INTO CODART==CODART +JOIN 47 TO 34 ALIAS 3000 INTO CODART==CODART +FROM CODNUM=="B05" \ No newline at end of file diff --git a/lv/lv0600a.uml b/lv/lv0600a.uml index 619667a4c..e54f6999f 100755 --- a/lv/lv0600a.uml +++ b/lv/lv0600a.uml @@ -26,6 +26,7 @@ BEGIN OUTPUT F_RAGSOC_DA RAGSOC CHECKTYPE SEARCH FIELD #F_CODCF_FROM + MESSAGE COPY,F_CODCF_A|CHECK,F_CODCF_A END STRING F_RAGSOC_DA 50 @@ -110,6 +111,7 @@ BEGIN OUTPUT F_DESART_DA DESCR CHECKTYPE SEARCH FIELD #F_CODARTI_FROM + MESSAGE COPY,F_CODART_A|CHECK,F_CODART_A END STRING F_DESART_DA 40 @@ -172,6 +174,7 @@ BEGIN OUTPUT F_DESCAUS_DA S0 CHECKTYPE SEARCH FIELD #F_CODCAUSA_FROM + MESSAGE COPY,F_CODCAUS_A|CHECK,F_CODCAUS_A END STRING F_DESCAUS_DA 50 diff --git a/lv/lv3800.cpp b/lv/lv3800.cpp index 8a8451107..b4ebd8c2c 100755 --- a/lv/lv3800.cpp +++ b/lv/lv3800.cpp @@ -45,7 +45,12 @@ void TInvia_clienti_skema::aggiungi_riga(const long codcf) } new_rec(""); - set("CODCF", TVariant(codcf)); + + TString16 cod; + + cod.format("%06d", codcf); + + set("CODCF", cod); set("RAGSOC", ragsoc); set("CITTA", localita); } @@ -53,7 +58,19 @@ void TInvia_clienti_skema::aggiungi_riga(const long codcf) TInvia_clienti_skema::TInvia_clienti_skema() : TAS400_recordset("AS400(122)") { - create_field("CODCF", -1, 20, _longzerofld, true); //codice cliente +/* + +FILE CLIENTI.TXT + +Campo Tipo Posizione +------------------------------------------- +Codice Cliente Alfanumerico 1-20 +Ragione Sociale Alfanumerico 21-70 +Citta Alfanumerico 71-120 + +*/ + + create_field("CODCF", -1, 20, _alfafld, true); //codice cliente create_field("RAGSOC", -1, 50, _alfafld, true); //ragione sociale create_field("CITTA", -1, 50, _alfafld, true); //cittā create_field("ACAPO", -1, 2, _alfafld, true, TVariant("\r\n")); //caratteri di a capo @@ -66,6 +83,9 @@ TInvia_clienti_skema::TInvia_clienti_skema() //Classe TInvia_articoli_skema class TInvia_articoli_skema: public TAS400_recordset { + TString4 _umkg; // Unitā di misura dei Kg + TString4 _umgr; // Unitā di misura dei gr + public: void aggiungi_riga(const TString& codart); TInvia_articoli_skema(); @@ -74,36 +94,81 @@ public: void TInvia_articoli_skema::aggiungi_riga(const TString& codart) { //preparo la cache su anamag - const TRectype& anamag = cache().get(LF_ANAMAG, codart); + TArticolo & anamag = cached_article(codart); const TString80 desart = anamag.get(ANAMAG_DESCR); - const TString80 tpart = anamag.get(ANAMAG_TIPOPARTE); - TString8 codlav; codlav.format("%05d", anamag.get(ANAMAG_CODLAV1)); - TString16 peso; peso.format("%010d", anamag.get(ANAMAG_PESO)); + const TString80 tpart = anamag.get(ANAMAG_CODARTALT); + TString8 codlav; + codlav.format("%05d", anamag.get_int(ANAMAG_CODLAV1)); + real peso = anamag.get_real(ANAMAG_PESO); + const TString4 ump = anamag.get(ANAMAG_UMP); const real lunghezza = anamag.get_real(ANAMAG_USER9); const real larghezza = anamag.get_real(ANAMAG_USER10); - + + if (ump.full()) + { + if (ump != _umkg) + { + peso = anamag.convert_to_um(peso, _umkg, ump, false); // Converto in Kg + peso.round(3); // Arrotondo al grammo + } + } + else + peso = ZERO; + new_rec(""); set("CODART", codart); set("DESART", desart); set("CODLAV", codlav); set("TPART", tpart); - set("PESO", peso); - set("LUNGHEZZA", lunghezza); - set("LARGHEZZA", larghezza); + set("PESO", peso.stringa(10, 3, '0')); + set("LUNGHEZZA", lunghezza.string(4, 0)); + set("LARGHEZZA", larghezza.string(4, 0)); } TInvia_articoli_skema::TInvia_articoli_skema() - : TAS400_recordset("AS400(127)") + : TAS400_recordset("AS400(115)") { + /* + + FILE ARTICOLI.TXT + +Campo Tipo Posizione +----------------------------------------------------- +Codice Articolo Alfanumerico 1-20 +Descrizione Articolo Alfanumerico 21-70 +Codice Lavaggio Numerico intero + Allineato a destra. 71-75 +Tipo Articolo Alfanumerico 76-95 +Peso (Kg) Numerico + con 3 decimali + Allineato a destra + (formato 999999,999) 96-105 +Lunghezza Numerico + Allineato a destra + (formato 99999) 106-109 +Larghezza Numerico + Allineato a destra + (formato 99999) 110-113 +*/ + create_field("CODART", -1, 20, _alfafld, true); //codice articolo create_field("DESART", -1, 50, _alfafld, true); //descrizione - create_field("CODALV", -1, 5, _intzerofld, true); //codice lavaggio + create_field("CODLAV", -1, 5, _alfafld, true); //codice lavaggio create_field("TPART", -1, 20, _alfafld, true); //tipo articolo - create_field("PESO", -1, 20, _alfafld, true); //peso - create_field("LUNGHEZZA", -1, 5, _realfld, true); //lunghezza - create_field("LARGHEZZA", -1, 5, _realfld, true); //larghezza + create_field("PESO", -1, 10, _alfafld, true); //peso + create_field("LUNGHEZZA", -1, 4, _alfafld, true); //lunghezza + create_field("LARGHEZZA", -1, 4, _alfafld, true); //larghezza create_field("ACAPO", -1, 2, _alfafld, true, TVariant("\r\n")); //caratteri di a capo + + _umkg = ini_get_string(CONFIG_DITTA, "lv", "UmKg", "KG"); + + TISAM_recordset ums("USE %UMS SELECT (NUM(S7==#KG))&&(STR(R10==0.001))"); + ums.set_var("#KG", _umkg); + if (ums.move_first()) + _umgr = ums.get("CODTAB").as_string(); + else + _umgr = _umkg == "KG" ? "GR" : ""; } ////////////////////////////////////// @@ -133,7 +198,11 @@ void TInvia_dotazioni_skema::aggiungi_riga(const long codcf, const long codcont) const TString80 codart = rcont.get(LVRCONDV_CODART).as_string(); new_rec(""); - set("CODCF", TVariant(codcf)); + TString16 cod; + + cod.format("%06d", codcf); + + set("CODCF", cod); set("CODART", codart); } } @@ -141,6 +210,17 @@ void TInvia_dotazioni_skema::aggiungi_riga(const long codcf, const long codcont) TInvia_dotazioni_skema::TInvia_dotazioni_skema() : TAS400_recordset("AS400(42)") { + +/* +FILE DOTAZIONE.TXT + +Campo Tipo Posizione +----------------------------------------------------- +Codice Cliente Alfanumerico 1-20 +Codice Articolo Alfanumerico 21-40 + +*/ + create_field("CODCF", -1, 20, _alfafld, true); //codice cliente create_field("CODART", -1, 20, _alfafld, true); //codice cliente create_field("ACAPO", -1, 2, _alfafld, true, TVariant("\r\n")); //caratteri di a capo