Ho spezzato il file 77stq.cpp creando i file 77stq.h - 77stqab.h - 77stqab.cpp
77stqc.h - 77stqc.cpp git-svn-id: svn://10.65.10.50/trunk@3567 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
041a533510
commit
9657425c9e
792
m770/77qc.frm
792
m770/77qc.frm
@ -1,396 +1,396 @@
|
||||
USE 61
|
||||
JOIN %CA7 TO 61 ALIAS 14 INTO CODTAB=CODCAUS
|
||||
JOIN 9 INTO CODDITTA=CODDITTA
|
||||
JOIN 6 TO 9 ALIAS 116 INTO TIPOA=TIPOA CODANAGR=CODANAGR
|
||||
JOIN 8 TO 6 ALIAS 118 INTO CODANAGR=CODANAGR
|
||||
JOIN 13 TO 8 ALIAS 113 INTO COM=COMNASC
|
||||
JOIN 13 TO 6 ALIAS 213 INTO COM=COMRF(COMRES)
|
||||
JOIN 6 TO 61 ALIAS 216 INTO TIPOA=TIPOA CODANAGR=CODANAGR
|
||||
JOIN 8 TO 216@ ALIAS 218 INTO CODANAGR=CODANAGR
|
||||
JOIN 13 TO 218@ ALIAS 313 INTO COM=COMNASC
|
||||
JOIN 13 TO 216@ ALIAS 413 INTO COM=COMRF(COMRES)
|
||||
JOIN %STA TO 216@ ALIAS 24 INTO CODTAB=STATORES
|
||||
END
|
||||
|
||||
DESCRIPTION
|
||||
BEGIN
|
||||
61->* "Quadro C 770"
|
||||
9->* "Ditte"
|
||||
6->* "Anagrafica persone fisiche e giuridiche"
|
||||
8->* "Anagrafica persone fisiche"
|
||||
113@->* "Comuni"
|
||||
213@->* "Comuni"
|
||||
216@->* "Anagrafica persone fisiche e giuridiche"
|
||||
218@->* "Anagrafica persone giuridiche"
|
||||
313@->* "Comuni"
|
||||
413@->* "Comuni"
|
||||
END
|
||||
|
||||
GENERAL
|
||||
BEGIN
|
||||
OFFSET 0 0
|
||||
FONT "Courier 17cpi"
|
||||
SIZE 11
|
||||
CA "X"
|
||||
IN 3 2
|
||||
FI 131
|
||||
END
|
||||
|
||||
SECTION HEADER FIRST 22
|
||||
|
||||
LISTA 9
|
||||
BEGIN
|
||||
KEY "Tipo anagrafica"
|
||||
FLAGS "H"
|
||||
FIELD 116@->TIPOA
|
||||
ITEM "F|Fisica" MESSAGE SHOW,1@|HIDE,2@
|
||||
ITEM "G|Giuridica" MESSAGE SHOW,2@|HIDE,1@
|
||||
END
|
||||
|
||||
STRINGA 1
|
||||
BEGIN
|
||||
KEY "CODICE FISCALE"
|
||||
PROMPT 3 11 ""
|
||||
FIELD 116@->COFI
|
||||
END
|
||||
|
||||
STRINGA 2
|
||||
BEGIN
|
||||
KEY "RAGIONE SOCIALE"
|
||||
PROMPT 39 11 ""
|
||||
FIELD 116@->RAGSOC
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
STRINGA 3
|
||||
BEGIN
|
||||
KEY "COGNOME"
|
||||
PROMPT 39 11 ""
|
||||
FIELD 116@->RAGSOC[1,30]
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRINGA 4
|
||||
BEGIN
|
||||
KEY "NOME"
|
||||
PROMPT 17 13 ""
|
||||
FIELD 116@->RAGSOC[31,50]
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRINGA 5
|
||||
BEGIN
|
||||
KEY "SESSO"
|
||||
PROMPT 56 13 ""
|
||||
FIELD 118@->SESSO
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRINGA 6
|
||||
BEGIN
|
||||
KEY "DATA DI NASCITA"
|
||||
PROMPT 63 13 ""
|
||||
FIELD 118@->DATANASC
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRINGA 7
|
||||
BEGIN
|
||||
KEY "COMUNE DI NASCITA"
|
||||
PROMPT 83 13 ""
|
||||
FIELD 113@->DENCOM
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRINGA 8
|
||||
BEGIN
|
||||
KEY "PROV. DI NASCITA"
|
||||
PROMPT 122 13 ""
|
||||
FIELD 113@->PROVCOM
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRINGA 10
|
||||
BEGIN
|
||||
KEY "COMUNE DI RES.FISCALE"
|
||||
PROMPT 17 15 ""
|
||||
FIELD 213@->DENCOM
|
||||
END
|
||||
|
||||
STRINGA 11
|
||||
BEGIN
|
||||
KEY "PROV DI RES.FISCALE"
|
||||
PROMPT 56 15 ""
|
||||
FIELD 213@->PROVCOM
|
||||
END
|
||||
|
||||
STRINGA 12
|
||||
BEGIN
|
||||
KEY "VIA di RES."
|
||||
PROMPT 67 15 ""
|
||||
FIELD 116@->INDRF
|
||||
FLAGS "H"
|
||||
MESSAGE COPY,17
|
||||
END
|
||||
|
||||
STRINGA 15
|
||||
BEGIN
|
||||
KEY "NUM. CIVICO di RES."
|
||||
PROMPT 103 15 ""
|
||||
FIELD 116@->CIVRF
|
||||
FLAGS "H"
|
||||
MESSAGE APPEND,17
|
||||
END
|
||||
|
||||
STRINGA 17
|
||||
BEGIN
|
||||
KEY "VIA + NUM CIV. DI RES."
|
||||
PROMPT 67 15 ""
|
||||
END
|
||||
|
||||
STRINGA 16
|
||||
BEGIN
|
||||
KEY "CAP"
|
||||
PROMPT 124 15 ""
|
||||
FIELD 116@->CAPRF
|
||||
END
|
||||
|
||||
STRINGA 13
|
||||
BEGIN
|
||||
KEY "CODICE FISCALE DICHIARANTE"
|
||||
PROMPT 105 18 ""
|
||||
END
|
||||
|
||||
NUMBER 14
|
||||
BEGIN
|
||||
KEY "NUM. FOGLIO"
|
||||
PROMPT 125 21 ""
|
||||
END
|
||||
|
||||
END
|
||||
|
||||
SECTION BODY ODD 6
|
||||
|
||||
LISTA 100
|
||||
BEGIN
|
||||
KEY "Tipo anagrafica"
|
||||
FIELD 216@->TIPOA
|
||||
ITEM "F| " MESSAGE ENABLE,1@|DISABLE,2@
|
||||
ITEM "G| " MESSAGE ENABLE,2@|DISABLE,1@
|
||||
END
|
||||
|
||||
STRINGA 1
|
||||
BEGIN
|
||||
KEY "COD.FIS"
|
||||
PROMPT 10 1 ""
|
||||
FIELD 216@->COFI
|
||||
END
|
||||
|
||||
STRING 2
|
||||
BEGIN
|
||||
KEY "COGNOME"
|
||||
PROMPT 42 1 ""
|
||||
FIELD 216@->RAGSOC[1,30]
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING 3
|
||||
BEGIN
|
||||
KEY "NOME"
|
||||
PROMPT 81 1 ""
|
||||
FIELD 216@->RAGSOC[31,50]
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING 4
|
||||
BEGIN
|
||||
KEY "DATA NASCITA"
|
||||
PROMPT 114 1 ""
|
||||
FIELD 218@->DATANASC
|
||||
END
|
||||
|
||||
STRING 5
|
||||
BEGIN
|
||||
KEY "SESSO"
|
||||
PROMPT 129 1 ""
|
||||
FIELD 218@->SESSO
|
||||
END
|
||||
|
||||
STRING 6
|
||||
BEGIN
|
||||
KEY "COMUNE DI NASCITA"
|
||||
PROMPT 10 3 ""
|
||||
FIELD 313@->DENCOM
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING 7
|
||||
BEGIN
|
||||
KEY "PROV DI NASCITA"
|
||||
PROMPT 47 3 ""
|
||||
FIELD 313@->PROVCOM
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING 8
|
||||
BEGIN
|
||||
KEY "COMUNE DI RESIDENZA"
|
||||
PROMPT 53 3 ""
|
||||
FIELD 413@->DENCOM
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING 9
|
||||
BEGIN
|
||||
KEY "PROV. RESIDENZA"
|
||||
PROMPT 88 3 ""
|
||||
FIELD 413@->PROVCOM
|
||||
END
|
||||
|
||||
STRING 101
|
||||
BEGIN
|
||||
KEY "VIA RES."
|
||||
PROMPT 94 3 ""
|
||||
FIELD 216@->INDRES[1,20]
|
||||
FLAGS "H"
|
||||
MESSAGE COPY,10
|
||||
END
|
||||
|
||||
STRING 102
|
||||
BEGIN
|
||||
KEY "NUM.CIV"
|
||||
PROMPT 93 3 ""
|
||||
FLAGS "H"
|
||||
FIELD 216@->CIVRES
|
||||
MESSAGE APPEND,10
|
||||
END
|
||||
|
||||
STRING 10
|
||||
BEGIN
|
||||
KEY "VIA RES. + numcivres"
|
||||
PROMPT 95 3 ""
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING 11
|
||||
BEGIN
|
||||
KEY "DESCR. CAUSALE"
|
||||
PROMPT 10 5 ""
|
||||
FIELD 14@->S0[1,20]
|
||||
END
|
||||
|
||||
STRING 12
|
||||
BEGIN
|
||||
KEY "FLAG C.T."
|
||||
PROMPT 34 5 ""
|
||||
FIELD 14@->B2
|
||||
END
|
||||
|
||||
STRING 13
|
||||
BEGIN
|
||||
KEY "FLAG T.S."
|
||||
PROMPT 39 5 ""
|
||||
FIELD 14@->B3
|
||||
END
|
||||
|
||||
NUMBER 14
|
||||
BEGIN
|
||||
KEY "AMMONTARE CORRISPOSTO"
|
||||
PROMPT 45 5 ""
|
||||
PICTURE "###.###.###^^^"
|
||||
MESSAGE ADD,FL->14
|
||||
// FIELD 61->TOTALE
|
||||
END
|
||||
|
||||
NUMBER 15
|
||||
BEGIN
|
||||
KEY "CONTRIBUTI S.S.N."
|
||||
PROMPT 60 5 ""
|
||||
PICTURE "###.###.###^^^"
|
||||
MESSAGE ADD,FL->15
|
||||
// FIELD 61->CONTSSN
|
||||
END
|
||||
|
||||
NUMBER 16
|
||||
BEGIN
|
||||
KEY "SOMME NON SOGGETTE A RITENUTA"
|
||||
PROMPT 76 5 ""
|
||||
PICTURE "###.###.###^^^"
|
||||
MESSAGE ADD,FL->16
|
||||
// FIELD 61->SOMME
|
||||
END
|
||||
|
||||
NUMBER 17
|
||||
BEGIN
|
||||
KEY "IMPONIBILE"
|
||||
PROMPT 91 5 ""
|
||||
PICTURE "###.###.###^^^"
|
||||
MESSAGE ADD,FL->17
|
||||
FIELD 61->IMPONIBILE
|
||||
END
|
||||
|
||||
NUMBER 18
|
||||
BEGIN
|
||||
KEY "RITENUTE OPERATE"
|
||||
PROMPT 105 5 ""
|
||||
PICTURE "###.###.###^^^"
|
||||
MESSAGE ADD,FL->18
|
||||
FIELD 61->RITENUTE
|
||||
END
|
||||
|
||||
NUMBER 19
|
||||
BEGIN
|
||||
KEY "NETTO CORRISPOSTO"
|
||||
PROMPT 120 5 ""
|
||||
PICTURE "###.###.###^^^"
|
||||
MESSAGE ADD,FL->19
|
||||
FIELD 61->NETTO
|
||||
END
|
||||
|
||||
END
|
||||
|
||||
SECTION FOOTER LAST 2
|
||||
|
||||
NUMBER 14
|
||||
BEGIN
|
||||
KEY "TOTALE AMMONTARE CORRISPOSTO"
|
||||
PROMPT 45 1 ""
|
||||
PICTURE "###.###.###^^^"
|
||||
END
|
||||
|
||||
NUMBER 15
|
||||
BEGIN
|
||||
KEY "TOTALE CONTRIBUTI S.S.N."
|
||||
PROMPT 61 1 ""
|
||||
PICTURE "###.###.###^^^"
|
||||
END
|
||||
|
||||
NUMBER 16
|
||||
BEGIN
|
||||
KEY "TOTALE SOMME NON SOGGETTE A RITENUTA"
|
||||
PROMPT 76 1 ""
|
||||
PICTURE "###.###.###^^^"
|
||||
END
|
||||
|
||||
NUMBER 17
|
||||
BEGIN
|
||||
KEY "TOTALE IMPONIBILE"
|
||||
PROMPT 91 1 ""
|
||||
PICTURE "###.###.###^^^"
|
||||
END
|
||||
|
||||
NUMBER 18
|
||||
BEGIN
|
||||
KEY "TOTALE RITENUTE OPERATE"
|
||||
PROMPT 105 1 ""
|
||||
PICTURE "###.###.###^^^"
|
||||
END
|
||||
|
||||
NUMBER 19
|
||||
BEGIN
|
||||
KEY "TOTALE NETTO CORRISPOSTO"
|
||||
PROMPT 120 1 ""
|
||||
PICTURE "###.###.###^^^"
|
||||
END
|
||||
|
||||
END
|
||||
USE 61
|
||||
JOIN %CA7 TO 61 ALIAS 14 INTO CODTAB=CODCAUS
|
||||
JOIN 9 INTO CODDITTA=CODDITTA
|
||||
JOIN 6 TO 9 ALIAS 116 INTO TIPOA=TIPOA CODANAGR=CODANAGR
|
||||
JOIN 8 TO 6 ALIAS 118 INTO CODANAGR=CODANAGR
|
||||
JOIN 13 TO 8 ALIAS 113 INTO COM=COMNASC
|
||||
JOIN 13 TO 6 ALIAS 213 INTO COM=COMRF(COMRES)
|
||||
JOIN 6 TO 61 ALIAS 216 INTO TIPOA=TIPOA CODANAGR=CODANAGR
|
||||
JOIN 8 TO 216@ ALIAS 218 INTO CODANAGR=CODANAGR
|
||||
JOIN 13 TO 218@ ALIAS 313 INTO COM=COMNASC
|
||||
JOIN 13 TO 216@ ALIAS 413 INTO COM=COMRF(COMRES)
|
||||
JOIN %STA TO 216@ ALIAS 24 INTO CODTAB=STATORES
|
||||
END
|
||||
|
||||
DESCRIPTION
|
||||
BEGIN
|
||||
61->* "Quadro C 770"
|
||||
9->* "Ditte"
|
||||
6->* "Anagrafica persone fisiche e giuridiche"
|
||||
8->* "Anagrafica persone fisiche"
|
||||
113@->* "Comuni"
|
||||
213@->* "Comuni"
|
||||
216@->* "Anagrafica persone fisiche e giuridiche"
|
||||
218@->* "Anagrafica persone giuridiche"
|
||||
313@->* "Comuni"
|
||||
413@->* "Comuni"
|
||||
END
|
||||
|
||||
GENERAL
|
||||
BEGIN
|
||||
OFFSET 0 0
|
||||
FONT "Courier 17cpi"
|
||||
SIZE 11
|
||||
CA "X"
|
||||
IN 3 2
|
||||
FI 131
|
||||
END
|
||||
|
||||
SECTION HEADER FIRST 22
|
||||
|
||||
LISTA 9
|
||||
BEGIN
|
||||
KEY "Tipo anagrafica"
|
||||
FLAGS "H"
|
||||
FIELD 116@->TIPOA
|
||||
ITEM "F|Fisica" MESSAGE SHOW,1@|HIDE,2@
|
||||
ITEM "G|Giuridica" MESSAGE SHOW,2@|HIDE,1@
|
||||
END
|
||||
|
||||
STRINGA 1
|
||||
BEGIN
|
||||
KEY "CODICE FISCALE"
|
||||
PROMPT 3 11 ""
|
||||
FIELD 116@->COFI
|
||||
END
|
||||
|
||||
STRINGA 2
|
||||
BEGIN
|
||||
KEY "RAGIONE SOCIALE"
|
||||
PROMPT 39 11 ""
|
||||
FIELD 116@->RAGSOC
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
STRINGA 3
|
||||
BEGIN
|
||||
KEY "COGNOME"
|
||||
PROMPT 39 11 ""
|
||||
FIELD 116@->RAGSOC[1,30]
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRINGA 4
|
||||
BEGIN
|
||||
KEY "NOME"
|
||||
PROMPT 17 13 ""
|
||||
FIELD 116@->RAGSOC[31,50]
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRINGA 5
|
||||
BEGIN
|
||||
KEY "SESSO"
|
||||
PROMPT 59 13 ""
|
||||
FIELD 118@->SESSO
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRINGA 6
|
||||
BEGIN
|
||||
KEY "DATA DI NASCITA"
|
||||
PROMPT 63 13 ""
|
||||
FIELD 118@->DATANASC
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRINGA 7
|
||||
BEGIN
|
||||
KEY "COMUNE DI NASCITA"
|
||||
PROMPT 83 13 ""
|
||||
FIELD 113@->DENCOM
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRINGA 8
|
||||
BEGIN
|
||||
KEY "PROV. DI NASCITA"
|
||||
PROMPT 125 13 ""
|
||||
FIELD 113@->PROVCOM
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRINGA 10
|
||||
BEGIN
|
||||
KEY "COMUNE DI RES.FISCALE"
|
||||
PROMPT 17 15 ""
|
||||
FIELD 213@->DENCOM
|
||||
END
|
||||
|
||||
STRINGA 11
|
||||
BEGIN
|
||||
KEY "PROV DI RES.FISCALE"
|
||||
PROMPT 59 15 ""
|
||||
FIELD 213@->PROVCOM
|
||||
END
|
||||
|
||||
STRINGA 12
|
||||
BEGIN
|
||||
KEY "VIA di RES."
|
||||
PROMPT 67 15 ""
|
||||
FIELD 116@->INDRF
|
||||
FLAGS "H"
|
||||
MESSAGE COPY,17
|
||||
END
|
||||
|
||||
STRINGA 15
|
||||
BEGIN
|
||||
KEY "NUM. CIVICO di RES."
|
||||
PROMPT 103 15 ""
|
||||
FIELD 116@->CIVRF
|
||||
FLAGS "H"
|
||||
MESSAGE APPEND,17
|
||||
END
|
||||
|
||||
STRINGA 17
|
||||
BEGIN
|
||||
KEY "VIA + NUM CIV. DI RES."
|
||||
PROMPT 67 15 ""
|
||||
END
|
||||
|
||||
STRINGA 16
|
||||
BEGIN
|
||||
KEY "CAP"
|
||||
PROMPT 124 15 ""
|
||||
FIELD 116@->CAPRF
|
||||
END
|
||||
|
||||
STRINGA 13
|
||||
BEGIN
|
||||
KEY "CODICE FISCALE DICHIARANTE"
|
||||
PROMPT 105 18 ""
|
||||
END
|
||||
|
||||
NUMBER 14
|
||||
BEGIN
|
||||
KEY "NUM. FOGLIO"
|
||||
PROMPT 125 21 ""
|
||||
END
|
||||
|
||||
END
|
||||
|
||||
SECTION BODY ODD 6
|
||||
|
||||
LISTA 100
|
||||
BEGIN
|
||||
KEY "Tipo anagrafica"
|
||||
FIELD 216@->TIPOA
|
||||
ITEM "F| " MESSAGE ENABLE,1@|DISABLE,2@
|
||||
ITEM "G| " MESSAGE ENABLE,2@|DISABLE,1@
|
||||
END
|
||||
|
||||
STRINGA 1
|
||||
BEGIN
|
||||
KEY "COD.FIS"
|
||||
PROMPT 10 1 ""
|
||||
FIELD 216@->COFI
|
||||
END
|
||||
|
||||
STRING 2
|
||||
BEGIN
|
||||
KEY "COGNOME"
|
||||
PROMPT 42 1 ""
|
||||
FIELD 216@->RAGSOC[1,30]
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING 3
|
||||
BEGIN
|
||||
KEY "NOME"
|
||||
PROMPT 81 1 ""
|
||||
FIELD 216@->RAGSOC[31,50]
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING 4
|
||||
BEGIN
|
||||
KEY "DATA NASCITA"
|
||||
PROMPT 114 1 ""
|
||||
FIELD 218@->DATANASC
|
||||
END
|
||||
|
||||
STRING 5
|
||||
BEGIN
|
||||
KEY "SESSO"
|
||||
PROMPT 129 1 ""
|
||||
FIELD 218@->SESSO
|
||||
END
|
||||
|
||||
STRING 6
|
||||
BEGIN
|
||||
KEY "COMUNE DI NASCITA"
|
||||
PROMPT 10 3 ""
|
||||
FIELD 313@->DENCOM
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING 7
|
||||
BEGIN
|
||||
KEY "PROV DI NASCITA"
|
||||
PROMPT 47 3 ""
|
||||
FIELD 313@->PROVCOM
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING 8
|
||||
BEGIN
|
||||
KEY "COMUNE DI RESIDENZA"
|
||||
PROMPT 53 3 ""
|
||||
FIELD 413@->DENCOM
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING 9
|
||||
BEGIN
|
||||
KEY "PROV. RESIDENZA"
|
||||
PROMPT 88 3 ""
|
||||
FIELD 413@->PROVCOM
|
||||
END
|
||||
|
||||
STRING 101
|
||||
BEGIN
|
||||
KEY "VIA RES."
|
||||
PROMPT 94 3 ""
|
||||
FIELD 216@->INDRES[1,20]
|
||||
FLAGS "H"
|
||||
MESSAGE COPY,10
|
||||
END
|
||||
|
||||
STRING 102
|
||||
BEGIN
|
||||
KEY "NUM.CIV"
|
||||
PROMPT 93 3 ""
|
||||
FLAGS "H"
|
||||
FIELD 216@->CIVRES
|
||||
MESSAGE APPEND,10
|
||||
END
|
||||
|
||||
STRING 10
|
||||
BEGIN
|
||||
KEY "VIA RES. + numcivres"
|
||||
PROMPT 95 3 ""
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING 11
|
||||
BEGIN
|
||||
KEY "DESCR. CAUSALE"
|
||||
PROMPT 10 5 ""
|
||||
FIELD 14@->S0[1,20]
|
||||
END
|
||||
|
||||
STRING 12
|
||||
BEGIN
|
||||
KEY "FLAG C.T."
|
||||
PROMPT 34 5 ""
|
||||
FIELD 14@->B2
|
||||
END
|
||||
|
||||
STRING 13
|
||||
BEGIN
|
||||
KEY "FLAG T.S."
|
||||
PROMPT 39 5 ""
|
||||
FIELD 14@->B3
|
||||
END
|
||||
|
||||
NUMBER 14
|
||||
BEGIN
|
||||
KEY "AMMONTARE CORRISPOSTO"
|
||||
PROMPT 45 5 ""
|
||||
PICTURE "###.###.###^^^"
|
||||
MESSAGE ADD,FL->14
|
||||
// FIELD 61->TOTALE
|
||||
END
|
||||
|
||||
NUMBER 15
|
||||
BEGIN
|
||||
KEY "CONTRIBUTI S.S.N."
|
||||
PROMPT 60 5 ""
|
||||
PICTURE "###.###.###^^^"
|
||||
MESSAGE ADD,FL->15
|
||||
// FIELD 61->CONTSSN
|
||||
END
|
||||
|
||||
NUMBER 16
|
||||
BEGIN
|
||||
KEY "SOMME NON SOGGETTE A RITENUTA"
|
||||
PROMPT 76 5 ""
|
||||
PICTURE "###.###.###^^^"
|
||||
MESSAGE ADD,FL->16
|
||||
// FIELD 61->SOMME
|
||||
END
|
||||
|
||||
NUMBER 17
|
||||
BEGIN
|
||||
KEY "IMPONIBILE"
|
||||
PROMPT 91 5 ""
|
||||
PICTURE "###.###.###^^^"
|
||||
MESSAGE ADD,FL->17
|
||||
FIELD 61->IMPONIBILE
|
||||
END
|
||||
|
||||
NUMBER 18
|
||||
BEGIN
|
||||
KEY "RITENUTE OPERATE"
|
||||
PROMPT 105 5 ""
|
||||
PICTURE "###.###.###^^^"
|
||||
MESSAGE ADD,FL->18
|
||||
FIELD 61->RITENUTE
|
||||
END
|
||||
|
||||
NUMBER 19
|
||||
BEGIN
|
||||
KEY "NETTO CORRISPOSTO"
|
||||
PROMPT 120 5 ""
|
||||
PICTURE "###.###.###^^^"
|
||||
MESSAGE ADD,FL->19
|
||||
FIELD 61->NETTO
|
||||
END
|
||||
|
||||
END
|
||||
|
||||
SECTION FOOTER LAST 2
|
||||
|
||||
NUMBER 14
|
||||
BEGIN
|
||||
KEY "TOTALE AMMONTARE CORRISPOSTO"
|
||||
PROMPT 45 1 ""
|
||||
PICTURE "###.###.###^^^"
|
||||
END
|
||||
|
||||
NUMBER 15
|
||||
BEGIN
|
||||
KEY "TOTALE CONTRIBUTI S.S.N."
|
||||
PROMPT 61 1 ""
|
||||
PICTURE "###.###.###^^^"
|
||||
END
|
||||
|
||||
NUMBER 16
|
||||
BEGIN
|
||||
KEY "TOTALE SOMME NON SOGGETTE A RITENUTA"
|
||||
PROMPT 76 1 ""
|
||||
PICTURE "###.###.###^^^"
|
||||
END
|
||||
|
||||
NUMBER 17
|
||||
BEGIN
|
||||
KEY "TOTALE IMPONIBILE"
|
||||
PROMPT 91 1 ""
|
||||
PICTURE "###.###.###^^^"
|
||||
END
|
||||
|
||||
NUMBER 18
|
||||
BEGIN
|
||||
KEY "TOTALE RITENUTE OPERATE"
|
||||
PROMPT 105 1 ""
|
||||
PICTURE "###.###.###^^^"
|
||||
END
|
||||
|
||||
NUMBER 19
|
||||
BEGIN
|
||||
KEY "TOTALE NETTO CORRISPOSTO"
|
||||
PROMPT 120 1 ""
|
||||
PICTURE "###.###.###^^^"
|
||||
END
|
||||
|
||||
END
|
||||
|
1446
m770/77stq.cpp
1446
m770/77stq.cpp
File diff suppressed because it is too large
Load Diff
275
m770/77stq.h
Executable file
275
m770/77stq.h
Executable file
@ -0,0 +1,275 @@
|
||||
#ifndef __77STQ_H
|
||||
#define __77STQ_H
|
||||
|
||||
#include <xvt.h>
|
||||
#include <applicat.h>
|
||||
#include <relation.h>
|
||||
#include <config.h>
|
||||
#include <mask.h>
|
||||
#include <form.h>
|
||||
#include <printer.h>
|
||||
#include <progind.h>
|
||||
#include "base.h"
|
||||
#include <urldefid.h>
|
||||
#include <nditte.h>
|
||||
#include <anagr.h>
|
||||
#include "quadroc.h"
|
||||
#include "quadrod.h"
|
||||
#include "quadrod1.h"
|
||||
#include "quadrogd.h"
|
||||
#include "quadrif.h"
|
||||
#include "77stqd.h"
|
||||
#include "77lib.h"
|
||||
|
||||
// Chincaglieria che serve per posiziona()
|
||||
typedef long HWND;
|
||||
HIDDEN const int MAX_LEN = 300;
|
||||
extern "C" {
|
||||
BOOLEAN PrintLineNow( char *pData, word cbBytes, HWND hInst );
|
||||
};
|
||||
|
||||
|
||||
HIDDEN TString16 __dep16;
|
||||
HIDDEN TString80 __dep80;
|
||||
|
||||
// Vega-Key di Modulaser
|
||||
HIDDEN const char* VK_STARTDOC = "<VK>&MA796&0&1";
|
||||
HIDDEN const char* VK_ENDDOC = "<VK>!0";
|
||||
typedef enum { STARTDOC, STARTDITTA, STARTPAGE, ENDDOC } ModulaserKey;
|
||||
|
||||
// Campi form
|
||||
#define TOT_TOTALE 1
|
||||
#define TOT_SNSRIT 2
|
||||
#define TOT_IMPON 3
|
||||
#define TOT_IMPOR 4
|
||||
#define TOT_NETTO 5
|
||||
|
||||
#define D_TOTALE 16
|
||||
#define D_SNSRIT 17
|
||||
#define D_IMPONIBILE 18
|
||||
#define D_IMPORTO 20
|
||||
#define D_NETTO 21
|
||||
|
||||
#define D1_TOTALE 12
|
||||
#define D1_QUOTAPRO 13
|
||||
#define D1_SPESEANT 14
|
||||
#define D1_IMPONIBILE 15
|
||||
#define D1_IMPORTO 17
|
||||
#define D1_NETTO 18
|
||||
|
||||
#define C_TOTALE 14
|
||||
#define C_CONTSSN 15
|
||||
#define C_SOMME 16
|
||||
#define C_IMPONIBILE 17
|
||||
#define C_RITENUTE 18
|
||||
#define C_NETTO 19
|
||||
|
||||
#define H_COFI_DIC 13
|
||||
#define H_NUM_FOGLIO 14
|
||||
|
||||
// Quadro D
|
||||
HIDDEN const int QD_FORMLEN_PRIMA = 70; // 72 - 3 (3 e' la posizione della X di posiz.)
|
||||
HIDDEN const int QD_FORMLEN = 72;
|
||||
HIDDEN const int POS_DITTA = 120; // Colonna del codice ditta a pie' di modulo
|
||||
HIDDEN const int QD_PAGINE = 4;
|
||||
HIDDEN const int QD_RIGHE_PRIMA = 4;
|
||||
HIDDEN const int QD_RIGHE_SECONDA = 7;
|
||||
HIDDEN const int QD_RIGHE_TERZA = 7;
|
||||
HIDDEN const int QD_RIGHE_QUARTA = 7;
|
||||
HIDDEN const int QD1_RIGHE_PRIMA = 6;
|
||||
HIDDEN const int QD1_RIGHE_SECONDA = 9;
|
||||
HIDDEN const int QD1_RIGHE_TERZA = 9;
|
||||
HIDDEN const int QD1_RIGHE_QUARTA = 8;
|
||||
|
||||
HIDDEN const int HEADER_SECONDA = 8;
|
||||
HIDDEN const int HEADER_TERZA = 8; // Sarebbero 9 col righello...
|
||||
HIDDEN const int HEADER_QUARTA = 13; // 15 col righello...
|
||||
|
||||
HIDDEN const int HEADER_D1_SECONDA = 8;
|
||||
HIDDEN const int HEADER_D1_TERZA = 8;
|
||||
HIDDEN const int HEADER_D1_QUARTA = 14;
|
||||
|
||||
typedef enum { PRIMA=1, SECONDA, TERZA, QUARTA } PaginaQuadro;
|
||||
typedef enum { fisiche, nofisiche } TipoPagina;
|
||||
|
||||
class TDicForm : public TForm
|
||||
{
|
||||
private:
|
||||
real _f_tot_totale, _f_tot_snsrit, _f_tot_impon, _f_tot_impor, _f_tot_netto;
|
||||
real _nf_tot_totale, _nf_tot_snsrit, _nf_tot_impon, _nf_tot_impor, _nf_tot_netto;
|
||||
|
||||
TCursor* _cur;
|
||||
|
||||
protected:
|
||||
long _Items; // numero di record che hanno passato il filtro
|
||||
PaginaQuadro _PaginaCorrente;
|
||||
|
||||
void set_curr_page(PaginaQuadro pagina) { _PaginaCorrente = pagina; }
|
||||
virtual int dic_form_len() const;
|
||||
virtual void inc_curr_page();
|
||||
virtual void next_page(TPrinter& pr);
|
||||
bool _modulaser; // se stampa per modulaser
|
||||
bool _posiziona; // se deve fare posizionamento
|
||||
TipoDitta _tipo_ditta; // tipo ditta: normale, estinto, dichiarante
|
||||
int _num_foglio; // numero foglio
|
||||
TString _cofi_dic; // cod.fis. dichiarante
|
||||
bool _can_print_tot_fis, _can_print_tot_nofis;
|
||||
bool _finite_fis, _finite_nofis, _LastDitta, _EndPrintDitta;
|
||||
bool _GiaStampatiFis, _GiaStampatiNoFis, _PaginaPosizionamento;
|
||||
bool _GiaPosizionato, _GiaMessoStartDoc, _GiaMessoStartPage[QD_PAGINE]; // flag per modulaser
|
||||
int _CtrNoFisStampati, _CtrFisStampati; // contatori p.f. e p.g. stampate
|
||||
long _codditta, _codditta_dic; // cod.ditta e cod.ditta dichiarante
|
||||
int _RigaCorr; // contatore riga corrente
|
||||
TString16 _quadro; // codice quadro in stampa
|
||||
|
||||
void stampa_testata(TPrinter& pr);
|
||||
virtual bool ultima_pagina() const { return _PaginaCorrente==QUARTA; }
|
||||
virtual void stampa_totali(TPrinter& pr);
|
||||
// virtual void aggiorna_totali(const char tipo);
|
||||
virtual void set_body(TPrinter& pr, const char tipo);
|
||||
void StampaPagina(PaginaQuadro PaginaCorrente, const bool StampaTotali, const long Fis, const long NoFis);
|
||||
void posiziona();
|
||||
void fill_page(TPrinter& pr, const int righe);
|
||||
void jump_to_line(TPrinter& pr, const int riga);
|
||||
const char* BuildModulaserStartPage();
|
||||
void put_modulaser(TPrintrow& row, ModulaserKey key, int page=0);
|
||||
void ClearFlagModulaser();
|
||||
bool PaginaPosizionamento() const;
|
||||
virtual bool InitPrint(const long codditta);
|
||||
|
||||
public:
|
||||
virtual TCursor* cursor() const { return _cur; }
|
||||
virtual TRelation* relation() const { return _cur->relation(); }
|
||||
|
||||
virtual long filtra(const long codditta);
|
||||
|
||||
TProgind* _prog; // progind usata in print()
|
||||
|
||||
long codditta() const { return _codditta; }
|
||||
void set_codditta(const long ditta) { _codditta = ditta; }
|
||||
void set_posiziona(const bool posiz) { _posiziona = posiz; _GiaPosizionato = FALSE; }
|
||||
void can_print_tot_fis(const bool canpr) { _can_print_tot_fis = canpr; }
|
||||
void can_print_tot_nofis(const bool canpr) { _can_print_tot_nofis = canpr; }
|
||||
void set_last_ditta(const bool last) { _LastDitta = last; }
|
||||
bool last_ditta() const { return _LastDitta; }
|
||||
bool EndJob() const { return _LastDitta && _EndPrintDitta; }
|
||||
bool ultima_fis();
|
||||
bool ultima_nofis();
|
||||
TString& cofi_dic() { return _cofi_dic; }
|
||||
void set_cofi_dic(const char* cofi);
|
||||
TipoDitta tipo_ditta() const { return _tipo_ditta; }
|
||||
void set_tipo_ditta(TipoDitta tipo) { _tipo_ditta = tipo; }
|
||||
bool modulaser() const { return _modulaser; }
|
||||
void set_modulaser(const bool modul) { _modulaser = modul; }
|
||||
void set_num_foglio(const int foglio) { _num_foglio = foglio; }
|
||||
int num_foglio() const { return _num_foglio; }
|
||||
virtual void azzera_totali();
|
||||
PaginaQuadro curr_page() const { return _PaginaCorrente; }
|
||||
TCursor& cur();
|
||||
|
||||
void set_progind(TProgind* prog) { _prog = prog; }
|
||||
TProgind* progind() { return _prog; }
|
||||
bool usa_progind() const { return _prog != NULL; }
|
||||
|
||||
virtual void set_cursor(TCursor* cur);
|
||||
virtual void close_print();
|
||||
virtual bool print(const long codditta, const long NumFis, const long NumNoFis);
|
||||
|
||||
const TString& quadro() const { return _quadro; }
|
||||
|
||||
TDicForm(const char* form, const char* quadro);
|
||||
virtual ~TDicForm() {}
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// TStDicArray
|
||||
//
|
||||
// Array delle ditte da stampare. Contiene una riga per ogni ditta che si vuole stampare
|
||||
// Il formato della riga e':
|
||||
// codditta|estinti|numfis|numnofis|ultimafis|ultimanofis
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
class TStDicArray : public TObject
|
||||
{
|
||||
private:
|
||||
TString_array _store;
|
||||
|
||||
public:
|
||||
TToken_string& operator[](int i) const;
|
||||
int curr_index() const { return _store.last(); }
|
||||
void set(const int index, const TipoDitta tipo=normale, const int num_fis=0, const int num_nofis=0,
|
||||
bool ultima_con_fis=FALSE, bool ultima_con_nofis=FALSE, const char* cofidic=NULL);
|
||||
void set_tipo(const int index, const TipoDitta tipo);
|
||||
void set_ultima_con_fis(const int index, const bool ultima_fis);
|
||||
void set_ultima_con_nofis(const int index, const bool ultima_nofis);
|
||||
void set_flag_tipi(const int index, const bool ultima_fis, const bool ultima_nofis);
|
||||
void set_ctr_tipi(const int index, const int num_fis, const int num_nofis);
|
||||
void add(const long codditta, const TipoDitta tipo=normale, const int num_fis=0, const int num_nofis=0,
|
||||
bool ultima_con_fis=FALSE, bool ultima_con_nofis=FALSE, const char* cofidic=NULL);
|
||||
int items() const { return _store.items(); }
|
||||
void destroy() { _store.destroy(); }
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// STAMPA QUADRO
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
class TStampaQuadro : public TApplication
|
||||
{
|
||||
TMask* _m; // Maschera di stampa
|
||||
|
||||
TConfig* _cnf; // Configurazione
|
||||
TString16 _section; // Paragrafo del config
|
||||
long _codditta;
|
||||
int _anno_dic;
|
||||
|
||||
TString _quadro;
|
||||
char _livello; // "S" studio, "D" singola ditta
|
||||
TString _title;
|
||||
|
||||
TStDicArray _ditte;
|
||||
|
||||
protected: // TApplication
|
||||
virtual bool menu(MENU_TAG);
|
||||
virtual void on_config_change();
|
||||
|
||||
virtual bool create();
|
||||
virtual bool destroy();
|
||||
|
||||
protected:
|
||||
virtual bool user_create() pure;
|
||||
virtual bool user_destroy() pure;
|
||||
|
||||
virtual TDicForm* get_form() const pure;
|
||||
virtual TCursor* get_cursor() const pure;
|
||||
|
||||
virtual const char* mask_name() const;
|
||||
virtual const char* form_name() const;
|
||||
|
||||
virtual bool conta_tipi_per() const { return TRUE; }
|
||||
void fill_estinti(const long CodDic);
|
||||
const TStDicArray& ditte() const { return _ditte; }
|
||||
|
||||
virtual bool print_quadro(const int OffsetDitta, const bool modulaser);
|
||||
virtual void print(const bool modulaser);
|
||||
|
||||
bool singola_ditta() const { return _livello == 'D'; }
|
||||
const TString& quadro() const { return _quadro; }
|
||||
|
||||
void set_taitol(const char* t) { _title = t; }
|
||||
|
||||
TStampaQuadro(const char* quad, char liv);
|
||||
|
||||
public:
|
||||
const TString& taitol() const { return _title; }
|
||||
|
||||
virtual ~TStampaQuadro() { }
|
||||
};
|
||||
|
||||
#endif
|
642
m770/77stqab.cpp
Executable file
642
m770/77stqab.cpp
Executable file
@ -0,0 +1,642 @@
|
||||
///////////////////////////////////////////////////////////
|
||||
// Quadro 770/A
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
#include "77stqab.h"
|
||||
|
||||
TDipendente::TDipendente(const TCursor& cur)
|
||||
{
|
||||
_pos = ((TCursor&)cur).pos();
|
||||
|
||||
const TRectype& rec = cur.curr();
|
||||
const TRectype& dip = cur.curr(LF_DIPEND);
|
||||
|
||||
_codice_ditta = rec.get_long("CODDITTA");
|
||||
_ragsoc = dip.get("COGNOME"); _ragsoc << ' ' << dip.get("NOME");
|
||||
_codice_deceduto = dip.get_long("CODDIPDEC");
|
||||
_codice_dipendente = rec.get_long("CODDIP");
|
||||
|
||||
if (rec.num() == LF_QUAA)
|
||||
{
|
||||
_fine_rapporto = rec.get("DATAFR");
|
||||
_lavoro_precedente = rec.get("CFDLPREC").not_empty();
|
||||
_causa = toupper(rec.get_char("CAUSA"));
|
||||
_rettifica_conguaglio = toupper(rec.get_char("RETCON"));
|
||||
_numero_progressivo = rec.get_int("NPROG");
|
||||
}
|
||||
else
|
||||
{
|
||||
_fine_rapporto = rec.get("DATAFIN");
|
||||
_lavoro_precedente = FALSE;
|
||||
_causa = ' ';
|
||||
_rettifica_conguaglio = ' ';
|
||||
_numero_progressivo = rec.get_int("NPROG");
|
||||
}
|
||||
|
||||
if (_rettifica_conguaglio == 'B' || !_fine_rapporto.ok())
|
||||
_fine_rapporto = eotime;
|
||||
}
|
||||
|
||||
int TDipendente::compare(const TSortable& s) const
|
||||
{
|
||||
const TDipendente& rec = (const TDipendente&)s;
|
||||
|
||||
if (_codice_ditta != rec._codice_ditta)
|
||||
return _codice_ditta > rec._codice_ditta ? +1 : -1;
|
||||
|
||||
const int diff = _ragsoc.compare(rec._ragsoc, -1, TRUE);
|
||||
if (diff != 0)
|
||||
return diff;
|
||||
|
||||
if (_codice_dipendente != rec._codice_dipendente)
|
||||
return _codice_dipendente > rec._codice_dipendente ? +1 : -1;
|
||||
|
||||
if (_fine_rapporto != rec._fine_rapporto)
|
||||
return _fine_rapporto > rec._fine_rapporto ? +1 : -1;
|
||||
|
||||
if (_lavoro_precedente != rec._lavoro_precedente)
|
||||
return _lavoro_precedente ? +1 : -1;
|
||||
|
||||
if (_causa != rec._causa)
|
||||
return _causa > rec._causa ? +1 : -1;
|
||||
|
||||
if (_rettifica_conguaglio != rec._rettifica_conguaglio)
|
||||
return _rettifica_conguaglio > rec._rettifica_conguaglio ? +1 : -1;
|
||||
|
||||
return _numero_progressivo - rec._numero_progressivo;
|
||||
}
|
||||
|
||||
int TDipendenti::find(long cod) const
|
||||
{
|
||||
for (int i = _data.last(); i >= 0; i--)
|
||||
if (dip(i).codice() == cod)
|
||||
break;
|
||||
return i;
|
||||
}
|
||||
|
||||
int TDipendenti::fill(TCursor& cur)
|
||||
{
|
||||
for (cur = 0; cur.ok(); ++cur)
|
||||
{
|
||||
TDipendente* n = new TDipendente(cur);
|
||||
if (n->pos() >= 0)
|
||||
_data.add(n);
|
||||
else
|
||||
delete n;
|
||||
}
|
||||
const int i = _data.items();
|
||||
if (i > 0)
|
||||
{
|
||||
_data.sort();
|
||||
for (int d = i-1; d >= 0; d--)
|
||||
{
|
||||
const long coddec = dip(d).codice_deceduto();
|
||||
if (coddec > 0) // E' un erede!
|
||||
{
|
||||
const int posdec = find(coddec);
|
||||
if (posdec >= 0 && posdec != d-1) // Il deceduto esiste
|
||||
{
|
||||
TDipendente* dipen = (TDipendente*)_data.remove(d, TRUE);
|
||||
dipen->reset_deceduto(); // Non e' piu' un erede
|
||||
_data.insert(dipen, posdec+1); // Attaccalo dietro al deceduto
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
void TQuadroA::azzera_totali()
|
||||
{
|
||||
TPrint_section& totali = section('F', last_page);
|
||||
totali.reset(); // Azzera le righe
|
||||
|
||||
for (int i = totali.fields()-1; i >= 0; i--)
|
||||
totali.field(i).set(""); // Azzera i campi
|
||||
}
|
||||
|
||||
void TQuadroA::preprocess_corpo(const TRectype& rec)
|
||||
{
|
||||
if (rec.num() == LF_QUAA)
|
||||
{
|
||||
const bool lav_prec = rec.get("CFDLPREC").not_empty();
|
||||
const char rett_con = toupper(rec.get_char("RETCON"));
|
||||
|
||||
const bool add = !lav_prec && rett_con != 'B';
|
||||
enable_message_add(add);
|
||||
|
||||
// Nasconde i dati anagrafici quando rett_con = B
|
||||
TPrint_section& body = section('B', odd_page);
|
||||
for (int i = 2; i <= 12; i++)
|
||||
{
|
||||
TForm_item& f = body.field(i);
|
||||
f.enable(rett_con != 'B');
|
||||
}
|
||||
|
||||
// Stampa solo le date di fine rapporto del 95
|
||||
TForm_item& datafr = body.field(16);
|
||||
const TDate dfr = rec.get("DATAFR");
|
||||
datafr.enable(dfr.year() == 1995);
|
||||
}
|
||||
}
|
||||
|
||||
void TQuadroA::stampa_corpo(TPrinter& pr)
|
||||
{
|
||||
TPrint_section& body = section('B', odd_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);
|
||||
}
|
||||
|
||||
|
||||
void TQuadroA::stampa_totali(TPrinter& pr)
|
||||
{
|
||||
TPrint_section& totali = section('F', last_page);
|
||||
totali.update();
|
||||
for (int i = 0; i < totali.items(); i++)
|
||||
{
|
||||
pr.print(totali.row(i));
|
||||
_RigaCorr++;
|
||||
}
|
||||
}
|
||||
|
||||
void TQuadroA::stampa_firma(TPrinter& pr)
|
||||
{
|
||||
TPrint_section& totali = section('F', last_page);
|
||||
totali.update();
|
||||
|
||||
TForm_item& signature = totali.find_field(2);
|
||||
const int lasty = signature.y();
|
||||
TPrintrow empty;
|
||||
|
||||
for (int i = 0; i < totali.items(); i++)
|
||||
{
|
||||
if (i < lasty)
|
||||
pr.print(empty);
|
||||
else
|
||||
pr.print(totali.row(i));
|
||||
_RigaCorr++;
|
||||
}
|
||||
}
|
||||
|
||||
void TQuadroA::next_page(TPrinter& pr)
|
||||
{
|
||||
fill_page(pr, -1); // formfeed "adattato"
|
||||
inc_curr_page();
|
||||
}
|
||||
|
||||
int TQuadroA::elementi_pagina(PaginaQuadro p) const
|
||||
{
|
||||
const int n[4] = { 1, 3, 3, 2 };
|
||||
return n[p - PRIMA];
|
||||
}
|
||||
|
||||
int TQuadroA::prima_riga(PaginaQuadro p) const
|
||||
{
|
||||
return p == PRIMA ? 45 : 5;
|
||||
}
|
||||
|
||||
int TQuadroA::riga_totali(PaginaQuadro p) const
|
||||
{
|
||||
const int h = ((TQuadroA*)this)->section('B', odd_page).height();
|
||||
return prima_riga(p) + elementi_pagina(p) * h;
|
||||
}
|
||||
|
||||
bool TQuadroA::init(long codditta)
|
||||
{
|
||||
azzera_totali();
|
||||
return InitPrint(codditta);
|
||||
}
|
||||
|
||||
bool TQuadroA::print(const long codditta, const long NumFis, const long NumNoFis)
|
||||
{
|
||||
TCursor& cur = *cursor();
|
||||
TPrinter& pr = printer();
|
||||
|
||||
if (!init(codditta))
|
||||
return FALSE;
|
||||
|
||||
pr.formlen(QA_FORMLEN);
|
||||
|
||||
int elementi = 0; // Numero di elementi stampati in questa pagina
|
||||
bool stampato_ultimo = FALSE;
|
||||
bool stampati_totali = FALSE;
|
||||
|
||||
int pos = 0;
|
||||
TDipendenti indice;
|
||||
if (quadro() == "A" || quadro() == "B")
|
||||
{
|
||||
const int i = indice.fill(cur);
|
||||
if (i > 0)
|
||||
{
|
||||
if (usa_progind())
|
||||
progind()->addstatus(cur.items()-i); // Segna come elaborati tutti gli ignorati
|
||||
|
||||
cur = indice[0].pos();
|
||||
}
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
cur = 0;
|
||||
|
||||
while (!stampati_totali)
|
||||
{
|
||||
bool stampero_ultimo = (stampato_ultimo == FALSE);
|
||||
if (stampero_ultimo)
|
||||
{
|
||||
if (indice.items() > 0) // Usa indice alternativo
|
||||
stampero_ultimo &= pos == indice.items()-1;
|
||||
else // Usa indice del cursore
|
||||
stampero_ultimo &= cur.pos() == cur.items()-1;
|
||||
}
|
||||
|
||||
// Usato per stampare la VK_ENDDOC in fill_page()
|
||||
_EndPrintDitta=stampato_ultimo;
|
||||
if (!stampato_ultimo)
|
||||
preprocess_corpo(cur.curr());
|
||||
|
||||
switch(_PaginaCorrente)
|
||||
{
|
||||
case PRIMA:
|
||||
if (_modulaser)
|
||||
ClearFlagModulaser();
|
||||
|
||||
if (elementi == 0)
|
||||
{
|
||||
stampa_testata(pr);
|
||||
jump_to_line(pr, prima_riga(PRIMA));
|
||||
}
|
||||
|
||||
if (!stampato_ultimo)
|
||||
{
|
||||
stampa_corpo(pr);
|
||||
stampato_ultimo = stampero_ultimo;
|
||||
}
|
||||
|
||||
elementi++;
|
||||
if (elementi >= elementi_pagina(PRIMA))
|
||||
{
|
||||
next_page(pr);
|
||||
elementi = 0;
|
||||
}
|
||||
break;
|
||||
case SECONDA:
|
||||
case TERZA:
|
||||
if (!stampato_ultimo)
|
||||
{
|
||||
if (elementi == 0)
|
||||
jump_to_line(pr, prima_riga(_PaginaCorrente));
|
||||
stampa_corpo(pr);
|
||||
stampato_ultimo = stampero_ultimo;
|
||||
}
|
||||
elementi++;
|
||||
if (elementi >= elementi_pagina(_PaginaCorrente))
|
||||
{
|
||||
next_page(pr);
|
||||
elementi = 0;
|
||||
}
|
||||
break;
|
||||
case QUARTA:
|
||||
if (!stampato_ultimo)
|
||||
{
|
||||
if (elementi == 0)
|
||||
jump_to_line(pr, prima_riga(QUARTA));
|
||||
|
||||
stampa_corpo(pr);
|
||||
stampato_ultimo = stampero_ultimo;
|
||||
}
|
||||
|
||||
elementi++;
|
||||
|
||||
if (elementi >= elementi_pagina(QUARTA))
|
||||
{
|
||||
jump_to_line(pr, riga_totali(QUARTA));
|
||||
if (stampato_ultimo)
|
||||
{
|
||||
stampa_totali(pr);
|
||||
stampati_totali = TRUE;
|
||||
}
|
||||
else
|
||||
stampa_firma(pr);
|
||||
|
||||
next_page(pr);
|
||||
elementi = 0;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
CHECK(0, "Invalid Quadro A page");
|
||||
break;
|
||||
}
|
||||
|
||||
if (!stampato_ultimo)
|
||||
{
|
||||
if (indice.items() > 0)
|
||||
cur = indice[++pos].pos();
|
||||
else
|
||||
++cur;
|
||||
}
|
||||
}
|
||||
|
||||
close_print();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TStampaQuadroA::user_create()
|
||||
{
|
||||
_form = new TQuadroA("77QA", quadro());
|
||||
|
||||
TString sortkey(80);
|
||||
sortkey.format("CODDITTA|%d->COGNOME|%d->NOME|CODDIP", LF_DIPEND, LF_DIPEND);
|
||||
_cur = new TSorted_cursor(_form->TForm::relation(), sortkey);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TStampaQuadroA::user_destroy()
|
||||
{
|
||||
if (_cur)
|
||||
delete _cur;
|
||||
|
||||
if (_form)
|
||||
delete _form;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// Quadro A1
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
int TQuadroA1::elementi_pagina(PaginaQuadro p) const
|
||||
{
|
||||
const int n[4] = { 3, 6, 6, 5 };
|
||||
return n[p-PRIMA];
|
||||
}
|
||||
|
||||
int TQuadroA1::prima_riga(PaginaQuadro p) const
|
||||
{
|
||||
return p == PRIMA ? 32 : 4;
|
||||
}
|
||||
|
||||
long TQuadroA1::filtra(const long codditta)
|
||||
{
|
||||
TString filtr(32);
|
||||
filtr.format("CODDITTA=%ld|ANNORIF=1995", codditta);
|
||||
|
||||
cursor()->setfilter(filtr, TRUE);
|
||||
const long items = cursor()->items();
|
||||
|
||||
return items;
|
||||
}
|
||||
|
||||
void TQuadroA1::preprocess_corpo(const TRectype& rec)
|
||||
{
|
||||
if (rec.num() == LF_QUAA1)
|
||||
{
|
||||
// Stampa solo le date di ricezione del 95
|
||||
const TDate dr = rec.get("DATARIC26");
|
||||
TForm_item& dataric = find_field('B', odd_page, 26);
|
||||
dataric.enable(dr.year() == 1995);
|
||||
}
|
||||
}
|
||||
|
||||
bool TStampaQuadroA1::user_create()
|
||||
{
|
||||
_form = new TQuadroA1("77QA1", quadro());
|
||||
|
||||
TString sortkey(80);
|
||||
sortkey.format("CODDITTA|%d->COGNOME|%d->NOME|CODDIP|MESERIF|NPROG", LF_DIPEND, LF_DIPEND);
|
||||
_cur = new TSorted_cursor(_form->TForm::relation(), sortkey);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// Quadro A2
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
int TQuadroA2::elementi_pagina(PaginaQuadro p) const
|
||||
{
|
||||
const int n[4] = { 3, 6, 6, 5 };
|
||||
return n[p-PRIMA];
|
||||
}
|
||||
|
||||
int TQuadroA2::prima_riga(PaginaQuadro p) const
|
||||
{
|
||||
return p == PRIMA ? 32 : 4;
|
||||
}
|
||||
|
||||
void TQuadroA2::preprocess_corpo(const TRectype& rec)
|
||||
{
|
||||
if (rec.num() == LF_QUAA2)
|
||||
{
|
||||
const char ret_con = toupper(rec.get_char("RETCON"));
|
||||
const bool add = ret_con != 'B';
|
||||
enable_message_add(add);
|
||||
|
||||
// Nasconde i dati anagrafici quando rett_con = B
|
||||
TPrint_section& body = section('B', odd_page);
|
||||
for (int i = 2; i <= 7; i++)
|
||||
{
|
||||
TForm_item& f = body.field(i);
|
||||
f.enable(add);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool TStampaQuadroA2::user_create()
|
||||
{
|
||||
_form = new TQuadroA2("77QA2", quadro());
|
||||
|
||||
TString sortkey(80);
|
||||
sortkey.format("CODDITTA|%d->COGNOME|%d->NOME|CODDIP|RETCON|NPROG", LF_DIPEND, LF_DIPEND);
|
||||
_cur = new TSorted_cursor(_form->TForm::relation(), sortkey);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// Quadro A3
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
int TQuadroA3::elementi_pagina(PaginaQuadro p) const
|
||||
{
|
||||
const int n[4] = { 6, 10, 10, 9 };
|
||||
return n[p-PRIMA];
|
||||
}
|
||||
|
||||
int TQuadroA3::prima_riga(PaginaQuadro p) const
|
||||
{
|
||||
return p == PRIMA ? 32 : 4;
|
||||
}
|
||||
|
||||
bool TStampaQuadroA3::user_create()
|
||||
{
|
||||
_form = new TQuadroA3("77QA3", quadro());
|
||||
|
||||
TString sortkey(80);
|
||||
sortkey.format("CODDITTA|NPROG|%d->COGNOME|%d->NOME|CODDIP", LF_DIPEND, LF_DIPEND);
|
||||
_cur = new TSorted_cursor(_form->TForm::relation(), sortkey);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
// QUADRO B
|
||||
/////////////////////////////////////////////////////////////////
|
||||
|
||||
int TQuadroB::elementi_pagina(PaginaQuadro p) const
|
||||
{
|
||||
const int n[4] = { 3, 5, 5, 3 };
|
||||
return n[p-PRIMA];
|
||||
}
|
||||
|
||||
int TQuadroB::prima_riga(PaginaQuadro p) const
|
||||
{
|
||||
return p == PRIMA ? 32 : 6;
|
||||
}
|
||||
|
||||
bool TStampaQuadroB::user_create()
|
||||
{
|
||||
_form = new TQuadroB("77QB", quadro());
|
||||
|
||||
TString sortkey(80);
|
||||
sortkey.format("CODDITTA|%d->COGNOME|%d->NOME|CODDIP|DATAINI|NPROG", LF_DIPEND, LF_DIPEND);
|
||||
_cur = new TSorted_cursor(_form->TForm::relation(), sortkey);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////
|
||||
// QUADRO H
|
||||
//////////////////////////////////////////////////////////////
|
||||
|
||||
void TQuadroH::inc_curr_page()
|
||||
{
|
||||
if (_PaginaCorrente == PRIMA)
|
||||
_PaginaCorrente = SECONDA;
|
||||
else
|
||||
if (_PaginaCorrente == SECONDA)
|
||||
_PaginaCorrente = PRIMA;
|
||||
}
|
||||
|
||||
int TQuadroH::elementi_pagina(PaginaQuadro p) const
|
||||
{
|
||||
const int n[2] = { 21, 27 };
|
||||
return n[p-PRIMA];
|
||||
}
|
||||
|
||||
int TQuadroH::prima_riga(PaginaQuadro p) const
|
||||
{
|
||||
return p == PRIMA ? 24 : 9;
|
||||
}
|
||||
|
||||
bool TQuadroH::print(const long codditta, const long NumFis, const long NumNoFis)
|
||||
{
|
||||
TCursor& cur = *cursor();
|
||||
TPrinter& pr = printer();
|
||||
|
||||
if (!InitPrint(codditta))
|
||||
return FALSE;
|
||||
|
||||
pr.formlen(QH_FORMLEN);
|
||||
|
||||
int elementi = 0; // Numero di elementi stampati in questa pagina
|
||||
bool stampato_ultimo = FALSE;
|
||||
bool stampati_totali = FALSE;
|
||||
|
||||
cur = 0;
|
||||
|
||||
while (!stampati_totali)
|
||||
{
|
||||
bool stampero_ultimo = stampato_ultimo == FALSE;
|
||||
if (stampero_ultimo)
|
||||
stampero_ultimo &= cur.pos() == cur.items()-1;
|
||||
|
||||
switch(_PaginaCorrente)
|
||||
{
|
||||
case PRIMA:
|
||||
if (_modulaser)
|
||||
ClearFlagModulaser();
|
||||
|
||||
if (elementi == 0)
|
||||
{
|
||||
stampa_testata(pr);
|
||||
jump_to_line(pr, prima_riga(PRIMA));
|
||||
}
|
||||
|
||||
if (!stampato_ultimo)
|
||||
{
|
||||
stampa_corpo(pr);
|
||||
stampato_ultimo = stampero_ultimo;
|
||||
}
|
||||
|
||||
_EndPrintDitta=stampato_ultimo;
|
||||
|
||||
elementi++;
|
||||
if (elementi >= elementi_pagina(PRIMA))
|
||||
{
|
||||
next_page(pr);
|
||||
elementi = 0;
|
||||
}
|
||||
break;
|
||||
case SECONDA:
|
||||
if (!stampato_ultimo)
|
||||
{
|
||||
if (elementi == 0)
|
||||
jump_to_line(pr, prima_riga(SECONDA));
|
||||
|
||||
stampa_corpo(pr);
|
||||
stampato_ultimo = stampero_ultimo;
|
||||
}
|
||||
_EndPrintDitta=stampato_ultimo;
|
||||
|
||||
elementi++;
|
||||
|
||||
if (elementi >= elementi_pagina(SECONDA))
|
||||
{
|
||||
if (stampato_ultimo)
|
||||
{
|
||||
jump_to_line(pr, riga_totali(SECONDA));
|
||||
stampa_totali(pr);
|
||||
stampati_totali = TRUE;
|
||||
}
|
||||
next_page(pr);
|
||||
elementi = 0;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
CHECK(0, "Invalid Quadro A page");
|
||||
break;
|
||||
}
|
||||
|
||||
if (!stampato_ultimo)
|
||||
++cur;
|
||||
}
|
||||
|
||||
close_print();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TStampaQuadroH::user_create()
|
||||
{
|
||||
_form = new TQuadroH("77QH", quadro());
|
||||
|
||||
TString sortkey(80);
|
||||
sortkey.format("CODDITTA|H1ANNO|H1ENTE", LF_QUAH, LF_QUAH);
|
||||
_cur = new TSorted_cursor(_form->TForm::relation(), sortkey);
|
||||
|
||||
return TRUE;
|
||||
}
|
242
m770/77stqab.h
Executable file
242
m770/77stqab.h
Executable file
@ -0,0 +1,242 @@
|
||||
#ifndef __77STQAB_H
|
||||
#define __77STQAB_H
|
||||
|
||||
#include "77stq.h"
|
||||
|
||||
//////////////////////////////////////
|
||||
// QUADRO A
|
||||
//////////////////////////////////////
|
||||
|
||||
class TDipendente : public TSortable
|
||||
{
|
||||
TRecnotype _pos;
|
||||
|
||||
long _codice_ditta;
|
||||
TString _ragsoc;
|
||||
long _codice_dipendente;
|
||||
long _codice_deceduto;
|
||||
TDate _fine_rapporto;
|
||||
bool _lavoro_precedente;
|
||||
char _causa;
|
||||
char _rettifica_conguaglio;
|
||||
int _numero_progressivo;
|
||||
|
||||
public:
|
||||
virtual int compare(const TSortable& s) const;
|
||||
|
||||
TRecnotype pos() const { return _pos; }
|
||||
long codice_deceduto() const { return _codice_deceduto; }
|
||||
void reset_deceduto() { _codice_deceduto = -_codice_deceduto; }
|
||||
long codice() const { return _codice_dipendente; }
|
||||
|
||||
int anno_fine_rapporto() const { return _fine_rapporto.year(); }
|
||||
bool lavoro_precedente() const { return _lavoro_precedente; }
|
||||
char rettifica_conguaglio() const { return _rettifica_conguaglio; }
|
||||
|
||||
TDipendente(const TCursor& cur);
|
||||
virtual ~TDipendente() { }
|
||||
};
|
||||
|
||||
class TDipendenti : public TObject
|
||||
{
|
||||
TArray _data;
|
||||
|
||||
protected:
|
||||
const TDipendente& dip(int i) const { return (const TDipendente&)_data[i]; }
|
||||
|
||||
public:
|
||||
const TDipendente& operator[](int i) const { return dip(i); }
|
||||
|
||||
int fill(TCursor& cur);
|
||||
int items() const { return _data.items(); }
|
||||
|
||||
int find(long d) const;
|
||||
|
||||
TDipendenti() { }
|
||||
virtual ~TDipendenti() { }
|
||||
};
|
||||
|
||||
class TQuadroA : public TDicForm
|
||||
{
|
||||
enum { QA_FORMLEN = 72 };
|
||||
|
||||
protected:
|
||||
virtual void next_page(TPrinter& pr);
|
||||
virtual bool print(const long codditta, const long NumFis, const long NumNoFis);
|
||||
|
||||
virtual void azzera_totali();
|
||||
virtual void aggiorna_totali(const char) { }
|
||||
|
||||
virtual int elementi_pagina(PaginaQuadro p) const;
|
||||
virtual int prima_riga(PaginaQuadro p) const;
|
||||
virtual int riga_totali(PaginaQuadro p) const;
|
||||
|
||||
bool init(long codditta);
|
||||
|
||||
virtual void preprocess_corpo(const TRectype& rec);
|
||||
|
||||
void stampa_corpo(TPrinter& pr);
|
||||
void stampa_totali(TPrinter& pr);
|
||||
void stampa_firma(TPrinter& pr);
|
||||
|
||||
public:
|
||||
TQuadroA(const char* form, const char* quadro) : TDicForm(form, quadro) {}
|
||||
virtual ~TQuadroA() {}
|
||||
};
|
||||
|
||||
class TStampaQuadroA : public TStampaQuadro
|
||||
{
|
||||
protected:
|
||||
TDicForm* _form;
|
||||
TCursor* _cur;
|
||||
|
||||
protected:
|
||||
virtual bool user_create();
|
||||
virtual bool user_destroy();
|
||||
|
||||
virtual bool conta_tipi_per() const { return FALSE; }
|
||||
virtual TDicForm* get_form() const { return _form; }
|
||||
virtual TCursor* get_cursor() const { return _cur; }
|
||||
|
||||
public:
|
||||
TStampaQuadroA(const char* quadro, char livel) : TStampaQuadro(quadro, livel) { }
|
||||
virtual ~TStampaQuadroA() { }
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////
|
||||
// QUADRO A1
|
||||
///////////////////////////////////////////////
|
||||
|
||||
class TQuadroA1 : public TQuadroA
|
||||
{
|
||||
protected:
|
||||
virtual int elementi_pagina(PaginaQuadro p) const;
|
||||
virtual int prima_riga(PaginaQuadro p) const;
|
||||
virtual long filtra(const long codditta);
|
||||
virtual void preprocess_corpo(const TRectype& rec);
|
||||
|
||||
public:
|
||||
TQuadroA1(const char* form, const char* quadro) : TQuadroA(form, quadro) { }
|
||||
virtual ~TQuadroA1() { }
|
||||
};
|
||||
|
||||
class TStampaQuadroA1 : public TStampaQuadroA
|
||||
{
|
||||
protected:
|
||||
virtual bool user_create();
|
||||
|
||||
public:
|
||||
TStampaQuadroA1(const char* quadro, char livel) : TStampaQuadroA(quadro, livel) { }
|
||||
virtual ~TStampaQuadroA1() { }
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////
|
||||
// QUADRO A2
|
||||
///////////////////////////////////////////////
|
||||
|
||||
class TQuadroA2 : public TQuadroA
|
||||
{
|
||||
protected:
|
||||
virtual int elementi_pagina(PaginaQuadro p) const;
|
||||
virtual int prima_riga(PaginaQuadro p) const;
|
||||
virtual void preprocess_corpo(const TRectype& rec);
|
||||
|
||||
public:
|
||||
TQuadroA2(const char* form, const char* quadro) : TQuadroA(form, quadro) { }
|
||||
virtual ~TQuadroA2() { }
|
||||
};
|
||||
|
||||
class TStampaQuadroA2 : public TStampaQuadroA
|
||||
{
|
||||
protected:
|
||||
virtual bool user_create();
|
||||
|
||||
public:
|
||||
TStampaQuadroA2(const char* quadro, char livel) : TStampaQuadroA(quadro, livel) { }
|
||||
virtual ~TStampaQuadroA2() { }
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////
|
||||
// QUADRO A3
|
||||
/////////////////////////////////////////////////
|
||||
|
||||
class TQuadroA3 : public TQuadroA
|
||||
{
|
||||
protected:
|
||||
virtual int elementi_pagina(PaginaQuadro p) const;
|
||||
virtual int prima_riga(PaginaQuadro p) const;
|
||||
|
||||
public:
|
||||
TQuadroA3(const char* form, const char* quadro) : TQuadroA(form, quadro) { }
|
||||
virtual ~TQuadroA3() { }
|
||||
};
|
||||
|
||||
class TStampaQuadroA3 : public TStampaQuadroA
|
||||
{
|
||||
protected:
|
||||
virtual bool user_create();
|
||||
|
||||
public:
|
||||
TStampaQuadroA3(const char* quadro, char livel) : TStampaQuadroA(quadro, livel) { }
|
||||
virtual ~TStampaQuadroA3() { }
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////
|
||||
// QUADRO B
|
||||
///////////////////////////////////////////////////////
|
||||
|
||||
class TQuadroB : public TQuadroA
|
||||
{
|
||||
protected:
|
||||
virtual int elementi_pagina(PaginaQuadro p) const;
|
||||
virtual int prima_riga(PaginaQuadro p) const;
|
||||
|
||||
public:
|
||||
TQuadroB(const char* form, const char* quadro) : TQuadroA(form, quadro) { }
|
||||
virtual ~TQuadroB() { }
|
||||
};
|
||||
|
||||
class TStampaQuadroB : public TStampaQuadroA
|
||||
{
|
||||
protected:
|
||||
virtual bool user_create();
|
||||
|
||||
public:
|
||||
TStampaQuadroB(const char* quadro, char livel) : TStampaQuadroA(quadro, livel) { }
|
||||
virtual ~TStampaQuadroB() { }
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Quadro H
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
class TQuadroH : public TQuadroA
|
||||
{
|
||||
enum { QH_FORMLEN = 72 };
|
||||
|
||||
protected:
|
||||
virtual bool ultima_pagina() const { return _PaginaCorrente==SECONDA; }
|
||||
virtual int elementi_pagina(PaginaQuadro p) const;
|
||||
virtual int prima_riga(PaginaQuadro p) const;
|
||||
virtual bool print(const long codditta, const long NumFis, const long NumNoFis);
|
||||
virtual void inc_curr_page();
|
||||
|
||||
public:
|
||||
TQuadroH(const char* form, const char* quadro) : TQuadroA(form, quadro) { }
|
||||
virtual ~TQuadroH() { }
|
||||
};
|
||||
|
||||
class TStampaQuadroH : public TStampaQuadroA
|
||||
{
|
||||
protected:
|
||||
virtual bool user_create();
|
||||
|
||||
public:
|
||||
TStampaQuadroH(const char* quadro, char livel) : TStampaQuadroA(quadro, livel) {}
|
||||
virtual ~TStampaQuadroH() {}
|
||||
};
|
||||
|
||||
#endif
|
||||
|
286
m770/77stqc.cpp
Executable file
286
m770/77stqc.cpp
Executable file
@ -0,0 +1,286 @@
|
||||
///////////////////////////////////////////////////////////
|
||||
// Quadro 770/C
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
#include "77stqc.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// Quadro C
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
bool TQuadroC::controlla_percentuale(TCursor& cur, const real& perc_p)
|
||||
{
|
||||
bool stampa = TRUE;
|
||||
|
||||
if (perc_p == ZERO)
|
||||
{
|
||||
long ditta_p = cur.curr().get_long(QUC_CODDITTA);
|
||||
char tipo_p = cur.curr().get_char(QUC_TIPOA);
|
||||
long codana_p = cur.curr().get_long(QUC_CODANAGR);
|
||||
TString codcaus_p = cur.curr().get (QUC_CODCAUS);
|
||||
|
||||
++(cur);
|
||||
long ditta = cur.curr().get_long(QUC_CODDITTA);
|
||||
char tipo = cur.curr().get_char(QUC_TIPOA);
|
||||
long codana = cur.curr().get_long(QUC_CODANAGR);
|
||||
TString codcaus = cur.curr().get (QUC_CODCAUS);
|
||||
real perc = cur.curr().get_real(QUC_PERC);
|
||||
|
||||
if (ditta == ditta_p && tipo == tipo_p &&
|
||||
codana == codana_p && codcaus == codcaus_p)
|
||||
{
|
||||
if (perc != ZERO)
|
||||
{
|
||||
stampa = FALSE;
|
||||
_devo_sommare = TRUE;
|
||||
}
|
||||
}
|
||||
--(cur);
|
||||
}
|
||||
return stampa;
|
||||
}
|
||||
|
||||
void TQuadroC::leggi_importi()
|
||||
{
|
||||
TCursor* cur = cursor();
|
||||
|
||||
_totale = cur->curr().get_real(QUC_TOTALE);
|
||||
_contssn = cur->curr().get_real(QUC_CONTSSN);
|
||||
_somme = cur->curr().get_real(QUC_SOMME);
|
||||
_imponibile = cur->curr().get_real(QUC_IMPONIBILE);
|
||||
_ritenute = cur->curr().get_real(QUC_RITENUTE);
|
||||
_netto = cur->curr().get_real(QUC_NETTO);
|
||||
}
|
||||
|
||||
void TQuadroC::setta_importi(TPrint_section& body)
|
||||
{
|
||||
TCursor* cur = cursor();
|
||||
|
||||
real totale = cur->curr().get_real(QUC_TOTALE);
|
||||
real contssn = cur->curr().get_real(QUC_CONTSSN);
|
||||
real somme = cur->curr().get_real(QUC_SOMME);
|
||||
real imponibile = cur->curr().get_real(QUC_IMPONIBILE);
|
||||
real ritenute = cur->curr().get_real(QUC_RITENUTE);
|
||||
real netto = cur->curr().get_real(QUC_NETTO);
|
||||
|
||||
if (_devo_sommare)
|
||||
{
|
||||
totale += _totale;
|
||||
contssn += _contssn;
|
||||
somme += _somme;
|
||||
imponibile += _imponibile;
|
||||
ritenute += _ritenute;
|
||||
netto += _netto;
|
||||
_devo_sommare = FALSE;
|
||||
}
|
||||
|
||||
TForm_item& ftotale = body.find_field(C_TOTALE);
|
||||
TForm_item& fcontssn = body.find_field(C_CONTSSN);
|
||||
TForm_item& fsomme = body.find_field(C_SOMME);
|
||||
TForm_item& fimponibile = body.find_field(C_IMPONIBILE);
|
||||
TForm_item& fritenute = body.find_field(C_RITENUTE);
|
||||
TForm_item& fnetto = body.find_field(C_NETTO);
|
||||
|
||||
TString stotale (totale.string());
|
||||
TString scontssn (contssn.string());
|
||||
TString ssomme (somme.string());
|
||||
TString simponibile(imponibile.string());
|
||||
TString sritenute (ritenute.string());
|
||||
TString snetto (netto.string());
|
||||
// Setta i campi
|
||||
ftotale.set(stotale);
|
||||
fcontssn.set(scontssn);
|
||||
fsomme.set(ssomme);
|
||||
fimponibile.set(simponibile);
|
||||
fritenute.set(sritenute);
|
||||
fnetto.set(snetto);
|
||||
}
|
||||
|
||||
void TQuadroC::stampa_corpo(TPrinter& pr)
|
||||
{
|
||||
TPrint_section& body = section('B', odd_page);
|
||||
body.reset();
|
||||
// body.update();
|
||||
setta_importi(body);
|
||||
body.update();
|
||||
const int body_righe = body.height();
|
||||
for (int i=0; i < body_righe; i++)
|
||||
{
|
||||
pr.print(body.row(i));
|
||||
_RigaCorr++;
|
||||
}
|
||||
body.reset();
|
||||
if (usa_progind())
|
||||
progind()->addstatus(1);
|
||||
}
|
||||
|
||||
int TQuadroC::elementi_pagina(PaginaQuadro p) const
|
||||
{
|
||||
const int n[4] = { 6, 10, 10, 9 };
|
||||
return n[p-PRIMA];
|
||||
}
|
||||
|
||||
int TQuadroC::prima_riga(PaginaQuadro p) const
|
||||
{
|
||||
return p == PRIMA ? 27 : 8;
|
||||
}
|
||||
|
||||
bool TQuadroC::print(const long codditta, const long NumFis, const long NumNoFis)
|
||||
{
|
||||
TCursor& cur = *cursor();
|
||||
TPrinter& pr = printer();
|
||||
bool stampa = TRUE;
|
||||
|
||||
if (!InitPrint(codditta))
|
||||
return FALSE;
|
||||
|
||||
pr.formlen(QA_FORMLEN);
|
||||
|
||||
int elementi = 0; // Numero di elementi stampati in questa pagina
|
||||
bool stampato_ultimo = FALSE;
|
||||
bool stampati_totali = FALSE;
|
||||
|
||||
int pos = 0;
|
||||
TDipendenti indice;
|
||||
if (quadro() == "A" || quadro() == "B")
|
||||
{
|
||||
const int i = indice.fill(cur);
|
||||
if (i > 0)
|
||||
{
|
||||
if (usa_progind())
|
||||
progind()->addstatus(cur.items()-i); // Segna come elaborati tutti gli ignorati
|
||||
|
||||
cur = indice[0].pos();
|
||||
}
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
cur = 0;
|
||||
|
||||
while (!stampati_totali)
|
||||
{
|
||||
bool stampa = TRUE;
|
||||
bool stampero_ultimo = stampato_ultimo == FALSE;
|
||||
if (stampero_ultimo)
|
||||
{
|
||||
if (indice.items() > 0) // Usa indice alternativo
|
||||
stampero_ultimo &= pos == indice.items()-1;
|
||||
else // Usa indice del cursore
|
||||
stampero_ultimo &= cur.pos() == cur.items()-1;
|
||||
}
|
||||
|
||||
_EndPrintDitta=stampato_ultimo;
|
||||
switch(_PaginaCorrente)
|
||||
{
|
||||
case PRIMA:
|
||||
if (_modulaser)
|
||||
ClearFlagModulaser();
|
||||
|
||||
if (elementi == 0)
|
||||
{
|
||||
stampa_testata(pr);
|
||||
jump_to_line(pr, prima_riga(PRIMA));
|
||||
}
|
||||
|
||||
if (!stampato_ultimo)
|
||||
{
|
||||
real perc_p = cur.curr().get_real(QUC_PERC);
|
||||
stampa = controlla_percentuale(cur,perc_p);
|
||||
if (stampa)
|
||||
stampa_corpo(pr);
|
||||
else
|
||||
leggi_importi();
|
||||
|
||||
stampato_ultimo = stampero_ultimo;
|
||||
}
|
||||
|
||||
elementi++;
|
||||
if (elementi >= elementi_pagina(PRIMA))
|
||||
{
|
||||
next_page(pr);
|
||||
elementi = 0;
|
||||
}
|
||||
break;
|
||||
case SECONDA:
|
||||
case TERZA:
|
||||
if (!stampato_ultimo)
|
||||
{
|
||||
if (elementi == 0)
|
||||
jump_to_line(pr, prima_riga(_PaginaCorrente));
|
||||
|
||||
real perc_p = cur.curr().get_real(QUC_PERC);
|
||||
stampa = controlla_percentuale(cur,perc_p);
|
||||
if (stampa)
|
||||
stampa_corpo(pr);
|
||||
else
|
||||
leggi_importi();
|
||||
|
||||
stampato_ultimo = stampero_ultimo;
|
||||
}
|
||||
elementi++;
|
||||
if (elementi >= elementi_pagina(_PaginaCorrente))
|
||||
{
|
||||
next_page(pr);
|
||||
elementi = 0;
|
||||
}
|
||||
break;
|
||||
case QUARTA:
|
||||
if (!stampato_ultimo)
|
||||
{
|
||||
if (elementi == 0)
|
||||
jump_to_line(pr, prima_riga(QUARTA));
|
||||
|
||||
real perc_p = cur.curr().get_real(QUC_PERC);
|
||||
stampa = controlla_percentuale(cur,perc_p);
|
||||
if (stampa)
|
||||
stampa_corpo(pr);
|
||||
else
|
||||
leggi_importi();
|
||||
|
||||
stampato_ultimo = stampero_ultimo;
|
||||
}
|
||||
|
||||
elementi++;
|
||||
|
||||
if (elementi >= elementi_pagina(QUARTA))
|
||||
{
|
||||
if (stampato_ultimo)
|
||||
{
|
||||
jump_to_line(pr, riga_totali(QUARTA));
|
||||
stampa_totali(pr);
|
||||
stampati_totali = TRUE;
|
||||
}
|
||||
next_page(pr);
|
||||
elementi = 0;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
CHECK(0, "Invalid Quadro A page");
|
||||
break;
|
||||
}
|
||||
|
||||
if (!stampato_ultimo)
|
||||
{
|
||||
if (indice.items() > 0)
|
||||
cur = indice[++pos].pos();
|
||||
else
|
||||
++cur;
|
||||
}
|
||||
}
|
||||
|
||||
close_print();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TStampaQuadroC::user_create()
|
||||
{
|
||||
_form = new TQuadroC("77QC", quadro());
|
||||
|
||||
TString sortkey(80);
|
||||
sortkey.format("CODDITTA|TIPOA|216@->RAGSOC|CODANAGR|CODCAUS|PERC", LF_QUAC, LF_QUAC);
|
||||
_cur = new TSorted_cursor(_form->TForm::relation(), sortkey);
|
||||
|
||||
return TRUE;
|
||||
}
|
39
m770/77stqc.h
Executable file
39
m770/77stqc.h
Executable file
@ -0,0 +1,39 @@
|
||||
#ifndef __77STQC_H
|
||||
#define __77STQC_H
|
||||
|
||||
#include "77stq.h"
|
||||
#include "77stqab.h"
|
||||
|
||||
class TQuadroC : public TQuadroA
|
||||
{
|
||||
enum { QA_FORMLEN = 72 };
|
||||
|
||||
real _totale, _contssn, _somme, _imponibile, _ritenute, _netto;
|
||||
bool _devo_sommare;
|
||||
|
||||
protected:
|
||||
virtual int elementi_pagina(PaginaQuadro p) const;
|
||||
virtual int prima_riga(PaginaQuadro p) const;
|
||||
virtual bool print(const long codditta, const long NumFis, const long NumNoFis);
|
||||
|
||||
public:
|
||||
bool controlla_percentuale(TCursor& cur, const real& perc_p);
|
||||
void stampa_corpo(TPrinter& pr);
|
||||
void setta_importi(TPrint_section& body);
|
||||
void leggi_importi();
|
||||
|
||||
TQuadroC(const char* form, const char* quadro) : TQuadroA(form, quadro) { }
|
||||
virtual ~TQuadroC() { }
|
||||
};
|
||||
|
||||
class TStampaQuadroC : public TStampaQuadroA
|
||||
{
|
||||
protected:
|
||||
virtual bool user_create();
|
||||
|
||||
public:
|
||||
TStampaQuadroC(const char* quadro, char livel) : TStampaQuadroA(quadro, livel) { }
|
||||
virtual ~TStampaQuadroC() { }
|
||||
};
|
||||
|
||||
#endif
|
Loading…
x
Reference in New Issue
Block a user