From 0c6f9681feaa294c8d237e7824fbdd6cdb939dfe Mon Sep 17 00:00:00 2001 From: luca83 Date: Wed, 22 Jul 2009 14:57:08 +0000 Subject: [PATCH] Patch level : 10.0 patch 380 Files correlati : lv2, lv2400a.msk, lvmenu Ricompilazione Demo : [ ] Commento : Corretta la generazione automatica dei documenti in base algi accordi previsti nell'ultima riunione [prima versione; ulteriori test sono in corso] git-svn-id: svn://10.65.10.50/trunk@19126 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- lv/lv2400.cpp | 187 ++++++++++++++++++++++++++++--------------------- lv/lv2400a.h | 13 ++-- lv/lv2400a.uml | 62 +++++++++++----- lv/lvmenu.men | 17 ++--- 4 files changed, 167 insertions(+), 112 deletions(-) diff --git a/lv/lv2400.cpp b/lv/lv2400.cpp index 52e19d989..7149cc5d2 100755 --- a/lv/lv2400.cpp +++ b/lv/lv2400.cpp @@ -39,6 +39,7 @@ class TGenera_documenti_app : public TSkeleton_application TAssoc_array _quantita; TAssoc_array _quantita_ritirata; TConfig* _configlv; + char _buono; private: //Metodi per la generazione dei documenti @@ -49,11 +50,11 @@ private: bool numerazione_drit(const int cod, TString& codnum, TString& tpdoc, TString& statoi, TString& statof) const; bool numerazione_dant(const int cod, TString& codnum, TString& tpdoc, TString& statoi, TString& statof) const; //Metodi per l'eliminazione dei documenti - void cambia_stato(const long codcli, const long codind, const char ritoant); - void elimina_bolle(const long codcli, const long codind); + void cambia_stato(const char ritoant, const TString_array& docarr); + void elimina_bolle(const long codcli, const long codind, TString_array& docarr); //Metodi per la scansione dei documenti - void scansione_ritiri_anticipi(const long codcli, const long codind, const char ritoant); - void scansione_consegne(const long codcli, const long codind); + void scansione_ritiri_anticipi(const long codcli, const long codind, const char ritoant, const TDocumento& docgen); + void scansione_consegne(const long codcli, const long codind, const TDocumento& docgen); //Metodo per il calcolo delle quantità in bolla void calcolo_quantita(const TDocumento& doc, const char ritoant); //Metodi aggiornare il conguaglio sui contratti @@ -78,6 +79,7 @@ bool TGenera_documenti_app::create() { _msk = new TGenera_documenti_mask("lv2400a"); _configlv = new TConfig(CONFIG_DITTA,"lv"); + _buono = *TApplication::argv(2); return TSkeleton_application::create(); } @@ -130,15 +132,11 @@ bool TGenera_documenti_app::crea_documento(const TISAM_recordset& plan) //elimina eventuali documenti di consegna che sono ancora in stato iniziale //...e riporta in stato iniziale i documenti di ritiro e di anticipo che concorrono //...a calcolare le quantità da riportare sulla bolla - cambia_stato(codcli, codind, 'R'); - cambia_stato(codcli, codind, 'A'); - elimina_bolle(codcli, codind); - //calcola tutte le quantità riportate sui documenti di ritiro, sui documenti di anticipo e sulle bolle di consegna - //...eventualmente modificate a mano - scansione_ritiri_anticipi(codcli,codind,'R'); - scansione_ritiri_anticipi(codcli,codind,'A'); - scansione_consegne(codcli,codind); + TString_array docarr; //array che conterrà i riferimenti ai documenti da cancellare + elimina_bolle(codcli, codind, docarr); + cambia_stato('R', docarr); + cambia_stato('A', docarr); //variabili che conterranno i parametri dei documenti che devo generare... //...settati dalla funzione numerazione_ddt() @@ -153,7 +151,18 @@ bool TGenera_documenti_app::crea_documento(const TISAM_recordset& plan) //creo il documento corretto riempiendo i campi che già conosco TDocumento doc('D',anno,codnum,0); - + doc.put(DOC_TIPODOC, tpdoc); + + //calcola tutte le quantità riportate sui documenti di ritiro, sui documenti di anticipo e sulle bolle di consegna + //...eventualmente modificate a mano + scansione_ritiri_anticipi(codcli,codind,'R', doc); + scansione_ritiri_anticipi(codcli,codind,'A', doc); + scansione_consegne(codcli, codind, doc); + + //se non trovo quale documento generare, evito il resto dell'elaborazione + if (!numerazione_ddt(codnum, tpdoc, statoi, statof)) + return NOERR; + doc.put(DOC_STATO, statoi); doc.put(DOC_TIPODOC, tpdoc); doc.put(DOC_DATADOC, datadoc); @@ -179,7 +188,9 @@ bool TGenera_documenti_app::crea_documento(const TISAM_recordset& plan) crea_riga(rcont, modpas, true, doc);*/ } - int err = doc.write(); + int err = 1; + if (doc.rows() > 0) + err = doc.write(); //scrivo sul planning il riferimento alla bolla che lo accompagna if (err == NOERR) @@ -195,12 +206,20 @@ bool TGenera_documenti_app::crea_documento(const TISAM_recordset& plan) } //CREA_RIGA: questa funzione crea una riga merce per una bolla di consegna -void TGenera_documenti_app::crea_riga(const TString& codart, const char modpas, const int tplis, const bool tmp, const bool prinbo,TDocumento& doc) +void TGenera_documenti_app::crea_riga(const TString& codart, const char modpas, const int tplis, const bool tmp, const bool prinbo, TDocumento& doc) { const int perarr = _configlv->get_int("Perarr"); //creo la nuova riga - TRiga_documento& rdoc = doc.new_row("21"); + TString4 tiporiga; + switch (_buono) + { + case 'P': tiporiga = "21"; break; + case 'C': tiporiga = "21"; break; + default: break; + } + + TRiga_documento& rdoc = doc.new_row(tiporiga); const long codcli = doc.get_long(DOC_CODCF); const long codcont = doc.get_long(DOC_CODCONT); @@ -287,8 +306,27 @@ void TGenera_documenti_app::crea_riga(const TString& codart, const char modpas, //NUMERAZIONE_DDT: questa funzione cerca quali sono i codnum e i tpdoc che devo generare bool TGenera_documenti_app::numerazione_ddt(TString& codnum, TString& tpdoc, TString& statoi, TString& statof) const { - codnum = _configlv->get("NUM_GEN"); - tpdoc = _configlv->get("TIPODOC_GEN"); + //questo switc mi permette di generare con lo stesso programma sia i buoni di prelievo (P) + //che i buoni di consegna (C); la variabile globale _buono viene inizializzata con il valore + //passato come parametro al programma al momento della chiamata da menù + switch (_buono) + { + case 'P': + { + codnum = _configlv->get("NUM_PRE(0)"); + tpdoc = _configlv->get("TIPODOC_PRE(0)"); + } + break; + case 'C': + { + codnum = _configlv->get("NUM_GEN"); + tpdoc = _configlv->get("TIPODOC_GEN"); + } + break; + default: break; + } + + //instanzio una cache sulla tabella delle righe contratti (cerco lo stato iniziale) statoi = cache().get("%TIP",tpdoc,"S2").left(1); statof = cache().get("%TIP",tpdoc,"S2").mid(2,1); @@ -326,15 +364,8 @@ bool TGenera_documenti_app::numerazione_dant(const int cod, TString& codnum, TSt //CAMBIA_STATO: questa funzione cerca tutte le bolle di ritiro e anticipo relative a un certo cliente... //in un certo intervallo di date, e gli cambia stato -void TGenera_documenti_app::cambia_stato(const long codcli, const long codind, const char ritoant) +void TGenera_documenti_app::cambia_stato(const char ritoant, const TString_array& docarr) { - //recupero dalla maschera i campi di interesse - const TDate dadatabolla = _msk->get_date(F_DADTBOLLE); - const TDate adatabolla = _msk->get_date(F_ADTBOLLE); - - const long daanno = dadatabolla.year(); - const long aanno = adatabolla.year(); - //per ogni paragrafo scritto in ditta.ini... //recupero numerazione, tipo documento e stato tramite la funzione apposita for (int i = 0; ; i++) @@ -362,39 +393,31 @@ void TGenera_documenti_app::cambia_stato(const long codcli, const long codind, c if (!err) break; - //instanzio un recordset che contiene tutti i documenti di interesse - TISAM_recordset docritiri ("USE DOC KEY 2 SELECT (STATO=#STATO)&&(TIPODOC=#TIPODOC)&&(CODINDSP=#CODINDSP)\nFROM TIPOCF=#TIPOCF CODCF=#CODCF PROVV=#PROVV ANNO=#DAANNO DATADOC=#DADATABOLLA CODNUM=#CODNUM\nTO TIPOCF=#TIPOCF CODCF=#CODCF PROVV=#PROVV ANNO=#AANNO DATADOC=#ADATABOLLA CODNUM=#CODNUM"); - docritiri.set_var("#STATO",TVariant(statof)); //lo stato va preso dallo sheet - docritiri.set_var("#TIPODOC",TVariant(tpdoc)); - docritiri.set_var("#CODINDSP",codind); - docritiri.set_var("#TIPOCF","C"); - docritiri.set_var("#CODCF",codcli); - docritiri.set_var("#PROVV","D"); - docritiri.set_var("#DAANNO",daanno); - docritiri.set_var("#DADATABOLLA",dadatabolla); - docritiri.set_var("#CODNUM",TVariant(codnum)); - docritiri.set_var("#AANNO",aanno); - docritiri.set_var("#ADATABOLLA",adatabolla); - - //per ogni documento che trovo, cambio stato al documento - for (bool ok = docritiri.move_first(); ok; ok = docritiri.move_next()) + FOR_EACH_ARRAY_ROW(docarr, r, row); { - TDocumento doc(docritiri.cursor()->curr()); //instanzio il documento - doc.put(DOC_STATO,statoi); //stato iniziale + TToken_string(row); + + TString str; + str << "USE DOC\n" + << "FROM PROVV=" << row.get(0) << " ANNO=" << row.get(1) << " CODNUM=" << row.get(2) << " NDOC=" << row.get(3) << "\n" + << "TO PROVV=" << row.get(0) << " ANNO=" << row.get(1) << " CODNUM=" << row.get(2) << " NDOC=" << row.get(3); + TISAM_recordset docritiro (str); + + if (!docritiro.empty()) + { + TDocumento doc(docritiro.cursor()->curr()); //instanzio il documento + doc.put(DOC_STATO, statoi); + } } } - return; } //ELIMINA_BOLLE: questa funzione cerca tutte le bolle di consegna relative a un certo cliente ancora... //nello stato iniziale in un certo intervallo di date e le elimina -void TGenera_documenti_app::elimina_bolle(const long codcli, const long codind) +void TGenera_documenti_app::elimina_bolle(const long codcli, const long codind, TString_array& docarr) { //recupero dalla maschera i campi di interesse - const TDate dadatabolla = _msk->get_date(F_DADTBOLLE); - const TDate adatabolla = _msk->get_date(F_ADTBOLLE); - - const long daanno = dadatabolla.year(); + const TDate adatabolla = _msk->get_date(F_DTCONS); const long aanno = adatabolla.year(); //recupero numerazione, tipo documento e stato tramite la funzione apposita @@ -408,15 +431,13 @@ void TGenera_documenti_app::elimina_bolle(const long codcli, const long codind) return; //instanzio un recordset che contiene tutti i documenti di interesse - TISAM_recordset docritiri ("USE DOC KEY 2 SELECT (STATO=#STATO)&&(TIPODOC=#TIPODOC)&&(CODINDSP=#CODINDSP)\nFROM TIPOCF=#TIPOCF CODCF=#CODCF PROVV=#PROVV ANNO=#DAANNO DATADOC=#DADATABOLLA CODNUM=#CODNUM\nTO TIPOCF=#TIPOCF CODCF=#CODCF PROVV=#PROVV ANNO=#AANNO DATADOC=#ADATABOLLA CODNUM=#CODNUM"); + TISAM_recordset docritiri ("USE DOC KEY 2 SELECT (STATO=#STATO)&&(TIPODOC=#TIPODOC)&&(CODINDSP=#CODINDSP)\nFROM TIPOCF=#TIPOCF CODCF=#CODCF PROVV=#PROVV CODNUM=#CODNUM\nTO TIPOCF=#TIPOCF CODCF=#CODCF PROVV=#PROVV ANNO=#AANNO DATADOC=#ADATABOLLA CODNUM=#CODNUM"); docritiri.set_var("#STATO",TVariant(statof)); docritiri.set_var("#TIPODOC",TVariant(tpdoc)); docritiri.set_var("#CODINDSP",codind); docritiri.set_var("#TIPOCF","C"); docritiri.set_var("#CODCF",codcli); - docritiri.set_var("#PROVV","D"); - docritiri.set_var("#DAANNO",daanno); - docritiri.set_var("#DADATABOLLA",dadatabolla); + docritiri.set_var("#PROVV","D"); docritiri.set_var("#CODNUM",TVariant(codnum)); docritiri.set_var("#AANNO",aanno); docritiri.set_var("#ADATABOLLA",adatabolla); @@ -425,6 +446,15 @@ void TGenera_documenti_app::elimina_bolle(const long codcli, const long codind) for (bool ok = docritiri.move_first(); ok; ok = docritiri.move_next()) { TDocumento doc(docritiri.cursor()->curr()); //instanzio il documento + + //salvo la chiave del documento che sto cancellando + TToken_string key; + key.add(doc.get(DOC_PROVV)); + key.add(doc.get(DOC_ANNO)); + key.add(doc.get(DOC_CODNUM)); + key.add(doc.get(DOC_NDOC)); + docarr.add(key); + doc.remove(); //stato di bloccato } return; @@ -435,14 +465,11 @@ void TGenera_documenti_app::elimina_bolle(const long codcli, const long codind) ////////////////////////////////////////////////////////////// //SCANSIONE_RITIRI_ANTICIPI: questa funzione cerca tutte le bolle di ritiro relative a un certo cliente non ancora evase... -//in un certo intervallo di date, e, dopo l'elaborazione, gli cambia stato -void TGenera_documenti_app::scansione_ritiri_anticipi(const long codcli, const long codind, const char ritoant) +//e, dopo l'elaborazione, gli cambia stato +void TGenera_documenti_app::scansione_ritiri_anticipi(const long codcli, const long codind, const char ritoant, const TDocumento& docgen) { //recupero dalla maschera i campi di interesse - const TDate dadatabolla = _msk->get_date(F_DADTBOLLE); - const TDate adatabolla = _msk->get_date(F_ADTBOLLE); - - const long daanno = dadatabolla.year(); + const TDate adatabolla = _msk->get_date(F_DTCONS); const long aanno = adatabolla.year(); //per ogni paragrafo scritto in ditta.ini... @@ -473,16 +500,13 @@ void TGenera_documenti_app::scansione_ritiri_anticipi(const long codcli, const l break; //instanzio un recordset che contiene tutti i documenti di interesse - TISAM_recordset docritiri ("USE DOC KEY 2 SELECT (STATO!=#STATO)&&(TIPODOC=#TIPODOC)&&(CODINDSP=#CODINDSP)\nFROM TIPOCF=#TIPOCF CODCF=#CODCF PROVV=#PROVV ANNO=#DAANNO DATADOC=#DADATABOLLA CODNUM=#CODNUM\nTO TIPOCF=#TIPOCF CODCF=#CODCF PROVV=#PROVV ANNO=#AANNO DATADOC=#ADATABOLLA CODNUM=#CODNUM"); - docritiri.set_var("#STATO",TVariant(statof)); //lo stato va preso dallo sheet + TISAM_recordset docritiri ("USE DOC KEY 2 SELECT (STATO==#STATO)&&(TIPODOC==#TIPODOC)&&(CODNUM==#CODNUM)\nFROM TIPOCF=#TIPOCF CODCF=#CODCF PROVV=#PROVV \nTO TIPOCF=#TIPOCF CODCF=#CODCF PROVV=#PROVV ANNO=#AANNO DATADOC=#ADATABOLLA"); + docritiri.set_var("#STATO",TVariant(statoi)); //lo stato va preso dallo sheet docritiri.set_var("#TIPODOC",TVariant(tpdoc)); - docritiri.set_var("#CODINDSP",codind); + docritiri.set_var("#CODNUM",TVariant(codnum)); docritiri.set_var("#TIPOCF","C"); docritiri.set_var("#CODCF",codcli); - docritiri.set_var("#PROVV","D"); - docritiri.set_var("#DAANNO",daanno); - docritiri.set_var("#DADATABOLLA",dadatabolla); - docritiri.set_var("#CODNUM",TVariant(codnum)); + docritiri.set_var("#PROVV","D"); docritiri.set_var("#AANNO",aanno); docritiri.set_var("#ADATABOLLA",adatabolla); @@ -491,7 +515,12 @@ void TGenera_documenti_app::scansione_ritiri_anticipi(const long codcli, const l { TDocumento doc(docritiri.cursor()->curr()); //instanzio il documento calcolo_quantita(doc,ritoant); - doc.put(DOC_STATO,statof); //stato di elaborato, preso dallo sheet + doc.put(DOC_STATO,statof); //stato di elaborato, preso dallo sheet + //salvo i riferimenti del documento che sto andando a generare + doc.put("PROVVDG", docgen.get(DOC_PROVV)); + doc.put("ANNODG", docgen.get(DOC_ANNO)); + doc.put("CODNUMDG", docgen.get(DOC_CODNUM)); + doc.put("NDCODG", docgen.get(DOC_NDOC)); } } return; @@ -499,13 +528,10 @@ void TGenera_documenti_app::scansione_ritiri_anticipi(const long codcli, const l //SCANSIONE_CONSEGNE: questa funzione cerca tutte le bolle di consegna relative a un certo cliente ancora... //nello stato iniziale in un certo intervallo di date -void TGenera_documenti_app::scansione_consegne(const long codcli, const long codind) +void TGenera_documenti_app::scansione_consegne(const long codcli, const long codind, const TDocumento& docgen) { - //recupero dalla maschera i campi di interesse - const TDate dadatabolla = _msk->get_date(F_DADTBOLLE); - const TDate adatabolla = _msk->get_date(F_ADTBOLLE); - - const long daanno = dadatabolla.year(); + //recupero dalla maschera i campi di interesse + const TDate adatabolla = _msk->get_date(F_DTCONS); const long aanno = adatabolla.year(); //recupero numerazione, tipo documento e stato tramite la funzione apposita @@ -519,16 +545,14 @@ void TGenera_documenti_app::scansione_consegne(const long codcli, const long cod return; //instanzio un recordset che contiene tutti i documenti di interesse - TISAM_recordset docritiri ("USE DOC KEY 2 SELECT (STATO!=#STATO)&&(TIPODOC=#TIPODOC)&&(CODINDSP=#CODINDSP)\nFROM TIPOCF=#TIPOCF CODCF=#CODCF PROVV=#PROVV ANNO=#DAANNO DATADOC=#DADATABOLLA CODNUM=#CODNUM\nTO TIPOCF=#TIPOCF CODCF=#CODCF PROVV=#PROVV ANNO=#AANNO DATADOC=#ADATABOLLA CODNUM=#CODNUM"); + TISAM_recordset docritiri ("USE DOC KEY 2 SELECT (STATO==#STATO)&&(TIPODOC==#TIPODOC)&&(CODNUM==#CODNUM)\nFROM TIPOCF=#TIPOCF CODCF=#CODCF PROVV=#PROVV \nTO TIPOCF=#TIPOCF CODCF=#CODCF PROVV=#PROVV ANNO=#AANNO DATADOC=#ADATABOLLA"); docritiri.set_var("#STATO",TVariant(statof)); docritiri.set_var("#TIPODOC",TVariant(tpdoc)); docritiri.set_var("#CODINDSP",codind); + docritiri.set_var("#CODNUM",TVariant(codnum)); docritiri.set_var("#TIPOCF","C"); docritiri.set_var("#CODCF",codcli); docritiri.set_var("#PROVV","D"); - docritiri.set_var("#DAANNO",daanno); - docritiri.set_var("#DADATABOLLA",dadatabolla); - docritiri.set_var("#CODNUM",TVariant(codnum)); docritiri.set_var("#AANNO",aanno); docritiri.set_var("#ADATABOLLA",adatabolla); @@ -538,6 +562,11 @@ void TGenera_documenti_app::scansione_consegne(const long codcli, const long cod TDocumento doc(docritiri.cursor()->curr()); //instanzio il documento calcolo_quantita(doc,'B'); doc.put(DOC_STATO,statof); //stato di bloccato + //salvo i riferimenti del documento che sto andando a generare + doc.put("PROVVDG", docgen.get(DOC_PROVV)); + doc.put("ANNODG", docgen.get(DOC_ANNO)); + doc.put("CODNUMDG", docgen.get(DOC_CODNUM)); + doc.put("NDCODG", docgen.get(DOC_NDOC)); } return; } @@ -558,7 +587,7 @@ void TGenera_documenti_app::calcolo_quantita(const TDocumento& doc, const char r const TRiga_documento& rdoc = doc[i]; //estraggo i dati di interesse const TString80 codart = rdoc.get(RDOC_CODARTMAG); - const real qtardoc = rdoc.get_real(RDOC_QTA); + const real qtardoc = rdoc.get_real(RDOC_QTAGG1); //se è una riga che riguarda un articolo e se la quantità su questa riga non è nulla, allora la elaboro if (codart.full() && !qtardoc.is_zero()) { diff --git a/lv/lv2400a.h b/lv/lv2400a.h index 07d9ecf67..fd086e935 100755 --- a/lv/lv2400a.h +++ b/lv/lv2400a.h @@ -2,9 +2,10 @@ // definizione campi per maschera lv2400a #define F_DTCONS 103 #define F_DTDOC 104 -#define F_DADTBOLLE 105 -#define F_ADTBOLLE 106 -#define F_CODITI 107 -#define F_DESCRITI 108 -#define F_CODCF 109 -#define F_RAGSOCCLI 110 +#define F_TPGEN 105 +#define F_CODITI 106 +#define F_DESCRITI 107 +#define F_CODAUT 108 +#define F_DESCRAUT 109 +#define F_CODCF 110 +#define F_RAGSOCCLI 111 \ No newline at end of file diff --git a/lv/lv2400a.uml b/lv/lv2400a.uml index 8f2a08c27..8147fc602 100755 --- a/lv/lv2400a.uml +++ b/lv/lv2400a.uml @@ -4,43 +4,36 @@ TOOLBAR "" 0 0 0 2 #include ENDPAGE -PAGE "Generazione giri" -1 -1 76 20 +PAGE "Generazione documenti" -1 -1 76 20 -GROUPBOX DLG_NULL 76 6 +GROUPBOX DLG_NULL 76 8 BEGIN PROMPT 1 1 "@bDati per la generazione documenti relativi ai giri" END DATE F_DTCONS BEGIN - PROMPT 2 2 "Giro del " + PROMPT 2 2 "Data di prevista consegna " CHECKTYPE REQUIRED END DATE F_DTDOC BEGIN - PROMPT 30 2 "Data documento " + PROMPT 50 2 "Data documento " FLAGS "A" CHECKTYPE REQUIRED END -DATE F_DADTBOLLE +LISTBOX F_TPGEN 1 37 BEGIN - PROMPT 2 3 "Considera i documenti di ritiro fino dal " - CHECKTYPE REQUIRED -END - -DATE F_ADTBOLLE -BEGIN - PROMPT 55 3 " al " - VALIDATE DATE_CMP_FUNC >= F_DADTBOLLE - WARNING "Attenzione: la data deve essere maggiore di quella di inizio del periodo" - CHECKTYPE REQUIRED + PROMPT 2 3 "Generare i documenti " + ITEM "0|Fino alla data di prevista consegna" + ITEM "1|Solo per la data di prevista consegna" END STRING F_CODITI 3 BEGIN - PROMPT 2 4 "Itinerario " + PROMPT 2 5 "Itinerario " FLAGS "UZ" USE &ITI JOIN &AUT TO &ITI ALIAS 1000 INTO CODTAB==S1 @@ -59,7 +52,7 @@ END STRING F_DESCRITI 50 BEGIN - PROMPT 23 4 "" + PROMPT 23 5 "" USE &ITI KEY 2 INPUT S0 F_DESCRITI DISPLAY "Descrizione@50" S0 @@ -68,9 +61,40 @@ BEGIN CHECKTYPE NORMAL END +STRING F_CODAUT 6 +BEGIN + PROMPT 2 6 "Autista " + FLAGS "UZ" + USE &ITI + JOIN &AUT TO &ITI ALIAS 1000 INTO CODTAB==S1 + JOIN &MEZ TO &ITI ALIAS 2000 INTO CODTAB==S2 + INPUT CODTAB F_CODITI + DISPLAY "Autista" S1 + DISPLAY "Descrizione Autista@50" 1000@->S0 + DISPLAY "Itinerario" CODTAB + DISPLAY "Descrizione@50" S0 + DISPLAY "Targa@8" S2 + DISPLAY "Descrizione Mezzo@50" 2000@->S0 + OUTPUT F_CODAUT S1 + OUTPUT F_DESCRAUT 1000@->S0 + CHECKTYPE NORMAL +END + +STRING F_DESCRAUT 50 +BEGIN + PROMPT 23 6 "" + USE &AUT KEY 2 + INPUT S0 F_DESCRAUT + DISPLAY "Descrizione@50" S0 + DISPLAY "Codice" CODTAB + OUTPUT F_CODAUT CODTAB + OUTPUT F_DESCRAUT S0 + CHECKTYPE NORMAL +END + NUMBER F_CODCF 6 BEGIN - PROMPT 2 5 "Cliente " + PROMPT 2 7 "Cliente " FLAGS "U" USE LF_CLIFO INPUT TIPOCF "C" @@ -84,7 +108,7 @@ END STRING F_RAGSOCCLI 50 BEGIN - PROMPT 23 5 "" + PROMPT 23 7 "" USE LF_CLIFO KEY 2 INPUT TIPOCF "C" INPUT RAGSOC F_RAGSOCCLI diff --git a/lv/lvmenu.men b/lv/lvmenu.men index e16e6981c..133314e98 100755 --- a/lv/lvmenu.men +++ b/lv/lvmenu.men @@ -85,7 +85,6 @@ Module = 41 Flags = "" Item_01 = "Generazione automatica", "lv2 -0", "F" Item_02 = "Gestione manuale", "lv2 -1", "F" -Item_04 = "Generazione bolle di consegna", "lv2 -3", "F" [LVMENU_032] Caption = "Stampe" @@ -99,13 +98,15 @@ Caption = "Documenti" Picture = Module = 41 Flags = "" -Item_01 = "Acquisizione Bolle di rientro", "lv2 -5 lv2600a", "F" -Item_02 = "Documenti di Trasporto", "lv3 -0 -filtI1=1 -defNUM_GEN,TIPODOC_GEN,lv", "F" -Item_03 = "Fatture", "ve0 -1 -filtI1=2 -defNUM_FAT,TIPODOC_FAT,lv", "F" -Item_04 = "Ordini Fornitori", "ve0 -1 -filtI1=3 -defNUM_ORF,TIPODOC_ORF,lv", "F" -Item_05 = "Ordini Clienti", "ve0 -1 -filtI1=3 -defNUM_ORC,TIPODOC_ORC,lv", "F" -Item_06 = "Fatturazione", "lv2 -4", "F" -Item_07 = "Stampe", [LVMENU_050] +Item_01 = "Acquisizione da Contapezzi", "lv2 -5 lv2600a", "F" +Item_02 = "Generazione buoni di prelievo", "lv2 -3 P", "F" +Item_03 = "Generazione buoni di consegna", "lv2 -3 C", "F" +Item_04 = "Buoni di Consegna", "lv3 -0 -filtI1=1 -defNUM_GEN,TIPODOC_GEN,lv", "F" +Item_05 = "Fatture", "ve0 -1 -filtI1=2 -defNUM_FAT,TIPODOC_FAT,lv", "F" +Item_06 = "Ordini Fornitori", "ve0 -1 -filtI1=3 -defNUM_ORF,TIPODOC_ORF,lv", "F" +Item_07 = "Ordini Clienti", "ve0 -1 -filtI1=3 -defNUM_ORC,TIPODOC_ORC,lv", "F" +Item_08 = "Fatturazione", "lv2 -4", "F" +Item_09 = "Stampe", [LVMENU_050] [LVMENU_050] Caption = "Stampe"