Nuova gestione preventivazione

git-svn-id: svn://10.65.10.50/branches/R_10_00@22887 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2013-07-26 15:45:58 +00:00
parent 68f38a695b
commit 59a06f9def
12 changed files with 3475 additions and 5 deletions

View File

@ -1,8 +1,8 @@
#ifndef __LV3_H
#define __LV3_H
#ifndef __PE0_H
#define __PE0_H
int pe0400(int argc, char* argv[]);
int pe0500(int argc, char* argv[]);
int pe0600(int argc, char* argv[]);
#endif // __LV3_H
#endif // __PE0_H

View File

@ -108,8 +108,7 @@ public:
inline TGestione_preventivo_app& peapp() { return (TGestione_preventivo_app &)main_app(); };
//////////////////////////////////////////
//// CLASSE TGestione_preventivo_MSK ////
//// CLASSE TGestione_preventivo_MSK ////
//////////////////////////////////////////
const TString & TGestione_preventivo_msk::build_tree_string(int level)

14
pe/pe1.cpp Normal file
View File

@ -0,0 +1,14 @@
#include <xvt.h>
#include "pe1.h"
int main(int argc, char** argv)
{
const int r = (argc > 1) ? argv[1][1] - '0' : 0;
switch (r)
{
case 3:
default: pe1400(argc, argv); break; // gestione preventivi
}
return 0;
}

6
pe/pe1.h Normal file
View File

@ -0,0 +1,6 @@
#ifndef __PE1_H
#define __PE1_H
int pe1400(int argc, char* argv[]); // gestione preventivi
#endif

1411
pe/pe1400.cpp Normal file

File diff suppressed because it is too large Load Diff

50
pe/pe1400.h Normal file
View File

@ -0,0 +1,50 @@
#define F_PROVV 201
#define F_ANNO 202
#define F_CODNUM 203
#define F_DESNUM 204
#define F_TIPODOC 205
#define F_DESTIPO 206
#define F_NPREV 207
#define F_NREV 208
#define F_NDOC 209
#define F_STATO 210
#define F_DATADOC 211
#define F_CLIFO 220
#define F_RAGSOC 221
#define F_RICALT 222
#define F_STATOPAIV 223
#define F_PAIV 224
#define F_COFI 225
#define F_NOTE 226
#define F_CODPAG 227
#define F_DESPAG 228
#define F_CODLIS 229
#define F_DESLIS 230
#define F_RICARICO 234
#define F_TIPOCOSTO 235
#define F_NUMDOCRIF 236
#define F_DATADOCRIF 237
#define F_OGGETTI 238
#define F_FASENEW 240
#define F_FASEDIT 241
#define F_FASEDEL 242
#define F_FASEUP 244
#define F_FASEDN 245
#define F_FASELT 246
#define F_FASERT 247
#define F_FASEMAX 248
#define F_CDC0 250
#define F_FASI 400
#define F_DISTINTE 401
#define F_ARTICOLI 402
#define F_MISURE 403
#define S_CODART 101
#define S_DESCR 102
#define RPRV_COSTO "QTAGG5"
#define RPRV_LEVEL "PRIORITY"

570
pe/pe1400.rep Normal file
View File

@ -0,0 +1,570 @@
<?xml version="1.0" encoding="UTF-8" ?>
<report libraries="ve1300" name="pe1400" lpi="6">
<description>preventivo standard</description>
<font face="Courier New" size="10" />
<section type="Head" height="28" pattern="1">
<font face="Arial" size="10" />
<field x="90.5" y="19" type="Stringa" width="2" id="9" pattern="1">
<prescript description="H0.9 PRESCRIPT">MESSAGE _PAGENO</prescript>
</field>
<field x="77" y="19" type="Data" width="10" id="10" pattern="1">
<font face="Arial" bold="1" size="10" />
<source>33.DATADOC</source>
</field>
<field x="67.5" y="19" type="Stringa" align="right" width="6.5" id="11" pattern="1">
<font face="Arial" bold="1" size="10" />
<source>33.NDOC</source>
</field>
<field x="43" y="19" type="Stringa" width="16" id="12" pattern="1">
<prescript description="H0.12 PRESCRIPT">MESSAGE _CLIENTE,COFI</prescript>
</field>
<field x="59" y="19" type="Stringa" width="5" id="14" pattern="1">
<source>IF(33.CODVAL='','EURO',33.CODVAL)</source>
</field>
<field x="18" y="19" type="Stringa" align="right" width="6" id="15" pattern="1">
<source>33.CODCF</source>
</field>
<field x="28" y="19" type="Stringa" width="14" id="16" pattern="1">
<prescript description="H0.16 PRESCRIPT">MESSAGE _CLIENTE,PAIV</prescript>
</field>
<field x="1" y="21.5" type="Stringa" width="41" id="17" pattern="1">
<source>201@.S0</source>
</field>
<field x="43" y="20.5" deactivated="1" type="Stringa" width="23" id="18" pattern="1">
<source>208@.S0</source>
</field>
<field x="50.5" y="27" deactivated="1" type="Stringa" width="45" id="18" pattern="1">
<source>208@.S0</source>
</field>
<field x="43" y="21.5" type="Stringa" width="51" id="19" pattern="1">
<groups>71</groups>
<source>204@.S0</source>
</field>
<field x="49" y="10.5" type="Stringa" width="59" height="2" id="20" pattern="1">
<font face="Arial" bold="1" size="10" />
<prescript description="H0.20 PRESCRIPT">MESSAGE _CLIENTE,!RAGSOC</prescript>
</field>
<field x="49" y="12.5" type="Stringa" width="44" id="21" pattern="1">
<prescript description="H0.21 PRESCRIPT">MESSAGE _CLIENTE,!INDNUM</prescript>
</field>
<field x="49" y="13.5" type="Stringa" width="44" id="22" pattern="1">
<prescript description="H0.22 PRESCRIPT">MESSAGE _CLIENTE,LOCALITACF</prescript>
</field>
<field x="49" y="14.5" type="Stringa" width="5" id="23" pattern="1">
<prescript description="H0.23 PRESCRIPT">MESSAGE _CLIENTE,!CAP</prescript>
</field>
<field x="55" y="14.5" type="Stringa" hidden="1" width="30" height="2" id="24" pattern="1">
<prescript description="H0.24 PRESCRIPT">MESSAGE _CLIENTE,!COM-&#3E;DENCOM
MESSAGE COPY,26</prescript>
</field>
<field x="55" y="14.5" type="Stringa" hidden="1" width="2" id="25" pattern="1">
<prescript description="H0.25 PRESCRIPT">MESSAGE _CLIENTE,!COM-&#3E;PROVCOM
MESSAGE APPEND,26</prescript>
</field>
<field x="55" y="14.5" type="Stringa" width="38" height="2" id="26" pattern="1" />
<field x="43" y="27" type="Stringa" hidden="1" width="3" id="27" pattern="1">
<prescript description="H0.27 PRESCRIPT">MESSAGE _CLIENTE,STATOCF</prescript>
</field>
<field x="49" y="15.5" type="Stringa" width="25" id="28" pattern="1">
<prescript description="H0.28 PRESCRIPT">MESSAGE _TABLEREAD,%STA,#27,S0</prescript>
</field>
<field x="1" y="19" type="Stringa" width="16" id="31" pattern="1">
<font face="Arial" bold="1" size="10" />
<source>210@.S0</source>
</field>
<field x="25.5" y="19" type="Stringa" width="2" id="33" pattern="1">
<prescript description="H0.33 PRESCRIPT">MESSAGE _CLIENTE,STATOPAIV</prescript>
</field>
<field x="22.25" y="24.5" type="Stringa" width="70" id="36" pattern="1">
<source>212@.S0</source>
</field>
<field x="1" y="26.5" deactivated="1" type="Stringa" width="27" id="36" pattern="1">
<source>210@.S0</source>
</field>
<field x="21" y="20.5" deactivated="1" type="Stringa" width="21" id="37" pattern="1">
<source>211@.S0</source>
</field>
<field x="47.25" y="22.5" type="Stringa" width="34" id="62" pattern="1" text="## ## # ##### ##### ############">
<groups>70</groups>
<source>213@.S3</source>
</field>
<field x="43" y="22.5" type="Testo" width="4.5" id="63" pattern="1" text="Iban:">
<font italic="1" face="Arial" size="8" />
<groups>70</groups>
</field>
<field x="59" y="22.5" type="Numero" align="right" width="6.5" id="64" pattern="1" hide_zero="1" text="@@@@@">
<groups>71</groups>
<source>33.CODCABA</source>
</field>
<field x="47.25" y="22.5" type="Numero" align="right" width="6.5" id="65" pattern="1" hide_zero="1" text="@@@@@">
<groups>71</groups>
<source>33.CODABIA</source>
</field>
<field x="1.25" y="24.5" type="Stringa" width="20.5" id="65" pattern="1">
<source>33.CODCMS</source>
</field>
<field x="71" y="22.5" type="Stringa" align="right" width="16.5" id="66" pattern="1">
<groups>71</groups>
<source>33.IBAN[16,]+' CIN:'+33.IBAN[5,5]</source>
</field>
<field x="43" y="22.5" type="Testo" width="3.5" id="67" pattern="1" text="Abi:">
<font italic="1" face="Arial" size="8" />
<groups>71</groups>
</field>
<field x="55" y="22.5" type="Testo" width="4" id="68" pattern="1" text="Cab:">
<font italic="1" face="Arial" size="8" />
<groups>71</groups>
</field>
<field x="66.75" y="22.5" type="Testo" width="4.5" id="69" pattern="1" text="C&#2F;C">
<font italic="1" face="Arial" size="8" />
<groups>71</groups>
</field>
<field x="28.5" y="22.5" type="Array" hidden="1" width="3" id="117" pattern="1">
<source>201@.S4</source>
<list>
<li Value=" " Code=" ">MESSAGE HIDE,71@|HIDE,70@</li>
<li Value="1" Code="1">MESSAGE HIDE,71@|SHOW,70@</li>
<li Value="3" Code="3">MESSAGE HIDE,70@|SHOW,71@</li>
<li Value="9" Code="9">MESSAGE HIDE,71@|SHOW,70@ </li>
</list>
</field>
<field x="32" y="22.5" type="Stringa" hidden="1" width="10" id="119" pattern="1">
<source>33.CODABIP+33.CODCABP</source>
</field>
<field x="43" y="21.5" type="Stringa" width="51" id="129" pattern="1">
<groups>70</groups>
<prescript description="H0.129 PRESCRIPT">MESSAGE TABLEREAD,%BAN,#119,S0</prescript>
</field>
</section>
<section type="Head" level="1" pattern="1" />
<section type="Body" pattern="1">
<field border="1" x="3" y="1" type="Rettangolo" bg_color="#C0C0C0" width="40" height="5" pattern="5" />
<field x="12.5" y="3" type="Testo" width="20" pattern="1" text="Logo Personalizzato">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="3.5" y="6.5" type="Testo" width="16.5" pattern="1" text="INTESTAZIONE DITTA">
<font face="Times New Roman" bold="1" size="9" />
</field>
<field x="3.5" y="7.25" type="Testo" width="13" pattern="1" text="Via ">
<font face="Times New Roman" size="8" />
</field>
<field x="3.5" y="8" type="Testo" width="33" pattern="1" text="CAP COMUNE PROV Italy">
<font face="Times New Roman" size="8" />
</field>
<field x="3.5" y="8.75" type="Testo" width="33" pattern="1" text="Tel. +39 xxxxxxx Fax +39 xxxxxxxxxxxxxxx">
<font face="Times New Roman" size="8" />
</field>
<field x="3.5" y="9.5" type="Testo" width="33" pattern="1" text="P.IVA 01234567890 Trib. XX n. 12345 CCIAA n. 123456">
<font face="Times New Roman" size="8" />
</field>
<field x="3.5" y="10.25" type="Testo" width="33" pattern="1" text="Cap. Soc. Euro 99.999 i.v.">
<font face="Times New Roman" size="8" />
</field>
<field x="3.5" y="11" type="Testo" width="33" pattern="1" text="www.vostraditta.com info@vostraditta.com">
<font face="Times New Roman" size="8" />
</field>
<field border="1" radius="100" x="0.5" y="18" type="Rettangolo" shade_offset="50" width="92" height="8" pattern="2" />
<field border="1" x="0.5" y="20.5" type="Linea" width="92" height="0" pattern="1" />
<field border="1" x="0.5" y="23.5" type="Linea" width="92" height="0" pattern="1" />
<field border="1" radius="100" x="0.5" y="26.5" type="Rettangolo" shade_offset="50" width="92" height="23.5" pattern="2" />
<field border="1" radius="100" x="0.5" y="51" type="Rettangolo" shade_offset="50" width="92" height="14.5" pattern="2" />
<field border="1" x="0.75" y="53" type="Linea" width="92" height="0" pattern="1" />
<field border="1" x="6.5" y="53" type="Linea" height="6" pattern="1" />
<field border="1" x="19" y="53" type="Linea" height="6" pattern="1" />
<field border="1" x="34.5" y="53" type="Linea" height="6" pattern="1" />
<field border="1" x="40.5" y="53" type="Linea" height="6" pattern="1" />
<field border="1" x="75.25" y="53" type="Linea" height="6" pattern="1" />
<field border="1" x="0.75" y="59" type="Linea" width="92" height="0" pattern="1" />
<field border="1" radius="100" x="76" y="59.25" type="Rettangolo" bg_color="#E0E0E0" shade_offset="30" width="16" height="2.75" pattern="2" />
<field border="1" x="0.75" y="62.25" type="Linea" width="92" height="0" pattern="1" />
<field x="1" y="62.5" type="Testo" width="50" pattern="1" text="CONTRIBUTO CONAI ASSOLTO OVE DOVUTO">
<font face="Arial" bold="1" size="10" />
</field>
<field x="1" y="63.5" type="Array" width="50" pattern="1">
<font face="Arial" bold="1" size="10" />
<source>33.IVAXCASSA</source>
<list>
<li />
<li Value="Operazione con IVA per cassa, di cui all'art. 32-bis del D.L. 83&#2F;2012" Code="X" />
</list>
</field>
<field border="1" radius="100" x="45.5" y="9.5" type="Rettangolo" shade_offset="50" width="47" height="8" id="50" pattern="2" />
<field x="49" y="9" type="Testo" width="16" id="53" pattern="2" text=" Intestatario Documento">
<font italic="1" face="Arial" size="8" />
</field>
<field x="1" y="18.25" type="Testo" width="11" id="53" pattern="1" text="Tipo Documento">
<font italic="1" face="Arial" size="8" />
</field>
<field x="17.5" y="18.25" type="Testo" width="8" id="53" pattern="1" text="Cod.Cliente">
<font italic="1" face="Arial" size="8" />
</field>
<field x="29" y="18.25" type="Testo" width="8.5" id="53" pattern="1" text="P.IVA">
<font italic="1" face="Arial" size="8" />
</field>
<field x="42.75" y="18.25" type="Testo" width="8.5" id="53" pattern="1" text="Cod. Fis:">
<font italic="1" face="Arial" size="8" />
</field>
<field x="59.5" y="18.25" type="Testo" width="5" id="53" pattern="1" text="Valuta">
<font italic="1" face="Arial" size="8" />
</field>
<field x="69.5" y="18.25" type="Testo" width="6" id="53" pattern="1" text="Numero">
<font italic="1" face="Arial" size="8" />
</field>
<field x="79" y="18.25" type="Testo" width="7" id="53" pattern="1" text="Data">
<font italic="1" face="Arial" size="8" />
</field>
<field x="88" y="18.25" type="Testo" width="5" id="53" pattern="1" text="Pagina">
<font italic="1" face="Arial" size="8" />
</field>
<field x="1" y="20.5" type="Testo" width="8" id="53" pattern="1" text="Pagamento">
<font italic="1" face="Arial" size="8" />
</field>
<field x="43" y="20.5" type="Testo" width="8" id="53" pattern="1" text="Banca">
<font italic="1" face="Arial" size="8" />
</field>
<field x="1" y="23.5" type="Testo" width="8" id="53" pattern="1" text="Commessa">
<font italic="1" face="Arial" size="8" />
</field>
<field x="2.5" y="51.25" type="Testo" width="10" id="53" pattern="1" text="Totale Merce">
<font italic="1" face="Arial" size="8" />
</field>
<field x="14" y="51.25" type="Testo" width="6" id="53" pattern="1" text="Sconto %">
<font italic="1" face="Arial" size="8" />
</field>
<field x="21.5" y="51.25" type="Testo" align="right" width="10" id="53" pattern="1" text="Netto Merce">
<font italic="1" face="Arial" size="8" />
</field>
<field x="33" y="51.25" type="Testo" width="7.5" id="53" pattern="1" text="Spese Varie">
<font italic="1" face="Arial" size="8" />
</field>
<field x="44.5" y="51.25" type="Testo" width="10.5" id="53" pattern="1" text="Spese Trasporto">
<font italic="1" face="Arial" size="8" />
</field>
<field x="61.5" y="51.25" type="Testo" width="11" id="53" pattern="1" text="Totale Imponibile">
<font italic="1" face="Arial" size="8" />
</field>
<field x="81" y="51.25" type="Testo" width="10.5" id="53" pattern="1" text="Totale Imposta">
<font italic="1" face="Arial" size="8" />
</field>
<field x="1" y="53.25" type="Testo" width="6" id="53" pattern="1" text="Cod.IVA">
<font italic="1" face="Arial" size="8" />
</field>
<field x="7.25" y="53.25" type="Testo" width="12" id="53" pattern="1" text="Spese Accessorie">
<font italic="1" face="Arial" size="8" />
</field>
<field x="19.25" y="53.25" type="Testo" align="center" width="15" id="53" pattern="1" text="Imponibile">
<font italic="1" face="Arial" size="8" />
</field>
<field x="36.25" y="53.25" type="Testo" width="3" id="53" pattern="1" text="IVA">
<font italic="1" face="Arial" size="8" />
</field>
<field x="41.5" y="53.25" type="Testo" width="17" id="53" pattern="1" text="Imposta">
<font italic="1" face="Arial" size="8" />
</field>
<field x="76.75" y="53.28" type="Testo" width="16" id="53" pattern="1" text="Bolli">
<font italic="1" face="Arial" size="8" />
</field>
<field x="76.75" y="55.75" type="Testo" width="6.5" id="53" pattern="1" text="Acconto">
<font italic="1" face="Arial" size="8" />
</field>
<field x="1.25" y="59.25" type="Testo" width="22.5" id="53" pattern="1" text="Scadenza Rate e Relativo Importo">
<font italic="1" face="Arial" size="8" />
</field>
<field x="78.25" y="59.5" type="Testo" width="12.5" id="53" pattern="1" text="Totale Documento">
<font italic="1" face="Arial" size="8" />
</field>
<field x="1.5" y="27" type="Testo" width="8" id="202" pattern="1" text="Fase">
<font face="Arial" bold="1" size="8" />
</field>
<field x="17.5" y="27" type="Testo" width="28.5" id="203" pattern="1" text="Descrizione">
<font face="Arial" bold="1" size="8" />
</field>
<field x="53.75" y="27" type="Testo" width="3.5" id="204" pattern="1" text="UM">
<font face="Arial" bold="1" size="8" />
</field>
<field x="58.25" y="27" type="Testo" width="6" id="209" pattern="1" text="Quantit&#E0;">
<font face="Arial" bold="1" size="8" />
</field>
<field x="68" y="27" type="Testo" width="5.5" id="209" pattern="1" text="Prezzo">
<font face="Arial" bold="1" size="8" />
</field>
<field x="80.5" y="27" type="Testo" width="5.5" id="209" pattern="1" text="Importo">
<font face="Arial" bold="1" size="8" />
</field>
<field x="89.5" y="27" type="Testo" width="2.5" id="209" pattern="1" text="C.I.">
<font face="Arial" bold="1" size="8" />
</field>
<field border="1" x="15.5" y="26.5" type="Linea" height="23.5" id="500" pattern="1" />
<field border="1" x="52.5" y="26.5" type="Linea" height="23.5" id="500" pattern="1" />
<field border="1" x="57" y="26.5" type="Linea" height="23.5" id="500" pattern="1" />
<field border="1" x="65.16" y="26.5" type="Linea" height="23.5" id="500" pattern="1" />
<field border="1" x="77.25" y="26.5" type="Linea" height="23.5" id="500" pattern="1" />
<field border="1" x="88.75" y="26.5" type="Linea" height="23.5" id="500" pattern="1" />
</section>
<section type="Body" level="1" pattern="1">
<condition>34.TIPORIGA='01'</condition>
<font face="Arial" size="10" />
<field x="16" type="Stringa" bg_color="#D4D4D4" dynamic_height="1" width="36" height="22" id="52" pattern="1">
<prescript description="B1.52 PRESCRIPT">MESSAGE _DESCRIGA</prescript>
</field>
<field x="53" type="Stringa" bg_color="#C0C0C0" width="3" id="53" pattern="1">
<source>34.UMQTA</source>
<prescript description="B1.53 PRESCRIPT">MESSAGE _ALIGN,#52,BOTTOM</prescript>
</field>
<field x="57" type="Numero" align="right" bg_color="#00FFFF" width="7.5" id="54" pattern="1" hide_zero="1" text="###.###">
<groups>30</groups>
<source>34.QTA</source>
<prescript description="B1.54 PRESCRIPT">MESSAGE _ALIGN,#52,BOTTOM</prescript>
</field>
<field x="65" type="Prezzo" align="right" bg_color="#FF80C0" width="10.5" codval="33.CODVAL" id="55" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>29</groups>
<source>34.PREZZO</source>
<prescript description="B1.55 PRESCRIPT">MESSAGE _ALIGN,#52,BOTTOM</prescript>
</field>
<field x="76.5" type="Prezzo" align="right" bg_color="#00FFFF" width="12" codval="33.CODVAL" id="57" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>29</groups>
<source>34.IMPNS</source>
<prescript description="B1.57 PRESCRIPT">MESSAGE _ALIGN,#52,BOTTOM</prescript>
</field>
<field x="89.75" type="Stringa" bg_color="#EFEFEF" width="3" id="58" pattern="1">
<source>34.CODIVA</source>
<prescript description="B1.58 PRESCRIPT">MESSAGE _ALIGN,#52,BOTTOM</prescript>
</field>
<field x="94.5" type="Prezzo" hidden="1" align="right" bg_color="#E1E1E1" width="15" codval="33.CODVAL" id="59" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>29</groups>
<source>34.PREZZONS</source>
<prescript description="B1.59 PRESCRIPT">MESSAGE _ALIGN,#52,BOTTOM</prescript>
</field>
<field x="109.5" type="Valuta" hidden="1" align="right" width="15" codval="33.CODVAL" id="60" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<source>34.PROVVR</source>
<prescript description="B1.60 PRESCRIPT">MESSAGE _ALIGN,#52,BOTTOM</prescript>
</field>
<field x="124.5" type="Valuta" hidden="1" align="right" width="15" codval="33.CODVAL" id="61" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<source>34.IMPOSTA</source>
<prescript description="B1.61 PRESCRIPT">MESSAGE _ALIGN,#52,BOTTOM</prescript>
</field>
</section>
<section type="Body" level="2" pattern="1">
<condition>34.TIPORIGA='05'</condition>
<field x="2" type="Stringa" bg_color="#FFFF80" width="13" id="51" pattern="2">
<source>34.CODART</source>
<prescript description="B2.51 PRESCRIPT">MON
1
"34.PRIORITY" @
+
2 *
0
#THIS_FIELD SET_POS</prescript>
</field>
<field x="16" type="Stringa" bg_color="#00FF80" dynamic_height="1" width="36" height="22" id="52" pattern="2">
<prescript description="B2.52 PRESCRIPT">MESSAGE _DESCRIGA</prescript>
</field>
</section>
<section y="50" hidden_if_needed="1" type="Foot" pattern="1" />
<section y="50" type="Foot" level="1" pattern="1">
<font face="Arial" size="9" />
<field x="1" y="7" type="Stringa" width="80" height="2" pattern="1">
<font face="Arial" size="8" />
<prescript description="F1.0 PRESCRIPT">#DOC.LIQDIFF @
EMPTY=
NEGATE
#CLI.ALLEG @
7
&#3C;
AND
IF
"IVA a esigibilit&#E0; differita ai sensi dell'art. 6 comma 5, del dpr n.633&#2F;2973 e dell' art.7 legge 2&#2F;2009"
#THIS !
THEN</prescript>
</field>
<field x="45" y="12.5" type="Stringa" width="40" height="2" pattern="1">
<font face="Arial" size="8" />
<prescript description="F1.0 PRESCRIPT">#DOC.LIQDIFF @
EMPTY=
NEGATE
#CLI.ALLEG @
7
&#3C;
AND
IF
"IVA a esigibilit&#E0; differita ai sensi dell'art. 6 comma 5, del dpr n.633&#2F;2973 e dell' art.7 legge 2&#2F;2009"
#THIS !
THEN</prescript>
</field>
<field y="2" type="Valuta" align="right" bg_color="#00FFFF" width="12" codval="33.CODVAL" id="101" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<source>TOTMER</source>
</field>
<field x="14" y="2" type="Stringa" bg_color="#0000FF" width="5" id="102" pattern="1">
<source>33.SCONTOPERC</source>
</field>
<field x="16" type="Valuta" hidden="1" align="right" width="10" codval="33.CODVAL" id="103" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<source>SCONTOT</source>
</field>
<field x="44" y="2" type="Valuta" align="right" bg_color="#FFFF00" width="10" codval="33.CODVAL" id="104" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<source>SPESTRA</source>
</field>
<field x="32.5" y="2" type="Valuta" align="right" bg_color="#7F007F" width="9.5" codval="33.CODVAL" id="105" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<source>SPESIMB</source>
</field>
<field x="76.5" y="7" type="Valuta" align="right" width="15" codval="33.CODVAL" id="106" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<source>33.IMPPAGATO</source>
</field>
<field x="1" y="4" type="Stringa" bg_color="#7F7F7F" width="4" id="107" pattern="1">
<prescript description="F1.107 PRESCRIPT">MESSAGE _RIEPILOGOIVA,1,COD,0</prescript>
</field>
<field x="20" y="4" type="Valuta" align="right" bg_color="#FF00FF" width="14" codval="33.CODVAL" id="108" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<prescript description="F1.108 PRESCRIPT">MESSAGE _RIEPILOGOIVA,1,IMP,0</prescript>
</field>
<field x="35" y="4" type="Numero" align="right" width="4" id="109" pattern="1" hide_zero="1" text="##">
<prescript description="F1.109 PRESCRIPT">MESSAGE _RIEPILOGOIVA,1,ALI,0</prescript>
</field>
<field x="41" y="4" type="Valuta" align="right" width="10" codval="33.CODVAL" id="110" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<prescript description="F1.110 PRESCRIPT">MESSAGE _RIEPILOGOIVA,1,IVA,1</prescript>
</field>
<field x="1" y="5" type="Stringa" width="4" id="111" pattern="1">
<prescript description="F1.111 PRESCRIPT">MESSAGE _RIEPILOGOIVA,1,COD,0</prescript>
</field>
<field x="20" y="5" type="Valuta" align="right" width="14" codval="33.CODVAL" id="112" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<prescript description="F1.112 PRESCRIPT">MESSAGE _RIEPILOGOIVA,1,IMP,0</prescript>
</field>
<field x="35" y="5" type="Numero" align="right" width="4" id="113" pattern="1" hide_zero="1" text="##">
<prescript description="F1.113 PRESCRIPT">MESSAGE _RIEPILOGOIVA,1,ALI,0</prescript>
</field>
<field x="41" y="5" type="Valuta" align="right" width="10" codval="33.CODVAL" id="114" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<prescript description="F1.114 PRESCRIPT">MESSAGE _RIEPILOGOIVA,1,IVA,1</prescript>
</field>
<field x="1" y="6" type="Stringa" width="4" id="115" pattern="1">
<prescript description="F1.115 PRESCRIPT">MESSAGE _RIEPILOGOIVA,1,COD,0</prescript>
</field>
<field x="20" y="6" type="Valuta" align="right" bg_color="#FF00FF" width="14" codval="33.CODVAL" id="116" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<prescript description="F1.116 PRESCRIPT">MESSAGE _RIEPILOGOIVA,1,IMP,0</prescript>
</field>
<field x="35" y="6" type="Numero" align="right" width="4" id="117" pattern="1" hide_zero="1" text="##">
<prescript description="F1.117 PRESCRIPT">MESSAGE _RIEPILOGOIVA,1,ALI,0</prescript>
</field>
<field x="41" y="6" type="Valuta" align="right" bg_color="#00FFFF" width="10" codval="33.CODVAL" id="118" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<prescript description="F1.118 PRESCRIPT">MESSAGE _RIEPILOGOIVA,1,IVA,1</prescript>
</field>
<field x="20" y="7" type="Valuta" align="right" bg_color="#FF00FF" width="14" codval="33.CODVAL" id="119" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<prescript description="F1.119 PRESCRIPT">MESSAGE _RIEPILOGOIVA,30,IMP,0</prescript>
</field>
<field x="1" y="7" type="Stringa" width="4" id="120" pattern="1">
<prescript description="F1.120 PRESCRIPT">MESSAGE _RIEPILOGOIVA,30,COD,0</prescript>
</field>
<field x="41" y="7" type="Stringa" width="29" id="121" pattern="1">
<prescript description="F1.121 PRESCRIPT">MESSAGE _RIEPILOGOIVA,30,DES,1</prescript>
</field>
<field x="20" y="8" type="Valuta" align="right" bg_color="#0000FF" width="14" codval="33.CODVAL" id="122" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<prescript description="F1.122 PRESCRIPT">MESSAGE _RIEPILOGOIVA,30,IMP,0</prescript>
</field>
<field x="1" y="8" type="Stringa" bg_color="#00FFFF" width="4" id="123" pattern="1">
<prescript description="F1.123 PRESCRIPT">MESSAGE _RIEPILOGOIVA,30,COD,0</prescript>
</field>
<field x="41" y="8" type="Stringa" bg_color="#00FFFF" width="29" id="124" pattern="1">
<prescript description="F1.124 PRESCRIPT">MESSAGE _RIEPILOGOIVA,30,DES,1</prescript>
</field>
<field x="60.5" y="2" type="Valuta" align="right" bg_color="#FF0000" width="13.5" codval="33.CODVAL" id="125" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<source>IMPONIBILI</source>
</field>
<field x="78.5" y="2" type="Valuta" align="right" bg_color="#007F7F" width="13" codval="33.CODVAL" id="126" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<source>IMPOSTE</source>
</field>
<field x="36" deactivated="1" type="Valuta" hidden="1" align="right" width="11" codval="33.CODVAL" id="127" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<prescript description="F1.127 PRESCRIPT">MESSAGE _TOTIMPONIBILI,28</prescript>
</field>
<field x="59" type="Valuta" hidden="1" align="right" width="10" codval="33.CODVAL" id="128" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<source>SPESINC</source>
</field>
<field x="48" type="Valuta" hidden="1" align="right" width="10" codval="33.CODVAL" id="129" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<source>BOLLI</source>
</field>
<field x="76.5" y="10.25" type="Valuta" align="right" width="15" codval="33.CODVAL" height="1.25" id="130" pattern="1" hide_zero="1" text="###.###.###,@@">
<font face="Arial" bold="1" size="10" />
<groups>31</groups>
<source>TOTDOC</source>
</field>
<field x="45" y="13" deactivated="1" type="Valuta" align="right" width="11" codval="33.CODVAL" id="137" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<source>33.IMPPAGATO</source>
<prescript description="F1.137 PRESCRIPT">MESSAGE SUB,138</prescript>
</field>
<field x="69" y="13" deactivated="1" type="Valuta" align="right" width="11" codval="33.CODVAL" id="138" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
</field>
<field x="1" y="10" type="Data" bg_color="#7F7F7F" width="8" id="143" pattern="1">
<prescript description="F1.143 PRESCRIPT">MESSAGE _SCADENZE,DATA,0</prescript>
</field>
<field x="10" y="10" type="Valuta" align="right" width="11" codval="33.CODVAL" id="144" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<prescript description="F1.144 PRESCRIPT">MESSAGE _SCADENZE,IMPORTO,1</prescript>
</field>
<field x="24" y="10" type="Data" width="8" id="145" pattern="1">
<prescript description="F1.145 PRESCRIPT">MESSAGE _SCADENZE,DATA,0</prescript>
</field>
<field x="33" y="10" type="Valuta" align="right" width="11" codval="33.CODVAL" id="146" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<prescript description="F1.146 PRESCRIPT">MESSAGE _SCADENZE,IMPORTO,1</prescript>
</field>
<field x="46.5" y="10" type="Data" width="8" id="147" pattern="1">
<prescript description="F1.147 PRESCRIPT">MESSAGE _SCADENZE,DATA,0</prescript>
</field>
<field x="55.5" y="10" type="Valuta" align="right" width="11" codval="33.CODVAL" id="148" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<prescript description="F1.148 PRESCRIPT">MESSAGE _SCADENZE,IMPORTO,1</prescript>
</field>
<field x="1" y="11" type="Data" width="8" id="149" pattern="1">
<prescript description="F1.149 PRESCRIPT">MESSAGE _SCADENZE,DATA,0</prescript>
</field>
<field x="10" y="11" type="Valuta" align="right" bg_color="#00FFFF" width="11" codval="33.CODVAL" id="150" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<prescript description="F1.150 PRESCRIPT">MESSAGE _SCADENZE,IMPORTO,1</prescript>
</field>
<field x="24" y="11" type="Data" width="8" id="151" pattern="1">
<prescript description="F1.151 PRESCRIPT">MESSAGE _SCADENZE,DATA,0</prescript>
</field>
<field x="33" y="11" type="Valuta" align="right" width="11" codval="33.CODVAL" id="152" pattern="1" hide_zero="1" text="###.###.###,@@">
<groups>31</groups>
<prescript description="F1.152 PRESCRIPT">MESSAGE _SCADENZE,IMPORTO,1</prescript>
</field>
</section>
<sql>USE 33
JOIN 34 INTO CODNUM==CODNUM ANNO==ANNO PROVV==PROVV NDOC==NDOC
JOIN 17 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 17 ALIAS 116 INTO TIPOCF==TIPOCF CODCF==CODCF CODIND==CODINDSP
JOIN 47 TO 34 INTO CODART==CODART
JOIN %CPG TO 33 ALIAS 201 INTO CODTAB==CODPAG
JOIN 122 TO 33 INTO CODAGE==CODAG
JOIN %POR TO 33 ALIAS 203 INTO CODTAB==CODPORTO
JOIN %BAN TO 33 ALIAS 204 INTO CODTAB==CODABIA+CODCABA
JOIN %VET TO 33 ALIAS 205 INTO CODTAB==CODVETT1
JOIN %ASP TO 33 ALIAS 206 INTO CODTAB==ASPBENI1
JOIN %CTR TO 33 ALIAS 207 INTO CODTAB==CAUSTRASP
JOIN %BAN TO 33 ALIAS 208 INTO CODTAB==CODABIA
JOIN %VAL TO 33 ALIAS 209 INTO CODTAB==CODVAL
JOIN %TIP TO 33 ALIAS 210 INTO CODTAB==TIPODOC
JOIN %MSP TO 33 ALIAS 211 INTO CODTAB==CODSPMEZZO
JOIN CMS TO 33 ALIAS 212 INTO CODTAB==CODCMS
JOIN BNP TO 33 ALIAS 213 INTO CODTAB==CODABIP+CODCABP+PROGBNP</sql>
</report>

143
pe/pe1400a.uml Normal file
View File

@ -0,0 +1,143 @@
#include "pe1400.h"
TOOLBAR "topbar" 0 0 0 2
#include <relapbar.h>
ENDPAGE
PAGE "Preventivi" 0 0 0 0
GROUPBOX DLG_NULL 78 6
BEGIN
PROMPT 1 0 "@bPreventivo"
END
LIST F_PROVV 1 12
BEGIN
PROMPT 69 69 ""
ITEM "D|Definitivi"
ITEM "P|Provvisori"
FIELD PROVV
FLAGS "D"
KEY 1
END
NUMBER F_ANNO 4
BEGIN
PROMPT 2 1 "Anno "
FLAGS "AU"
CHECKTYPE REQUIRED
KEY 1
FIELD ANNO
END
STRING F_CODNUM 4
BEGIN
PROMPT 2 2 "Numerazione "
USE %NUM SELECT I0>0
FLAGS "UP"
INPUT CODTAB F_CODNUM
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CODNUM CODTAB
OUTPUT F_DESNUM S0
CHECKTYPE REQUIRED
FIELD CODNUM
KEY 1
END
STRING F_DESNUM 50
BEGIN
PROMPT 24 2 ""
USE %NUM KEY 2 SELECT I0>0
INPUT S0 F_DESNUM
DISPLAY "Descrizione@50" S0
DISPLAY "Codice Num." CODTAB
COPY OUTPUT F_CODNUM
CHECKTYPE REQUIRED
END
STRING F_TIPODOC 4
BEGIN
PROMPT 2 3 "Tipo "
FLAGS "DG"
FIELD TIPODOC
USE %TIP
INPUT CODTAB F_TIPODOC
OUTPUT F_DESTIPO S0
CHEKCTYPE NORMAL
END
STRING F_DESTIPO 50
BEGIN
PROMPT 24 3 ""
FLAGS "D"
END
NUMBER F_NDOC 7
BEGIN
PROMPT 2 4 "Numero "
USE LF_DOC
JOIN LF_CLIFO INTO TIPOCF=TIPOCF CODCF==CODCF
INPUT PROVV "D"
INPUT ANNO F_ANNO SELECT
INPUT CODNUM F_CODNUM SELECT
INPUT NDOC F_NDOC
DISPLAY "Anno" ANNO
DISPLAY "Numerazione" CODNUM
DISPLAY "Numero" NDOC
DISPLAY "Stato" STATO
DISPLAY "Cliente" CODCF
DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC
OUTPUT F_NDOC NDOC
CHECKTYPE REQUIRED
FIELD NDOC
KEY 1
END
NUMBER F_NPREV 7
BEGIN
PROMPT 42 4 "Preventivo "
FLAGS "D"
END
NUMBER F_NREV 3
BEGIN
PROMPT 61 4 "Revisione "
FLAGS "DZ"
END
NUMBER F_CLIFO 6
BEGIN
PROMPT 2 6 "Cliente "
USE LF_DOC KEY 4 SELECT (CODNUM=#F_CODNUM)&&(BETWEEN(ANNO,#F_ANNO,#F_ANNO))
JOIN LF_CLIFO INTO TIPOCF=TIPOCF CODCF==CODCF
INPUT TIPOCF "C"
INPUT CODCF F_CLIFO
INPUT ANNO F_ANNO
DISPLAY "Cliente" CODCF
DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC
DISPLAY "Anno" LF_DOC->ANNO
DISPLAY "Numerazione" LF_DOC->CODNUM
DISPLAY "Numero" LF_DOC->NDOC
DISPLAY "Stato" LF_DOC->STATO
OUTPUT F_CLIFO LF_CLIFO->CODCF
OUTPUT F_RAGSOC LF_CLIFO->RAGSOC
OUTPUT F_NDOC LF_DOC->NDOC
CHECKTYPE NORMAL
END
STRING F_RAGSOC 50
BEGIN
PROMPT 24 6 ""
USE LF_CLIFO KEY 2 SELECT (LF_DOC->NDOC!="")&&(LF_DOC->CODNUM=#F_CODNUM)
JOIN LF_DOC KEY 4 INTO TIPOCF=TIPOCF CODCF==CODCF PROVV=#F_PROVV ANNO=#F_ANNO CODNUM=#F_CODNUM
INPUT TIPOCF "C"
INPUT RAGSOC F_RAGSOC
COPY DISPLAY F_CLIFO
COPY OUTPUT F_CLIFO
CHECKTYPE NORMAL
END
ENDPAGE
ENDMASK

709
pe/pe1400b.uml Normal file
View File

@ -0,0 +1,709 @@
#include "pe1400.h"
TOOLBAR "topbar" 0 0 0 2
BUTTON DLG_NEWREC 2 2
BEGIN
PROMPT 1 1 "~Nuovo"
MESSAGE EXIT,K_INS
PICTURE TOOL_NEWREC
END
BUTTON DLG_COPY 2 2
BEGIN
PROMPT 1 1 "Duplica"
PICTURE TOOL_COPY
END
BUTTON DLG_SAVEREC 2 2
BEGIN
PROMPT 2 1 "~Registra"
MESSAGE EXIT,K_SAVE
PICTURE TOOL_SAVEREC
END
BUTTON DLG_DELREC 2 2
BEGIN
PROMPT 3 1 "~Elimina"
MESSAGE EXIT,K_DEL
PICTURE TOOL_DELREC
END
BUTTON DLG_NULL 2 2
BEGIN
PROMPT -1 1 ""
PICTURE 0
END
BUTTON DLG_ELABORA 2 2
BEGIN
PROMPT 1 2 "Elabora"
PICTURE TOOL_ELABORA
END
BUTTON DLG_PRINT 2 2
BEGIN
PROMPT 1 3 "Stampa"
PICTURE TOOL_PRINT
END
BUTTON DLG_PREVIEW 2 2
BEGIN
PROMPT 1 3 "Antepr."
PICTURE TOOL_PREVIEW
END
BUTTON DLG_NULL 2 2
BEGIN
PROMPT -1 1 ""
PICTURE 0
END
#include <navbar.h>
#include <cancelbar.h>
ENDPAGE
PAGE "Preventivi" 0 0 0 0
GROUPBOX DLG_NULL 78 6
BEGIN
PROMPT 1 0 "@bPreventivo"
END
LIST F_PROVV 1 12
BEGIN
PROMPT 69 69 ""
ITEM "D|Definitivi"
ITEM "P|Provvisori"
FIELD PROVV
FLAGS "D"
KEY 1
END
NUMBER F_ANNO 4
BEGIN
PROMPT 2 1 "Anno "
FLAGS "D"
CHECKTYPE REQUIRED
FIELD ANNO
KEY 1
END
STRING F_CODNUM 4
BEGIN
PROMPT 2 2 "Numerazione "
USE %NUM
FLAGS "DGU"
INPUT CODTAB F_CODNUM
OUTPUT F_DESNUM S0
CHECKTYPE REQUIRED
FIELD CODNUM
KEY 1
END
STRING F_DESNUM 50
BEGIN
PROMPT 24 2 ""
FLAGS "D"
END
NUMBER F_NDOC 7
BEGIN
PROMPT 24 1 "Numero documento "
FLAGS "DG"
CHECKTYPE REQUIRED
FIELD NDOC
KEY 1
END
STRING F_STATO 1
BEGIN
PROMPT 53 1 "Stato "
FIELD STATO
FLAGS "DG"
END
STRING F_TIPODOC 4
BEGIN
PROMPT 2 3 "Tipo "
FLAGS "H"
FIELD TIPODOC
USE %TIP
INPUT CODTAB F_TIPODOC
OUTPUT F_DESTIPO S0
CHEKCTYPE NORMAL
END
STRING F_DESTIPO 50
BEGIN
PROMPT 24 3 ""
FLAGS "H"
END
NUMBER F_NPREV 7
BEGIN
PROMPT 2 3 "Preventivo "
FLAGS "D"
END
NUMBER F_NREV 2
BEGIN
PROMPT 24 3 "Revisione "
FLAGS "DZ"
END
DATE F_DATADOC
BEGIN
PROMPT 46 3 "Data "
FLAGS "A"
FIELD DATADOC
CHECKTYPE REQUIRED
END
STRING F_NUMDOCRIF 7
BEGIN
PROMPT 2 4 "Documento di riferimento "
FIELD NUMDOCRIF
END
DATE F_DATADOCRIF
BEGIN
PROMPT 36 4 "del "
FIELD DATADOCRIF
END
GOLEM F_OGGETTI 10 2
BEGIN
PROMPT 64 3 ""
FIELD COLL_GOLEM
FLAGS "M"
END
GROUPBOX DLG_NULL 78 9
BEGIN
PROMPT 1 6 "@bCliente"
END
LIST DLG_NULL 1 7
BEGIN
PROMPT 68 68 "Tipo "
ITEM "C|Cliente"
FLAGS "H"
FIELD TIPOCF
END
NUMBER F_CLIFO 7
BEGIN
PROMPT 2 7 "Cliente "
USE LF_CLIFO
INPUT TIPOCF "C"
INPUT CODCF F_CLIFO
DISPLAY "Cliente" CODCF
DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC
DISPLAY "Partita IVA@12" PAIV
DISPLAY "Codice Fiscale@16" COFI
DISPLAY "Sospeso@C" SOSPESO
OUTPUT F_CLIFO CODCF
OUTPUT F_RAGSOC RAGSOC
OUTPUT F_RICALT RICALT
OUTPUT F_STATOPAIV STATOPAIV
OUTPUT F_PAIV PAIV
OUTPUT F_COFI COFI
CHECKTYPE REQUIRED
FIELD CODCF
END
STRING F_RAGSOC 50
BEGIN
PROMPT 24 7 ""
USE LF_CLIFO KEY 2
INPUT TIPOCF "C"
INPUT RAGSOC F_RAGSOC
DISPLAY "Ragione Sociale@50" RAGSOC
DISPLAY "Cliente" CODCF
DISPLAY "Partita IVA@12" PAIV
DISPLAY "Codice Fiscale@16" COFI
DISPLAY "Sospeso@C" SOSPESO
COPY OUTPUT F_CLIFO
CHECKTYPE REQUIRED
END
STRING F_RICALT 30
BEGIN
PROMPT 2 8 "Codice "
USE LF_CLIFO KEY 6
INPUT TIPOCF "C"
INPUT RICALT F_RICALT
DISPLAY "Codice alt.@30" RICALT
DISPLAY "Cliente" CODCF
DISPLAY "Ragione sociale@50" RAGSOC
DISPLAY "Sospeso@C" SOSPESO
COPY OUTPUT F_CLIFO
HELP "Chiave di ricerca alternativa"
END
STRING F_STATOPAIV 2
BEGIN
PROMPT 52 8 "Stato CEE "
HELP "Codice ISO dello stato"
FLAGS "U"
USE %SCE
INPUT CODTAB F_STATOPAIV
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_STATOPAIV CODTAB
CHECKTYPE NORMAL
END
STRING F_COFI 16
BEGIN
PROMPT 2 9 "Codice fiscale "
FLAGS "U"
USE LF_CLIFO KEY 4
INPUT TIPOCF "C"
INPUT COFI F_COFI
DISPLAY "Codice fiscale@16" COFI
DISPLAY "Cliente" CODCF
DISPLAY "Ragione sociale@50" RAGSOC
DISPLAY "Partita IVA@12" PAIV
DISPLAY "Sospeso@C" SOSPESO
COPY OUTPUT F_CLIFO
HELP "Codice fiscale del cliente/fornitore"
END
STRING F_PAIV 12
BEGIN
PROMPT 50 9 "Partita IVA "
KEY 5
USE LF_CLIFO KEY 5
INPUT TIPOCF "C"
INPUT STATOPAIV F_STATOPAIV
INPUT PAIV F_PAIV
DISPLAY "Partita IVA@11" PAIV
DISPLAY "Cliente" CODCF
DISPLAY "Ragione sociale@50" RAGSOC
DISPLAY "Codice fiscale@16" COFI
DISPLAY "Sospeso@C" SOSPESO
COPY OUTPUT F_CLIFO
HELP "Partita IVA del cliente/fornitore"
VALIDATE PI_FUNC F_STATOPAIV
END
ZOOM F_NOTE 62
BEGIN
PROMPT 2 10 "Note "
FIELD NOTE
END
STRING F_CODPAG 4
BEGIN
PROMPT 2 11 "Pagamento "
USE %CPG
INPUT CODTAB F_CODPAG
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CODPAG CODTAB
OUTPUT F_DESPAG S0
CHECKTYPE NORMAL
FIELD CODPAG
END
STRING F_DESPAG 50
BEGIN
PROMPT 24 11 ""
USE %CPG KEY 2
INPUT S0 F_DESPAG
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_CODPAG
CHECKTYPE NORMAL
END
STRING F_CODLIS 4
BEGIN
PROMPT 2 12 "Listino "
FLAGS "U"
USE LF_CONDV
INPUT TIPO "L"
INPUT CATVEN ""
INPUT COD F_CODLIS
DISPLAY "Codice" COD
DISPLAY "Descrizione@50" DESCR
DISPLAY "Inizio@10" VALIN
DISPLAY "Fine@10" VALFIN
OUTPUT F_CODLIS COD
OUTPUT F_DESLIS DESCR
ADD RUN ve2 -1 L
CHECKTYPE NORMAL
FIELD CODLIST
END
STRING F_DESLIS 50
BEGIN
PROMPT 24 12 ""
USE LF_CONDV KEY 2
INPUT TIPO "L"
INPUT CATVEN ""
INPUT DESCR F_DESLIS
DISPLAY "Descrizione@50" DESCR
DISPLAY "Codice" COD
DISPLAY "Inizio@10" VALIN
DISPLAY "Fine@10" VALFIN
COPY OUTPUT F_CODLIS
CHECKTYPE NORMAL
ADD RUN ve2 -1 L
END
STRING F_RICARICO 25
BEGIN
PROMPT 2 13 "Ricarico "
FIELD SCONTOPERC
END
LIST F_TIPOCOSTO 1 25
BEGIN
PROMPT 43 13 "Costo "
ITEM "0|"
ITEM "1|Ultimo costo"
ITEM "2|Media costi"
ITEM "4|Costo standard"
ITEM "5|Costo medio"
ITEM "6|Costo medio ponderato"
FIELD CODNOTE
END
GROUPBOX F_CDC0 78 6
BEGIN
PROMPT 1 15 "@bAnalitica"
END
ENDPAGE
PAGE "Righe" 0 2 0 0
TLIST F_FASI 60 -1
BEGIN
PROMPT 0 2 ""
DISPLAY "Fasi@15" CODART
DISPLAY "Costo@7R" QTAGG5
DISPLAY "Prezzo@7R" PREZZO
DISPLAY "Descrizione@35" DESCR
END
BUTTON F_FASENEW 8 2
BEGIN
PROMPT 1 0 "Nuovo"
PICTURE BMP_NEWREC
PICTURE BMP_NEWRECDN
END
BUTTON F_FASEDIT 8 2
BEGIN
PROMPT 12 0 "Modifica"
PICTURE BMP_EDIT
FLAGS "D"
END
BUTTON F_FASEUP 3 2
BEGIN
PROMPT 23 0 "Su"
PICTURE BMP_DARROWU
FLAGS "D"
END
BUTTON F_FASEDN 3 2
BEGIN
PROMPT 29 0 "Giù"
PICTURE BMP_DARROWD
FLAGS "D"
END
BUTTON F_FASELT 3 2
BEGIN
PROMPT 35 0 "<<"
PICTURE BMP_DARROWL
FLAGS "D"
END
BUTTON F_FASERT 3 2
BEGIN
PROMPT 41 0 ">>"
PICTURE BMP_DARROWR
FLAGS "D"
END
TEXT DLG_NULL
BEGIN
PROMPT 50 0 "Fase max:"
END
LIST F_FASEMAX 1 9
BEGIN
PROMPT 50 1 ""
ITEM "1|1 Livello"
ITEM "2|2 Livelli"
ITEM "3|3 Livelli"
ITEM "4|4 Livelli"
FIELD NCOLLI
END
SPREADSHEET F_DISTINTE 0 11
BEGIN
PROMPT 65 0 ""
ITEM "Distinta@20"
ITEM "Descrizione@50"
ITEM "U.M."
ITEM "Quantità@9"
ITEM "Costo@9R"
ITEM "Prezzo@9R"
END
SPREADSHEET F_ARTICOLI 0 7
BEGIN
PROMPT 65 11 ""
ITEM "Articolo@20"
ITEM "Descrizione@50"
ITEM "U.M."
ITEM "Quantità@9R"
ITEM "Costo@9R"
END
SPREADSHEET F_MISURE
BEGIN
PROMPT 65 18 ""
ITEM "Descrizione@50"
ITEM "Numero@9"
ITEM "Lunghezza@9"
ITEM "Larghezza@9"
ITEM "Altezza@9"
END
ENDPAGE
ENDMASK
PAGE "Distinta" -1 -1 60 6
STRING 101 20
BEGIN
PROMPT 1 1 "Distinta "
USE LF_DIST
INPUT CODDIST 101
DISPLAY "Codice@20" CODDIST
DISPLAY "Descrizione@50" DESCR
DISPLAY "U.M." UM
DISPLAY "Prezzo@V" PREZZO
OUTPUT 101 CODDIST
OUTPUT 102 DESCR
OUTPUT 103 UM
OUTPUT 105 PREZZO
CHEKTYPE SEARCH
ADD RUN db0 -4
FIELD CODART
END
STRING 102 50 45
BEGIN
PROMPT 1 2 "Descriz. "
USE LF_DIST KEY 2
INPUT DESCR 105
DISPLAY "Descrizione@50" DESCR
DISPLAY "Codice@20" CODDIST
DISPLAY "U.M." UM
DISPLAY "Prezzo@V" PREZZO
COPY OUTPUT 101
CHEKTYPE SEARCH
FIELD DESCR
END
STRING 103 2
BEGIN
PROMPT 1 3 "U.M. "
USE %UMS
INPUT CODTAB 103
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT 103 CODTAB
CHECKTYPE NORMAL
FIELD UMQTA
END
NUMBER 104 9 2
BEGIN
PROMPT 11 3 "Quantità "
FIELD QTA
END
CURRENCY 105 9
BEGIN
PROMPT 37 3 "Costo "
FIELD QTAGG5
END
CURRENCY 106 9
BEGIN
PROMPT 37 4 "Prezzo "
FIELD PREZZO
END
ENDPAGE
TOOLBAR "" 0 0 0 2
BUTTON DLG_OK 2 2
BEGIN
PROMPT 1 1 ""
END
BUTTON DLG_DELREC 2 2
BEGIN
PROMPT 2 1 ""
END
BUTTON DLG_CANCEL 2 2
BEGIN
PROMPT 3 1 ""
END
ENDPAGE
ENDMASK
PAGE "Riga" -1 -1 50 5
STRING 101 20
BEGIN
PROMPT 1 1 "Articolo "
USE LF_ANAMAG
INPUT CODART 101
DISPLAY "Codice@20" CODART
DISPLAY "Descrizione@50" DESCR
OUTPUT 101 CODART
OUTPUT 102 DESCR
CHEKTYPE NORMAL
FIELD CODART
ADD RUN ve2 -3
END
STRING 102 50 40
BEGIN
PROMPT 1 2 "Descriz. "
USE LF_ANAMAG KEY 2
INPUT DESCR 102
DISPLAY "Descrizione@50" DESCR
DISPLAY "Codice@20" CODART
COPY OUTPUT 101
FIELD DESCR
ADD RUN ve2 -3
END
STRING 103 2
BEGIN
PROMPT 1 3 "U.M. "
USE LF_UMART KEY 2
JOIN %UMS INTO CODTAB=UM
INPUT CODART 101 SELECT
INPUT UM 103
DISPLAY "Codice" UM
DISPLAY "Descrizione@50" LF_TABCOM->S0
OUTPUT 103 UM
CHECKTYPE NORMAL
FIELD UMQTA
END
NUMBER 104 9 2
BEGIN
PROMPT 11 3 "Quantità "
FIELD QTA
END
CURRENCY 105 9
BEGIN
PROMPT 31 3 "Costo "
FIELD QTAGG5
END
ENDPAGE
TOOLBAR "" 0 0 0 2
BUTTON DLG_OK 2 2
BEGIN
PROMPT 1 1 ""
END
BUTTON DLG_DELREC 2 2
BEGIN
PROMPT 2 1 ""
END
BUTTON DLG_CANCEL 2 2
BEGIN
PROMPT 3 1 ""
END
ENDPAGE
ENDMASK
PAGE "Misura" -1 -1 60 8
STRING 101 50 45
BEGIN
PROMPT 1 1 "Descriz. "
FIELD DESCR
END
NUMBER 102 9
BEGIN
PROMPT 1 2 "Numero "
FIELD QTA
END
NUMBER 103 9 2
BEGIN
PROMPT 1 3 "Lunghezza "
FIELD QTAGG1
END
NUMBER 104 9 2
BEGIN
PROMPT 1 4 "Larghezza "
FIELD QTAGG2
END
NUMBER 105 9 2
BEGIN
PROMPT 1 5 "Altezza "
FIELD QTAGG3
END
NUMBER 106 9 2
BEGIN
PROMPT 1 6 "Totale "
FIELD QTA
FLAGS "DG"
DRIVENBY 102 103 104 105
NUM_CALC #102*IF(#103,#103,1)*IF(#104,#104,1)*IF(#105,#105,1)
END
ENDPAGE
TOOLBAR "" 0 0 0 2
BUTTON DLG_OK 2 2
BEGIN
PROMPT 1 1 ""
END
BUTTON DLG_DELREC 2 2
BEGIN
PROMPT 2 1 ""
END
BUTTON DLG_CANCEL 2 2
BEGIN
PROMPT 3 1 ""
END
ENDPAGE
ENDMASK

415
pe/pe1401.cpp Normal file
View File

@ -0,0 +1,415 @@
#include "pe1401.h"
#include <diction.h>
#include <mask.h>
#include <urldefid.h>
#include <doc.h>
#include <rdoc.h>
#include "pe1400.h"
bool TPreventivo_tree::add_lastson(TObject* obj)
{
CHECK(obj != NULL && obj->is_kind_of(CLASS_RECTYPE), "Record non valido per preventivo");
CHECK(((TRectype*)obj)->get(RDOC_TIPORIGA).full(), "TIPORIGA vuoto");
bool done = false;
if (goto_firstson()) // Se ha almeno un figlio ...
{
while (goto_rbrother()); // ... allora vai all'ultimo fratello
done = add_rbrother(obj); // ed aggiungi ultimo fratello
}
else
done = add_son(obj); // Aggiungi primogenito
return done;
}
TPreventivo_level TPreventivo_tree::last_fase_level() const
{
const int mf = owner().mask().get_int(F_FASEMAX);
return TPreventivo_level(pl_fase1 + mf - 1);
}
bool TPreventivo_tree::goto_last_fase(TPreventivo_level sublevel)
{
bool ok = goto_root() && goto_firstson();
if (ok)
{
while (goto_rbrother()); // goto last son
if (sublevel > pl_fase1)
{
const TPreventivo_level mf = last_fase_level();
if (sublevel > mf)
sublevel = mf;
while (level() < sublevel)
{
if (goto_firstson())
while (goto_rbrother());
else
break;
}
ok = level() == sublevel;
}
}
return ok;
}
bool TPreventivo_tree::goto_last_dist()
{
bool ok = goto_last_fase(pl_distinta); // pl_distinta = dummy value for maximum depth
if (ok)
{
ok = goto_firstson();
if (ok)
while (goto_rbrother());
}
return ok;
}
TRectype* TPreventivo_tree::new_row(TPreventivo_level level) const
{
const TMask& m = owner().mask();
TRectype* rec = new TRectype(level == pl_documento ? LF_DOC : LF_RIGHEDOC);
rec->put(RDOC_PROVV, 'D');
rec->put(RDOC_ANNO, m.get(F_ANNO));
rec->put(RDOC_CODNUM, m.get(F_CODNUM));
rec->put(RDOC_NDOC, m.get(F_NDOC));
switch (level)
{
case pl_distinta : rec->put(RDOC_TIPORIGA, tipo_dist()); rec->put(RDOC_DESCR, TR("Nuova distinta"));break;
case pl_dettaglio: rec->put(RDOC_TIPORIGA, tipo_dett()); rec->put(RDOC_DESCR, TR("Nuova riga"));break;
case pl_misura : rec->put(RDOC_TIPORIGA, tipo_misu()); rec->put(RDOC_DESCR, TR("Nuova misura"));break;
default : rec->put(RDOC_TIPORIGA, tipo_fasi()); rec->put(RDOC_DESCR, TR("Nuova fase")); rec->put(RPRV_LEVEL, level-pl_fase1); break;
}
return rec;
}
TRectype* TPreventivo_tree::dist(const TString& fase, int n, bool create)
{
TRectype* rec = NULL;
if (goto_node(fase))
{
if (goto_firstson())
{
int i = 0;
for (; i < n && goto_rbrother(); i++);
if (i < n)
{
if (create)
add_rbrother(rec = new_row(pl_distinta));
}
else
rec = curr_row();
}
else
{
if (create)
add_son(rec = new_row(pl_distinta));
}
}
return rec;
}
TRectype* TPreventivo_tree::dett(const TString& dist, int n, bool create)
{
TRectype* rec = NULL;
if (goto_node(dist))
{
if (goto_firstson())
{
if (level() == pl_dettaglio)
{
int i = 0;
for (; i < n && goto_rbrother() && level() == pl_dettaglio; i++);
if (i == n)
rec = curr_row();
}
if (rec == NULL && create)
{
if (level() == pl_dettaglio)
add_rbrother(rec = new_row(pl_dettaglio));
else
add_lbrother(rec = new_row(pl_dettaglio));
}
}
else
{
if (create && n == 0)
add_son(rec = new_row(pl_dettaglio));
}
}
return rec;
}
TRectype* TPreventivo_tree::misu(const TString& dist, int n, bool create)
{
TRectype* rec = NULL;
if (goto_node(dist))
{
CHECKS(level() == pl_distinta, "Distinta non valida", (const char*)dist);
if (goto_firstson())
{
int i = level() == pl_misura ? 0 : -1;
while (i < n && goto_rbrother())
if (level() == pl_misura) i++;
if (i < n)
{
if (create)
add_rbrother(rec = new_row(pl_misura));
}
else
rec = curr_row();
}
else
{
if (create && n == 0)
add_son(rec = new_row(pl_misura));
}
}
return rec;
}
TPreventivo_level TPreventivo_tree::level(const TRectype& rec) const
{
TPreventivo_level lev = pl_documento;
if (rec.num() == LF_RIGHEDOC)
{
const TString& t = rec.get(RDOC_TIPORIGA);
if (t.full())
{
lev = pl_fase1;
if (t == _strFasi)
lev = TPreventivo_level(lev + rec.get_int(RPRV_LEVEL)); else
if (t == _strDist)
lev = pl_distinta; else
if (t == _strDett)
lev = pl_dettaglio; else
if (t == _strMisu)
lev = pl_misura;
}
}
return lev;
}
TPreventivo_level TPreventivo_tree::level() const
{
TPreventivo_level lev = pl_documento;
TRectype* rec = curr_row();
if (rec != NULL)
lev = level(*rec);
return lev;
}
bool TPreventivo_tree::could_have_son() const
{ return level() < pl_distinta; }
bool TPreventivo_tree::get_description(TString& str) const
{
const TRectype* rec = curr_row();
bool ok = rec != NULL && !rec->empty();
if (ok)
{
if (rec->num() == LF_DOC)
{
const TMask& m = owner().mask();
str = m.get(F_NPREV);
if (m.field(F_NREV).shown())
str << '.' << m.get(F_NREV);
str << TR(" del ") << m.get(F_DATADOC);
} else
if (rec->num() == LF_RIGHEDOC)
{
str = rec->get(RDOC_DESCR);
if (str.blank())
str = rec->get(RDOC_CODART);
}
else
NFCHECK("Bad tree record");
}
else
NFCHECK("NULL tree record");
return ok;
}
TFieldtypes TPreventivo_tree::get_var(const TString& name, TVariant& var) const
{
TFieldtypes ft = _nullfld;
const TRectype* rec = curr_row();
if (rec != NULL && !rec->empty())
{
if (rec->num() == LF_DOC)
{
const TMask& m = owner().mask();
if (name == RDOC_CODART)
{
TString16 str = m.get(F_NPREV);
if (m.field(F_NREV).shown())
str << '.' << m.get(F_NREV);
var = str;
ft = _alfafld;
} else
if (name == RDOC_DESCR)
{
TString80 str = m.get(F_NOTE);
if (str.blank())
get_description(str);
var = str;
ft = _alfafld;
} else
if (name == RDOC_PREZZO || name == RPRV_COSTO)
{
real c, p; ((TPreventivo_tree*)this)->ricalcola(c, p);
if (name == RDOC_PREZZO )
var = p.stringa(0,2);
else
var = c.stringa(0,2);
ft = _realfld;
}
}
else
{
ft = rec->type(name);
if (ft > _nullfld)
{
if (ft == _realfld)
{
if ((name == RDOC_PREZZO || name == RPRV_COSTO) && level() == pl_distinta)
{
real c, p; ((TPreventivo_tree*)this)->ricalcola(c, p);
if (name == RDOC_PREZZO )
var = p.stringa(0,2);
else
var = c.stringa(0,2);
}
else
var = rec->get_real(name).stringa(0, 2);
}
else
var = rec->get(name);
}
}
}
return ft;
}
TImage* TPreventivo_tree::image(bool sel) const
{
const TPreventivo_level pl = level();
if (pl <= pl_distinta)
{
const bool ex = expanded();
if (has_son())
return get_res_image(ex ? BMP_DIRDNSEL : BMP_DIRSEL);
else
return get_res_image(ex ? BMP_DIRDN : BMP_DIR);
}
return TObject_tree::image(sel);
}
// Aggiunge un record alla fine dell'albero in base al tipo della riga (usato solo in lettura iniziale)
bool TPreventivo_tree::append_row(const TRectype& rec)
{
const TPreventivo_level pl = level(rec);
if (pl == pl_documento)
{
// Se aggiungo un documento allora svuoto albero e ricreo radice
if (goto_root())
kill_node();
return add_son(rec);
} else
if (pl == pl_dettaglio)
{
// Le righe di dettaglio devono precedere quelle di misura
if (goto_last_dist())
{
if (goto_firstson())
{
while (level() == pl_dettaglio && goto_rbrother());
if (level() == pl_dettaglio)
return add_rbrother(rec);
else
return add_lbrother(rec);
}
return add_son(rec);
}
} else
if (pl == pl_misura)
{
if (goto_last_dist())
return add_lastson(rec);
}
else
{
goto_root();
while (level() < pl)
{
if (goto_firstson())
while (goto_rbrother());
else
break;
}
if (level() < pl)
return add_lastson(rec);
else
return add_rbrother(rec);
}
return false;
}
bool TPreventivo_tree::ricalcola(real& costo, real& prezzo)
{
bool ok = false;
const TPreventivo_level lev = level();
costo = prezzo = ZERO;
if (lev < pl_distinta && has_son())
{
TString16 id; curr_id(id);
for (bool go = goto_firstson(); go; go = goto_rbrother())
{
real c, p;
if (ricalcola(c, p))
{
costo += c;
prezzo += p;
}
}
ok = goto_node(id);
if (lev >= pl_fase1)
{
TRectype& rec = *curr_row();
rec.put(RDOC_QTA, 1);
rec.put(RPRV_COSTO, costo);
rec.put(RDOC_PREZZO, prezzo);
}
}
else
{
ok = lev == pl_distinta;
if (ok)
{
const TRectype& rec = *curr_row();
const real qta = rec.get_real(RDOC_QTA);
if (!qta.is_zero())
{
costo = qta * rec.get_real(RPRV_COSTO);
prezzo = qta * rec.get_real(RDOC_PREZZO);
}
}
}
return ok;
}
TPreventivo_tree::TPreventivo_tree(TTree_field& owner) : _owner(owner)
{
// Legge i tipi riga standard per determinare i nodi dell'albero
_strFasi = ini_get_string(CONFIG_DITTA, "pe", "TipoRigaFase", "05");
_strDist = ini_get_string(CONFIG_DITTA, "pe", "TipoRigaDist", "01");
_strDett = ini_get_string(CONFIG_DITTA, "pe", "TipoRigaDett", "04");
_strMisu = ini_get_string(CONFIG_DITTA, "pe", "TipoRigaMisu", "09");
}

67
pe/pe1401.h Normal file
View File

@ -0,0 +1,67 @@
#ifndef __PE1401_H
#define __PE1401_H
#ifndef __ISAM_H
#include <isam.h>
#endif
#ifndef __TREE_H
#include <tree.h>
#endif
#ifndef __TREECTRL_H
#include <treectrl.h>
#endif
///////////////////////////////////////////////////////////
// TPreventivo_tree
///////////////////////////////////////////////////////////
enum TPreventivo_level { pl_documento = 0, pl_fase1 = 1, pl_fase2, pl_fase3, pl_fase4, pl_distinta=10, pl_dettaglio, pl_misura };
class TPreventivo_tree : public TObject_tree
{
TTree_field& _owner;
TString4 _strFasi, _strDist, _strDett, _strMisu;
private:
bool add_lastson(TObject* obj);
bool add_lastson(const TObject& obj) { return add_lastson(obj.dup()); }
protected:
bool goto_last_fase(TPreventivo_level level);
bool goto_last_dist();
public:
virtual bool could_have_son() const;
virtual bool get_description(TString& str) const;
virtual TFieldtypes get_var(const TString& name, TVariant& var) const;
virtual TImage* image(bool sel) const;
const TString& tipo_fasi() const { return _strFasi; }
const TString& tipo_dist() const { return _strDist; }
const TString& tipo_dett() const { return _strDett; }
const TString& tipo_misu() const { return _strMisu; }
TPreventivo_level level(const TRectype& rec) const;
TPreventivo_level level() const;
TPreventivo_level last_fase_level() const;
TRectype* new_row(TPreventivo_level level) const;
TRectype* curr_row() const { return (TRectype*)curr_node(); }
TTree_field& owner() const { return _owner; }
TRectype* dist(const TString& fase, int n, bool create = false);
TRectype* dett(const TString& dist, int n, bool create = false);
TRectype* misu(const TString& dist, int n, bool create = false);
bool ricalcola(real& costo, real& prezzo);
TPreventivo_tree(TTree_field& owner);
bool append_row(const TRectype& rec);
};
const TString& trova_elaborazione(const TRectype& doc);
bool genera_ordine(const TRectype& doc);
#endif

86
pe/pe1402.cpp Normal file
View File

@ -0,0 +1,86 @@
#include "pe1401.h"
#include "../ve/velib04.h"
class TPreventivazione : public TElaborazione
{
public:
virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
const TDate& data_elab, bool interattivo = false);
TPreventivazione(const TString& cod) : TElaborazione(cod) { }
};
bool TPreventivazione::elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
const TDate& data_elab, bool interattivo)
{
for (int i = 0; i < doc_in.items(); i++)
{
if (i >= doc_out.items())
{
TDocumento* doc = new TDocumento('D', data_elab.year(), codice_numerazione_finale(), 0L);
doc->put(DOC_TIPODOC, tipo_finale());
doc->put(DOC_STATO, stato_finale());
doc_out.add(doc);
}
TDocumento& din = doc_in[i];
TDocumento& don = doc_out[i];
don.put(DOC_TIPOCF, din.get(DOC_TIPOCF));
don.put(DOC_CODCF, din.get(DOC_CODCF));
don.put(DOC_DATADOC, data_elab);
don.put(DOC_NOTE, din.get(DOC_NOTE));
don.put(DOC_CODCMS, din.get(DOC_CODCMS));
FOR_EACH_PHYSICAL_RDOC(din, r, rdoc)
{
if (rdoc->is_descrizione())
{
TRiga_documento& rout = don.new_row(rdoc->get(RDOC_TIPORIGA));
TDocumento::copy_data(rout, *rdoc);
} else
if (rdoc->is_merce())
{
TRiga_documento& rout = don.new_row(rdoc->get(RDOC_TIPORIGA));
TDocumento::copy_data(rout, *rdoc);
}
}
}
return true;
}
const TString& trova_elaborazione(const TRectype& doc)
{
TString8 cod;
TISAM_recordset eld("USE %ELD SELECT (I0==0)||(I0=4)");
const TString4 codnum = doc.get(DOC_CODNUM);
const TString4 tipodoc = doc.get(DOC_TIPODOC);
const TString4 stato = doc.get(DOC_STATO);
for (bool ok = eld.move_first(); ok; ok = eld.move_next())
{
const TString4 c = eld.get("CODTAB").as_string();
const TElaborazione e(c);
if (codnum != e.codice_numerazione_iniziale())
continue;
if (tipodoc != e.tipo_iniziale(0))
continue;
if (stato >= e.stato_finale_doc_iniziale())
continue;
cod = c;
break;
}
return get_tmp_string() = cod;
}
bool genera_ordine(const TRectype& doc)
{
const TString& codelab = trova_elaborazione(doc);
if (codelab.empty())
return false;
const TDate oggi(TODAY);
TLista_documenti doc_in, doc_out;
doc_in.add(new TDocumento(doc));
TPreventivazione prev(codelab);
return prev.elabora(doc_in, doc_out, oggi);
}