Patch level :

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :


git-svn-id: svn://10.65.10.50/trunk@18007 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
lvietri 2009-01-12 16:16:11 +00:00
parent 4412a81dec
commit 9e28cb7601
10 changed files with 1050 additions and 7 deletions

View File

@ -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;
}

12
lv/lv0400d.h Executable file
View File

@ -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

82
lv/lv0400d.rep Executable file
View File

@ -0,0 +1,82 @@
<?xml version="1.0" encoding="UTF-8" ?>
<report name="lv0400d" orientation="2" lpi="6" command="lv0 -1 lv0400d">
<description>Stampa Elenco Clienti per Articolo</description>
<font face="Courier New" size="10" />
<section type="Head" height="7.5">
<field x="1" y="0.93" type="Testo" width="12" height="1.5" pattern="1" text="Data elab. :" />
<field x="13.5" y="0.93" type="Stringa" width="12" height="1.5" pattern="1">
<prescript>MESSAGE _TODAY</prescript>
</field>
<field x="104.87" y="0.93" type="Testo" width="5" height="1.5" pattern="1" text="Pag." />
<field x="110" y="0.93" type="Stringa" width="10" height="1.5" pattern="1">
<prescript>MESSAGE _PAGENO</prescript>
</field>
<field x="36.5" y="1" type="Testo" align="center" width="55" height="2" pattern="1" text="Stampa Elenco Clienti per Articolo">
<font face="Courier New" bold="1" size="14" />
</field>
<field border="2" y="3" type="Linea" width="120" height="0" pattern="1" />
<field x="1" y="4" type="Testo" width="10" pattern="1" text="Articolo:">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="10.5" y="4" type="Stringa" width="25" pattern="1">
<font face="Courier New" bold="1" size="11" />
<source>#F_CODART_TO</source>
</field>
<field x="36" y="4" type="Testo" width="13" pattern="1" text="Descrizione:">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="48.5" y="4" type="Stringa" width="60" pattern="1">
<font face="Courier New" bold="1" size="11" />
<source>#F_DESART_TO</source>
</field>
<field x="1" y="6" type="Testo" width="7" pattern="1" text="Cliente">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="10" y="6" type="Testo" width="20" pattern="1" text="Ragione Sociale">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="53" y="6" type="Testo" width="8" pattern="1" text="Prezzo">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="63" y="6" type="Testo" width="9" pattern="1" text="Minimo">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="75" y="6" type="Testo" width="12" pattern="1" text="Dot.Odierna">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="92" y="6" type="Testo" width="9" pattern="1" text="Mese">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="107" y="6" type="Testo" width="5" pattern="1" text="Anno">
<font face="Courier New" bold="1" size="10" />
</field>
<field border="2" y="7" type="Linea" width="120" height="0" pattern="1" />
</section>
<section type="Head" level="1" />
<section type="Body" />
<section type="Body" level="1" height="1">
<field x="2" type="Numero" align="right" width="6" pattern="1">
<source>169.CODCF</source>
</field>
<field x="9.5" type="Stringa" width="30" pattern="1">
<source>1000@.RAGSOC</source>
</field>
<field x="42" type="Numero" align="right" width="18" pattern="1" hide_zero="1" text="#########,@@">
<source>169.PREZZO</source>
</field>
<field x="64.5" type="Numero" align="right" width="4" pattern="1" hide_zero="1">
<source>169.MINCIC</source>
</field>
<field x="71.5" type="Numero" align="right" width="15" pattern="1" hide_zero="1">
<source>169.DOTIN</source>
</field>
</section>
<section type="Foot" />
<section type="Foot" level="1" />
<sql>USE 169 KEY 1
SELECT (CODART==#F_CODART_TO)&#26;&#26;(BETWEEN(17.CODZONA,#F_ZONA_FROM,#F_ZONA_FROM))&#26;&#26;(STR((PREZZO&#3E;=#F_PREZZO_FROM))&#26;&#26;(PREZZO&#3C;=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</sql>
</report>

154
lv/lv0400d.uml Executable file
View File

@ -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

View File

@ -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

154
lv/lv2200z.rep Executable file
View File

@ -0,0 +1,154 @@
<?xml version="1.0" encoding="UTF-8" ?>
<report name="lv2200z" orientation="1" lpi="6" command="lv0 -1 lv2200z">
<description>Stampa Giri Giornaliero</description>
<font face="Courier New" size="10" />
<section type="Head">
<field y="1" type="Testo" width="12" height="1.5" pattern="1" text="Data elab. :" />
<field x="12.5" y="1" type="Stringa" width="12" height="1.5" pattern="1">
<prescript description="H0.0 PRESCRIPT">MESSAGE _TODAY</prescript>
</field>
<field x="27.5" y="1" type="Testo" align="center" width="45" height="1.5" pattern="1" text="Stampa Giro Giornaliero">
<font face="Courier New" bold="1" size="12" />
</field>
<field x="79.87" y="1.12" type="Testo" width="5" height="1.5" pattern="1" text="Pag." />
<field x="85" y="1.12" type="Stringa" width="10" height="1.5" pattern="1">
<prescript description="H0.0 PRESCRIPT">MESSAGE _PAGENO</prescript>
</field>
</section>
<section type="Head" level="1" />
<section type="Head" level="2" height="10" page_break="1">
<groupby>DTCONS+CODITI</groupby>
<field x="68" y="0.31" type="Array" width="25" height="1.5" pattern="1">
<font face="Courier New" bold="1" size="14" />
<source>167.GGCONS</source>
<list>
<li Value="Luned&#EC;" Code="1" />
<li Value="Marted&#EC;" Code="2" />
<li Value="Mercoled&#EC;" Code="3" />
<li Value="Gioved&#EC;" Code="4" />
<li Value="Venerd&#EC;" Code="5" />
<li Value="Sabato" Code="6" />
<li Value="Domenica" Code="7" />
</list>
</field>
<field x="0.5" y="0.37" type="Numero" align="right" width="10" height="1.5" pattern="1">
<font face="Courier New" bold="1" size="14" />
<source>167.CODITI</source>
</field>
<field x="11.5" y="0.37" type="Stringa" width="50" height="1.5" pattern="1">
<font face="Courier New" bold="1" size="14" />
<source>300@.S0</source>
</field>
<field x="0.5" y="2.24" type="Stringa" width="10" height="1.5" pattern="1">
<font face="Courier New" bold="1" size="14" />
<source>167.CODAUT</source>
</field>
<field x="11.5" y="2.24" type="Stringa" width="50" height="1.5" pattern="1">
<font face="Courier New" bold="1" size="14" />
<source>301@.S0</source>
</field>
<field x="68" y="2.31" type="Data" width="16" height="1.5" pattern="1">
<font face="Courier New" bold="1" size="14" />
<source>DTCONS</source>
</field>
<field border="1" x="0.5" y="4" type="Rettangolo" width="92.5" height="3" pattern="1" />
<field border="1" x="51.5" y="4" type="Linea" height="2.95" pattern="1" />
<field border="1" x="72" y="4" type="Linea" height="2.95" pattern="1" />
<field x="72" y="4" type="Linea" height="2.95" pattern="1" />
<field x="51.5" y="4.06" type="Linea" height="2.95" pattern="1" />
<field x="52" y="4.56" type="Testo" width="13" pattern="1" text="KM. PARTENZA:" />
<field x="72.5" y="4.56" type="Testo" width="13" pattern="1" text="ORA PARTENZA:" />
<field x="1.5" y="4.81" type="Stringa" width="50" pattern="1">
<source>302@.S0</source>
</field>
<field border="1" x="65" y="5.25" type="Linea" width="6" height="0" pattern="1" />
<field border="1" x="86" y="5.25" type="Linea" width="6" height="0" pattern="1" />
<field x="1.5" y="5.81" type="Testo" width="7" pattern="1" text="TARGA" />
<field x="8.5" y="5.81" type="Stringa" width="40" pattern="1">
<source>167.CODMEZ</source>
</field>
<field x="52" y="5.81" type="Testo" width="13" pattern="1" text="KM. ARRIVO :" />
<field x="72.5" y="5.81" type="Testo" width="13" pattern="1" text="ORA ARRIVO :" />
<field border="1" x="65" y="6.5" type="Linea" width="6" height="0" pattern="1" />
<field border="1" x="86" y="6.5" type="Linea" width="6" height="0" pattern="1" />
<field border="1" x="0.5" y="8" type="Rettangolo" width="92.5" height="2" pattern="1" />
<field border="1" x="6.5" y="8" type="Linea" height="1.95" pattern="1" />
<field x="57" y="8" type="Testo" align="center" width="9" pattern="1" text="MODALITA'" />
<field border="1" x="66.25" y="8" type="Linea" height="2" pattern="1" />
<field x="66.5" y="8" type="Testo" width="15" height="1.5" pattern="1" text="BOLLE CONS." />
<field border="1" x="13.5" y="8.06" type="Linea" height="1.95" pattern="1" />
<field border="1" x="31.37" y="8.06" type="Linea" height="1.95" pattern="1" />
<field border="1" x="56.75" y="8.06" type="Linea" height="1.95" pattern="1" />
<field border="1" x="81.5" y="8.06" type="Linea" height="1.95" pattern="1" />
<field x="81.75" y="8.06" type="Testo" width="10" pattern="1" text="PROSSIMA" />
<field x="1.12" y="8.31" type="Testo" align="right" width="5" pattern="1" text="FERM." />
<field x="7" y="8.31" type="Testo" align="right" width="6" pattern="1" text="CODICE" />
<field x="14.12" y="8.31" type="Testo" width="17" pattern="1" text="RAGIONE SOCIALE " />
<field x="31.5" y="8.31" type="Testo" width="25" pattern="1" text="LOCALITA'" />
<field x="14.12" y="9" type="Testo" width="17" pattern="1" text="CLIENTE" />
<field x="57" y="9" type="Testo" align="center" width="9" pattern="1" text="PASSAGGIO" />
<field x="81.75" y="9.06" type="Testo" width="10.5" pattern="1" text="CONSEGNA" />
</section>
<section type="Body">
<field y="197" type="Numero" align="right" width="3" pattern="1">
<source>CODITI</source>
</field>
</section>
<section type="Body" level="1">
<field border="1" x="92.9" y="-0.07" type="Linea" height="4" pattern="1" />
<field border="1" x="0.5" type="Linea" height="4" pattern="1" />
<field x="1" type="Numero" align="right" width="5" pattern="1" hide_zero="1">
<source>167.ORDFER</source>
</field>
<field border="1" x="6.5" type="Linea" height="4" pattern="1" />
<field x="7" type="Numero" align="right" width="6" pattern="1">
<source>167.CODCF</source>
</field>
<field border="1" x="13.5" type="Linea" height="4" pattern="1" />
<field x="14" type="Stringa" width="17" height="3" pattern="1">
<source>303@.RAGSOC</source>
</field>
<field border="1" x="31.37" type="Linea" height="4" pattern="1" />
<field x="31.5" type="Stringa" width="25" height="2" pattern="1">
<source>IF(304@.CODINDSP= "0" ;303@.LOCALITACF;305@.LOCALITA)</source>
</field>
<field border="1" x="56.75" type="Linea" height="4" pattern="1" />
<field x="57" type="Array" align="center" width="9" pattern="1">
<source>167.MODPASS</source>
<list>
<li Value="ENTRAMBI" Code=" " />
<li Value="ENTRAMBI" Code="E" />
<li Value="CONSEGNA" Code="C" />
<li Value="RITIRO" Code="R" />
</list>
</field>
<field border="1" x="66.25" type="Linea" height="4" pattern="1" />
<field x="66.5" type="Stringa" width="15" pattern="1">
<source>167.CODNUM</source>
</field>
<field border="1" x="81.5" type="Linea" height="4" pattern="1" />
<field x="81.75" type="Stringa" width="10" pattern="1">
<source>#NEXTCONS</source>
</field>
<field x="31.5" y="2" type="Stringa" width="25" height="2" pattern="1">
<source>IF(304@.CODINDSP= "0";303@.CIVCF+','+303@.INDCF;305@.CIV+','+305@.INDIR)</source>
</field>
<field x="66.5" y="2" type="Numero" align="right" width="13" pattern="1" hide_zero="1">
<source>167.NDOC</source>
</field>
<field border="1" x="0.5" y="4" type="Linea" width="92.4" height="0" pattern="1" />
</section>
<section type="Foot" />
<section type="Foot" level="1" />
<section type="Foot" level="2" />
<sql>USE 167 KEY 2
SELECT (BETWEEN(CODITI,#FROM_CODITI,#TO_CODITI))&#26;&#26;(BETWEEN(CODAUT,#FROM_CODAUT,#TO_CODAUT))&#26;&#26;(BETWEEN(CODCF,#FROM_CODCF,#TO_CODCF))
JOIN &#26;ITI ALIAS 300 INTO CODTAB==CODITI
JOIN &#26;AUT TO 167 ALIAS 301 INTO CODTAB==CODAUT
JOIN &#26;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</sql>
</report>

View File

@ -1,9 +1,310 @@
#include "lv0.h"
#include <Textset.h>
#include <Applicat.h>
#include <Automask.h>
#include <Reprint.h>
#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; j<max;j++)
{
giri_set->new_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;
}
}

18
lv/lv2300a.h Executable file
View File

@ -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

141
lv/lv2300a.rep Executable file
View File

@ -0,0 +1,141 @@
<?xml version="1.0" encoding="UTF-8" ?>
<report name="lv2300a" orientation="2" lpi="6">
<description>Stampa Giri Settimanale</description>
<font face="Courier New" size="10" />
<section type="Head">
<field x="1.5" type="Testo" width="12" height="1.5" pattern="1" text="Data elab. :" />
<field x="14" type="Stringa" width="12" height="1.5" pattern="1">
<prescript>MESSAGE _TODAY</prescript>
</field>
<field x="36" type="Testo" align="center" width="45" height="1.5" pattern="1" text="Stampa Giro Settimanale">
<font face="Courier New" bold="1" size="12" />
</field>
<field x="91.87" y="0.12" type="Testo" width="5" height="1.5" pattern="1" text="Pag." />
<field x="97" y="0.12" type="Stringa" width="10" height="1.5" pattern="1">
<prescript>MESSAGE _PAGENO</prescript>
</field>
</section>
<section type="Head" level="1" />
<section repeat="1" type="Head" level="2" height="3" page_break="1">
<groupby>A</groupby>
<field x="2" type="Testo" width="10" pattern="1" text="Itinerario:">
<font face="Courier New" bold="1" size="8" />
</field>
<field x="13" type="Stringa" width="50" pattern="1">
<source>A</source>
<prescript description="H2.0 PRESCRIPT">MESSAGE _ISAMREAD,163,MOD='LV'!COD='ITI'!CODTAB=#THIS,S0</prescript>
</field>
<field x="66" type="Testo" width="15" pattern="1" text="Settimana dal:">
<font face="Courier New" bold="1" size="8" />
</field>
<field x="78.5" type="Stringa" width="12" pattern="1">
<font face="Courier New" bold="1" size="8" />
<source>#FROM_DATA</source>
</field>
<field x="91.5" type="Testo" width="4" pattern="1" text="al:">
<font face="Courier New" bold="1" size="8" />
</field>
<field x="95.5" type="Stringa" width="12" pattern="1">
<font face="Courier New" bold="1" size="8" />
<source>#TO_DATA</source>
</field>
<field border="1" x="0.5" y="1" type="Rettangolo" width="132.5" height="2" pattern="1" />
<field border="1" x="19" y="1" type="Linea" height="2" pattern="1" />
<field border="1" x="38" y="1" type="Linea" height="2" pattern="1" />
<field border="1" x="57" y="1" type="Linea" height="2" pattern="1" />
<field border="1" x="76" y="1" type="Linea" height="2" pattern="1" />
<field border="1" x="95" y="1" type="Linea" height="2" pattern="1" />
<field border="1" x="114" y="1" type="Linea" height="2" pattern="1" />
<field x="5.5" y="1.5" type="Testo" width="10" pattern="1" text="Lunedi">
<font face="Courier New" bold="1" size="8" />
</field>
<field x="21" y="1.5" type="Testo" width="10" pattern="1" text="Martedi">
<font face="Courier New" bold="1" size="8" />
</field>
<field x="41" y="1.5" type="Testo" width="10" pattern="1" text="Mercoledi">
<font face="Courier New" bold="1" size="8" />
</field>
<field x="61" y="1.5" type="Testo" width="10" pattern="1" text="Giovedi">
<font face="Courier New" bold="1" size="8" />
</field>
<field x="81" y="1.5" type="Testo" width="10" pattern="1" text="Venerdi">
<font face="Courier New" bold="1" size="8" />
</field>
<field x="101" y="1.5" type="Testo" width="10" pattern="1" text="Sabato">
<font face="Courier New" bold="1" size="8" />
</field>
<field x="121" y="1.5" type="Testo" width="10" pattern="1" text="Domenica">
<font face="Courier New" bold="1" size="8" />
</field>
<field x="51" y="2" type="Stringa" width="12" pattern="1">
<font face="Courier New" bold="1" size="8" />
<source>#FROM_CODITI</source>
</field>
</section>
<section type="Body" />
<section type="Body" level="1" height="2">
<font face="Courier New" size="8" />
<field border="1" x="0.5" type="Linea" height="2" pattern="1" />
<field border="1" x="19" type="Linea" height="2" pattern="1" />
<field border="1" x="38" type="Linea" height="2" pattern="1" />
<field border="1" x="57" type="Linea" height="2" pattern="1" />
<field border="1" x="76" type="Linea" height="2" pattern="1" />
<field border="1" x="95" type="Linea" height="2" pattern="1" />
<field border="1" x="114" type="Linea" height="2" pattern="1" />
<field border="1" x="133" type="Linea" height="2" pattern="1" />
<field x="1" y="0.5" type="Stringa" width="15" pattern="1">
<source>B</source>
<prescript description="B1.0 PRESCRIPT">MESSAGE _ISAMREAD,CLIFO,TIPOCF='C'!CODCF=#THIS,RAGSOC</prescript>
</field>
<field x="16.5" y="0.5" type="Numero" align="right" width="2" pattern="1" hide_zero="1">
<source>C</source>
</field>
<field x="20" y="0.5" type="Stringa" width="15" pattern="1">
<source>E</source>
<prescript description="B1.0 PRESCRIPT">MESSAGE _ISAMREAD,CLIFO,TIPOCF='C'!CODCF=#THIS,RAGSOC</prescript>
</field>
<field x="35.5" y="0.5" type="Numero" align="right" width="2" pattern="1" hide_zero="1">
<source>F</source>
</field>
<field x="39" y="0.5" type="Stringa" width="15" pattern="1">
<source>H</source>
<prescript description="B1.0 PRESCRIPT">MESSAGE _ISAMREAD,CLIFO,TIPOCF='C'!CODCF=#THIS,RAGSOC</prescript>
</field>
<field x="54.5" y="0.5" type="Numero" align="right" width="2" pattern="1" hide_zero="1">
<source>I</source>
</field>
<field x="58" y="0.5" type="Stringa" width="15" pattern="1">
<source>K</source>
<prescript description="B1.0 PRESCRIPT">MESSAGE _ISAMREAD,CLIFO,TIPOCF='C'!CODCF=#THIS,RAGSOC</prescript>
</field>
<field x="73.5" y="0.5" type="Numero" align="right" width="2" pattern="1" hide_zero="1">
<source>L</source>
</field>
<field x="77" y="0.5" type="Stringa" width="15" pattern="1">
<source>N</source>
<prescript description="B1.0 PRESCRIPT">MESSAGE _ISAMREAD,CLIFO,TIPOCF='C'!CODCF=#THIS,RAGSOC</prescript>
</field>
<field x="92.5" y="0.5" type="Numero" align="right" width="2" pattern="1" hide_zero="1">
<source>O</source>
</field>
<field x="96" y="0.5" type="Stringa" width="15" pattern="1">
<source>Q</source>
<prescript description="B1.0 PRESCRIPT">MESSAGE _ISAMREAD,CLIFO,TIPOCF='C'!CODCF=#THIS,RAGSOC</prescript>
</field>
<field x="111.5" y="0.5" type="Numero" align="right" width="2" pattern="1" hide_zero="1">
<source>R</source>
</field>
<field x="115" y="0.5" type="Stringa" width="15" pattern="1">
<source>T</source>
<prescript description="B1.0 PRESCRIPT">MESSAGE _ISAMREAD,CLIFO,TIPOCF='C'!CODCF=#THIS,RAGSOC</prescript>
</field>
<field x="130.5" y="0.5" type="Numero" align="right" width="2" pattern="1" hide_zero="1">
<source>U</source>
</field>
</section>
<section type="Foot" />
<section type="Foot" level="1" />
<section type="Foot" level="2">
<field border="2" x="0.5" y="0.01" type="Linea" width="132.5" height="0" pattern="1" />
</section>
</report>

181
lv/lv2300a.uml Executable file
View File

@ -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