Stampa base a parte

git-svn-id: svn://10.65.10.50/trunk@3568 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
nik 1996-09-12 10:39:42 +00:00
parent 9657425c9e
commit 66c50f0249
14 changed files with 2284 additions and 1119 deletions

View File

@ -615,6 +615,9 @@ void TQuadroC_E2::leggi_sort(TProgind& p)
if (!QuadroE() && !QuadroE1()) if (!QuadroE() && !QuadroE1())
qd.put("TOTALE", tot_comp + tot_somme); qd.put("TOTALE", tot_comp + tot_somme);
if (QuadroC())
qd.put("TOTALE", tot_somme + tot_impo + rTotQCInps);
if (QuadroE1()) if (QuadroE1())
qd.put("NETTO", tot_comp - tot_rite); qd.put("NETTO", tot_comp - tot_rite);
else else
@ -681,6 +684,9 @@ void TQuadroC_E2::leggi_sort(TProgind& p)
if (!QuadroE() && !QuadroE1()) if (!QuadroE() && !QuadroE1())
qd.put("TOTALE", tot_comp + tot_somme); qd.put("TOTALE", tot_comp + tot_somme);
if (QuadroC())
qd.put("TOTALE", tot_somme + tot_impo + rTotQCInps);
if (QuadroE1()) if (QuadroE1())
qd.put("NETTO", tot_comp - tot_rite); qd.put("NETTO", tot_comp - tot_rite);
else else

View File

@ -176,7 +176,7 @@ BEGIN
FIELD LF_QUAC->IMPONIBILE FIELD LF_QUAC->IMPONIBILE
PICTURE "." PICTURE "."
FLAGS "DR" FLAGS "DR"
NUM_CALC {#F_TOTALE-#F_SOMME} NUM_CALC {#F_TOTALE-#F_SOMME-#QCF_CONTSSN}
END END
TEXT DLG_NULL TEXT DLG_NULL

View File

@ -31,8 +31,8 @@ END
GENERAL GENERAL
BEGIN BEGIN
OFFSET 0 0 OFFSET 0 0
FONT "Courier 17cpi" FONT "Roman 17cpi"
SIZE 10 SIZE 12
CA "X" CA "X"
IN 3 2 IN 3 2
FI 131 FI 131
@ -229,7 +229,7 @@ END
STRINGA 22 STRINGA 22
BEGIN BEGIN
KEY "GRUPPO 2 - ALTRI SOGGETTI - CODICE FISCALE" KEY "GRUPPO 2 - ALTRI SOGGETTI - CODICE FISCALE"
PROMPT 25 11 "" PROMPT 25 12 ""
FIELD 116@->COFI FIELD 116@->COFI
GROUP 2 GROUP 2
END END
@ -237,7 +237,7 @@ END
LISTA 23 LISTA 23
BEGIN BEGIN
KEY "REG.A.STATUTO.SPECIALE VA - SA -SI" KEY "REG.A.STATUTO.SPECIALE VA - SA -SI"
PROMPT 95 11 "" PROMPT 95 12 ""
ITEM "|" ITEM "|"
ITEM "1|X" ITEM "1|X"
ITEM "2|" ITEM "2|"
@ -249,7 +249,7 @@ END
LISTA 24 LISTA 24
BEGIN BEGIN
KEY "REG.A.STATUTO.SPECIALE VA - SA -SI" KEY "REG.A.STATUTO.SPECIALE VA - SA -SI"
PROMPT 103 11 "" PROMPT 103 12 ""
ITEM "|" ITEM "|"
ITEM "1|" ITEM "1|"
ITEM "2|X" ITEM "2|X"
@ -261,7 +261,7 @@ END
LISTA 25 LISTA 25
BEGIN BEGIN
KEY "REG.A.STATUTO.SPECIALE VA - SA -SI" KEY "REG.A.STATUTO.SPECIALE VA - SA -SI"
PROMPT 112 11 "" PROMPT 112 12 ""
ITEM "|" ITEM "|"
ITEM "1|" ITEM "1|"
ITEM "2|" ITEM "2|"
@ -273,7 +273,7 @@ END
STRINGA 26 STRINGA 26
BEGIN BEGIN
KEY "CODICE ATTIVITA" KEY "CODICE ATTIVITA"
PROMPT 121 11 "" PROMPT 121 12 ""
FIELD 9->CODATTPREV FIELD 9->CODATTPREV
GROUP 2 GROUP 2
END END
@ -281,7 +281,7 @@ END
STRINGA 27 STRINGA 27
BEGIN BEGIN
KEY "RAGIONE SOCIALE" KEY "RAGIONE SOCIALE"
PROMPT 25 13 "" PROMPT 25 14 ""
FIELD 116@->RAGSOC FIELD 116@->RAGSOC
GROUP 2 GROUP 2
END END
@ -289,7 +289,7 @@ END
STRINGA 28 STRINGA 28
BEGIN BEGIN
KEY "EVENTI ECCEZIONALI" KEY "EVENTI ECCEZIONALI"
PROMPT 128 13 "" PROMPT 128 14 ""
FIELD 116@->EVECC FIELD 116@->EVECC
GROUP 2 GROUP 2
END END
@ -303,7 +303,7 @@ END
STRING 30 STRING 30
BEGIN BEGIN
KEY "COMUNE SEDE LEGALE " KEY "COMUNE SEDE LEGALE "
PROMPT 39 15 "" PROMPT 41 16 ""
FIELD 413@->DENCOM FIELD 413@->DENCOM
GROUP 2 GROUP 2
END END
@ -311,7 +311,7 @@ END
STRING 31 STRING 31
BEGIN BEGIN
KEY "PROV. SEDE LEGALE" KEY "PROV. SEDE LEGALE"
PROMPT 119 15 "" PROMPT 122 16 ""
FIELD 413@->PROVCOM FIELD 413@->PROVCOM
GROUP 2 GROUP 2
END END
@ -319,7 +319,7 @@ END
STRING 32 STRING 32
BEGIN BEGIN
KEY "VIA SEDE LEGALE" KEY "VIA SEDE LEGALE"
PROMPT 39 17 "" PROMPT 39 19 ""
FIELD 216@->INDRES[1,18] FIELD 216@->INDRES[1,18]
FLAGS "H" FLAGS "H"
END END
@ -336,14 +336,14 @@ END
STRING 34 STRING 34
BEGIN BEGIN
KEY "VIA SEDE LEGALE" KEY "VIA SEDE LEGALE"
PROMPT 39 17 "" PROMPT 39 19 ""
GROUP 2 GROUP 2
END END
STRINGA 35 STRINGA 35
BEGIN BEGIN
KEY "CAP" KEY "CAP"
PROMPT 119 17 "" PROMPT 119 19 ""
FIELD 116@->CAPRF FIELD 116@->CAPRF
FIELD 116@->CAPRES FIELD 116@->CAPRES
GROUP 2 GROUP 2
@ -352,7 +352,7 @@ END
STRING 36 STRING 36
BEGIN BEGIN
KEY "COMUNE DI RESIDENZA FISCALE" KEY "COMUNE DI RESIDENZA FISCALE"
PROMPT 39 19 "" PROMPT 41 20 ""
FIELD 413@->DENCOM FIELD 413@->DENCOM
GROUP 2 GROUP 2
END END
@ -360,7 +360,7 @@ END
STRING 37 STRING 37
BEGIN BEGIN
KEY "PROV. RESIDENZA FISCALE" KEY "PROV. RESIDENZA FISCALE"
PROMPT 119 19 "" PROMPT 121 20 ""
FIELD 413@->PROVCOM FIELD 413@->PROVCOM
GROUP 2 GROUP 2
END END
@ -368,7 +368,7 @@ END
STRING 38 STRING 38
BEGIN BEGIN
KEY "VIA RESIDENZA FISCALE" KEY "VIA RESIDENZA FISCALE"
PROMPT 39 21 "" PROMPT 39 22 ""
FIELD 216@->INDRES[1,18] FIELD 216@->INDRES[1,18]
FLAGS "H" FLAGS "H"
MESSAGE COPY,12 MESSAGE COPY,12
@ -386,14 +386,14 @@ END
STRING 40 STRING 40
BEGIN BEGIN
KEY "VIA RES FISCALE" KEY "VIA RES FISCALE"
PROMPT 39 21 "" PROMPT 39 22 ""
GROUP 2 GROUP 2
END END
STRINGA 41 STRINGA 41
BEGIN BEGIN
KEY "CAP" KEY "CAP"
PROMPT 119 21 "" PROMPT 121 22 ""
FIELD 116@->CAPRF FIELD 116@->CAPRF
GROUP 2 GROUP 2
END END
@ -401,7 +401,7 @@ END
STRINGA 42 STRINGA 42
BEGIN BEGIN
KEY "DATA APP.BILANCIO gg-mm-aaa" KEY "DATA APP.BILANCIO gg-mm-aaa"
PROMPT 29 23 "" PROMPT 29 25 ""
PICTURE "## ^ ##^^###" PICTURE "## ^ ##^^###"
GROUP 2 GROUP 2
END END
@ -409,7 +409,7 @@ END
STRINGA 43 STRINGA 43
BEGIN BEGIN
KEY "Termine per APP.BILANCIO gg-mm-aaa" KEY "Termine per APP.BILANCIO gg-mm-aaa"
PROMPT 88 23 "" PROMPT 88 25 ""
PICTURE "## ^ ##^^###" PICTURE "## ^ ##^^###"
GROUP 2 GROUP 2
END END
@ -417,7 +417,7 @@ END
STRINGA 48 STRINGA 48
BEGIN BEGIN
KEY "STATO" KEY "STATO"
PROMPT 29 25 "" PROMPT 31 26 ""
FIELD 7->STATOSOC FIELD 7->STATOSOC
GROUP 2 GROUP 2
END END
@ -425,7 +425,7 @@ END
STRINGA 49 STRINGA 49
BEGIN BEGIN
KEY "NAT.GIURIDICA" KEY "NAT.GIURIDICA"
PROMPT 49 25 "" PROMPT 51 26 ""
FIELD 7->NATGIU FIELD 7->NATGIU
GROUP 2 GROUP 2
END END
@ -433,7 +433,7 @@ END
STRINGA 50 STRINGA 50
BEGIN BEGIN
KEY "SITUAZIONE" KEY "SITUAZIONE"
PROMPT 73 25 "" PROMPT 75 26 ""
FIELD 7->SITSOC FIELD 7->SITSOC
GROUP 2 GROUP 2
END END
@ -441,14 +441,14 @@ END
STRINGA 51 STRINGA 51
BEGIN BEGIN
KEY "TELEFONO - PREF" KEY "TELEFONO - PREF"
PROMPT 99 25 "" PROMPT 99 27 ""
GROUP 2 GROUP 2
END END
STRINGA 52 STRINGA 52
BEGIN BEGIN
KEY "TELEFONO - NUMERO" KEY "TELEFONO - NUMERO"
PROMPT 110 25 "" PROMPT 110 27 ""
GROUP 2 GROUP 2
END END

View File

@ -11,8 +11,8 @@ END
GENERAL GENERAL
BEGIN BEGIN
OFFSET 0 0 OFFSET 0 0
FONT "Courier 17cpi" FONT "Roman 17cpi"
SIZE 10 SIZE 12
CA "X" CA "X"
IN 3 2 IN 3 2
FI 131 FI 131

View File

@ -11,8 +11,8 @@ END
GENERAL GENERAL
BEGIN BEGIN
OFFSET 0 0 OFFSET 0 0
FONT "Courier 17cpi" FONT "Roman 17cpi"
SIZE 10 SIZE 12
CA "X" CA "X"
IN 3 2 IN 3 2
FI 131 FI 131

View File

@ -28,8 +28,8 @@ END
GENERAL GENERAL
BEGIN BEGIN
OFFSET 0 0 OFFSET 0 0
FONT "Courier 17cpi" FONT "Roman 17cpi"
SIZE 10 SIZE 12
CA "X" CA "X"
IN 3 2 IN 3 2
FI 131 FI 131

View File

@ -24,8 +24,8 @@ END
GENERAL GENERAL
BEGIN BEGIN
OFFSET 0 0 OFFSET 0 0
FONT "Courier New" FONT "Roman 17cpi"
SIZE 11 SIZE 12
CARATTERE "X" CARATTERE "X"
INIZIO_POS 3 2 INIZIO_POS 3 2
FINE_POS 131 FINE_POS 131

View File

@ -22,7 +22,7 @@ BEGIN
PROMPT 1 1 "@bDipendente" PROMPT 1 1 "@bDipendente"
END END
NUMBER QBF_CODDIP 5 NUMBER QBF_CODDIP 6
BEGIN BEGIN
PROMPT 17 1 "" PROMPT 17 1 ""
USE LF_DIPEND KEY 1 USE LF_DIPEND KEY 1
@ -372,7 +372,7 @@ END
NUMBER QBF_PERCABB2 15 NUMBER QBF_PERCABB2 15
BEGIN BEGIN
PROMPT COLTFRB3 RIGTFRB2 "" PROMPT COLTFRB3 RIGTFRB2 ""
FIELD LF_QUAB->PERCABB2 FIELD LF_QUAB->ABBATT
PICTURE "." PICTURE "."
GROUP GROUP_ALL GROUP GROUP_ALL
END END

277
m770/77ql.frm Executable file
View File

@ -0,0 +1,277 @@
USE 42
JOIN 37 INTO CODDITTA=CODDITTA
JOIN 9 INTO CODDITTA=CODDITTA
JOIN 6 TO 9 ALIAS 106 INTO TIPOA=TIPOA CODANAGR=CODANAGR
JOIN 8 TO 106@ ALIAS 108 INTO CODANAGR=CODANAGR
JOIN 13 TO 108@ ALIAS 113 INTO COM==COMNASC
JOIN 13 TO 106@ ALIAS 213 INTO COM==COMRF(COMRES)
END
DESCRIPTION
BEGIN
36->* "Base 770"
37->* "Basebis 770"
END
GENERAL
BEGIN
OFFSET 0 0
FONT "Courier 17cpi"
SIZE 10
CA "X"
IN 3 2
FI 131
END
SECTION HEADER FIRST 18
LISTA 1
BEGIN
KEY "Tipo anagrafica"
FLAGS "H"
FIELD 106@->TIPOA
ITEM "F|Fisica" MESSAGE SHOW,1@|HIDE,2@
ITEM "G|Giuridica" MESSAGE SHOW,2@|HIDE,1@
END
STRINGA 2
BEGIN
KEY "CODICE FISCALE"
PROMPT 21 10 ""
FIELD 106@->COFI
END
STRINGA 3
BEGIN
KEY "RAGIONE SOCIALE"
PROMPT 51 10 ""
GROUP 2
FIELD 106@->RAGSOC
END
STRINGA 4
BEGIN
KEY "COGNOME"
PROMPT 51 10 ""
GROUP 1
FIELD 106@->RAGSOC[1,30]
END
STRINGA 5
BEGIN
KEY "NOME"
PROMPT 21 12 ""
GROUP 1
FIELD 106@->RAGSOC[31,50]
END
LISTA 6
BEGIN
KEY "SESSO M"
PROMPT 53 12 ""
ITEM "M|X"
ITEM "F|"
FIELD 108@->SESSO
GROUP 1
END
LISTA 7
BEGIN
KEY "SESSO F"
PROMPT 62 12 ""
ITEM "M|"
ITEM "F|X"
FIELD 108@->SESSO
GROUP 1
END
STRINGA 8
BEGIN
KEY "DATA DI NASCITA"
PROMPT 68 12 ""
GROUP 1
FIELD 108@->DATANASC
PICTURE "## ^ ## ^^###"
END
STRINGA 9
BEGIN
KEY "COMUNE DI NASCITA"
PROMPT 85 12 ""
GROUP 1
FIELD 113@->DENCOM
END
STRINGA 10
BEGIN
KEY "PROV. DI NASCITA"
PROMPT 126 12 ""
GROUP 1
FIELD 113@->PROVCOM
END
STRINGA 11
BEGIN
KEY "CODICE FISCALE DEL SOGGETTO DICHIARANTE"
PROMPT 56 14 ""
END
STRINGA 12
BEGIN
KEY "Cod.Conc.1"
PROMPT 41 16 ""
FIELD 37->L0CCONC1
END
STRINGA 13
BEGIN
KEY "Cod.Conc.2"
PROMPT 53 16 ""
FIELD 37->L0CCONC2
END
STRINGA 14
BEGIN
KEY "Cod.Conc.3"
PROMPT 63 16 ""
FIELD 37->L0CCONC3
END
NUMERO 15
BEGIN
KEY "Cod.Tes.1"
PROMPT 102 16 ""
FIELD 37->L0CTES1
END
NUMERO 16
BEGIN
KEY "Cod.Tes.2"
PROMPT 114 16 ""
FIELD 37->L0CTES2
END
NUMERO 17
BEGIN
KEY "Cod.Tes.3"
PROMPT 126 16 ""
FIELD 37->L0CTES3
END
END
SECTION BODY ODD 4
NUMERO 1
BEGIN
KEY "Mese rif."
PROMPT 26 1 ""
FIELD 42->QLMP
END
NUMERO 2
BEGIN
KEY "Anno rif."
PROMPT 29 1 ""
FIELD 42->QLAP
END
NUMERO 3
BEGIN
KEY "Rit.eff"
PROMPT 48 1 ""
FIELD 42->QLRITEFF
PICTURE "###.###.###.###^^^"
MESSAGE ADD,FL->1
END
NUMERO 4
BEGIN
KEY "Rit.ver"
PROMPT 79 1 ""
FIELD 42->QLRITVER
PICTURE "###.###.###.###^^^"
MESSAGE ADD,FL->2
END
NUMERO 5
BEGIN
KEY "RSS"
PROMPT 100 1 ""
FIELD 42->QLRSS
END
NUMERO 6
BEGIN
KEY "Note"
PROMPT 111 1 ""
FIELD 42->QLNOTE
END
STRINGA 7
BEGIN
KEY "Luogo Vers."
PROMPT 28 3 ""
FIELD 42->QLLV
END
STRINGA 8
BEGIN
KEY "Tipo Vers."
PROMPT 36 3 ""
FIELD 42->QLTV
END
STRINGA 9
BEGIN
KEY "CodTrib"
PROMPT 47 3 ""
FIELD 42->QLCT
END
STRINGA 11
BEGIN
KEY "DATA VERS."
PROMPT 63 3 ""
FIELD 42->QLDV
PICTURE "## ^ ## ^####"
END
STRINGA 12
BEGIN
KEY "SERIE"
PROMPT 84 3 ""
FIELD 42->QLSERIE
END
STRINGA 13
BEGIN
KEY "NUMERO"
PROMPT 99 3 ""
FIELD 42->QLNUMERO
END
END
SECTION FOOTER LAST 2
NUMERO 1
BEGIN
KEY "Tot.rit.eff"
PROMPT 51 1 ""
PICTURE "###.###.###.###^^^"
END
NUMERO 2
BEGIN
KEY "Tot.rit.ver"
PROMPT 102 1 ""
PICTURE "###.###.###.###^^^"
END
END
END

688
m770/77qn.frm Executable file
View File

@ -0,0 +1,688 @@
USE 37
JOIN 72 INTO CODDITTA=CODDITTA
JOIN 73 TO 37 INTO CODDITTA=CODDITTA
JOIN 74 TO 37 INTO CODDITTA=CODDITTA
JOIN 75 TO 37 INTO CODDITTA=CODDITTA
JOIN 76 TO 37 INTO CODDITTA=CODDITTA
JOIN 77 TO 37 INTO CODDITTA=CODDITTA
JOIN 36 TO 37 INTO CODDITTA=CODDITTA
JOIN %CAF TO 36 ALIAS 104 INTO CODTAB==CODCAAF
JOIN 9 TO 36 INTO CODDITTA=CODDITTA
JOIN 6 TO 9 INTO TIPOA=TIPOA CODANAGR=CODANAGR
JOIN 8 TO 36 ALIAS 108 INTO CODANAGR==CODPRO
JOIN 6 TO 8 ALIAS 106 INTO TIPOA="F" CODANAGR=CODANAGR
END
DESCRIPTION
BEGIN
36->* "Base 770"
37->* "Basebis 770"
72->* "Quadro N"
73->* "Quadro P"
74->* "Quadro Q"
75->* "Quadro R"
76->* "Quadro S"
77->* "Quadro T"
END
GENERAL
BEGIN
OFFSET 0 0
FONT "Courier 17cpi"
SIZE 10
CA "X"
IN 3 2
FI 131
END
SECTION HEADER FIRST 7
NUMERO 1
BEGIN
KEY "M1"
PROMPT 61 1 ""
FIELD 37->ECCRIT12
PICTURE "###.###.###.###^^^"
END
NUMERO 2
BEGIN
KEY "M2"
PROMPT 117 1 ""
FIELD 37->ECCRIT23
PICTURE "###.###.###.###^^^"
END
NUMERO 3
BEGIN
KEY "M3"
PROMPT 61 3 ""
FIELD 37->CRIMPDL
PICTURE "###.###.###.###^^^"
END
NUMERO 4
BEGIN
KEY "M4"
PROMPT 61 5 ""
FIELD 37->CRIMPIVA
PICTURE "###.###.###.###^^^"
END
NUMERO 5
BEGIN
KEY "M5"
PROMPT 117 3 ""
FIELD 37->CRIMPRIT
PICTURE "###.###.###.###^^^"
END
NUMERO 6
BEGIN
KEY "M6"
PROMPT 117 5 ""
FIELD 37->CRIMPRES
PICTURE "###.###.###.###^^^"
END
END
SECTION BODY ODD 1
NUMERO 1
BEGIN
KEY "MeseRif"
PROMPT 27 1 ""
FIELD 72->MESERIF
END
NUMERO 2
BEGIN
KEY "AnnoRif"
PROMPT 31 1 ""
FIELD 72->ANNORIF
END
NUMERO 3
BEGIN
KEY "imp. rimb"
PROMPT 39 1 ""
FIELD 72->IMPOSTA
PICTURE "###.###.###.###^^^"
END
NUMERO 4
BEGIN
KEY "Compensi"
PROMPT 60 1 ""
FIELD 72->COMPENSI
PICTURE "###.###.###.###^^^"
END
NUMERO 5
BEGIN
KEY "MeseRif"
PROMPT 85 1 ""
FIELD 72->MESERIF
END
NUMERO 6
BEGIN
KEY "AnnoRif"
PROMPT 89 1 ""
FIELD 72->ANNORIF
END
NUMERO 7
BEGIN
KEY "imp. rimb"
PROMPT 99 1 ""
FIELD 72->IMPOSTA
PICTURE "###.###.###.###^^^"
END
NUMERO 8
BEGIN
KEY "Compensi"
PROMPT 119 1 ""
FIELD 72->COMPENSI
PICTURE "###.###.###.###^^^"
END
END
SECTION BODY EVEN 1
NUMERO 1
BEGIN
KEY "R - MeseRif"
PROMPT 27 1 ""
FIELD 75->MESERIF
END
NUMERO 2
BEGIN
KEY "R - AnnoRif"
PROMPT 31 1 ""
FIELD 75->ANNORIF
END
NUMERO 3
BEGIN
KEY "R - imp. rimb"
PROMPT 41 1 ""
FIELD 75->IMPRIMB
PICTURE "###.###.###.###^^^"
END
NUMERO 4
BEGIN
KEY "R - Compensi"
PROMPT 62 1 ""
FIELD 75->COMPENSI
PICTURE "###.###.###.###^^^"
END
NUMERO 5
BEGIN
KEY "R - MeseRif"
PROMPT 85 1 ""
FIELD 75->MESERIF
END
NUMERO 6
BEGIN
KEY "R - AnnoRif"
PROMPT 89 1 ""
FIELD 75->ANNORIF
END
NUMERO 7
BEGIN
KEY "R - imp. rimb"
PROMPT 99 1 ""
FIELD 75->IMPRIMB
PICTURE "###.###.###.###^^^"
END
NUMERO 8
BEGIN
KEY "R - Compensi"
PROMPT 120 1 ""
FIELD 75->COMPENSI
PICTURE "###.###.###.###^^^"
END
END
SECTION HEADER EVEN 1
NUMERO 1
BEGIN
KEY "P Imp.versata"
PROMPT 24 1 ""
FIELD 73->IMPOSTA
PICTURE "###.###.###.###^^^"
END
NUMERO 2
BEGIN
KEY "P Inter.lav.dip"
PROMPT 41 1 ""
FIELD 73->INTERDIP
PICTURE "###.###.###.###^^^"
END
NUMERO 3
BEGIN
KEY "P Inter.dat.lav."
PROMPT 56 1 ""
FIELD 73->INTERDAT
PICTURE "###.###.###.###^^^"
END
STRINGA 4
BEGIN
KEY "P Modalita' vers"
PROMPT 76 1 ""
FIELD 73->TIPOVERS
END
STRINGA 5
BEGIN
KEY "P Cod.trib"
PROMPT 82 1 ""
FIELD 73->CODTRIB
END
STRINGA 6
BEGIN
KEY "P DATA VERS."
PROMPT 89 1 ""
FIELD 73->DATAVERS
PICTURE "## ^ ## ^####"
END
STRINGA 7
BEGIN
KEY "P Serie"
PROMPT 108 1 ""
FIELD 73->SERIE
END
STRINGA 8
BEGIN
KEY "P Numero"
PROMPT 117 1 ""
FIELD 73->NUMERO
END
END
SECTION HEADER ODD 1
NUMERO 1
BEGIN
KEY "S Imp.versata"
PROMPT 24 1 ""
FIELD 76->IMPOSTA
PICTURE "###.###.###.###^^^"
END
NUMERO 2
BEGIN
KEY "S Inter.lav.dip"
PROMPT 41 1 ""
FIELD 76->INTERDIP
PICTURE "###.###.###.###^^^"
END
NUMERO 3
BEGIN
KEY "S Inter.dat.lav."
PROMPT 56 1 ""
FIELD 76->INTERDAT
PICTURE "###.###.###.###^^^"
END
STRINGA 4
BEGIN
KEY "S Modalita' vers"
PROMPT 76 1 ""
FIELD 73->TIPOVERS
END
STRINGA 5
BEGIN
KEY "S Cod.trib"
PROMPT 82 1 ""
FIELD 76->CODTRIB
END
STRINGA 6
BEGIN
KEY "S DATA VERS."
PROMPT 89 1 ""
FIELD 76->DATAVERS
PICTURE "## ^ ## ^####"
END
STRINGA 7
BEGIN
KEY "S Serie"
PROMPT 108 1 ""
FIELD 76->SERIE
END
STRINGA 8
BEGIN
KEY "S Numero"
PROMPT 117 1 ""
FIELD 76->NUMERO
END
END
SECTION FOOTER EVEN 1
NUMERO 1
BEGIN
KEY "Q Mese paga"
PROMPT 27 1 ""
FIELD 74->MESEPAG
END
NUMERO 2
BEGIN
KEY "Q Anno paga"
PROMPT 32 1 ""
FIELD 74->ANNOPAG
END
NUMERO 3
BEGIN
KEY "Q Contr.versato"
PROMPT 41 1 ""
FIELD 74->CONTVERS
PICTURE "###.###.###.###^^^"
END
NUMERO 4
BEGIN
KEY "Q Contr.rimborsati"
PROMPT 65 1 ""
FIELD 74->CONTRIMB
PICTURE "###.###.###.###^^^"
END
NUMERO 5
BEGIN
KEY "Q Interes.e/o soprattasse"
PROMPT 94 1 ""
FIELD 74->INTERESSI
PICTURE "###.###.###.###^^^"
END
STRINGA 6
BEGIN
KEY "Q Cod.Reg"
PROMPT 123 1 ""
FIELD 74->CODREG
END
END
SECTION FOOTER ODD 1
NUMERO 1
BEGIN
KEY "T Mese paga"
PROMPT 27 1 ""
FIELD 77->MESEPAG
END
NUMERO 2
BEGIN
KEY "T Anno paga"
PROMPT 32 1 ""
FIELD 77->ANNOPAG
END
NUMERO 3
BEGIN
KEY "T Contr.versato"
PROMPT 41 1 ""
FIELD 77->CONTVERS
PICTURE "###.###.###.###^^^"
END
NUMERO 4
BEGIN
KEY "T Contr.rimborsati"
PROMPT 65 1 ""
FIELD 77->CONTRIMB
PICTURE "###.###.###.###^^^"
END
NUMERO 5
BEGIN
KEY "T Interes.e/o soprattasse"
PROMPT 94 1 ""
FIELD 77->INTERESSI
PICTURE "###.###.###.###^^^"
END
STRINGA 6
BEGIN
KEY "T Cod.Reg"
PROMPT 123 1 ""
FIELD 77->CODREG
END
END
SECTION FOOTER FIRST 25
STRINGA 650
BEGIN
KEY "Quadro A"
PROMPT 19 3 ""
FIELD 37->QCOMP[1,1]
END
STRINGA 653
BEGIN
KEY "Quadro A3"
PROMPT 24 3 ""
FIELD 37->QCOMP[4,4]
END
STRINGA 660
BEGIN
KEY "Quadro B"
PROMPT 29 3 ""
FIELD 37->QCOMP[5,5]
END
STRINGA 661
BEGIN
KEY "Quadro B1"
PROMPT 34 3 ""
FIELD 37->QCOMP[6,6]
END
STRINGA 670
BEGIN
KEY "Quadro C"
PROMPT 39 3 ""
FIELD 37->QCOMP[7,7]
END
STRINGA 680
BEGIN
KEY "Quadro D"
PROMPT 44 3 ""
FIELD 37->QCOMP[8,8]
END
STRINGA 681
BEGIN
KEY "Quadro D1"
PROMPT 49 3 ""
FIELD 37->QCOMP[9,9]
END
STRINGA 690
BEGIN
KEY "Quadro E"
PROMPT 54 3 ""
FIELD 37->QCOMP[10,10]
END
STRINGA 691
BEGIN
KEY "Quadro E1"
PROMPT 60 3 ""
FIELD 37->QCOMP[11,11]
END
STRINGA 692
BEGIN
KEY "Quadro E2"
PROMPT 65 3 ""
FIELD 37->QCOMP[12,12]
END
STRINGA 700
BEGIN
KEY "Quadro F"
PROMPT 70 3 ""
FIELD 37->QCOMP[13,13]
END
STRINGA 701
BEGIN
KEY "Quadro F1"
PROMPT 75 3 ""
FIELD 37->QCOMP[14,14]
END
STRINGA 702
BEGIN
KEY "Quadro F2"
PROMPT 80 3 ""
FIELD 37->QCOMP[15,15]
END
STRINGA 710
BEGIN
KEY "Quadro G"
PROMPT 85 3 ""
FIELD 37->QCOMP[16,16]
END
STRINGA 711
BEGIN
KEY "Quadro G1"
PROMPT 90 3 ""
FIELD 37->QCOMP[17,17]
END
STRINGA 720
BEGIN
KEY "Quadro H"
PROMPT 95 3 ""
FIELD 37->QCOMP[18,18]
END
STRINGA 730
BEGIN
KEY "Quadro I"
PROMPT 100 3 ""
FIELD 37->QCOMP[19,19]
END
STRINGA 651
BEGIN
KEY "Quadro A1"
PROMPT 19 7 ""
FIELD 37->QCOMP[2,2]
END
STRINGA 652
BEGIN
KEY "Quadro A2"
PROMPT 24 7 ""
FIELD 37->QCOMP[3,3]
END
STRINGA 760
BEGIN
KEY "Quadro N"
PROMPT 29 7 ""
FIELD 37->QCOMP[20,20]
END
STRINGA 780
BEGIN
KEY "Quadro P"
PROMPT 35 7 ""
FIELD 37->QCOMP[21,21]
END
STRINGA 790
BEGIN
KEY "Quadro Q"
PROMPT 40 7 ""
FIELD 37->QCOMP[22,22]
END
STRINGA 800
BEGIN
KEY "Quadro R"
PROMPT 45 7 ""
FIELD 37->QCOMP[23,23]
END
STRINGA 810
BEGIN
KEY "Quadro S"
PROMPT 50 7 ""
FIELD 37->QCOMP[24,24]
END
STRINGA 820
BEGIN
KEY "Quadro T"
PROMPT 55 7 ""
FIELD 37->QCOMP[25,25]
END
STRINGA 821
BEGIN
PROMPT 80 9 ""
KEY "Numero quadri aggiuntivi"
FIELD 37->H0NQLAGG
END
STRINGA 822
BEGIN
PROMPT 72 11 ""
KEY "Numero quadri su supporto magnetico"
FIELD 37->NSUPPM
END
DATA 823
BEGIN
KEY "Data"
PROMPT 29 16 ""
END
STRINGA 824
BEGIN
KEY "Presidente"
PROMPT 51 15 ""
END
STRINGA 825
BEGIN
KEY "Dichiarante"
PROMPT 95 15 ""
FIELD 6->RAGSOC
END
STRINGA 826
BEGIN
KEY "CODICE FISCALE CAAF"
PROMPT 48 18 ""
FIELD 104@->S1
END
NUMERO 827
BEGIN
KEY "NUMERO ISCRIZIONE ALBO"
PROMPT 122 18 ""
FIELD 104@->I1
PICTURE "#####"
END
STRINGA 828
BEGIN
KEY "CODICE FISCALE PROF."
PROMPT 92 20 ""
FIELD 106@->COFI
END
STRINGA 829
BEGIN
KEY "FIRMA"
PROMPT 84 25 ""
FIELD 106@->RAGSOC
END
END
END

985
m770/77stba.cpp Executable file
View File

@ -0,0 +1,985 @@
// Stampa base
#include "77stba.h"
TBase1::TBase1(const char* sNomeForm, const char* quadro) : TDicForm(sNomeForm, quadro)
{
r = new TRelation(LF_SOCI);
r->add(LF_ANAG, "TIPOA=TIPOASOC|CODANAGR=CODANAGRSO");
r->add(LF_ANAGFIS, "CODANAGR=CODANAGR",1, LF_ANAG);
r->add(LF_COMUNI, "COM=COMNASC",1,LF_ANAGFIS);
c = new TCursor(r);
_bAllegSoci=FALSE;
}
TBase1::~TBase1()
{
delete r;
delete c;
}
void TBase1::stampa_corpo(TPrinter& pr)
{
TPrint_section& body = section('B', first_page);
body.reset();
body.update();
const int body_righe = body.height();
for (int i = 0; i < body_righe; i++)
{
pr.print(body.row(i));
_RigaCorr++;
}
if (usa_progind())
progind()->addstatus(1);
}
// accetta solo quelli con qualifica=A,B o C
bool bFiltraSoci(const TRelation* rel)
{
TString sQual(3);
sQual = rel->lfile().get("RICQUAL");
return sQual=="A" || sQual=="B" || sQual=="C";
}
long TBase1::iContaSoci()
{
TString filtro(20);
filtro.format("CODDITTA=%d",_codditta);
c->setfilter(filtro);
c->set_filterfunction(bFiltraSoci);
(*c)=0L;
return c->items();
}
void TBase1::stampa_soci(TPrinter& pr)
{
TPrint_section& fut = section('F', first_page);
fut.reset();
jump_to_line(pr,_INIZIO_SOCI);
const long iSoci = iContaSoci();
if (iSoci > 11)
{
_bAllegSoci=TRUE;
TPrintrow& rg=fut.row(0);
rg.put("VEDERE ALLEGATO", 25);
pr.print(rg);
_RigaCorr++;
if (usa_progind()) progind()->addstatus(1);
}
else
{
int i=0;
TString sRagsoc,sSesso,sComuneNa,sProvNa,sDataNa,sCodFis,sCodQua;
for ((*c)=0L; c->pos() < c->items(); ++(*c))
{
TPrintrow& rg=fut.row(i++);
sCodQua=c->file().get("RICQUAL");
sRagsoc=c->file(LF_ANAG).get("RAGSOC");
sCodFis=c->file(LF_ANAG).get("COFI");
sDataNa=c->file(LF_ANAGFIS).get("DATANASC");
sSesso=c->file(LF_ANAGFIS).get("SESSO");
sComuneNa=c->file(LF_COMUNI).get("DENCOM");
sProvNa=c->file(LF_COMUNI).get("PROVCOM");
fut.field(0).set(sRagsoc);
rg.put(sRagsoc,fut.field(0).x()-1);
fut.field(1).set(sSesso);
rg.put(sSesso,fut.field(1).x()-1);
fut.field(2).set(sComuneNa);
rg.put(sComuneNa,fut.field(2).x()-1);
fut.field(3).set(sProvNa);
rg.put(sProvNa,fut.field(3).x()-1);
fut.field(4).set(sDataNa);
rg.put(sDataNa,fut.field(4).x()-1);
fut.field(5).set(sCodFis);
rg.put(sCodFis,fut.field(5).x()-1);
fut.field(6).set(sCodQua);
rg.put(sCodQua,fut.field(6).x()-1);
pr.print(rg);
_RigaCorr++;
if (usa_progind()) progind()->addstatus(1);
}
}
}
bool TBase1::print(const long codditta, const long NumFis, const long NumNoFis)
{
TCursor* cur = cursor();
TPrinter& pr = printer();
_codditta=codditta;
if (!InitPrint(codditta))
return FALSE;
pr.formlen(BASE_FORMLEN);
(*cur)=0L;
if (_modulaser)
{
ClearFlagModulaser();
TPrintrow r;
if (!_GiaMessoStartDoc)
put_modulaser(r, STARTDOC);
put_modulaser(r, STARTDITTA);
put_modulaser(r, STARTPAGE, 1);
pr.print(r);
_RigaCorr++;
}
jump_to_line(pr, prima_riga(PRIMA));
stampa_corpo(pr);
stampa_soci(pr);
next_page(pr);
close_print();
return TRUE;
}
void TBase2::stampa_corpo(TPrinter& pr)
{
TPrint_section& body = section('B', even_page);
body.reset();
body.update();
const int body_righe = body.height();
for (int i = 0; i < body_righe; i++)
{
pr.print(body.row(i));
_RigaCorr++;
}
if (usa_progind())
progind()->addstatus(1);
}
bool TBase2::print(const long codditta, const long NumFis, const long NumNoFis)
{
TCursor* cur = cursor();
TPrinter& pr = printer();
_codditta=codditta;
filtra(codditta);
_RigaCorr=0;
(*cur)=0L;
jump_to_line(pr, prima_riga(PRIMA));
stampa_corpo(pr);
next_page(pr);
close_print();
return TRUE;
}
void TBase3::stampa_testata(TPrinter& pr)
{
TPrint_section& hh = section('H', first_page);
hh.reset();
hh.update();
const int hhr = hh.height();
for (int i = 0; i < hhr; i++)
{
pr.print(hh.row(i));
_RigaCorr++;
}
if (usa_progind())
progind()->addstatus(1);
}
int TBase3::stampa_L(TPrinter& pr,const int iChiaveL)
{
long codit=0L;
TPrint_section& body = section('B', odd_page);
body.reset();
TCursor& cur = *cursor();
// Le chiavi nel file e nel .ini sono saggiamente scambiate
if (iChiaveL==2) cur.setkey(1);
else cur.setkey(2);
filtra(_codditta);
cur=0L;
bool finito=FALSE;
int righe=0;
while (!finito)
{
body.update();
const int body_righe = body.height();
for (int i = 0; i < body_righe; i++)
{
TPrintrow& rr=body.row(i);
pr.print(rr);
rr.reset();
_RigaCorr++;
}
if (usa_progind())
progind()->addstatus(1);
righe++;
++cur;
codit=cur.file().get_long("CODDITTA");
bool buono=codit==_codditta;
// Guarda se e' necessario stampare l'aggiuntivo
_bAggiuntivoL = buono && righe>14;
finito=righe>14 || codit!=_codditta;
}
return righe;
}
void TBase3::stampa_totali_L(TPrinter& pr)
{
// La sezione f last contiene solo due totali aggiornati con add nel form
TPrint_section& hh = section('F', last_page);
// hh.reset();
hh.update();
const int hhr = hh.height();
for (int i = 0; i < hhr; i++)
{
pr.print(hh.row(i));
_RigaCorr++;
}
if (usa_progind())
progind()->addstatus(1);
}
bool TBase3::print(const long codditta, const long NumFis, const long NumNoFis)
{
_bAggiuntivoL=TRUE;
TCursor* cur = cursor();
TPrinter& pr = printer();
_codditta=codditta;
filtra(codditta);
_RigaCorr=0;
(*cur)=0L;
jump_to_line(pr, prima_riga(PRIMA));
// Stampa i codici concessione e tesoreria
stampa_testata(pr);
// Legge dai par.studio l'ordinamento da usare per L
TConfig conf(CONFIG_STUDIO);
const int iChiaveL = (int)conf.get_long("FlStQl", "77");
const int righe_stampate=stampa_L(pr,iChiaveL);
// Se la stampa prosegue i totali vanno sull'aggiuntivo NON qui
if (!_bAggiuntivoL)
{
jump_to_line(pr,_RIGA_TOTALI_L);
stampa_totali_L(pr);
}
next_page(pr);
close_print();
return TRUE;
}
const char* TRigaN::sMeseRif() const
{
__dep16="";
__dep16 << _MeseRif;
return __dep16;
}
const char* TRigaN::sAnnoRif() const
{
__dep16="";
__dep16 << _AnnoRif;
return __dep16;
}
// Ordina le righe N per periodo di riferimento
int TRigaN::compare(const TSortable& s) const
{
const TRigaN& rec = (const TRigaN&)s;
const int da = _AnnoRif - rec._AnnoRif;
const int dm = _MeseRif - rec._MeseRif;
if (da==0)
return dm;
else
return da;
}
TRigaN::TRigaN(const TLocalisamfile& qn)
{
_pos = qn.recno();
const TRectype& rec = qn.curr();
_MeseRif = rec.get_int("MESERIF");
_AnnoRif = rec.get_int("ANNORIF");
// Nel quadro R si chiama diversamente @!#@!!!
if (qn.num() == LF_QUAN)
_ImpRimb = rec.get_real("IMPOSTA");
else
_ImpRimb = rec.get_real("IMPRIMB");
_CompAss = rec.get_real("COMPENSI");
}
int TRigheNR::fill(const long codditta,TLocalisamfile& qnr)
{
long ditta=0L;
// Si posiziona sul primo della ditta corrente
qnr.zero();
qnr.put("CODDITTA",codditta);
qnr.read()==NOERR;
ditta=qnr.get_long("CODDITTA");
if (ditta!=codditta) return 0;
// Legge tutti quelli della ditta corrente
for (; !qnr.eof(); qnr.next())
{
ditta=qnr.get_long("CODDITTA");
if (ditta!=codditta) break;
TRigaN* n = new TRigaN(qnr);
if (n->pos() >= 0)
_data.add(n);
else
delete n;
}
_data.sort();
const int i = _data.items();
return i;
}
const char* TRigaQT::sMesePag() const
{
__dep16="";
__dep16 << _MesePag;
return __dep16;
}
const char* TRigaQT::sAnnoPag() const
{
__dep16="";
__dep16 << _AnnoPag;
return __dep16;
}
// Ordina le righe N per periodo di riferimento
int TRigaQT::compare(const TSortable& s) const
{
const TRigaQT& rec = (const TRigaQT&)s;
const int da = _AnnoPag - rec._AnnoPag;
const int dm = _MesePag - rec._MesePag;
if (da==0)
return dm;
else
return da;
}
TRigaQT::TRigaQT(const TLocalisamfile& qt)
{
const TRectype& rec = qt.curr();
_MesePag = rec.get_int("MESEPAG");
_AnnoPag = rec.get_int("ANNOPAG");
_ContVers = rec.get_real("CONTVERS");
_ContRimb = rec.get_real("CONTRIMB");
_Interessi=rec.get_real("INTERESSI");
_sCodReg=rec.get("CODREG");
}
int TRigheQT::fill(const long codditta,TLocalisamfile& qt)
{
long ditta=0L;
// Si posiziona sul primo della ditta corrente
qt.zero();
qt.put("CODDITTA",codditta);
qt.read()==NOERR;
ditta=qt.get_long("CODDITTA");
if (ditta!=codditta) return 0;
// Legge tutti quelli della ditta corrente
for (; !qt.eof(); qt.next())
{
ditta=qt.get_long("CODDITTA");
if (ditta!=codditta) break;
TRigaQT* n = new TRigaQT(qt);
if (n->pos() >= 0)
_data.add(n);
else
delete n;
}
_data.sort();
const int i = _data.items();
return i;
}
// Ordina le righe N per periodo di riferimento
int TRigaPS::compare(const TSortable& s) const
{
const TRigaPS& rec = (const TRigaPS&)s;
return _dDv<rec.dDataVers();
}
TRigaPS::TRigaPS(const TLocalisamfile& qt)
{
const TRectype& rec = qt.curr();
_dDv = rec.get_date("DATAVERS");
_rImp = rec.get_real("IMPOSTA");
_rIntDip = rec.get_real("INTERDIP");
_rIntDat = rec.get_real("INTERDAT");
_sTipoV = rec.get("TIPOVERS");
_sCodTrib= rec.get("CODTRIB");
_sSerie = rec.get("SERIE");
_sNumero = rec.get("NUMERO");
}
int TRighePS::fill(const long codditta,TLocalisamfile& ps)
{
long ditta=0L;
// Si posiziona sul primo della ditta corrente
ps.zero();
ps.put("CODDITTA",codditta);
ps.read()==NOERR;
ditta=ps.get_long("CODDITTA");
if (ditta!=codditta) return 0;
// Legge tutti quelli della ditta corrente
for (; !ps.eof(); ps.next())
{
ditta=ps.get_long("CODDITTA");
if (ditta!=codditta) break;
TRigaPS* n = new TRigaPS(ps);
if (n->pos() >= 0)
_data.add(n);
else
delete n;
}
_data.sort();
const int i = _data.items();
return i;
}
void TBase4::stampa_testata(TPrinter& pr)
{
TPrint_section& hh = section('H', first_page);
hh.reset();
hh.update();
const int hhr = hh.height();
for (int i = 0; i < hhr; i++)
{
pr.print(hh.row(i));
_RigaCorr++;
}
if (usa_progind())
progind()->addstatus(1);
}
void TBase4::fill_riga_QT(TPrint_section& sec,const int num)
{
TString sVal;
int start=0,end=5;
for (int i = start; i < end; i++)
{
TForm_item& fi = sec.field(i);
if (num < _righeQT.items())
{
const TRigaQT& rN = _righeQT[num];
if (i==start)
sVal=rN.sMesePag();
else if (i==start+1)
sVal=rN.sAnnoPag();
else if (i==start+2)
sVal=rN.ContVers(fi.picture());
else if (i==start+3)
sVal=rN.ContRimb(fi.picture());
else if (i==start+4)
sVal=rN.Interessi(fi.picture());
else if (i==start+5)
sVal=rN.CodReg();
}
else
sVal="";
fi.set(sVal);
TPrintrow& row=sec.row(0);
row.put(sVal,fi.x()-1);
}
}
void TBase4::stampa_Q(TPrinter& pr)
{
TPrint_section& body = section('F', even_page);
body.reset();
TLocalisamfile qp(LF_QUAQ);
_righeQT.fill(_codditta,qp);
_bAggQ = _righeQT.items() > _RIGHE_Q;
int riga=0;
bool FinitaSezione=FALSE;
while (!FinitaSezione)
{
// Stampa la parte sinistra (primi 4 campi)
fill_riga_QT(body,riga);
TPrintrow& rr=body.row(0);
pr.print(rr);
rr.reset();
riga++;
_RigaCorr++;
if (usa_progind())
progind()->addstatus(1);
FinitaSezione=riga>_RIGHE_Q-1;
}
// Salta due righe alla fine
stampa_righe_vuote(pr,2);
}
void TBase4::stampa_T(TPrinter& pr)
{
TPrint_section& body = section('F', odd_page);
body.reset();
TLocalisamfile qp(LF_QUAT);
_righeQT.fill(_codditta,qp);
_bAggT = _righeQT.items() > _RIGHE_T;
int riga=0;
bool FinitaSezione=FALSE;
while (!FinitaSezione)
{
// Stampa la parte sinistra (primi 4 campi)
fill_riga_QT(body,riga);
TPrintrow& rr=body.row(0);
pr.print(rr);
rr.reset();
riga++;
_RigaCorr++;
if (usa_progind())
progind()->addstatus(1);
FinitaSezione=riga>_RIGHE_T-1;
}
}
void TBase4::fill_riga_PS(TPrint_section& sec,const int num)
{
TString sVal;
int start=0,end=7;
for (int i = start; i < end; i++)
{
TForm_item& fi = sec.field(i);
if (num < _righePS.items())
{
const TRigaPS& rN = _righePS[num];
if (i==start)
sVal=rN.sImposta(fi.picture());
else if (i==start+1)
sVal=rN.sIntDip(fi.picture());
else if (i==start+2)
sVal=rN.sIntDat(fi.picture());
else if (i==start+3)
sVal=rN.sTipoVers();
else if (i==start+4)
sVal=rN.sCodTrib();
else if (i==start+5)
sVal=rN.sDataVers(fi.picture());
else if (i==start+6)
sVal=rN.sSerie();
else if (i==start+7)
sVal=rN.sNumero();
}
else
sVal="";
fi.set(sVal);
TPrintrow& row=sec.row(0);
row.put(sVal,fi.x()-1);
}
}
void TBase4::stampa_P(TPrinter& pr)
{
TPrint_section& body = section('H', even_page);
body.reset();
TLocalisamfile qp(LF_QUAP);
_righePS.fill(_codditta,qp);
const int items=_righePS.items();
_bAggP = items > _RIGHE_P;
int riga=0;
bool FinitaSezione=FALSE;
while (!FinitaSezione)
{
// Stampa la parte sinistra (primi 4 campi)
fill_riga_PS(body,riga);
TPrintrow& rr=body.row(0);
pr.print(rr);
rr.reset();
riga++;
_RigaCorr++;
if (usa_progind())
progind()->addstatus(1);
FinitaSezione=riga>_RIGHE_P-1;
}
// Salta due righe alla fine
stampa_righe_vuote(pr,2);
}
void TBase4::stampa_S(TPrinter& pr)
{
TPrint_section& body = section('H', odd_page);
body.reset();
TLocalisamfile qp(LF_QUAS);
_righePS.fill(_codditta,qp);
_bAggS = _righePS.items() > _RIGHE_S;
int riga=0;
bool FinitaSezione=FALSE;
while (!FinitaSezione)
{
// Stampa la parte sinistra (primi 4 campi)
fill_riga_PS(body,riga);
TPrintrow& rr=body.row(0);
pr.print(rr);
rr.reset();
riga++;
_RigaCorr++;
if (usa_progind())
progind()->addstatus(1);
FinitaSezione=riga>_RIGHE_S-1;
}
// Salta due righe alla fine
stampa_righe_vuote(pr,2);
}
void TBase4::stampa_R(TPrinter& pr)
{
TPrint_section& body = section('B', even_page);
body.reset();
TLocalisamfile qr(LF_QUAR);
_righeNR.fill(_codditta,qr);
const int items=_righeNR.items();
// se iRigheNR > 2 => bisogna stampare anche l'allegato
_bAggR = items > _RIGHE_R;
fill_riga_NR(body,0,0);
fill_riga_NR(body,1,1);
TPrintrow& rr=body.row(0);
pr.print(rr);
rr.reset();
_RigaCorr++;
if (usa_progind())
progind()->addstatus(1);
// Salta due righe alla fine
stampa_righe_vuote(pr,2);
}
void TBase4::fill_riga_NR(TPrint_section& sec,const int num, const int side)
{
TString sVal;
int start,end;
if (side==0)
{
start=0;
end=4;
}
else
{
start=4;
end=8;
}
for (int i = start; i < end; i++)
{
TForm_item& fi = sec.field(i);
if (num < _righeNR.items())
{
const TRigaN& rN = _righeNR[num];
if (i==start)
sVal=rN.sMeseRif();
else if (i==start+1)
sVal=rN.sAnnoRif();
else if (i==start+2)
sVal=rN.ImpRimb(fi.picture());
else if (i==start+3)
sVal=rN.CompAss(fi.picture());
}
else
sVal="";
fi.set(sVal);
TPrintrow& row=sec.row(0);
row.put(sVal,fi.x()-1);
}
}
void TBase4::stampa_righe_vuote(TPrinter& pr,const int righe)
{
TPrintrow rr;
for (int i=0; i<righe; i++)
{
pr.print(rr);
rr.reset();
_RigaCorr++;
if (usa_progind())
progind()->addstatus(1);
}
}
void TBase4::stampa_N(TPrinter& pr)
{
TPrint_section& body = section('B', odd_page);
body.reset();
TLocalisamfile qn(LF_QUAN);
_righeNR.fill(_codditta,qn);
// se iRigheN > 6 => bisogna stampare anche l'allegato
_bAggN = _righeNR.items() > _RIGHE_N;
int num=0;
int riga=0;
bool FinitaSezione=FALSE;
while (!FinitaSezione)
{
// Stampa la parte sinistra (primi 4 campi)
fill_riga_NR(body,num,0);
num+=3;
fill_riga_NR(body,num,1);
TPrintrow& rr=body.row(0);
pr.print(rr);
rr.reset();
riga++;
_RigaCorr++;
if (usa_progind())
progind()->addstatus(1);
num-=2;
FinitaSezione=riga>2;
}
// Salta due righe alla fine
stampa_righe_vuote(pr,2);
}
void TBase4::stampa_fine(TPrinter& pr)
{
TPrint_section& sec = section('F', first_page);
sec.reset();
sec.update();
const int hhr = sec.height();
for (int i = 0; i < hhr; i++)
{
pr.print(sec.row(i));
_RigaCorr++;
}
if (usa_progind())
progind()->addstatus(1);
}
bool TBase4::print(const long codditta, const long NumFis, const long NumNoFis)
{
_bAggN=_bAggP=_bAggR=_bAggQ=_bAggS=_bAggT=FALSE;
TCursor* cur = cursor();
TPrinter& pr = printer();
_codditta=codditta;
filtra(codditta);
_RigaCorr=0;
(*cur)=0L;
jump_to_line(pr, prima_riga(PRIMA));
// Stampa da M1 a M6
stampa_testata(pr);
stampa_N(pr);
stampa_P(pr);
stampa_Q(pr);
stampa_R(pr);
stampa_S(pr);
stampa_T(pr);
stampa_fine(pr);
next_page(pr);
close_print();
return TRUE;
}
bool TStampaBase::user_create()
{
_fBase1 = new TBase1("77base1", "Base");
_fBase2 = new TBase2("77base2", "Base");
_fBase3 = new TBase3("77base3", "Base");
_fBase4 = new TBase4("77base4", "Base");
// Adesso bisogna chiamare set_cursor per impostare il cursore dentro
// al form. Sarebbe meglio fare in modo che il form usi sempre il cursore
// letto dal .frm, senza bisogno di passarglielo dall'applicazione
_cur = _fBase1->TForm::cursor();
_fBase1->set_cursor(_cur);
_cur2 = _fBase2->TForm::cursor();
_fBase2->set_cursor(_cur2);
_cur3 = _fBase3->TForm::cursor();
_fBase3->set_cursor(_cur3);
_cur4 = _fBase4->TForm::cursor();
_fBase4->set_cursor(_cur4);
return TRUE;
}
bool TStampaBase::user_destroy()
{
delete _fBase1;
delete _fBase2;
delete _fBase3;
delete _fBase4;
return TRUE;
}
bool TStampaBase::print_quadro(const int OffsetDitta, const bool modulaser)
{
int start=0, last=0;
// Setta formlen prima di printer.open per avere la lunghezza giusta nel caso di
// stampa a video
printer().formlen(BASE_FORMLEN);
bool ok = printer().open();
_fBase1->set_modulaser(modulaser);
_fBase2->set_modulaser(modulaser);
_fBase3->set_modulaser(modulaser);
_fBase4->set_modulaser(modulaser);
// Dice se deve eseguire il posizionamento del foglio.
// Se stampa piu' ditte va eseguito solo sulla prima
// Occhio a non spostarlo nel ciclo.
_fBase1->set_posiziona(TRUE);
if (OffsetDitta >= 0)
{
start = OffsetDitta;
last = OffsetDitta;
}
else
last = ditte().items() - 1;
for (int i = start; i <= last; i++)
{
TString CoFiDic(20);
TToken_string riga(ditte()[i]);
const long codditta = atol(riga.get(0));
const TipoDitta tipo = (TipoDitta)riga.get_int(1);
const long fis = riga.get_long(2);
const long nofis = riga.get_long(3);
const bool LastFis = (bool)riga.get_int(4);
const bool LastNoFis = (bool)riga.get_int(5);
// I gruppi dich-estinti hanno totali comuni
// Si presume che nell'array vengano messi nell'ordine dich-estinti
if (tipo == normale || tipo == dichiarante)
_fBase1->azzera_totali();
if (tipo == estinto)
CoFiDic = riga.get(6);
// Dice al form che tipo di ditta si stampa
_fBase1->set_tipo_ditta(tipo);
// Numera i fogli a partire da 1 per ogni ditta normale e da 1 e di seguito negli estinti
// per i sogg. dichiaranti
if (tipo == normale || tipo == dichiarante)
_fBase1->set_num_foglio(1);
// Se la ditta e' estinta dice al form il cod.fis. del dichiarante
if (tipo == estinto)
_fBase1->set_cofi_dic(CoFiDic);
// Dice al form che e' l'ultima ditta
if (i == last)
_fBase1->set_last_ditta(TRUE);
_fBase1->print(codditta, fis, nofis);
_fBase2->print(codditta, fis, nofis);
_fBase3->print(codditta, fis, nofis);
_fBase4->print(codditta, fis, nofis);
}
printer().close();
return ok;
}
void TQuadroL::stampa_testata(TPrinter& pr)
{
TPrint_section& hh = section('H', first_page);
hh.reset();
hh.update();
const int hhr = hh.height();
for (int i = 0; i < hhr; i++)
{
pr.print(hh.row(i));
_RigaCorr++;
}
if (usa_progind())
progind()->addstatus(1);
}
bool TQuadroL::stampa_L(TPrinter& pr,const long lStartRec,const int iRecL)
{
long codit=0L;
bool eof=FALSE;
TPrint_section& body = section('B', odd_page);
body.reset();
TCursor& cur = *cursor();
cur=lStartRec;
bool finito=FALSE;
int righe=0;
while (!finito)
{
body.update();
const int body_righe = body.height();
for (int i = 0; i < body_righe; i++)
{
TPrintrow& rr=body.row(i);
pr.print(rr);
rr.reset();
_RigaCorr++;
}
if (usa_progind())
progind()->addstatus(1);
righe++;
++cur;
eof=cur.pos()==cur.items()-1;
finito = (righe==iRecL-1) || eof;
}
return eof;
}
void TQuadroL::stampa_totali_L(TPrinter& pr)
{
// La sezione f last contiene solo due totali aggiornati con add nel form
TPrint_section& hh = section('F', last_page);
// hh.reset();
hh.update();
const int hhr = hh.height();
for (int i = 0; i < hhr; i++)
{
pr.print(hh.row(i));
_RigaCorr++;
}
if (usa_progind())
progind()->addstatus(1);
}
bool TQuadroL::print(const long codditta, const long NumFis, const long NumNoFis)
{
TCursor* cur = cursor();
TPrinter& pr = printer();
if (!InitPrint(codditta))
return FALSE;
// Legge dai par.studio l'ordinamento da usare per L
TConfig conf(CONFIG_STUDIO);
const int iChiaveL = (int)conf.get_long("FlStQl", "77");
if (iChiaveL==2) cur->setkey(1);
else cur->setkey(2);
int lOffsetL=_START_AGG_L;
bool finito=FALSE;
while (!finito)
{
jump_to_line(pr, prima_riga(PRIMA));
stampa_testata(pr);
finito=stampa_L(pr,lOffsetL,_REC_PRIMA_AGG_L);
next_page(pr);
if (!finito)
{
lOffsetL+=_REC_PRIMA_AGG_L;
finito=stampa_L(pr,lOffsetL,_REC_SECONDA_AGG_L);
}
if (finito)
{
jump_to_line(pr,_RIGA_TOTALI_AGG_L);
stampa_totali_L(pr);
}
next_page(pr);
}
close_print();
return TRUE;
}
bool TStampaQuadroAggL::user_create()
{
_form = new TQuadroL("77QL", quadro());
return TRUE;
}
bool TStampaQuadroAggL::user_destroy()
{
delete _form;
return TRUE;
}

288
m770/77stba.h Executable file
View File

@ -0,0 +1,288 @@
#ifndef _77STBA_H
#define _77STBA_H
#include "77stq.h"
HIDDEN const int BASE_FORMLEN = 73;
HIDDEN const int BASE_PAGINE = 4;
const int _RIGHE_N = 6;
const int _RIGHE_R = 2;
const int _RIGHE_P = 4;
const int _RIGHE_Q = 4;
const int _RIGHE_S = 4;
const int _RIGHE_T = 4;
class TBase1 : public TDicForm
{
private:
long _codditta;
TRelation* r; // usate per contare i soci
TCursor* c;
bool _bAllegSoci;
long iContaSoci();
protected:
void stampa_corpo(TPrinter& pr);
void stampa_soci(TPrinter& pr);
bool bAllegSoci() const { return _bAllegSoci; }
virtual int dic_form_len() const { return BASE_FORMLEN-2; }
virtual void next_page(TPrinter& pr) { fill_page(pr, -1); }
virtual void stampa_totali(TPrinter& pr) {}
virtual void aggiorna_totali(const char tipo) {}
virtual void set_body(TPrinter& pr, const char tipo) {}
virtual int prima_riga(PaginaQuadro p) const { return 11; }
public:
virtual bool print(const long codditta, const long NumFis, const long NumNoFis);
TBase1(const char* sNomeForm, const char* quadro);
virtual ~TBase1();
};
const int _INIZIO_SOCI=56;
class TBase2 : public TDicForm
{
private:
long _codditta;
protected:
void stampa_corpo(TPrinter& pr);
virtual int dic_form_len() const { return BASE_FORMLEN; }
virtual void next_page(TPrinter& pr) { fill_page(pr, -1); }
virtual void set_body(TPrinter& pr, const char tipo) {}
virtual int prima_riga(PaginaQuadro p) const { return 3;}
public:
virtual bool print(const long codditta, const long NumFis, const long NumNoFis);
TBase2(const char* sNomeForm, const char* quadro) : TDicForm(sNomeForm, quadro) {}
virtual ~TBase2() {}
};
class TBase3 : public TDicForm
{
private:
long _codditta;
bool _bAggiuntivoL; // se necessario stampare aggiuntivo L
protected:
void stampa_testata(TPrinter& pr);
void stampa_totali_L(TPrinter& pr);
bool aggiuntivoL() const { return _bAggiuntivoL; }
int stampa_L(TPrinter& pr,const int iChiaveL);
virtual int dic_form_len() const { return BASE_FORMLEN; }
virtual void next_page(TPrinter& pr) { fill_page(pr, -1); }
virtual void set_body(TPrinter& pr, const char tipo) {}
virtual int prima_riga(PaginaQuadro p) const { return 3;}
public:
virtual bool print(const long codditta, const long NumFis, const long NumNoFis);
TBase3(const char* sNomeForm, const char* quadro) : TDicForm(sNomeForm, quadro) {}
virtual ~TBase3() {}
};
const int _RIGA_TOTALI_L = 65;
class TRigaN : public TSortable
{
TRecnotype _pos;
int _MeseRif,_AnnoRif; // periodo di riferimento
real _ImpRimb,_CompAss; // importi
public:
virtual int compare(const TSortable& s) const;
TRecnotype pos() const { return _pos; }
const char* sMeseRif() const;
const char* sAnnoRif() const;
const int iMeseRif() const { return _MeseRif; }
const int iAnnoRif() const { return _AnnoRif; }
const char* ImpRimb(const char* pic) const { return _ImpRimb.string(pic); }
const char* CompAss(const char* pic) const { return _CompAss.string(pic); }
TRigaN(const TLocalisamfile& qn);
virtual ~TRigaN() { }
};
class TRigheNR : public TObject
{
TArray _data;
protected:
const TRigaN& rigaN(int i) const { return (const TRigaN&)_data[i]; }
public:
const TRigaN& operator[](int i) const { return rigaN(i); }
int fill(const long codditta,TLocalisamfile& qnr);
int items() const { return _data.items(); }
TRigheNR() { }
virtual ~TRigheNR() { }
};
class TRigaQT : public TSortable
{
int _MesePag,_AnnoPag; // periodo di riferimento
real _ContVers,_ContRimb,_Interessi; // importi
TString _sCodReg;
TRecnotype _pos;
public:
virtual int compare(const TSortable& s) const;
TRecnotype pos() const { return _pos; }
const char* sMesePag() const;
const char* sAnnoPag() const;
const int iMesePag() const { return _MesePag; }
const int iAnnoPag() const { return _AnnoPag; }
const char* ContVers(const char* pic) const { return _ContVers.string(pic); }
const char* ContRimb(const char* pic) const { return _ContRimb.string(pic); }
const char* Interessi(const char* pic) const { return _Interessi.string(pic); }
const char* CodReg() const { return (const char*)_sCodReg; }
TRigaQT(const TLocalisamfile& qt);
virtual ~TRigaQT() { }
};
class TRigheQT : public TObject
{
TArray _data;
protected:
const TRigaQT& rigaQT(int i) const { return (const TRigaQT&)_data[i]; }
public:
const TRigaQT& operator[](int i) const { return rigaQT(i); }
int fill(const long codditta,TLocalisamfile& qt);
int items() const { return _data.items(); }
TRigheQT() {}
virtual ~TRigheQT() {}
};
class TRigaPS : public TSortable
{
TDate _dDv; // data vers.
real _rImp,_rIntDip,_rIntDat; // importi
TString _sTipoV,_sCodTrib,_sSerie,_sNumero;
TRecnotype _pos;
public:
virtual int compare(const TSortable& s) const;
TRecnotype pos() const { return _pos; }
TDate dDataVers() const { return _dDv; }
const char* sDataVers(const char* pic) const { return _dDv.string(); }
const char* sImposta(const char* pic) const { return _rImp.string(pic); }
const char* sIntDip(const char* pic) const { return _rIntDip.string(pic); }
const char* sIntDat(const char* pic) const { return _rIntDat.string(pic); }
const char* sTipoVers() const { return (const char*)_sTipoV; }
const char* sCodTrib() const { return (const char*)_sCodTrib; }
const char* sSerie() const { return (const char*)_sSerie; }
const char* sNumero() const { return (const char*)_sNumero; }
TRigaPS(const TLocalisamfile& qt);
virtual ~TRigaPS() { }
};
class TRighePS : public TObject
{
TArray _data;
protected:
const TRigaPS& rigaPS(int i) const { return (const TRigaPS&)_data[i]; }
public:
const TRigaPS& operator[](int i) const { return rigaPS(i); }
int fill(const long codditta,TLocalisamfile& ps);
int items() const { return _data.items(); }
TRighePS() {}
virtual ~TRighePS() {}
};
class TBase4 : public TDicForm
{
private:
long _codditta;
TRigheNR _righeNR; // array dei record N e R
TRigheQT _righeQT;
TRighePS _righePS;
bool _bAggN,_bAggP,_bAggR,_bAggQ,_bAggS,_bAggT;
protected:
void stampa_righe_vuote(TPrinter& pr,const int righe);
void fill_riga_QT(TPrint_section& sec,const int num);
void fill_riga_PS(TPrint_section& sec,const int num);
void fill_riga_NR(TPrint_section& sec,const int num, const int side);
void stampa_testata(TPrinter& pr);
void stampa_fine(TPrinter& pr);
void stampa_N(TPrinter& pr);
void stampa_P(TPrinter& pr);
void stampa_Q(TPrinter& pr);
void stampa_R(TPrinter& pr);
void stampa_S(TPrinter& pr);
void stampa_T(TPrinter& pr);
virtual int dic_form_len() const { return BASE_FORMLEN; }
virtual void next_page(TPrinter& pr) { fill_page(pr, -1); }
virtual void set_body(TPrinter& pr, const char tipo) {}
virtual int prima_riga(PaginaQuadro p) const { return 3;}
public:
virtual bool print(const long codditta, const long NumFis, const long NumNoFis);
TBase4(const char* sNomeForm, const char* quadro) : TDicForm(sNomeForm, quadro) {}
virtual ~TBase4() {}
};
const int _FIELD_L = 740;
class TStampaBase : public TStampaQuadro
{
private:
TBase1* _fBase1;
TBase2* _fBase2;
TBase3* _fBase3;
TBase4* _fBase4;
TRelation* _rel;
TCursor* _cur, *_cur2, *_cur3, *_cur4;
protected:
virtual bool user_create();
virtual bool user_destroy();
virtual bool conta_tipi_per() const { return FALSE; }
virtual TDicForm* get_form() const { return _fBase1; }
virtual TCursor* get_cursor() const { return _cur; }
virtual bool print_quadro(const int OffsetDitta, const bool modulaser);
public:
TStampaBase(char livel) : TStampaQuadro("Base", livel) { }
};
///////////////////////////////////////////////////////////////////////////////////////////
//
// Quadro L aggiuntivo
//
///////////////////////////////////////////////////////////////////////////////////////////
class TQuadroL : public TDicForm
{
private:
long _codditta;
protected:
void stampa_testata(TPrinter& pr);
void stampa_totali_L(TPrinter& pr);
bool stampa_L(TPrinter& pr,const long lStartRec,const int iRecL);
virtual int dic_form_len() const { return BASE_FORMLEN; }
virtual void next_page(TPrinter& pr) { fill_page(pr, -1); }
virtual void set_body(TPrinter& pr, const char tipo) {}
virtual int prima_riga(PaginaQuadro p) const { return 3;}
public:
virtual bool print(const long codditta, const long NumFis, const long NumNoFis);
TQuadroL(const char* sNomeForm, const char* quadro) : TDicForm(sNomeForm, quadro) {}
virtual ~TQuadroL() {}
};
const int _RIGA_TOTALI_AGG_L = 65;
const long _START_AGG_L = 17L;
const int _REC_PRIMA_AGG_L = 12;
const int _REC_SECONDA_AGG_L = 14;
class TStampaQuadroAggL : public TStampaQuadro
{
TQuadroL* _form;
protected:
virtual bool user_create();
virtual bool user_destroy();
virtual TDicForm* get_form() const { return _form; }
public:
TStampaQuadroAggL(const char* quadro, char liv):TStampaQuadro(quadro, liv) {}
virtual ~TStampaQuadroAggL() { }
};
#endif

File diff suppressed because it is too large Load Diff

View File

@ -181,9 +181,9 @@ TMask* TQuadriBB1_application::load_mask(int n)
bool TQuadriBB1_application::QBCalcola37(TMask_field& f, KEY k) bool TQuadriBB1_application::QBCalcola37(TMask_field& f, KEY k)
{ {
if (k==K_TAB) TMask& m=f.mask();
if (k==K_TAB && m.is_running())
{ {
TMask& m=f.mask();
real c28=m.get_real(QBF_TIND7494); real c28=m.get_real(QBF_TIND7494);
real c29=m.get_real(QBF_TRID); real c29=m.get_real(QBF_TRID);
real c37 = c28 - c29; real c37 = c28 - c29;