Spesometro 2013

git-svn-id: svn://10.65.10.50/branches/R_10_00@22903 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2013-12-13 09:28:16 +00:00
parent ef83caf3bc
commit 735f648bbb
10 changed files with 2298 additions and 3263 deletions

View File

@ -6,10 +6,10 @@ int main(int argc, char** argv)
const int n = argc > 1 ? argv[1][1]-'0' : 0; const int n = argc > 1 ? argv[1][1]-'0' : 0;
switch (n) switch (n)
{ {
case 1: fe0200(argc, argv); break; // Immissione / Generazione Spesometro case 1: fe0200(argc, argv); break; // Gestione tabelle (contratti)
case 2: fe0300(argc, argv); break; // Somma file Spesometro (Dorotee) case 2: fe0300(argc, argv); break; // Somma file Spesometro (Dorotee)
case 3: fe0400(argc, argv); break; // Controllo contratti su movimenti case 3: fe0400(argc, argv); break; // Controllo contratti su movimenti
default: fe0100(argc, argv); break; // Gestione tabelle (contratti) default: fe0100(argc, argv); break; // Immissione / Generazione Spesometro
} }
return 0; return 0;
} }

File diff suppressed because it is too large Load Diff

View File

@ -2,9 +2,8 @@
<report name="fe0100" lpi="6"> <report name="fe0100" lpi="6">
<font face="Courier New" size="8" /> <font face="Courier New" size="8" />
<section type="Head" pattern="1"> <section type="Head" pattern="1">
<field x="8" type="Stringa" valign="center" align="center" width="112" height="3" pattern="1"> <field x="8" type="Testo" valign="center" align="center" width="112" height="3" pattern="1" text="Spesometro 2013">
<font face="Courier New" bold="1" size="24" /> <font face="Courier New" bold="1" size="24" />
<source>"Dati rilevanti " + ANNO + " tipo " + TIPO</source>
</field> </field>
<field border="3" y="3" type="Linea" width="120" height="0" pattern="1" /> <field border="3" y="3" type="Linea" width="120" height="0" pattern="1" />
<field border="2" x="8" y="3" type="Linea" height="3" pattern="1" /> <field border="2" x="8" y="3" type="Linea" height="3" pattern="1" />
@ -14,22 +13,18 @@
<field border="2" x="83" y="3" type="Linea" height="3" pattern="1" /> <field border="2" x="83" y="3" type="Linea" height="3" pattern="1" />
<field border="2" x="97" y="3" type="Linea" height="3" pattern="1" /> <field border="2" x="97" y="3" type="Linea" height="3" pattern="1" />
<field border="2" x="108" y="3" type="Linea" height="3" pattern="1" /> <field border="2" x="108" y="3" type="Linea" height="3" pattern="1" />
<field x="1" y="4" type="Testo" width="6" pattern="1" text="Riga" /> <field x="1" y="4" type="Testo" width="6" height="2" pattern="1" text="Numero Riga" />
<field border="3" y="6" type="Linea" width="120" height="0" pattern="1" /> <field border="3" y="6" type="Linea" width="120" height="0" pattern="1" />
<field x="9" y="3.5" type="Testo" width="16" id="101" pattern="1" text="Codice Fiscale"> <field x="9" y="3.5" type="Testo" width="16" id="101" pattern="1" text="Codice Fiscale" />
<source>COFI</source>
</field>
<field x="9" y="4.5" type="Testo" width="16" id="102" pattern="1" text="Partita IVA" /> <field x="9" y="4.5" type="Testo" width="16" id="102" pattern="1" text="Partita IVA" />
<field x="27" y="3.5" type="Testo" width="25" height="2" id="201" pattern="1" text="Ragione Sociale" /> <field x="27" y="3.5" type="Testo" width="25" height="2" id="201" pattern="1" text="Ragione Sociale" />
<field x="54" y="3.5" type="Testo" width="10" id="301" pattern="1" text="Data Reg." /> <field x="54" y="3.5" type="Testo" width="10" id="301" pattern="1" text="Data Reg." />
<field x="54" y="4.5" type="Testo" width="10" id="302" pattern="1" text="Num. Doc." /> <field x="54" y="4.5" type="Testo" width="10" id="302" pattern="1" text="Num. Doc." />
<field x="66" y="3.5" type="Testo" width="16" id="401" pattern="1" text="Mod. Pagamento" /> <field x="66" y="3.5" type="Testo" width="16" id="401" pattern="1" text="Tipo record" />
<field x="66" y="4.5" type="Testo" width="16" id="402" pattern="1" text="Tipo Operazione" /> <field x="66" y="4.5" type="Testo" width="16" id="402" pattern="1" text="Noleggio" />
<field x="84" y="3.5" type="Testo" align="right" width="12" id="501" pattern="1" text="Importo" /> <field x="84" y="3.5" type="Testo" align="right" width="12" id="501" pattern="1" text="Importo" />
<field x="84" y="4.5" type="Testo" align="right" width="12" id="502" pattern="1" text="Imposta" /> <field x="84" y="4.5" type="Testo" align="right" width="12" id="502" pattern="1" text="Imposta" />
<field x="100" y="3.5" type="Testo" width="10" height="2" id="601" pattern="1" text="Segno" /> <field x="97" y="3.5" type="Testo" width="10" align="center" height="2" id="601" pattern="1" text="Estero BlackList" />
<field x="109" y="3.5" type="Testo" width="10" id="601" pattern="1" text="Data rett." />
<field x="109" y="4.5" type="Testo" width="10" id="602" pattern="1" text="Num. Rett." />
</section> </section>
<section type="Head" level="1" pattern="1" /> <section type="Head" level="1" pattern="1" />
<section type="Head" level="2" height="1" page_break="1" pattern="1"> <section type="Head" level="2" height="1" page_break="1" pattern="1">
@ -50,64 +45,47 @@
<source>#RECORD.NUMBER</source> <source>#RECORD.NUMBER</source>
</field> </field>
<field x="9" y="0.5" type="Stringa" width="16" id="101" pattern="1"> <field x="9" y="0.5" type="Stringa" width="16" id="101" pattern="1">
<source>COFI</source> <source>CodiceFiscale</source>
</field> </field>
<field x="9" y="1.5" type="Stringa" width="16" id="102" pattern="1"> <field x="9" y="1.5" type="Stringa" width="16" id="102" pattern="1">
<source>PAIV</source> <source>PartitaIVA</source>
</field> </field>
<field x="27" y="0.5" type="Stringa" width="25" height="2" id="201" pattern="1"> <field x="27" y="0.5" type="Stringa" width="25" height="2" id="201" pattern="1">
<source>RAGSOC</source> <source>RagSoc</source>
<alt_source>Cognome+" "+Nome</alt_source>
</field> </field>
<field x="54" y="0.5" type="Data" width="11" id="301" pattern="1"> <field x="54" y="0.5" type="Data" width="11" id="301" pattern="1" >
<source>DATAREG</source> <source>DataReg</source>
</field> </field>
<field x="54" y="1.5" type="Stringa" width="10" id="302" pattern="1"> <field x="54" y="1.5" type="Stringa" width="10" id="302" pattern="1">
<source>NUMDOC</source> <source>NumDoc</source>
</field> </field>
<field x="66" y="0.5" type="Array" width="16" id="401" pattern="1"> <field x="66" y="0.5" type="Stringa" width="16" id="401" pattern="1">
<source>MODPAG</source> <source>Tipo</source>
<list>
<li />
<li Value="Non Frazionato" Code="1" />
<li Value="Frazionato" Code="2" />
<li Value="Periodico" Code="3" />
</list>
</field> </field>
<field x="66" y="1.5" type="Array" width="16" id="402" pattern="1"> <field x="66" y="1.5" type="Array" width="16" id="402" pattern="1">
<source>TIPOPE</source> <source>Noleggio</source>
<list> <list>
<li /> <li Code="" Value="" />
<li Value="Vendita" Code="1" /> <li Code="A" Value="Auto" />
<li Value="Acquisto" Code="2" /> <li Code="B" Value="Camper" />
</list> <li Code="C" Value="Altro" />
<li Code="D" Value="Imbarcazioni" />
<li Code="E" Value="Aeromobili" />
</list>
</field> </field>
<field x="84" y="0.5" type="Numero" align="right" width="12" id="501" pattern="1" text="############"> <field x="84" y="0.5" type="Valuta" align="right" width="12" id="501" pattern="1" text="#########.@@">
<source>IMPORTO</source> <source>Imponibile</source>
</field> </field>
<field x="84" y="1.5" type="Numero" align="right" width="12" id="502" pattern="1" text="############"> <field x="84" y="1.5" type="Valuta" align="right" width="12" id="502" pattern="1" text="#########.@@">
<source>IMPOSTA</source> <source>Imposta</source>
</field> </field>
<field x="109" y="0.5" type="Data" width="10" id="601" pattern="1"> <field x="97" y="0.5" type="Stringa" align="center" width="10" id="601" pattern="1">
<source>DATARETT</source> <source>StatoEstero</source>
<alt_source>StatoEsteroSede</alt_source>
</field> </field>
<field x="109" y="1.5" type="Stringa" width="10" id="602" pattern="1"> <field x="97" y="1.5" type="Stringa" align="center" width="10" id="602" pattern="1">
<source>NUMRETT</source> <source>BlackList</source>
</field>
<field x="98" y="0.5" type="Array" width="8" id="701" pattern="1">
<source>SIMPORTO</source>
<list>
<li />
<li Value="Credito" Code="C" />
<li Value="Debito" Code="D" />
</list>
</field>
<field x="98" y="1.5" type="Array" width="8" id="702" pattern="1">
<source>SIMPOSTA</source>
<list>
<li />
<li Value="Credito" Code="C" />
<li Value="Debito" Code="D" />
</list>
</field> </field>
</section> </section>
<section type="Foot" pattern="1" /> <section type="Foot" pattern="1" />

View File

@ -1,9 +1,7 @@
#define F_ANNO 301 #define F_TIPO 301
#define F_DATA 302 #define F_ANNO 302
#define F_SHOWALL 303 #define F_PERIODO 303
#define F_SENDALL 304
#define F_OUTFOLDER 305 #define F_OUTFOLDER 305
#define F_MAXREC 306
#define F_DEFINITIVO 307 #define F_DEFINITIVO 307
#define F_OUTFILE 308 #define F_OUTFILE 308
@ -14,33 +12,32 @@
#define F_RAGSOC 314 #define F_RAGSOC 314
#define F_RAGOCC 315 #define F_RAGOCC 315
#define F_INTER_COM 320
#define F_INTER_DATE 321
#define F_INTER_COFI 322
#define F_INTER_CAF 323
#define F_TIPOLOGIA 330
#define F_PROTELE 331
#define F_PROTDOC 332
#define F_RIGHE 300 #define F_RIGHE 300
#define A_RIGA 101 #define A_RIGA 101
#define A_FORZATA 102 #define A_FORZATA 102
#define A_IGNORA 103 #define A_IGNORA 103
#define A_TIPOCF 104 #define A_TIPO 104
#define A_CODCF 105 #define A_TIPOCF 105
#define A_OCFPI 106 #define A_CODCF 106
#define A_RAGSOC 107 #define A_OCFPI 107
#define A_DATAREG 108 #define A_RAGSOC 108
#define A_NUMDOC 109 #define A_DATAREG 109
#define A_IMPORTO 110 #define A_NUMDOC 110
#define A_IMPOSTA 111 #define A_DATADOC 111
#define A_MODPAG 112 #define A_TIPOIVA 112
#define A_CONTRATTO 113 #define A_IMPORTO 113
#define A_DATARETT 114 #define A_IMPOSTA 114
#define A_NUMRETT 115 #define A_NOLEGGIO 115
#define A_PAIV 116 #define A_REVERSE 116
#define A_COFI 117 #define A_AUTOFATT 117
#define A_SERVIZI 118
#define A_TURISMO 119
#define A_CARBURAN 120
#define A_RIEPILOG 121
#define A_ATTAGG 122
#define A_PASAGG 123
#define A_PAIV 124
#define A_COFI 125
#define A_OCCAS 155 #define A_OCCAS 155

View File

@ -1,502 +1,462 @@
#include "fe0100a.h" #include "fe0100a.h"
TOOLBAR "topbar" 0 0 0 2 TOOLBAR "topbar" 0 0 0 2
BUTTON DLG_OK 2 2 BUTTON DLG_OK 2 2
BEGIN BEGIN
PROMPT 1 1 "Aggiorna" PROMPT 1 1 "Aggiorna"
PICTURE TOOL_CONVERT PICTURE TOOL_CONVERT
END END
BUTTON DLG_SAVEREC 2 2 BUTTON DLG_SAVEREC 2 2
BEGIN BEGIN
PROMPT 1 1 "Registra" PROMPT 1 1 "Registra"
PICTURE TOOL_SAVEREC PICTURE TOOL_SAVEREC
FLAGS "D" FLAGS "D"
END END
BUTTON DLG_CANCEL 2 2, BUTTON DLG_CANCEL 2 2,
BEGIN BEGIN
PROMPT 1 2 "Annulla" PROMPT 1 2 "Annulla"
END END
BUTTON DLG_NULL 2 2 BUTTON DLG_NULL 2 2
BEGIN BEGIN
END END
BUTTON DLG_RECALC 2 2 BUTTON DLG_RECALC 2 2
BEGIN BEGIN
PROMPT 1 3 "Ricalcola" PROMPT 1 3 "Ricalcola"
PICTURE TOOL_RECALC PICTURE TOOL_RECALC
END END
BUTTON DLG_COPY 2 2 BUTTON DLG_EXPORT 2 2
BEGIN BEGIN
PROMPT 1 3 "+Contratto" PROMPT 1 4 "Excel"
PICTURE TOOL_COPY PICTURE TOOL_EXCEL
END MODULE rs
END
BUTTON DLG_EXPORT 2 2
BEGIN BUTTON DLG_ELABORA 2 2
PROMPT 1 4 "Excel" BEGIN
PICTURE TOOL_EXCEL PROMPT 1 5 "Invia"
MODULE rs PICTURE TOOL_EXPORT
END END
BUTTON DLG_ELABORA 2 2 BUTTON DLG_DELREC 2 2
BEGIN BEGIN
PROMPT 1 5 "Invia" PROMPT 1 6 "Azzera Invio"
PICTURE TOOL_EXPORT PICTURE TOOL_RESET
END END
BUTTON DLG_DELREC 2 2 BUTTON DLG_PREVIEW 2 2
BEGIN BEGIN
PROMPT 1 6 "Azzera Invio" PROMPT 1 7 "Anteprima"
PICTURE TOOL_RESET PICTURE TOOL_PREVIEW
END END
BUTTON DLG_PREVIEW 2 2 #include <helpbar.h>
BEGIN
PROMPT 1 7 "Anteprima" ENDPAGE
PICTURE TOOL_PREVIEW
END PAGE "Comunicazione Polivalente" 0 2 0 0
#include <helpbar.h> GROUPBOX DLG_NULL 78 6
BEGIN
ENDPAGE PROMPT 1 0 "@bFiltri di visualizzazione"
END
PAGE "Dati rilevanti" 0 2 0 0
NUMBER F_ANNO 4
GROUPBOX DLG_NULL 78 5 BEGIN
BEGIN PROMPT 2 1 "Anno "
PROMPT 1 0 "@bFiltri di visualizzazione" CHECKTYPE REQUIRED
END FLAGS "AU"
GROUP 1
NUMBER F_ANNO 4 NUM_EXPR #THIS_FIELD>=2012
BEGIN WARNING "Anno non valido"
PROMPT 2 1 "Anno " END
CHECKTYPE REQUIRED
FLAGS "AU" LIST F_TIPO 2 10
GROUP 1 BEGIN
NUM_EXPR #THIS_FIELD>=2010 PROMPT 21 1 "Tipo "
WARNING "Anno non valido" ITEM "FE|Spesometro"
END MESSAGE HIDE,F_PERIODO
ITEM "BL|Black List"
DATE F_DATA MESSAGE SHOW,F_PERIODO
BEGIN ITEM "XX|Ignorati"
PROMPT 15 1 "Limite note variazione " MESSAGE HIDE,F_PERIODO
CHECKTYPE REQUIRED ITEM "IN|Inviati"
END MESSAGE HIDE,F_PERIODO
ITEM "**|Tutti"
LIST F_SHOWALL 1 13 MESSAGE HIDE,F_PERIODO
BEGIN END
PROMPT 52 1 "Movimenti "
ITEM "1|Rilevanti" LIST F_PERIODO 2 16
ITEM "2|NON rilevanti" BEGIN
ITEM "4|Scartati" PROMPT 51 1 "Periodo "
ITEM "7|Tutti" ITEM "|Annuale"
GROUP 1 ITEM "T1|I Trimestre"
END ITEM "T2|II Trimestre"
ITEM "T3|III Trimestre"
LIST F_TIPOCF 1 10 ITEM "T4|IV Trimestre"
BEGIN FLAGS "M"
PROMPT 2 2 "" END
ITEM "C|Cliente"
ITEM "F|Fornitore" LIST F_TIPOCF 1 10
GROUP 1 BEGIN
END PROMPT 2 2 ""
ITEM "C|Cliente"
NUMBER F_CODCF 6 ITEM "F|Fornitore"
BEGIN GROUP 1
PROMPT 16 2 "" END
USE LF_CLIFO
INPUT TIPOCF F_TIPOCF SELECT NUMBER F_CODCF 6
INPUT CODCF F_CODCF BEGIN
DISPLAY "Codice" CODCF PROMPT 16 2 ""
DISPLAY "Ragione Sociale@50" RAGSOC USE LF_CLIFO
DISPLAY "Occasionale@C" OCCAS INPUT TIPOCF F_TIPOCF SELECT
DISPLAY "Codice Fiscale@16" COFI INPUT CODCF F_CODCF
DISPLAY "Partita IVA@15" PAIV DISPLAY "Codice" CODCF
OUTPUT F_CODCF CODCF DISPLAY "Ragione Sociale@50" RAGSOC
OUTPUT F_RAGSOC RAGSOC DISPLAY "Occasionale@C" OCCAS
CHEKTYPE NORMAL DISPLAY "Codice Fiscale@16" COFI
ADD RUN CG0 -1 DISPLAY "Partita IVA@15" PAIV
GROUP 1 OUTPUT F_CODCF CODCF
END OUTPUT F_RAGSOC RAGSOC
CHEKTYPE NORMAL
STRING F_RAGSOC 50 49 ADD RUN CG0 -1
BEGIN GROUP 1
PROMPT 26 2 "" END
USE LF_CLIFO KEY 2
INPUT TIPOCF F_TIPOCF SELECT STRING F_RAGSOC 50 49
INPUT RAGSOC F_RAGSOC BEGIN
DISPLAY "Ragione Sociale@50" RAGSOC PROMPT 26 2 ""
DISPLAY "Codice" CODCF USE LF_CLIFO KEY 2
DISPLAY "Codice Fiscale@16" COFI INPUT TIPOCF F_TIPOCF SELECT
DISPLAY "Partita IVA@15" PAIV INPUT RAGSOC F_RAGSOC
COPY OUTPUT F_CODCF DISPLAY "Ragione Sociale@50" RAGSOC
ADD RUN CG0 -1 DISPLAY "Codice" CODCF
GROUP 1 DISPLAY "Codice Fiscale@16" COFI
END DISPLAY "Partita IVA@15" PAIV
COPY OUTPUT F_CODCF
STRING F_OCFPI 16 ADD RUN CG0 -1
BEGIN GROUP 1
PROMPT 2 3 "Occ." END
USE LF_OCCAS
INPUT CFPI F_OCFPI STRING F_OCFPI 16
DISPLAY "Codice@16" CFPI BEGIN
DISPLAY "Ragione Sociale@50" RAGSOC PROMPT 2 3 "Occ."
OUTPUT F_OCFPI CFPI USE LF_OCCAS
OUTPUT F_RAGOCC RAGSOC INPUT CFPI F_OCFPI
CHEKTYPE NORMAL DISPLAY "Codice@16" CFPI
ADD RUN cg0 -6 DISPLAY "Ragione Sociale@50" RAGSOC
GROUP 1 OUTPUT F_OCFPI CFPI
MESSAGE EMPTY SHOW,F_RAGSOC|HIDE,F_RAGOCC OUTPUT F_RAGOCC RAGSOC
MESSAGE HIDE,F_RAGSOC|SHOW,F_RAGOCC CHEKTYPE NORMAL
END ADD RUN cg0 -6
GROUP 1
STRING F_RAGOCC 50 49 MESSAGE EMPTY SHOW,F_RAGSOC|HIDE,F_RAGOCC
BEGIN MESSAGE HIDE,F_RAGSOC|SHOW,F_RAGOCC
PROMPT 26 3 "" END
FLAGS "H"
GROUP 1 STRING F_RAGOCC 50 49
END BEGIN
PROMPT 26 3 ""
SPREADSHEET F_RIGHE FLAGS "H"
BEGIN GROUP 1
PROMPT 0 5 "" END
ITEM "Numero\nRegistraz.@7F"
ITEM "Forzata@C" STRING F_OUTFOLDER 255 45
ITEM "Non\nInv.@2@F" BEGIN
ITEM "C/F@2F" PROMPT 2 4 "Cartella "
ITEM "Codice@F" DSELECT
ITEM "Occasionale@16F" CHECKTYPE REQUIRED
ITEM "Ragione Sociale@24" FLAGS "M"
ITEM "Data\nOperazione@10" WARNING "Specificare una cartella di destinazione valida"
ITEM "Numero\nDocum.@7" END
ITEM "Importo\ndovuto@12"
ITEM "Imposta@12" BOOLEAN F_DEFINITIVO
ITEM "Mod.\nPag.@4" BEGIN
ITEM "Contratto@18" PROMPT 65 4 "Definitivo"
ITEM "Data Doc.\nrettif.@10" END
ITEM "N. Doc.\nrettif.@7"
ITEM "Partita IVA@15" SPREADSHEET F_RIGHE
ITEM "Codice Fiscale@17" BEGIN
DEFAULT "*" // Impedisce il salvataggio su profilo .ini PROMPT 0 6 ""
END ITEM "Numero\nRegistraz.@7F"
ITEM "Forzata@C"
ENDPAGE ITEM "Ignora@5"
ITEM "Tipo@2@F"
PAGE "Opzioni" 0 2 0 0 ITEM "C/F@2F"
ITEM "Codice@F"
GROUPBOX DLG_NULL 78 5 ITEM "Occasionale@16F"
BEGIN ITEM "Ragione Sociale@32"
PROMPT 1 1 "@bOpzioni per invio" ITEM "Data\nOperazione@10"
END ITEM "Numero\nDocum.@7"
ITEM "Data\nDocum.@10"
LIST F_SENDALL 1 25 ITEM "Tipo\nIVA@4"
BEGIN ITEM "Imponibile@12"
PROMPT 2 2 "Movimenti " ITEM "Imposta@12"
ITEM "1|Rilevanti" ITEM "Noleggio@10"
ITEM "7|Tutti" ITEM "Rev.\nCharge@7"
END ITEM "Auto\nfatt.@6"
ITEM "Servizi\nEsteri@6"
BOOLEAN F_DEFINITIVO ITEM "Operaz.\nTurismo@6"
BEGIN ITEM "Scheda\nCarbur.@6"
PROMPT 50 2 "Invio definitivo" ITEM "Fatt.\nRiep.@6"
END ITEM "Op. Att.\nAggreg.@6"
ITEM "Op. Pass.\nAggreg.@6"
STRING F_OUTFOLDER 255 50 ITEM "Partita IVA@15"
BEGIN ITEM "Codice Fiscale@16"
PROMPT 2 3 "Cartella " DEFAULT "*" // Impedisce il salvataggio su profilo .ini
DSELECT END
CHECKTYPE REQUIRED
WARNING "Specificare una cartella di destinazione valida" ENDPAGE
END
ENDMASK
NUMBER F_MAXREC 5
BEGIN PAGE "Riga" -1 -1 69 14
PROMPT 2 4 "Numero massimo di record per file "
NUM_EXPR (#THIS_FIELD>=100)&&(#THIS_FIELD<=15000) NUMBER A_RIGA 7
FLAGS "U" BEGIN
CHECKTYPE REQUIRED PROMPT 1 0 "Numero progressivo "
WARNING "Specificare una valore compreso tra 100 e 15000" FLAGS "D"
END FIELD PROGR
END
GROUPBOX DLG_NULL 78 6
BEGIN BOOLEAN A_FORZATA
PROMPT 1 6 "@bDati del soggetto che assume l'impegno alla presentazione telematica" BEGIN
END PROMPT 40 0 "Forzatura manuale"
FIELD FORZATURA
LIST F_INTER_COM 1 20 END
BEGIN
PROMPT 2 7 "Comunicazione predisposta da " LIST A_IGNORA 2 55
ITEM "|" BEGIN
ITEM "1|contribuente" PROMPT 1 1 "Ignora "
ITEM "2|chi effettua l'invio" ITEM "|"
END ITEM "1| 1. Importo non rilevante"
ITEM "2| 2. Soggetto da non inserire in allegato"
STRING F_INTER_COFI 16 ITEM "3| 3. Residente in un paese della black list"
BEGIN ITEM "4| 4. Soggetto residente all'estero"
PROMPT 2 8 "Codice fiscale dell'intermediario " ITEM "5| 5. Movimento intra"
FLAGS "U" ITEM "7| 7. Data movimento fuori dai limiti della comunicazione"
END ITEM "9| 9. Già inviato"
ITEM "10|10.Altri motivi"
NUMBER F_INTER_CAF 5 FIELD IGNORA
BEGIN END
PROMPT 2 9 "Numero iscrizione all'albo C.A.F. "
END STRING A_TIPO 2
BEGIN
DATE F_INTER_DATE PROMPT 1 2 "Tipo "
BEGIN FIELD TIPOPE
PROMPT 2 10 "Data dell'impegno alla trasmissione " FLAGS "U"
END STR_EXPR LEN(#THIS_FIELD)==2
WARNING "Tipo record di lunghezza errata"
GROUPBOX DLG_NULL 78 5 CHECKTYPE REQUIRED
BEGIN END
PROMPT 1 12 "@bAnnullamento o sostituzione"
END LIST A_TIPOCF 1 10
BEGIN
LIST F_TIPOLOGIA 1 15 PROMPT 1 3 ""
BEGIN ITEM "C|Cliente"
PROMPT 2 13 "Tipologia invio " ITEM "F|Fornitore"
ITEM "0|Normale" FIELD TIPOCF
MESSAGE DISABLE,F_PROTELE|DISABLE,F_PROTDOC END
ITEM "1|Sostitutivo"
MESSAGE ENABLE,F_PROTELE|ENABLE,F_PROTDOC NUMBER A_CODCF 6
ITEM "2|Annullamento" BEGIN
MESSAGE ENABLE,F_PROTELE|ENABLE,F_PROTDOC PROMPT 17 3 ""
END USE LF_CLIFO
INPUT TIPOCF A_TIPOCF SELECT
STRING F_PROTELE 17 INPUT CODCF A_CODCF
BEGIN DISPLAY "Codice" CODCF
PROMPT 2 14 "Protocollo da sostituire o annullare " DISPLAY "Ragione Sociale@50" RAGSOC
FLAGS "U" DISPLAY "Occasionale@C" OCCAS
CHECKTYPE REQUIRED DISPLAY "Partita IVA" PAIV
END DISPLAY "Codice fiscale@16" COFI
OUTPUT A_CODCF CODCF
STRING F_PROTDOC 6 CHEKTYPE REQUIRED
BEGIN ADD RUN cg0 -1
PROMPT 2 15 "Protocollo documento " FIELD CODCF
FLAGS "U" FLAGS "G"
CHECKTYPE REQUIRED END
END
STRING A_OCFPI 16
ENDPAGE BEGIN
PROMPT 36 3 "Occasionale "
ENDMASK USE LF_OCCAS
INPUT CFPI A_OCFPI
PAGE "Riga" -1 -1 69 11 DISPLAY "Codice@16" CFPI
DISPLAY "Ragione Sociale@50" RAGSOC
NUMBER A_RIGA 7 DISPLAY "Partita IVA" PAIV
BEGIN DISPLAY "Codice fiscale@16" COFI
PROMPT 1 0 "Numero progressivo " OUTPUT A_OCFPI CFPI
FLAGS "D" CHEKTYPE NORMAL
FIELD PROGR GROUP 3
END ADD RUN cg0 -6
FIELD OCFPI
BOOLEAN A_FORZATA FLAGS "G"
BEGIN END
PROMPT 40 0 "Forzatura manuale"
FIELD FORZATURA STRING A_RAGSOC 50 47
END BEGIN
PROMPT 1 4 "Ragione Sociale "
LIST A_IGNORA 2 55 FLAGS "D"
BEGIN END
PROMPT 1 1 "Non inv."
ITEM "| 0. Rilevante al fine della dichiarazione" STRING A_PAIV 12
ITEM "1| 1. Importo inferiore al limite della comunicazione" BEGIN
ITEM "2| 2. Soggetto da non inserire in allegato" PROMPT 1 5 "Partita IVA "
ITEM "3| 3. Soggetto residente in stato a fiscalità agevolata" FLAGS "D"
ITEM "4| 4. Soggetto residente all'estero" END
ITEM "5| 5. Movimento intra"
ITEM "6| 6. Soggetto all'articolo 8 (del dpr 26-10-1972)" STRING A_COFI 16
ITEM "7| 7. Data movimento fuori dai limiti della comunicazione" BEGIN
ITEM "8| 8. Passaggi interni" PROMPT 33 5 "Codice Fiscale "
ITEM "9| 9. Già inviato" FLAGS "D"
ITEM "10|10.Altri motivi" END
FIELD IGNORA
END DATE A_DATAREG
BEGIN
LIST A_TIPOCF 1 10 PROMPT 1 6 "Data reg. "
BEGIN USE LF_MOV KEY 3
PROMPT 1 2 "" INPUT TIPO A_TIPOCF SELECT
ITEM "C|Cliente" INPUT CODCF A_CODCF SELECT
ITEM "F|Fornitore" INPUT DATAREG A_DATAREG
FIELD TIPOCF DISPLAY "Data.Reg.@10" DATAREG
END DISPLAY "Num.Reg.@7" NUMREG
DISPLAY "Descrizione@50" DESCR
NUMBER A_CODCF 6 DISPLAY "Data Doc.@10" DATADOC
BEGIN DISPLAY "Num.Doc.@7" NUMDOC
PROMPT 17 2 "" OUTPUT A_DATAREG DATAREG
USE LF_CLIFO OUTPUT A_NUMDOC NUMDOC
INPUT TIPOCF A_TIPOCF SELECT OUTPUT A_DATADOC DATADOC
INPUT CODCF A_CODCF FIELD DATAREG
DISPLAY "Codice" CODCF VALIDATE NOT_EMPTY_FUNC
DISPLAY "Ragione Sociale@50" RAGSOC END
DISPLAY "Occasionale@C" OCCAS
DISPLAY "Partita IVA" PAIV DATE A_DATADOC
DISPLAY "Codice fiscale@16" COFI BEGIN
OUTPUT A_CODCF CODCF PROMPT 27 6 "Data doc. "
CHEKTYPE REQUIRED FIELD DATADOC
ADD RUN cg0 -1 END
FIELD CODCF
FLAGS "G" STRING A_NUMDOC 7
END BEGIN
PROMPT 49 6 "Num. doc. "
STRING A_OCFPI 16 FLAGS "U"
BEGIN FIELD NUMDOC
PROMPT 36 2 "Occasionale " END
USE LF_OCCAS
INPUT CFPI A_OCFPI LIST A_NOLEGGIO 1 12
DISPLAY "Codice@16" CFPI BEGIN
DISPLAY "Ragione Sociale@50" RAGSOC PROMPT 1 7 "Noleggio "
DISPLAY "Partita IVA" PAIV ITEM " |Nessuno"
DISPLAY "Codice fiscale@16" COFI ITEM "A|Automobile"
OUTPUT A_OCFPI CFPI ITEM "B|Camper"
CHEKTYPE NORMAL ITEM "C|Altro"
GROUP 3 ITEM "D|Diporto"
ADD RUN cg0 -6 ITEM "E|Aeromobile"
FIELD OCFPI FIELD NOLEGGIO
FLAGS "G" END
END
LIST A_TIPOIVA 1 24
STRING A_RAGSOC 50 47 BEGIN
BEGIN PROMPT 27 7 "Tipo IVA "
PROMPT 1 3 "Ragione Sociale " ITEM "1|Imponibile"
FLAGS "D" ITEM "2|Non imponibile"
END ITEM "3|Esente"
ITEM "4|Non esposta in fattura"
STRING A_PAIV 12 ITEM "5|Margine"
BEGIN FIELD TIPOIVA
PROMPT 1 4 "Partita IVA " END
FLAGS "D"
END CURRENCY A_IMPORTO 12
BEGIN
STRING A_COFI 16 PROMPT 1 8 "Imponibile "
BEGIN FIELD IMPORTO
PROMPT 33 4 "Codice Fiscale " END
FLAGS "D"
END CURRENCY A_IMPOSTA 12
BEGIN
DATE A_DATAREG PROMPT 44 8 "Imposta "
BEGIN FIELD IMPOSTA
PROMPT 29 5 "Data " END
USE LF_MOV KEY 3
INPUT TIPO A_TIPOCF SELECT BOOLEAN A_REVERSE
INPUT CODCF A_CODCF SELECT BEGIN
INPUT DATAREG A_DATAREG PROMPT 1 9 "Reverse charge"
DISPLAY "Data.Reg.@10" DATAREG FIELD REVERSE
DISPLAY "Num.Reg.@7" NUMREG END
DISPLAY "Descrizione@50" DESCR
DISPLAY "Data Doc.@10" DATADOC BOOLEAN A_AUTOFATT
DISPLAY "Num.Doc.@7" NUMDOC BEGIN
OUTPUT A_DATAREG DATAREG PROMPT 38 9 "Autofattura"
OUTPUT A_NUMDOC NUMDOC FIELD AUTOFATT
FIELD DATAREG END
VALIDATE NOT_EMPTY_FUNC
END BOOLEAN A_SERVIZI
BEGIN
STRING A_NUMDOC 7 PROMPT 1 10 "Acquisto servizi all'estero"
BEGIN FIELD SERVIZI
PROMPT 49 5 "Fattura " END
FLAGS "U"
COPY ALL A_DATAREG BOOLEAN A_TURISMO
ADD RUN cg2 -0 BEGIN
FIELD NUMDOC PROMPT 38 10 "Operazioni turismo"
END FIELD TURISMO
END
LIST A_MODPAG 1 20
BEGIN BOOLEAN A_CARBURAN
PROMPT 1 6 "Modalità di pagamento " BEGIN
ITEM "1|1 - Non frazionato" PROMPT 1 11 "Scheda carburanti"
MESSAGE DISABLE,A_CONTRATTO|ENABLE,A_DATARETT|ENABLE,A_NUMRETT FIELD CARBURAN
ITEM "2|2 - Frazionato" END
MESSAGE ENABLE,A_CONTRATTO|DISABLE,A_DATARETT|DISABLE,A_NUMRETT
ITEM "3|3 - Periodico" BOOLEAN A_RIEPILOG
MESSAGE ENABLE,A_CONTRATTO|DISABLE,A_DATARETT|DISABLE,A_NUMRETT BEGIN
FIELD MODPAG PROMPT 38 11 "Fattura riepilogativa"
END FIELD RIEPILOG
END
STRING A_CONTRATTO 18
BEGIN NUMBER A_ATTAGG 4
PROMPT 1 7 "Contratto riferimento " BEGIN
USE &CON PROMPT 1 12 "Operazioni aggregate: Attive "
INPUT CODTAB[1,1] A_TIPOCF SELECT FIELD ATTAGG
INPUT CODTAB[2,7] A_CODCF SELECT END
INPUT CODTAB[8,25] A_CONTRATTO
DISPLAY "Contratto@18" CODTAB[8,25] NUMBER A_PASAGG 4
DISPLAY "Descrizione@50" S0 BEGIN
OUTPUT A_CONTRATTO CODTAB[8,25] PROMPT 44 12 "Passive "
ADD RUN fe0 -1 &CON FIELD PASAGG
CHEKCTYPE REQUIRED END
FIELD CONTRATTO
END ENDPAGE
DATE A_DATARETT TOOLBAR "topbar" 0 0 0 2
BEGIN
PROMPT 1 8 "Documento rettificato " BUTTON DLG_OK 2 2
FIELD DATARETT BEGIN
USE LF_MOV KEY 3 PROMPT 1 1 ""
INPUT TIPO A_TIPOCF SELECT END
INPUT CODCF A_CODCF SELECT
INPUT DATAREG A_DATARETT BUTTON DLG_USER 2 2
COPY DISPLAY A_DATAREG BEGIN
OUTPUT A_DATARETT DATAREG PROMPT 2 1 "Collega"
OUTPUT A_NUMRETT NUMDOC PICTURE TOOL_LINK
ADD RUN cg2 -0 END
NUM_EXPR IF((#A_IMPORTO<0)&&(#A_IGNORA<=0);#A_DATARETT!="";1)
WARNING "Inserire la data della fattura rettificata" BUTTON DLG_DELREC 2 2
END BEGIN
PROMPT 2 1 "Elimina"
STRING A_NUMRETT 7 PICTURE TOOL_DELREC
BEGIN END
PROMPT 50 8 "Numero "
FIELD NUMRETT BUTTON DLG_CANCEL 2 2
COPY ALL A_DATARETT BEGIN
ADD RUN cg2 -0 PROMPT 4 1 ""
VALIDATE REQIF_FUNC 1 A_DATARETT END
WARNING "Inserire il numero della fattura rettificata"
END ENDPAGE
CURRENCY A_IMPORTO 12 ENDMASK
BEGIN
PROMPT 1 10 "Importo dovuto "
FIELD IMPORTO
END
CURRENCY A_IMPOSTA 12
BEGIN
PROMPT 44 10 "Imposta "
FIELD IMPOSTA
END
ENDPAGE
TOOLBAR "topbar" 0 0 0 2
BUTTON DLG_OK 2 2
BEGIN
PROMPT 1 1 ""
END
BUTTON DLG_USER 2 2
BEGIN
PROMPT 2 1 "Collega"
PICTURE TOOL_LINK
END
BUTTON DLG_DELREC 2 2
BEGIN
PROMPT 2 1 "Elimina"
PICTURE TOOL_DELREC
END
BUTTON DLG_CANCEL 2 2
BEGIN
PROMPT 4 1 ""
END
ENDPAGE
ENDMASK

View File

@ -141,6 +141,6 @@ TMask* TFE_table_app::user_create_mask()
int fe0200(int argc, char* argv[]) int fe0200(int argc, char* argv[])
{ {
TFE_table_app a; TFE_table_app a;
a.run(argc, argv, TR("Tabella modulo dati rilevanti")); a.run(argc, argv, TR("Tabella Spesometro"));
return 0; return 0;
} }

View File

@ -16,7 +16,6 @@ protected:
void elabora(const TString_array& a, const TFilename& n) const; void elabora(const TString_array& a, const TFilename& n) const;
bool str2fname(const TString& name, TFilename& n) const; bool str2fname(const TString& name, TFilename& n) const;
bool row2fname(const TToken_string& row, TFilename& n) const;
void enable_buttons(); void enable_buttons();
public: public:
@ -40,59 +39,6 @@ bool TSomma_spesometro_msk::str2fname(const TString& name, TFilename& n) const
return n.exist(); return n.exist();
} }
bool TSomma_spesometro_msk::row2fname(const TToken_string& row, TFilename& n) const
{
TString80 name; row.get(0, name);
return str2fname(name, n);
}
void TSomma_spesometro_msk::elabora(const TString_array& infiles, const TFilename& outfile) const
{
int anno = 2010;
TFilename n;
if (row2fname(infiles.row(0), n))
{
const TDati_rilevanti_set s(n);
anno = s.anno();
}
TDati_rilevanti_set outset(anno);
const int tipologia = outset.add_header(*this);
if (tipologia != 2) // Invio i record solo quando non si tratta di annullamento
{
FOR_EACH_ARRAY_ROW(infiles, r, row) if (row2fname(*row, n))
{
const int len = outset.record_length();
ifstream s(n, ios::binary);
TString row(len);
while (!s.eof())
{
s.read(row.get_buffer(), len);
if (row[0] != '0' && row[0] != '9')
outset.new_rec(row);
}
}
}
outset.add_footer();
outset.sort();
outset.save_as(outfile);
if (outset.items() > 15000)
{
outset.split(outfile);
const int n = (outset.items()-1) / 15000 + 1;
warning_box(FR("E' stato generato il file %s, separato in %d parti da 15000 record."), (const char*)outfile, n);
}
else
message_box(FR("E' stato generato il file %s"), (const char*)outfile);
TDati_rilevanti_rep rep(outfile);
rep.preview();
}
void TSomma_spesometro_msk::enable_buttons() void TSomma_spesometro_msk::enable_buttons()
{ {
const TSheet_field& righe = sfield(F_RIGHE); const TSheet_field& righe = sfield(F_RIGHE);
@ -102,6 +48,11 @@ void TSomma_spesometro_msk::enable_buttons()
enable(DLG_PREVIEW, str2fname(get(F_OUTFILE), n)); enable(DLG_PREVIEW, str2fname(get(F_OUTFILE), n));
} }
void TSomma_spesometro_msk::elabora(const TString_array& a, const TFilename& n) const
{
}
bool TSomma_spesometro_msk::on_field_event(TOperable_field& o, TField_event e, long jolly) bool TSomma_spesometro_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
{ {
switch (o.dlg()) switch (o.dlg())
@ -126,7 +77,7 @@ bool TSomma_spesometro_msk::on_field_event(TOperable_field& o, TField_event e, l
TFilename fn; TFilename fn;
if (str2fname(o.mask().get(101), fn)) if (str2fname(o.mask().get(101), fn))
{ {
TDati_rilevanti_rep rep(fn); TSpesometro_rep rep(fn);
rep.preview(); rep.preview();
} }
} }
@ -137,7 +88,7 @@ bool TSomma_spesometro_msk::on_field_event(TOperable_field& o, TField_event e, l
TFilename fn; TFilename fn;
if (str2fname(get(F_OUTFILE), fn)) if (str2fname(get(F_OUTFILE), fn))
{ {
TDati_rilevanti_rep rep(fn); TSpesometro_rep rep(fn);
rep.preview(); rep.preview();
} }
} }
@ -167,21 +118,6 @@ bool TSomma_spesometro_msk::on_field_event(TOperable_field& o, TField_event e, l
} }
} }
// Elimina dalla lista il file di output
if (str2fname(get(F_OUTFILE), fn))
{
TFilename fr;
FOR_EACH_ARRAY_ROW(a, r, row)
{
row2fname(*row, fr);
if (fr.compare(fn, -1, true) == 0)
{
a.destroy(r, true);
break;
}
}
}
righe.force_update(); righe.force_update();
enable_buttons(); enable_buttons();
} }

View File

@ -141,42 +141,6 @@ bool TTest_spesometro_msk::elabora(int num, TLog_report& log)
{ {
if (!pi.addstatus(1)) if (!pi.addstatus(1))
break; break;
const int tipopag = curr.get_int(MOV_MODPAG);
const TString& contratto = curr.get(MOV_CONTRATTO);
if (contratto.full())
{
if (is_nota_variazione(curr))
{
curr.put(MOV_MODPAG, 1);
curr.zero(MOV_CONTRATTO);
done = update_file(file, TR("Azzerato contratto su nota di variazione"), log);
}
else
{
const TContratto c(curr);
const int t = c.modalita_pagamento();
if (t != tipopag)
{
str.cut(0) << TR("Cambiata modalità di pagamento ") << tipopag << " -> " << t;
curr.put(MOV_MODPAG, t);
if (num == LF_MOV)
{
curr.zero(MOV_DATARETT);
curr.zero(MOV_NUMRETT);
}
done = update_file(file, str, log);
}
}
}
else
{
if (tipopag > 1)
{
log_msg(curr, str, log);
curr.put(MOV_MODPAG, 1);
done = update_file(file, TR("Forzato pagamento non frazionato in assenza di contratto"), log);
}
}
} }
return done; return done;
} }

File diff suppressed because it is too large Load Diff

View File

@ -25,6 +25,7 @@ class TAnagrafica : public TObject
TAnagrafica& operator =(const TAnagrafica&) { CHECK(false, "Can't copy TAnagrafica"); } TAnagrafica& operator =(const TAnagrafica&) { CHECK(false, "Can't copy TAnagrafica"); }
TAnagrafica(const TAnagrafica&) { CHECK(false, "Can't copy TAnagrafica"); } TAnagrafica(const TAnagrafica&) { CHECK(false, "Can't copy TAnagrafica"); }
protected: protected:
void build_ind_res(const TRectype& rec, const char* ind, const char* civ); void build_ind_res(const TRectype& rec, const char* ind, const char* civ);
void split_ragsoc(); void split_ragsoc();
@ -38,14 +39,15 @@ public:
const TString& partita_IVA() const { return _paiv; } const TString& partita_IVA() const { return _paiv; }
const TString& ragione_sociale() const { return _ragsoc; } const TString& ragione_sociale() const { return _ragsoc; }
const TString& cognome() const { return _ragsoc.left(24); } const TString& cognome() const;
const TString& nome() const { CHECK(fisica(), "Non chiedere nome giuridico!"); return _ragsoc.mid(30,20); } const TString& nome() const;
char sesso() const { CHECK(fisica(), "Solo sesso fisico!"); return (_cofi[9] >= '4') ? 'F' : 'M'; } char sesso() const { CHECK(fisica(), "Solo sesso fisico!"); return (_cofi[9] >= '4') ? 'F' : 'M'; }
const TDate& data_nascita() const { return _data_nasc; } const TDate& data_nascita() const { return _data_nasc; }
bool italiano() const; bool italiano() const;
bool estero() const { return !italiano(); } bool estero() const { return !italiano(); }
const TString& stato_estero_UNICO() const; const TString& stato_estero_UNICO() const;
int inserimento_in_allegato() const { return _allegato; } int inserimento_in_allegato() const { return _allegato; }
char is_black_list() const;
const TString& comune_nascita() const; const TString& comune_nascita() const;
const TString& provincia_nascita() const; const TString& provincia_nascita() const;
@ -69,68 +71,35 @@ public:
}; };
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// TContratto // TSpesometro_set
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
class TContratto : public TObject class TSpesometro_set : public TCSV_recordset
{ {
TRectype _rec;
protected: protected:
bool importo_annuale(int anno, real& importo, real& imposta) const; virtual bool set(unsigned int fld, const TVariant& var);
bool importo_figli(int anno, real& importo, real& imposta) const;
public:
virtual bool ok() const { return !_rec.empty(); }
const TString& chiave() const { return _rec.get("CODTAB"); }
const TString& codice() const { return chiave().mid(7); }
const TString& codice_padre() const { return _rec.get("S1"); }
const TString& codice_base() const;
bool totale_annuale(int anno, real& importo, real& imposta) const;
int modalita_pagamento() const;
bool init(const TString& codtab);
bool init(char tipocf, long codcf, const TString& codcont);
bool init(const TRectype& rec);
TContratto() : _rec(LF_TABMOD) {}
TContratto(char tipocf, long codcf, const char* codcont) : _rec(LF_TABMOD) { init(tipocf, codcf, codcont); }
TContratto(const TRectype& rec) : _rec(LF_TABMOD) { init(rec); }
};
///////////////////////////////////////////////////////////
// TDati_rilevanti_set
///////////////////////////////////////////////////////////
class TDati_rilevanti_set : public TAS400_recordset
{
int _anno;
protected:
virtual bool set_field(const TAS400_column_info& fi, const TVariant& var);
virtual const TVariant& get_field(const TAS400_column_info& fi) const;
void init(); void init();
bool set_val(int n, const TVariant& v) { return TAS400_recordset::set(n-1, v); } void add_header_data(int n, const TString& value);
public: public:
bool set(unsigned int n, const TVariant& v) { return set_val(n, v); } virtual const TVariant& get(unsigned int column) const;
bool set(unsigned int n, const TString& v) { return set_val(n, v); } bool set(unsigned int n, const char* v) { return set(n, TVariant(v)); }
bool set(unsigned int n, char v) { TString4 str; str << v; return set_val(n, str); } bool set(unsigned int n, const TString& v) { return set(n, TVariant(v)); }
bool set(unsigned int n, int v) { return set_val(n, long(v)); } bool set(unsigned int n, char v) { TString4 str; str << v; return set(n, str); }
bool set(unsigned int n, const real& v) { return set_val(n, v); } bool set(unsigned int n, int v) { return set(n, TVariant(long(v))); }
bool set(unsigned int n, const TDate& v) { return set_val(n, v); } bool set(unsigned int n, bool v) { return set(n, TVariant(v)); }
int add_header(const TMask& msk, int num_inv = 1, int tot_inv = 1); bool set(unsigned int n, const real& v) { return set(n, TVariant(v)); }
void add_footer(); bool set(unsigned int n, const TDate& v) { return set(n, TVariant(v)); }
bool split(const TFilename& name, const TRecnotype maxalleg = 15000); bool add_header(const TMask& msk);
int anno() const { return _anno; } bool add_footer(const TMask& msk);
TDati_rilevanti_set(int anno); TSpesometro_set();
TDati_rilevanti_set(const TFilename& file); TSpesometro_set(const TFilename& file);
}; };
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// TDati_rilevanti_rep // TSpesometro_rep
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
class TCofi_cache : public TCache class TCofi_cache : public TCache
@ -147,25 +116,24 @@ public:
TCofi_cache() : _clifo(LF_CLIFO), _occas(LF_OCCAS) { } TCofi_cache() : _clifo(LF_CLIFO), _occas(LF_OCCAS) { }
}; };
class TDati_rilevanti_rep : public TReport class TSpesometro_rep : public TReport
{ {
TCofi_cache _cofi; TCofi_cache _cofi;
protected: protected:
const TString& cofi2ragsoc(char tipocf, const TString& cofi) const const TString& cofi2ragsoc(char tipocf, const TString& cofi) const
{ return ((TDati_rilevanti_rep*)this)->_cofi.cofi2ragsoc(tipocf, cofi); } { return ((TSpesometro_rep*)this)->_cofi.cofi2ragsoc(tipocf, cofi); }
const TString& paiv2ragsoc(char tipocf, const TString& cofi) const const TString& paiv2ragsoc(char tipocf, const TString& cofi) const
{ return ((TDati_rilevanti_rep*)this)->_cofi.paiv2ragsoc(tipocf, cofi); } { return ((TSpesometro_rep*)this)->_cofi.paiv2ragsoc(tipocf, cofi); }
virtual bool get_usr_val(const TString& name, TVariant& var) const; virtual bool get_usr_val(const TString& name, TVariant& var) const;
public: public:
TDati_rilevanti_rep(const TFilename& file); TSpesometro_rep(const TFilename& file);
}; };
// Utility // Utility
real fe_importo_limite(int anno);
bool fe_is_nota_variazione(const TRectype& rec); bool fe_is_nota_variazione(const TRectype& rec);
#endif #endif