Patch level :

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :


git-svn-id: svn://10.65.10.50/trunk@18087 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
lvietri 2009-01-23 10:04:04 +00:00
parent 68e822d385
commit 9720f29c50
3 changed files with 100 additions and 55 deletions

View File

@ -21,21 +21,24 @@
<field x="2" type="Testo" width="10" pattern="1" text="Itinerario:"> <field x="2" type="Testo" width="10" pattern="1" text="Itinerario:">
<font face="Courier New" bold="1" size="8" /> <font face="Courier New" bold="1" size="8" />
</field> </field>
<field x="13" type="Stringa" width="50" pattern="1"> <field x="12" type="Stringa" width="40" pattern="1">
<source>A</source> <source>A</source>
<prescript description="H2.0 PRESCRIPT">MESSAGE _ISAMREAD,163,MOD='LV'!COD='ITI'!CODTAB=#THIS,S0</prescript> <prescript description="H2.0 PRESCRIPT">MESSAGE _ISAMREAD,163,MOD='LV'!COD='ITI'!CODTAB=#THIS,S0</prescript>
</field> </field>
<field x="66" type="Testo" width="15" pattern="1" text="Settimana dal:"> <field x="53" type="Testo" width="8" pattern="1" text="Autista:">
<font face="Courier New" bold="1" size="8" /> <font face="Courier New" bold="1" size="8" />
</field> </field>
<field x="78.5" type="Stringa" width="12" pattern="1"> <field x="94" type="Testo" width="15" pattern="1" text="Settimana dal:">
<font face="Courier New" bold="1" size="8" />
</field>
<field x="106.5" type="Stringa" width="12" pattern="1">
<font face="Courier New" bold="1" size="8" /> <font face="Courier New" bold="1" size="8" />
<source>#FROM_DATA</source> <source>#FROM_DATA</source>
</field> </field>
<field x="91.5" type="Testo" width="4" pattern="1" text="al:"> <field x="118.5" type="Testo" width="4" pattern="1" text="al:">
<font face="Courier New" bold="1" size="8" /> <font face="Courier New" bold="1" size="8" />
</field> </field>
<field x="95.5" type="Stringa" width="12" pattern="1"> <field x="121" type="Stringa" width="12" pattern="1">
<font face="Courier New" bold="1" size="8" /> <font face="Courier New" bold="1" size="8" />
<source>#TO_DATA</source> <source>#TO_DATA</source>
</field> </field>
@ -67,9 +70,12 @@
<field x="121" y="1.5" type="Testo" width="10" pattern="1" text="Domenica"> <field x="121" y="1.5" type="Testo" width="10" pattern="1" text="Domenica">
<font face="Courier New" bold="1" size="8" /> <font face="Courier New" bold="1" size="8" />
</field> </field>
<field x="51" y="2" type="Stringa" width="12" pattern="1"> <field x="1" y="2" type="Stringa" hidden="1" width="18" id="1000" pattern="1">
<font face="Courier New" bold="1" size="8" /> <source>A</source>
<source>#FROM_CODITI</source> <prescript description="H2.1000 PRESCRIPT">MESSAGE _ISAMREAD,163,MOD='LV'!COD='ITI'!CODTAB=#THIS,S1</prescript>
</field>
<field x="60" type="Stringa" width="32" id="2000" pattern="1">
<prescript description="H2.2000 PRESCRIPT">MESSAGE _ISAMREAD,163,MOD='LV'!COD='AUT'!CODTAB=H2.1000,S0</prescript>
</field> </field>
</section> </section>
<section type="Body" /> <section type="Body" />

View File

@ -4,6 +4,8 @@
#include <Reprint.h> #include <Reprint.h>
#include "lv0.h" #include "lv0.h"
#include "lv2700a.h" #include "lv2700a.h"
#include <config.h>
class TRiepBolle_recordset: public TCSV_recordset class TRiepBolle_recordset: public TCSV_recordset
{ {
@ -14,7 +16,7 @@ public:
struct TStruttura: public TObject struct TStruttura: public TObject
{ {
long _cliente; long _cliente;
TString _articolo; TString _articolo;
TString _descr; TString _descr;
TDate _dataDoc; TDate _dataDoc;
int _numeroDoc; int _numeroDoc;
@ -60,8 +62,55 @@ class TRiepBolle_app: public TSkeleton_application
protected: protected:
virtual void main_loop(); virtual void main_loop();
void elabora(const TMask& mask) const; void elabora(const TMask& mask) const;
TString getQuery(bool isArticolo) const;
}; };
TString TRiepBolle_app::getQuery(bool isArticolo) const
{
/*
RICHIESTA QUERY:
estrazione di tutte le bolle in base ai range della parametrica:
- cliente
- data
- zona
Inoltre estrarre in base alla causale di lavanderia tutte quelle
righe che non sono di reso (2000@.B2!='X').
Dalla causale di lavanderia agganciare la causale di magazzino
consegnata e verificare che abbiano il segno '+' nel campo
consegnato mese (3000@.S2[37,38] ='+1').
le bolle sono determinate dal file di configurazione Ditta.ini
*/
//Stringhe x composizione query
TString query, select, between, orderBy, join, from_, to_;
//Richiamo parametri della ditta di configurazione
//file Ditta.ini
TConfig lvini(CONFIG_DITTA, "lv");
const TString4 codnum = lvini.get("NUM_GEN");
const TString4 tipodoc = lvini.get("TIPODOC_GEN");
select << "USE RDOC KEY 1\n";
select << "SELECT ((2000@.B2!='X')&&(3000@.S2[37,38] ='+1')&&(DOC.TIPODOC='" << tipodoc << "')&&";
between << "(BETWEEN(DOC.ZONA,#F_ZONA_FROM,#F_ZONA_FROM))&&(BETWEEN(DOC.DATADOC,#F_DATA_FROM,#F_DATA_TO))&&(BETWEEN(DOC.CODCF,#F_CODCF_FROM,#F_CODCF_TO)))\n";
if(isArticolo)
orderBy << "BY DOC.CODCF CODART DOC.DATADOC NDOC\n";
else
orderBy << "BY DOC.CODCF DOC.DATADOC NDOC\n";
join << "JOIN DOC TO RDOC ALIAS 1000 INTO CODNUM==CODNUM ANNO==ANNO PROVV==PROVV NDOC==NDOC\n";
join << "JOIN &LVCAU TO RDOC ALIAS 2000 INTO CODTAB==CODAGG1\n";
join << "JOIN %CAU TO &LVCAU ALIAS 3000 INTO CODTAB==S2\n";
from_ << "FROM CODNUM='" << codnum << "'\n";
to_ << "TO CODNUM='" << codnum << "'";
query << select << between << orderBy << join << from_ << to_;
return query;
}
class TRiepilogo: public TArray class TRiepilogo: public TArray
{ {
public: public:
@ -90,15 +139,9 @@ void TRiepilogoData::add(int posizione,int cliente, TDate dataDoc, int numeroDoc
TArray::add(strutturaData,posizione); TArray::add(strutturaData,posizione);
} }
void TRiepBolle_app:: elabora(const TMask& mask)const void TRiepBolle_app:: elabora(const TMask& mask)const
{ {
TISAM_recordset riep("USE RDOC KEY 1 SELECT (BETWEEN(DOC.ZONA,#F_ZONA_FROM,#F_ZONA_FROM)&&(BETWEEN(DOC.DATADOC,#F_DATA_FROM,#F_DATA_TO))&&(BETWEEN(DOC.CODCF,#F_CODCF_FROM,#F_CODCF_TO)))\n" TISAM_recordset riep(getQuery(true));
"BY DOC.CODCF CODART DOC.DATADOC NDOC\n"
"JOIN DOC TO RDOC ALIAS 1000 INTO CODNUM==CODNUM ANNO==ANNO PROVV==PROVV NDOC==NDOC\n"
"FROM CODNUM='B01'\n"
"TO CODNUM='B01'");
//inserire parametri filtri //inserire parametri filtri
riep.set_var("#F_DATA_FROM",mask.get_date(F_DATA_DA)); riep.set_var("#F_DATA_FROM",mask.get_date(F_DATA_DA));
@ -157,11 +200,7 @@ void TRiepBolle_app:: elabora(const TMask& mask)const
{ {
//Per ogni cliente creo una struttura di date. è necessario //Per ogni cliente creo una struttura di date. è necessario
//per il report. //per il report.
TISAM_recordset dateDocAll("USE RDOC KEY 1 SELECT (BETWEEN(DOC.ZONA,#F_ZONA_FROM,#F_ZONA_FROM)&&(BETWEEN(DOC.DATADOC,#F_DATA_FROM,#F_DATA_TO))&&(BETWEEN(DOC.CODCF,#F_CODCF_FROM,#F_CODCF_TO)))\n" TISAM_recordset dateDocAll(getQuery(false));
"BY DOC.CODCF DOC.DATADOC NDOC\n"
"JOIN DOC TO RDOC ALIAS 1000 INTO CODNUM==CODNUM ANNO==ANNO PROVV==PROVV NDOC==NDOC\n"
"FROM CODNUM='B01'\n"
"TO CODNUM='B01'");
//inserire parametri filtri //inserire parametri filtri
dateDocAll.set_var("#F_DATA_FROM",mask.get_date(F_DATA_DA)); dateDocAll.set_var("#F_DATA_FROM",mask.get_date(F_DATA_DA));
@ -213,8 +252,8 @@ void TRiepBolle_app:: elabora(const TMask& mask)const
TStrutturaData& sD2 = *(TStrutturaData*) obj; TStrutturaData& sD2 = *(TStrutturaData*) obj;
int contatore2 = sD2._posizione; int contatore2 = sD2._posizione;
TString16 tt = sD2._dataDoc; TString tt = sD2._dataDoc;
TString16 tt2 = tt.sub(0,5); TString tt2 = tt.sub(0,5);
riep_set->set(contatore2,TVariant(tt2)); riep_set->set(contatore2,TVariant(tt2));
contatore2++; contatore2++;
@ -230,8 +269,8 @@ void TRiepBolle_app:: elabora(const TMask& mask)const
{ {
contatore = sD._posizione; contatore = sD._posizione;
TString16 tt = s._dataDoc; TString tt = s._dataDoc;
TString16 tt2 = tt.sub(0,5); TString tt2 = tt.sub(0,5);
riep_set->set(contatore,TVariant(tt2)); riep_set->set(contatore,TVariant(tt2));
contatore++; contatore++;

View File

@ -190,12 +190,12 @@ MESSAGE DISABLE,130|ENABLE,11@</prescript>
</field> </field>
<field border="1" x="0.66" y="21.5" type="Linea" width="92" height="0" pattern="1" /> <field border="1" x="0.66" y="21.5" type="Linea" width="92" height="0" pattern="1" />
<field border="1" radius="100" x="0.25" y="24.5" type="Rettangolo" shade_offset="50" width="93.5" height="30" /> <field border="1" radius="100" x="0.25" y="24.5" type="Rettangolo" shade_offset="50" width="93.5" height="30" />
<field border="1" x="18.5" y="25" type="Linea" height="29" pattern="1" /> <field border="1" x="11" y="25" type="Linea" height="29" pattern="1" />
<field border="1" x="51" y="25" type="Linea" height="29" pattern="1" /> <field border="1" x="43" y="25" type="Linea" height="29" pattern="1" />
<field border="1" x="60" y="25" type="Linea" height="29" pattern="1" /> <field border="1" x="59.5" y="25" type="Linea" height="29" pattern="1" />
<field border="1" x="69" y="25" type="Linea" height="29" pattern="1" /> <field border="1" x="69.5" y="25" type="Linea" height="29" pattern="1" />
<field border="1" x="77.5" y="25" type="Linea" height="29" pattern="1" /> <field border="1" x="77.5" y="25" type="Linea" height="29" pattern="1" />
<field border="1" x="85.5" y="25" type="Linea" height="29" pattern="1" /> <field border="1" x="85" y="25" type="Linea" height="29" pattern="1" />
<field border="1" radius="100" x="0.25" y="55" type="Rettangolo" shade_offset="50" width="93.5" height="8.75" /> <field border="1" radius="100" x="0.25" y="55" type="Rettangolo" shade_offset="50" width="93.5" height="8.75" />
<field x="0.75" y="55" type="Testo" width="14.5" pattern="1" text="Trasporto a Mezzo"> <field x="0.75" y="55" type="Testo" width="14.5" pattern="1" text="Trasporto a Mezzo">
<font italic="1" face="Arial" size="8" /> <font italic="1" face="Arial" size="8" />
@ -207,23 +207,23 @@ MESSAGE DISABLE,130|ENABLE,11@</prescript>
<font italic="1" face="Arial" size="8" /> <font italic="1" face="Arial" size="8" />
</field> </field>
<field border="1" x="0.25" y="57.25" type="Linea" width="92" height="0" pattern="1" /> <field border="1" x="0.25" y="57.25" type="Linea" width="92" height="0" pattern="1" />
<field x="0.75" y="57.25" type="Testo" align="right" width="6.5" pattern="1" text="Colli"> <field x="0.75" y="57.25" type="Testo" hidden="1" align="right" width="6.5" pattern="1" text="Colli">
<font italic="1" face="Arial" size="8" /> <font italic="1" face="Arial" size="8" />
</field> </field>
<field x="10" y="57.25" type="Testo" align="right" width="7" pattern="1" text="N.Palette"> <field x="10" y="57.25" type="Testo" hidden="1" align="right" width="7" pattern="1" text="N.Palette">
<font italic="1" face="Arial" size="8" /> <font italic="1" face="Arial" size="8" />
</field> </field>
<field x="23" y="57.25" type="Testo" width="6.5" pattern="1" text="Peso Kg."> <field x="23" y="57.25" type="Testo" hidden="1" width="6.5" pattern="1" text="Peso Kg.">
<font italic="1" face="Arial" size="8" /> <font italic="1" face="Arial" size="8" />
</field> </field>
<field x="30" y="57.25" type="Testo" width="8.5" pattern="1" text="Porto"> <field x="30" y="57.25" type="Testo" hidden="1" width="8.5" pattern="1" text="Porto">
<font italic="1" face="Arial" size="8" /> <font italic="1" face="Arial" size="8" />
</field> </field>
<field border="1" x="77.5" y="57.25" type="Linea" height="6.5" pattern="1" /> <field border="1" x="77.5" y="57.25" type="Linea" height="6.5" pattern="1" />
<field x="78.5" y="57.25" type="Testo" width="14" pattern="1" text="Firma Conducente"> <field x="78.5" y="57.25" type="Testo" width="14" pattern="1" text="Firma Conducente">
<font italic="1" face="Arial" size="8" /> <font italic="1" face="Arial" size="8" />
</field> </field>
<field x="59.75" y="57.5" type="Testo" width="17" text="Data e Ora Inizio Trasporto"> <field x="59.75" y="57.5" type="Testo" hidden="1" width="17" text="Data e Ora Inizio Trasporto">
<font italic="1" face="Arial" size="8" /> <font italic="1" face="Arial" size="8" />
</field> </field>
<field border="1" x="0.25" y="59.25" type="Linea" width="92" height="0" pattern="1" /> <field border="1" x="0.25" y="59.25" type="Linea" width="92" height="0" pattern="1" />
@ -249,36 +249,36 @@ MESSAGE DISABLE,130|ENABLE,11@</prescript>
<field x="1.5" y="25" type="Testo" width="9.5" id="202" pattern="1" text="Articolo"> <field x="1.5" y="25" type="Testo" width="9.5" id="202" pattern="1" text="Articolo">
<font face="Arial" bold="1" size="8" /> <font face="Arial" bold="1" size="8" />
</field> </field>
<field x="19" y="25" type="Testo" width="28" id="203" pattern="1" text="Descrizione"> <field x="12" y="25" type="Testo" width="28" id="203" pattern="1" text="Descrizione">
<font face="Arial" bold="1" size="8" /> <font face="Arial" bold="1" size="8" />
</field> </field>
<field x="51.5" y="25" type="Testo" width="8" id="204" pattern="1" text="Causale"> <field x="44" y="25" type="Testo" width="10" id="204" pattern="1" text="Causale">
<font face="Arial" bold="1" size="8" /> <font face="Arial" bold="1" size="8" />
</field> </field>
<field x="61" y="25" type="Testo" width="7" id="209" pattern="1" text="Qt&#E0; Con."> <field x="60" y="25" type="Testo" width="7" id="209" pattern="1" text="Qt&#E0; Rit.">
<font face="Arial" bold="1" size="8" /> <font face="Arial" bold="1" size="8" />
</field> </field>
<field x="70" y="25" type="Testo" width="6" id="209" pattern="1" text="Qt&#E0; Rit."> <field x="70" y="25" type="Testo" width="8" id="209" pattern="1" text="Qt&#E0; Cons.">
<font face="Arial" bold="1" size="8" /> <font face="Arial" bold="1" size="8" />
</field> </field>
<field x="78.5" y="25" type="Testo" width="8" id="209" pattern="1" text="Dotazione"> <field x="78.5" y="25" type="Testo" width="6" id="209" pattern="1" text="Dotaz.">
<font face="Arial" bold="1" size="8" /> <font face="Arial" bold="1" size="8" />
</field> </field>
<field x="86" y="25" type="Testo" width="7" id="209" pattern="1" text="Prezzo"> <field x="85.5" y="25" type="Testo" width="9" id="209" pattern="1" text="Prezzo">
<font face="Arial" bold="1" size="8" /> <font face="Arial" bold="1" size="8" />
</field> </field>
</section> </section>
<section type="Body" level="1" can_break="1"> <section type="Body" level="1" can_break="1">
<condition>!((34.TIPORIGA='08'))</condition> <condition>!((34.TIPORIGA='08'))</condition>
<font face="Arial" size="9" /> <font face="Arial" size="9" />
<field x="52" type="Stringa" width="5" pattern="1"> <field x="44" type="Stringa" width="15" pattern="1">
<font face="Arial" size="8" /> <font face="Arial" size="8" />
<source>34.CODAGG1</source> <source>1000@.S3</source>
</field> </field>
<field x="68.5" type="Numero" align="right" width="9" pattern="1" hide_zero="1" text="##.###,@@"> <field x="61" type="Numero" align="right" width="8" pattern="1" hide_zero="1" text="##.###,@@">
<source>34.QTAGG1</source> <source>34.QTAGG1</source>
</field> </field>
<field x="81.5" type="Numero" align="right" width="12" pattern="1" hide_zero="1" text="#.###.###,@@"> <field x="84.5" type="Numero" align="right" width="9" pattern="1" hide_zero="1" text="#.###.###,@@">
<source>34.PREZZO</source> <source>34.PREZZO</source>
</field> </field>
<field type="Stringa" hidden="1" bg_color="#E9E9E9" width="3.5" id="50" pattern="1"> <field type="Stringa" hidden="1" bg_color="#E9E9E9" width="3.5" id="50" pattern="1">
@ -286,18 +286,18 @@ MESSAGE DISABLE,130|ENABLE,11@</prescript>
<prescript description="B1.50 PRESCRIPT">MESSAGE EMPTY DISABLE,51 <prescript description="B1.50 PRESCRIPT">MESSAGE EMPTY DISABLE,51
MESSAGE ENABLE,51</prescript> MESSAGE ENABLE,51</prescript>
</field> </field>
<field x="0.5" type="Stringa" width="18.2" id="51" pattern="1"> <field x="0.5" type="Stringa" width="10" id="51" pattern="1">
<font face="Arial" size="8" /> <font face="Arial" size="8" />
<source>34.CODART</source> <source>34.CODART</source>
</field> </field>
<field x="19" type="Stringa" bg_color="#D4D4D4" dynamic_height="1" width="31" height="15" id="52" pattern="1"> <field x="12" type="Stringa" bg_color="#D4D4D4" dynamic_height="1" width="31" height="15" id="52" pattern="1">
<prescript description="B1.52 PRESCRIPT">MESSAGE _DESCRIGA</prescript> <prescript description="B1.52 PRESCRIPT">MESSAGE _DESCRIGA</prescript>
</field> </field>
<field x="122" type="Stringa" hidden="1" bg_color="#E6E6E6" width="3" id="53" pattern="1"> <field x="122" type="Stringa" hidden="1" bg_color="#E6E6E6" width="3" id="53" pattern="1">
<source>34.UMQTA</source> <source>34.UMQTA</source>
<prescript description="B1.53 PRESCRIPT">MESSAGE _ALIGN,#52,TOP</prescript> <prescript description="B1.53 PRESCRIPT">MESSAGE _ALIGN,#52,TOP</prescript>
</field> </field>
<field x="59.5" type="Numero" align="right" bg_color="#00FFFF" width="9" id="54" pattern="1" hide_zero="1" text="##.###,@@"> <field x="69.5" type="Numero" align="right" bg_color="#00FFFF" width="8" id="54" pattern="1" hide_zero="1" text="##.###,@@">
<groups>30</groups> <groups>30</groups>
<source>34.QTA</source> <source>34.QTA</source>
<prescript description="B1.54 PRESCRIPT">MESSAGE _ALIGN,#52,TOP</prescript> <prescript description="B1.54 PRESCRIPT">MESSAGE _ALIGN,#52,TOP</prescript>
@ -355,34 +355,34 @@ MESSAGE APPEND,107</prescript>
MESSAGE APPEND,107</prescript> MESSAGE APPEND,107</prescript>
</field> </field>
<field x="51" y="8.5" deactivated="1" type="Stringa" width="38" id="115" pattern="1" /> <field x="51" y="8.5" deactivated="1" type="Stringa" width="38" id="115" pattern="1" />
<field x="69.75" y="4.25" type="Stringa" width="5" id="117" pattern="1" text="##:##"> <field x="69.75" y="4.25" type="Stringa" hidden="1" width="5" id="117" pattern="1" text="##:##">
<source>ORAPART</source> <source>ORAPART</source>
</field> </field>
<field x="59.75" y="4.25" type="Data" width="8" id="118" pattern="1"> <field x="59.75" y="4.25" type="Data" hidden="1" width="8" id="118" pattern="1">
<source>DATAPART</source> <source>DATAPART</source>
</field> </field>
<field x="20.75" y="2" type="Stringa" width="34.5" id="120" pattern="1"> <field x="20.75" y="2" type="Stringa" width="34.5" id="120" pattern="1">
<source>206@.S0</source> <source>206@.S0</source>
</field> </field>
<field x="16.5" y="4.25" type="Numero" align="right" width="12" id="121" pattern="1" text="#########"> <field x="16.5" y="4.25" type="Numero" hidden="1" align="right" width="12" id="121" pattern="1" text="#########">
<source>IF(33.PNETTO=0,TOTPESO,33.PNETTO)</source> <source>IF(33.PNETTO=0,TOTPESO,33.PNETTO)</source>
</field> </field>
<field x="0.5" y="4.25" type="Numero" align="right" width="6" id="122" pattern="1"> <field x="0.5" y="4.25" type="Numero" hidden="1" align="right" width="6" id="122" pattern="1">
<source>IF(33.NCOLLI=0,TOTCOLLI,33.NCOLLI)</source> <source>IF(33.NCOLLI=0,TOTCOLLI,33.NCOLLI)</source>
</field> </field>
<field x="9" y="4.25" type="Numero" align="right" width="6" id="132" pattern="1"> <field x="9" y="4.25" type="Numero" hidden="1" align="right" width="6" id="132" pattern="1">
<source>IF(33.NBANC=0,TOTBANC,33.NBANC)</source> <source>IF(33.NBANC=0,TOTBANC,33.NBANC)</source>
</field> </field>
<field x="0.5" y="6.25" type="Stringa" width="76.5" id="157" pattern="1"> <field x="0.5" y="6.25" type="Stringa" width="76.5" id="157" pattern="1">
<source>33.NOTE</source> <source>33.NOTE</source>
</field> </field>
<field x="30.25" y="4.25" type="Stringa" width="27.5" id="158" pattern="1"> <field x="30.25" y="4.25" type="Stringa" hidden="1" width="27.5" id="158" pattern="1">
<source>203@.S0</source> <source>203@.S0</source>
</field> </field>
</section> </section>
<sql>USE 33 <sql>USE 33
JOIN 34 INTO CODNUM==CODNUM ANNO==ANNO PROVV==PROVV NDOC==NDOC JOIN 34 INTO CODNUM==CODNUM ANNO==ANNO PROVV==PROVV NDOC==NDOC
JOIN %CAU TO 34 ALIAS 1000 INTO CODTAB==CODAGG1 JOIN &#26;LVCAU TO 34 ALIAS 1000 INTO CODTAB==CODAGG1
JOIN 17 TO 33 INTO TIPOCF==TIPOCF CODCF==CODCF JOIN 17 TO 33 INTO TIPOCF==TIPOCF CODCF==CODCF
JOIN 20 TO 33 INTO TIPOCF==TIPOCF CODCF==CODCF JOIN 20 TO 33 INTO TIPOCF==TIPOCF CODCF==CODCF
JOIN 16 TO 33 INTO TIPOCF==TIPOCF CODCF==CODCF CODIND==CODINDSP JOIN 16 TO 33 INTO TIPOCF==TIPOCF CODCF==CODCF CODIND==CODINDSP