diff --git a/lv/lv0.cpp b/lv/lv0.cpp
index 9d190eb38..1c74417ef 100755
--- a/lv/lv0.cpp
+++ b/lv/lv0.cpp
@@ -13,5 +13,5 @@ int main(int argc, char** argv)
case 4: lv0500(argc, argv); break; // passaggi planning per contratto lv0500 (e periodi di sospensione)
default: lv0100(argc, argv); break; // gestione tabelle lv0100
}
- return 0;
+ return 0;
}
diff --git a/lv/lv0400d.h b/lv/lv0400d.h
new file mode 100755
index 000000000..ca754df66
--- /dev/null
+++ b/lv/lv0400d.h
@@ -0,0 +1,12 @@
+//Definizione campi per maschera lv0400D
+//Stampa Elenco Clienti per Articolo
+#define F_CODART 201
+#define F_DESART 202
+#define F_CODCF_DA 203
+#define F_RAGSOC_DA 204
+#define F_CODCF_A 205
+#define F_RAGSOC_A 206
+#define F_PREZZO_DA 207
+#define F_PREZZO_A 208
+#define F_ZONA 209
+#define F_DESZONA 210
\ No newline at end of file
diff --git a/lv/lv0400d.rep b/lv/lv0400d.rep
new file mode 100755
index 000000000..82288ae5b
--- /dev/null
+++ b/lv/lv0400d.rep
@@ -0,0 +1,82 @@
+
+
+ Stampa Elenco Clienti per Articolo
+
+
+
+
+ MESSAGE _TODAY
+
+
+
+ MESSAGE _PAGENO
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ USE 169 KEY 1
+SELECT (CODART==#F_CODART_TO)(BETWEEN(17.CODZONA,#F_ZONA_FROM,#F_ZONA_FROM))(STR((PREZZOE;=#F_PREZZO_FROM))(PREZZOC;=IF(#F_PREZZO_TO==0,999999999999999999,#F_PREZZO_TO))))
+JOIN 20 TO 169 ALIAS 1000 INTO TIPOCF=="C" CODCF==CODCF
+JOIN 17 TO 169 ALIAS 2000 INTO TIPOCF=="C" CODCF==CODCF
+FROM CODCF=#F_CODCF_FROM
+TO CODCF=#F_CODCF_TO
+
\ No newline at end of file
diff --git a/lv/lv0400d.uml b/lv/lv0400d.uml
new file mode 100755
index 000000000..4a6bb92f3
--- /dev/null
+++ b/lv/lv0400d.uml
@@ -0,0 +1,154 @@
+#include "lv0400d.h"
+
+TOOLBAR "topbar" 0 0 0 2
+#include "printbar.h"
+ENDPAGE
+
+PAGE "Stampa Elenco Clienti per Articolo" -1 -1 40 5
+
+GROUPBOX DLG_NULL 80 5
+BEGIN
+ PROMPT 1 1 "@b Parametri Articolo"
+END
+
+STRING F_CODART 20
+BEGIN
+PROMPT 2 3 "Articolo "
+FLAG "U"
+USE 47
+INPUT CODART F_CODART
+DISPLAY "Codice@20" CODART
+DISPAY "Descrizione@50" DESCR
+OUTPUT F_CODART CODART
+OUTPUT F_DESART DESCR
+CHECKTYPE REQUIRED
+FIELD #F_CODART_TO
+END
+
+STRING F_DESART 50
+BE
+PR 2 4 "Descrizione"
+USE 47 KEY 2
+INPUT DESCR F_DESART
+DISPLAY "Codice@20" CODART
+DISPALY "Descrizione@50" DESCR
+OUTPUT F_CODART CODART
+OUTPUT F_DESART DESCR
+CHECKTYPE REQUIRED
+FIELD #F_DESART_TO
+END
+
+GROUPBOX DLG_NULL 80 4
+BEGIN
+ PROMPT 1 7 "@b Parametri Cliente"
+END
+
+NUMBER F_CODCF_DA 6
+BEGIN
+ PROMPT 2 8 "Da Cliente "
+ FLAGS "U"
+ KEY 1
+ USE LF_CLIFO
+ INPUT TIPOCF "C"
+ INPUT CODCF F_CODCF_DA
+ DISPLAY "Codice" CODCF
+ DISPLAY "Ragione Sociale@50" RAGSOC
+ OUTPUT F_CODCF_DA CODCF
+ OUTPUT F_RAGSOC_DA RAGSOC
+ FIELD #F_CODCF_FROM
+END
+
+STRING F_RAGSOC_DA 50
+BEGIN
+ PROMPT 25 8 ""
+ KEY 2
+ USE LF_CLIFO KEY 2
+ INPUT TIPOCF "C"
+ INPUT RAGSOC F_RAGSOC_DA
+ DISPLAY "Ragione Sociale@50" RAGSOC
+ DISPLAY "Codice" CODCF
+ OUTPUT F_CODCF_DA CODCF
+ OUTPUT F_RAGSOC_DA RAGSOC
+END
+
+NUMBER F_CODCF_A 6
+BEGIN
+ PROMPT 2 9 "A Cliente "
+ FLAGS "U"
+ KEY 1
+ USE LF_CLIFO
+ INPUT TIPOCF "C"
+ INPUT CODCF F_CODCF_A
+ DISPLAY "Codice" CODCF
+ DISPLAY "Ragione Sociale@50" RAGSOC
+ OUTPUT F_CODCF_A CODCF
+ OUTPUT F_RAGSOC_A RAGSOC
+ FIELD #F_CODCF_TO
+END
+
+STRING F_RAGSOC_A 50
+BEGIN
+ PROMPT 25 9 ""
+ KEY 2
+ USE LF_CLIFO KEY 2
+ INPUT TIPOCF "C"
+ INPUT RAGSOC F_RAGSOC_A
+ DISPLAY "Ragione Sociale@50" RAGSOC
+ DISPLAY "Codice" CODCF
+ OUTPUT F_CODCF_A CODCF
+ OUTPUT F_RAGSOC_A RAGSOC
+END
+
+GROUPBOX DLG_NULL 80 3
+BEGIN
+ PROMPT 1 12 "@b Parametri Prezzo"
+END
+
+CURRENCY F_PREZZO_DA 18
+BEGIN
+PROMPT 2 13 "Da Prezzo "
+FLAGS "U"
+FIELD #F_PREZZO_FROM
+END
+
+CURRENCY F_PREZZO_A 18
+BEGIN
+PROMPT 40 13 "A Prezzo"
+FLAGS "U"
+FIELD #F_PREZZO_TO
+END
+
+GROUPBOX DLG_NULL 80 3
+BEGIN
+ PROMPT 1 16 "@b Parametri Zona"
+END
+
+STRING F_ZONA 2
+BEGIN
+ PROMPT 2 17 "Codice Zona"
+ USE ZON
+ INPUT CODTAB F_ZONA
+ DISPLAY "Codice" CODTAB
+ DISPLAY "Descrizione@50" S0
+ OUTPUT F_ZONA CODTAB
+ OUTPUT F_DESZONA S0
+ CHECKTYPE NORMAL
+ FIELD #F_ZONA_FROM
+END
+
+STRING F_DESZONA 50
+BEGIN
+ PROMPT 20 17 ""
+ USE ZON KEY 2
+ INPUT CODTAB F_ZONA
+ DISPLAY "Codice" CODTAB
+ DISPLAY "Descrizione@50" S0
+ OUTPUT F_ZONA CODTAB
+ OUTPUT F_DESZONA S0
+END
+
+
+ENDPAGE
+ENDMASK
+
+
diff --git a/lv/lv2.cpp b/lv/lv2.cpp
index 2dfb5df78..7b4a40a61 100755
--- a/lv/lv2.cpp
+++ b/lv/lv2.cpp
@@ -9,7 +9,7 @@ int main(int argc, char** argv)
{
case 0: lv2100(argc, argv); break; //generazione automatica del planning
case 1: lv2200(argc, argv); break; //manipolazione e stampa del planning
- //case 2: lv2300(argc, argv); break; //POSTO LIBERO
+ 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
default: lv2100(argc, argv); break; //generazione automatica del planning
diff --git a/lv/lv2200z.rep b/lv/lv2200z.rep
new file mode 100755
index 000000000..955da7689
--- /dev/null
+++ b/lv/lv2200z.rep
@@ -0,0 +1,154 @@
+
+
+ Stampa Giri Giornaliero
+
+
+
+
+ MESSAGE _TODAY
+
+
+
+
+
+
+ MESSAGE _PAGENO
+
+
+
+
+ DTCONS+CODITI
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ USE 167 KEY 2
+SELECT (BETWEEN(CODITI,#FROM_CODITI,#TO_CODITI))(BETWEEN(CODAUT,#FROM_CODAUT,#TO_CODAUT))(BETWEEN(CODCF,#FROM_CODCF,#TO_CODCF))
+JOIN ITI ALIAS 300 INTO CODTAB==CODITI
+JOIN AUT TO 167 ALIAS 301 INTO CODTAB==CODAUT
+JOIN MEZ TO 167 ALIAS 302 INTO CODTAB==CODMEZ
+JOIN 20 TO 167 ALIAS 303 INTO TIPOCF=="C" CODCF==CODCF
+JOIN 168 TO 167 ALIAS 304 INTO CODCONT==CODCONT CODCF==CODCF
+JOIN 16 TO 168 ALIAS 305 INTO TIPOCF=="C" CODCF==CODCF CODIND==CODINDSP
+FROM DTCONS=#FROM_DATA
+TO DTCONS=#TO_DATA
+
\ No newline at end of file
diff --git a/lv/lv2300.cpp b/lv/lv2300.cpp
index 7bed5c348..141e1da51 100755
--- a/lv/lv2300.cpp
+++ b/lv/lv2300.cpp
@@ -1,9 +1,310 @@
-#include "lv0.h"
+#include
+#include
+#include
+#include
+#include "lv0.h"
+#include "lv2300a.h"
+
+class TGiri_recordset: public TCSV_recordset
+{
+public:
+ TGiri_recordset(): TCSV_recordset("CSV(\"\t\")") {}
+};
+
+//Variabili del singolo giorno contrenenti il codice cliente;
+//ordine fermata e eventualmente l'ora
+struct TPassaggio: public TObject
+{
+
+ long _codcf;
+ int _ordfer;
+ int _ora;
+ TString _iter;
+ TPassaggio():_codcf(0),_ordfer(0),_ora(0),_iter("") {}
+ TPassaggio(long codcf, int ordfer, int ora, TString iter):_codcf(codcf),_ordfer(ordfer),_ora(ora),_iter(iter) {}
+};
+
+class TPassaggi: public TArray
+{
+ int _count;
+public:
+ void add(TPassaggio* p);
+ TPassaggio& passaggio(int p);
+};
+
+TPassaggio& TPassaggi:: passaggio(int p)
+{
+ TPassaggio* h = (TPassaggio*)objptr(p);
+
+ if(h==NULL)
+ {
+ h = new TPassaggio();
+ TArray::add(h,p);
+ }
+ return *h;
+}
+
+void TPassaggi::add(TPassaggio* p)
+{
+ const int of = p->_ordfer;
+ if(of>0 && of<1000)
+ {
+ int first=0;
+ int last=_count-1;
+ int guess=0;
+ while(first<=last)
+ {
+ guess=(first+last)/2;
+ TPassaggio& h = passaggio(guess);
+ if(h._ordfer==p->_ordfer)
+ break;
+
+ if(h._ordfer>p->_ordfer)
+ {
+ last=guess-1;
+ }
+ else
+ {
+ first=guess+1;
+ }
+ }
+ TArray::insert(p,guess);
+ _count++;
+ }
+ else
+ {
+ TArray::add(p);
+ }
+}
+
+
+/*Tutti i passaggi settimanali di un singolo itinerario*/
+class TSettimana: public TArray
+{
+public:
+ void add(int g,TPassaggio* p);
+ TPassaggio& passaggio(int g, int p);//giorno, fermata
+ int passaggi(int g) const;
+ int passaggi() const;
+ TSettimana():TArray(7){}//7 gg = settimana
+};
+
+//Tutti i records all'interno del giorno
+int TSettimana::passaggi(int g) const
+{
+ int n=0;
+ TArray* p= (TArray* ) objptr(g);
+ if(p!=NULL) n=p->items();
+
+ return n;
+}
+
+//Ritorno il numero di elementi con + passaggi
+int TSettimana::passaggi() const
+{
+ int n=0;
+ FOR_EACH_ARRAY_ITEM((*this), i, obj)
+ {
+ TArray* p = (TArray*) obj;
+ const int e = p->items();
+ if(e>n) n=e;
+ }
+ return n;
+}
+
+void TSettimana::add(int g,TPassaggio* p)
+{
+ TPassaggi* a= (TPassaggi*) objptr(g);
+ if(a==NULL)
+ {
+ a=new TPassaggi();
+ TArray::add(a,g);
+ }
+ a->add(p);
+
+}
+
+TPassaggio& TSettimana ::passaggio(int g,int p)
+{
+ TPassaggi* a= (TPassaggi*) objptr(g);
+ if(a==NULL)
+ {
+ a=new TPassaggi();
+ TArray::add(a,g);
+ }
+ return a->passaggio(p);
+}
+
+
+class TItinerari: public TArray
+{
+public:
+ void add(long i,int g,TPassaggio* p);
+ void add(long i,int g,long codcf, int ordfer, int ora,TString iter);
+ TSettimana& settimana(long codIti);
+};
+
+void TItinerari::add(long i,int g,TPassaggio* p)
+{
+ settimana(i).add(g,p);
+}
+
+void TItinerari::add(long i,int g,long codcf, int ordfer, int ora, TString iter)
+{
+ TPassaggio* p = new TPassaggio(codcf,ordfer,ora,iter);
+ add(i,g,p);
+}
+TSettimana& TItinerari::settimana(long codIti)
+{
+ TSettimana* a = (TSettimana* ) objptr(codIti);
+ if(a==NULL)
+ {
+ a = new TSettimana();
+ TArray::add(a,codIti);
+ }
+ return *a;
+}
+
+class TGiri_mask: public TAutomask
+{
+protected:
+ virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
+public:
+ TGiri_mask():TAutomask("lv2300a"){}
+};
+
+bool TGiri_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
+{
+ return true;
+}
+
+class TGiri_report : public TReport
+{
+protected:
+ virtual bool use_mask() { return false; }
+
+public:
+ TGiri_report(bool settimanale) { load(settimanale ? "lv2300a" : "lv2200z"); }
+};
+
+class TGiri_app: public TSkeleton_application
+{
+protected:
+ virtual void main_loop();
+ void elabora(const TMask& mask) const;
+};
+
+void TGiri_app:: elabora(const TMask& mask)const
+{
+ TISAM_recordset giri("USE LVRCONSPLAN KEY 2\n"
+ "SELECT (BETWEEN(CODITI,#FROM_CODITI,#TO_CODITI))"
+ "&&(BETWEEN(CODCF,#FROM_CODCF,#TO_CODCF))"
+ "&&(BETWEEN(CODAUT,#FROM_CODAUT,#TO_CODAUT))\n"
+ "FROM DTCONS=#FROM_DATA\n "
+ "TO DTCONS=#TO_DATA"
+ );
+
+ //inserire parametri filtri
+ giri.set_var("#FROM_DATA",mask.get_date(F_DATA_FROM));
+ giri.set_var("#TO_DATA",mask.get_date(F_DATA_TO));
+ giri.set_var("#FROM_CODITI", TVariant(mask.get(F_CODITI_FROM)));
+ giri.set_var("#TO_CODITI",TVariant(mask.get(F_CODITI_TO)));
+ giri.set_var("#FROM_CODAUT",TVariant(mask.get(F_CODAUT_FROM)));
+ giri.set_var("#TO_CODAUT",TVariant(mask.get(F_CODAUT_TO)));
+ giri.set_var("#FROM_CODCF",TVariant(mask.get(F_CODCF_FROM)));
+ giri.set_var("#TO_CODCF",TVariant(mask.get(F_CODCF_TO)));
+
+ TItinerari iti;
+
+ for(bool ok = giri.move_first();ok;ok=giri.move_next())
+ {
+ TDate giorno = giri.get("DTCONS").as_date();
+ int wday = giorno.wday();//1=luned́
+ long itinerario=giri.get("CODITI").as_int();
+ TString iter=giri.get("CODITI").as_string();
+ long cliente=giri.get("CODCF").as_int();
+ int ordfer=giri.get("ORDFER").as_int();
+ int ora = 0;//in attesa che venga inserito
+
+ iti.add(itinerario,wday,cliente,ordfer,ora,iter);
+ }
+
+
+ TGiri_report r(true);
+ TGiri_recordset* giri_set = new TGiri_recordset();
+ r.set_recordset(giri_set);
+ FOR_EACH_ARRAY_ITEM(iti,i,obj)//scandisce itinerario e tiene
+ //buoni solo quelli valorizzati
+ {
+ TSettimana& s = *(TSettimana*) obj;
+ const int max = s.passaggi();
+
+ for(int j=0; jnew_rec();
+
+ TString4 str_iti;
+ str_iti.format("%03d", i);
+ giri_set->set(0,TVariant(str_iti));
+
+ for(int g=1; g<=7;g++)
+ {
+ const TPassaggio& pass = s.passaggio(g,j);
+ const int column = (g-1)*3+1;
+
+ giri_set->set(column,pass._codcf);
+ giri_set->set(column + 1,TVariant(long (pass._ordfer)));
+ giri_set->set(column + 2,TVariant(long (pass._ora)));
+ }
+ }
+ }
+
+ //carica tuute le variabili del report.
+ r.mask2report(mask);
+
+ TReport_book b;
+ bool ok = b.add(r);// Richiede parametri di stampa in base alla maschera omonima
+ if (ok)
+ {
+ if (b.pages() > 0)
+ b.print_or_preview(); // Stampa effettivamente
+ else
+ warning_box (TR("Nessun record estratto per i parametri inseriti"));
+ }
+}
+
+void TGiri_app::main_loop()
+{
+ TGiri_mask m;
+ while(m.run()==K_ENTER)
+ {
+ //Stampa Giro Settimanale
+ if(m.get(F_CHOICE)=="S")
+ {
+ elabora(m);
+ }
+ //Stampa Giro Giornaliero
+ else
+ {
+ TGiri_report r(false);
+
+ //carica tuute le variabili del report.
+ r.mask2report(m);
+
+ TReport_book b;
+ bool ok = b.add(r); // Richiede parametri di stampa in base alla maschera omonima
+ if (ok)
+ if(b.pages() >0)
+ b.print_or_preview(); // Stampa effettivamente
+ else
+ warning_box (TR("Nessun record estratto per i parametri inseriti"));
+ }
+ }
+}
int lv2300(int argc, char* argv[])
{
- /*POSTO LIBERO*/
- //TStampe_planning_app app;
- //app.run(argc, argv, "Stampe Planning");
+ TGiri_app app;
+ app.run(argc, argv, TR("Stampa Giri"));
return 0;
-}
\ No newline at end of file
+}
diff --git a/lv/lv2300a.h b/lv/lv2300a.h
new file mode 100755
index 000000000..09f1f23c4
--- /dev/null
+++ b/lv/lv2300a.h
@@ -0,0 +1,18 @@
+//Definizione campi per maschera lv2300a
+//Stampa Giri (Giornaliero/Settimanale)
+
+#define F_DATA_FROM 201
+#define F_DATA_TO 202
+#define F_CODITI_FROM 203
+#define F_DESITI_FROM 204
+#define F_CODITI_TO 205
+#define F_DESITI_TO 206
+#define F_CODAUT_FROM 207
+#define F_DESAUT_FROM 208
+#define F_CODAUT_TO 209
+#define F_DESAUT_TO 210
+#define F_CODCF_FROM 211
+#define F_RAGSOCCF_FROM 212
+#define F_CODCF_TO 213
+#define F_RAGSOCCF_TO 214
+#define F_CHOICE 215
\ No newline at end of file
diff --git a/lv/lv2300a.rep b/lv/lv2300a.rep
new file mode 100755
index 000000000..f9b2b0a23
--- /dev/null
+++ b/lv/lv2300a.rep
@@ -0,0 +1,141 @@
+
+
+ Stampa Giri Settimanale
+
+
+
+
+ MESSAGE _TODAY
+
+
+
+
+
+
+ MESSAGE _PAGENO
+
+
+
+
+ A
+
+
+
+
+
+ MESSAGE _ISAMREAD,163,MOD='LV'!COD='ITI'!CODTAB=#THIS,S0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE _ISAMREAD,CLIFO,TIPOCF='C'!CODCF=#THIS,RAGSOC
+
+
+
+
+
+
+ MESSAGE _ISAMREAD,CLIFO,TIPOCF='C'!CODCF=#THIS,RAGSOC
+
+
+
+
+
+
+ MESSAGE _ISAMREAD,CLIFO,TIPOCF='C'!CODCF=#THIS,RAGSOC
+
+
+
+
+
+
+ MESSAGE _ISAMREAD,CLIFO,TIPOCF='C'!CODCF=#THIS,RAGSOC
+
+
+
+
+
+
+ MESSAGE _ISAMREAD,CLIFO,TIPOCF='C'!CODCF=#THIS,RAGSOC
+
+
+
+
+
+
+ MESSAGE _ISAMREAD,CLIFO,TIPOCF='C'!CODCF=#THIS,RAGSOC
+
+
+
+
+
+
+ MESSAGE _ISAMREAD,CLIFO,TIPOCF='C'!CODCF=#THIS,RAGSOC
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/lv/lv2300a.uml b/lv/lv2300a.uml
new file mode 100755
index 000000000..3a50e2241
--- /dev/null
+++ b/lv/lv2300a.uml
@@ -0,0 +1,181 @@
+#include "lv2300a.h"
+
+TOOLBAR "topbar" 0 0 0 2
+#include "printbar.h"
+ENDPAGE
+
+PAGE "Stampa Giri." -1 -1 40 5
+
+GROUPBOX DLG_NULL 76 3
+BEGIN
+ PROMPT 1 1 "@bParametri Data"
+END
+
+DATE F_DATA_FROM
+BEGIN
+ PROMPT 2 2 "Dal "
+ FIELD #FROM_DATA
+ GROUP 1
+ CHECKTYPE REQUIRED
+ FLAGS "A"
+END
+
+DATE F_DATA_TO
+BEGIN
+ PROMPT 25 2 "Al "
+ FIELD #TO_DATA
+ FLAGS "A"
+ GROUP 2
+ CHECKTYPE REQUIRED
+ VALITATE DATE_CMP_FUNC >= F_DATA_FROM
+ WARNING "La data finale deve essere successiva a quella iniziale"
+END
+
+GROUPBOX DLG_NULL 76 4
+BEGIN
+ PROMPT 1 4 "@bParametri Itinerario"
+END
+
+STRING F_CODITI_FROM 3
+BEGIN
+ PROMPT 2 5 "Da Itinerario"
+ FLAGS "UZ"
+ USE &ITI
+ INPUT CODTAB F_CODITI_FROM
+ DISPLAY "Codice" CODTAB
+ DISPLAY "Descrizione@50" S0
+ OUTPUT F_CODITI_FROM CODTAB
+ OUTPUT F_DESITI_FROM S0
+ CHECKTYPE SEARCH
+ FIELD #FROM_CODITI
+END
+
+STRING F_DESITI_FROM 50
+BEGIN
+ PROMPT 25 5 ""
+ FLAGS "D"
+END
+
+STRING F_CODITI_TO 3
+BEGIN
+ PROMPT 2 6 "A Itinerario "
+ FLAGS "UZ"
+ USE &ITI
+ INPUT CODTAB F_CODITI_TO
+ DISPLAY "Codice" CODTAB
+ DISPLAY "Descrizione@50" S0
+ OUTPUT F_CODITI_TO CODTAB
+ OUTPUT F_DESITI_TO S0
+ CHECKTYPE SEARCH
+ FIELD #TO_CODITI
+END
+
+STRING F_DESITI_TO 50
+BEGIN
+ PROMPT 25 6 ""
+ FLAGS "D"
+END
+
+GROUPBOX DLG_NULL 76 4
+BEGIN
+ PROMPT 1 8 "@bParametri Autista"
+END
+
+STRING F_CODAUT_FROM 6
+BEGIN
+ PROMPT 2 9 "Da Autista "
+ FLAGS "U"
+ USE &AUT
+ INPUT CODTAB F_CODAUT_FROM
+ DISPLAY "Codice" CODTAB
+ DISPLAY "Descrizione@50" S0
+ OUTPUT F_CODAUT_FROM CODTAB
+ OUTPUT F_DESAUT_FROM S0
+ CHECKTYPE SEARCH
+ FIELD #FROM_CODAUT
+END
+
+STRING F_DESAUT_FROM 50
+BEGIN
+ PROMPT 25 9 ""
+ FLAGS "D"
+END
+
+STRING F_CODAUT_TO 6
+BEGIN
+ PROMPT 2 10 "Ad Autista "
+ FLAGS "U"
+ USE &AUT
+ INPUT CODTAB F_CODAUT_TO
+ DISPLAY "Codice" CODTAB
+ DISPLAY "Descrizione@50" S0
+ OUTPUT F_CODAUT_TO CODTAB
+ OUTPUT F_DESAUT_TO S0
+ CHECKTYPE SEARCH
+ FIELD #TO_CODAUT
+END
+
+STRING F_DESAUT_TO 50
+BEGIN
+ PROMPT 25 10 ""
+ FLAGS "D"
+END
+
+GROUPBOX DLG_NULL 76 4
+BEGIN
+ PROMPT 1 12 "@bParametri Cliente"
+END
+
+NUMBER F_CODCF_FROM 6
+BEGIN
+ PROMPT 2 13 "Da Cliente "
+ FLAGS "U"
+ USE LF_CLIFO KEY 1
+ INPUT TIPOCF "C"
+ INPUT CODCF F_CODCF_FROM
+ DISPLAY "Codice " CODCF
+ DISPLAY "Ragione sociale@50" RAGSOC
+ OUTPUT F_CODCF_FROM CODCF
+ OUTPUT F_RAGSOCCF_FROM RAGSOC
+ CHECKTYPE NORMAL
+ FIELD #FROM_CODCF
+END
+
+STRING F_RAGSOCCF_FROM 50
+BEGIN
+ PROMPT 25 13 ""
+ FLAGS "D"
+END
+
+NUMBER F_CODCF_TO 6
+BEGIN
+ PROMPT 2 14 "A Cliente "
+ FLAGS "U"
+ USE LF_CLIFO KEY 1
+ INPUT TIPOCF "C"
+ INPUT CODCF F_CODCF_TO
+ DISPLAY "Codice " CODCF
+ DISPLAY "Ragione sociale@50" RAGSOC
+ OUTPUT F_CODCF_TO CODCF
+ OUTPUT F_RAGSOCCF_TO RAGSOC
+ CHECKTYPE NORMAL
+ FIELD #TO_CODCF
+END
+
+STRING F_RAGSOCCF_TO 50
+BEGIN
+ PROMPT 25 14 ""
+ FLAGS "D"
+END
+
+LIST F_CHOICE 1 11
+BEGIN
+ PROMPT 2 16 "Stampa Giri"
+ ITEM "G|Giornaliero"
+ ITEM "S|Settimanale"
+ FLAGS "U"
+END
+
+ENDPAGE
+
+ENDMASK