From 66c50f02498634d76c15eefe76588412f13ddcf7 Mon Sep 17 00:00:00 2001 From: nik Date: Thu, 12 Sep 1996 10:39:42 +0000 Subject: [PATCH] Stampa base a parte git-svn-id: svn://10.65.10.50/trunk@3568 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- m770/771230.cpp | 6 + m770/771230f.uml | 2 +- m770/77base1.frm | 52 +-- m770/77base2.frm | 4 +- m770/77base3.frm | 4 +- m770/77base4.frm | 4 +- m770/77qa.frm | 4 +- m770/77qbb.uml | 4 +- m770/77ql.frm | 277 ++++++++++++ m770/77qn.frm | 688 +++++++++++++++++++++++++++++ m770/77stba.cpp | 985 +++++++++++++++++++++++++++++++++++++++++ m770/77stba.h | 288 ++++++++++++ m770/77stq.cpp | 1081 +-------------------------------------------- m770/quadb_b1.cpp | 4 +- 14 files changed, 2284 insertions(+), 1119 deletions(-) create mode 100755 m770/77ql.frm create mode 100755 m770/77qn.frm create mode 100755 m770/77stba.cpp create mode 100755 m770/77stba.h diff --git a/m770/771230.cpp b/m770/771230.cpp index 14a0f140b..d8343b56d 100755 --- a/m770/771230.cpp +++ b/m770/771230.cpp @@ -615,6 +615,9 @@ void TQuadroC_E2::leggi_sort(TProgind& p) if (!QuadroE() && !QuadroE1()) qd.put("TOTALE", tot_comp + tot_somme); + if (QuadroC()) + qd.put("TOTALE", tot_somme + tot_impo + rTotQCInps); + if (QuadroE1()) qd.put("NETTO", tot_comp - tot_rite); else @@ -681,6 +684,9 @@ void TQuadroC_E2::leggi_sort(TProgind& p) if (!QuadroE() && !QuadroE1()) qd.put("TOTALE", tot_comp + tot_somme); + if (QuadroC()) + qd.put("TOTALE", tot_somme + tot_impo + rTotQCInps); + if (QuadroE1()) qd.put("NETTO", tot_comp - tot_rite); else diff --git a/m770/771230f.uml b/m770/771230f.uml index 0b73b59e0..f64a3ef46 100755 --- a/m770/771230f.uml +++ b/m770/771230f.uml @@ -176,7 +176,7 @@ BEGIN FIELD LF_QUAC->IMPONIBILE PICTURE "." FLAGS "DR" - NUM_CALC {#F_TOTALE-#F_SOMME} + NUM_CALC {#F_TOTALE-#F_SOMME-#QCF_CONTSSN} END TEXT DLG_NULL diff --git a/m770/77base1.frm b/m770/77base1.frm index 2b9a67c32..7f5ecad69 100755 --- a/m770/77base1.frm +++ b/m770/77base1.frm @@ -31,8 +31,8 @@ END GENERAL BEGIN OFFSET 0 0 - FONT "Courier 17cpi" - SIZE 10 + FONT "Roman 17cpi" + SIZE 12 CA "X" IN 3 2 FI 131 @@ -229,7 +229,7 @@ END STRINGA 22 BEGIN KEY "GRUPPO 2 - ALTRI SOGGETTI - CODICE FISCALE" - PROMPT 25 11 "" + PROMPT 25 12 "" FIELD 116@->COFI GROUP 2 END @@ -237,7 +237,7 @@ END LISTA 23 BEGIN KEY "REG.A.STATUTO.SPECIALE VA - SA -SI" - PROMPT 95 11 "" + PROMPT 95 12 "" ITEM "|" ITEM "1|X" ITEM "2|" @@ -249,7 +249,7 @@ END LISTA 24 BEGIN KEY "REG.A.STATUTO.SPECIALE VA - SA -SI" - PROMPT 103 11 "" + PROMPT 103 12 "" ITEM "|" ITEM "1|" ITEM "2|X" @@ -261,7 +261,7 @@ END LISTA 25 BEGIN KEY "REG.A.STATUTO.SPECIALE VA - SA -SI" - PROMPT 112 11 "" + PROMPT 112 12 "" ITEM "|" ITEM "1|" ITEM "2|" @@ -273,7 +273,7 @@ END STRINGA 26 BEGIN KEY "CODICE ATTIVITA" - PROMPT 121 11 "" + PROMPT 121 12 "" FIELD 9->CODATTPREV GROUP 2 END @@ -281,7 +281,7 @@ END STRINGA 27 BEGIN KEY "RAGIONE SOCIALE" - PROMPT 25 13 "" + PROMPT 25 14 "" FIELD 116@->RAGSOC GROUP 2 END @@ -289,7 +289,7 @@ END STRINGA 28 BEGIN KEY "EVENTI ECCEZIONALI" - PROMPT 128 13 "" + PROMPT 128 14 "" FIELD 116@->EVECC GROUP 2 END @@ -303,7 +303,7 @@ END STRING 30 BEGIN KEY "COMUNE SEDE LEGALE " - PROMPT 39 15 "" + PROMPT 41 16 "" FIELD 413@->DENCOM GROUP 2 END @@ -311,7 +311,7 @@ END STRING 31 BEGIN KEY "PROV. SEDE LEGALE" - PROMPT 119 15 "" + PROMPT 122 16 "" FIELD 413@->PROVCOM GROUP 2 END @@ -319,7 +319,7 @@ END STRING 32 BEGIN KEY "VIA SEDE LEGALE" - PROMPT 39 17 "" + PROMPT 39 19 "" FIELD 216@->INDRES[1,18] FLAGS "H" END @@ -336,14 +336,14 @@ END STRING 34 BEGIN KEY "VIA SEDE LEGALE" - PROMPT 39 17 "" + PROMPT 39 19 "" GROUP 2 END STRINGA 35 BEGIN KEY "CAP" - PROMPT 119 17 "" + PROMPT 119 19 "" FIELD 116@->CAPRF FIELD 116@->CAPRES GROUP 2 @@ -352,7 +352,7 @@ END STRING 36 BEGIN KEY "COMUNE DI RESIDENZA FISCALE" - PROMPT 39 19 "" + PROMPT 41 20 "" FIELD 413@->DENCOM GROUP 2 END @@ -360,7 +360,7 @@ END STRING 37 BEGIN KEY "PROV. RESIDENZA FISCALE" - PROMPT 119 19 "" + PROMPT 121 20 "" FIELD 413@->PROVCOM GROUP 2 END @@ -368,7 +368,7 @@ END STRING 38 BEGIN KEY "VIA RESIDENZA FISCALE" - PROMPT 39 21 "" + PROMPT 39 22 "" FIELD 216@->INDRES[1,18] FLAGS "H" MESSAGE COPY,12 @@ -386,14 +386,14 @@ END STRING 40 BEGIN KEY "VIA RES FISCALE" - PROMPT 39 21 "" + PROMPT 39 22 "" GROUP 2 END STRINGA 41 BEGIN KEY "CAP" - PROMPT 119 21 "" + PROMPT 121 22 "" FIELD 116@->CAPRF GROUP 2 END @@ -401,7 +401,7 @@ END STRINGA 42 BEGIN KEY "DATA APP.BILANCIO gg-mm-aaa" - PROMPT 29 23 "" + PROMPT 29 25 "" PICTURE "## ^ ##^^###" GROUP 2 END @@ -409,7 +409,7 @@ END STRINGA 43 BEGIN KEY "Termine per APP.BILANCIO gg-mm-aaa" - PROMPT 88 23 "" + PROMPT 88 25 "" PICTURE "## ^ ##^^###" GROUP 2 END @@ -417,7 +417,7 @@ END STRINGA 48 BEGIN KEY "STATO" - PROMPT 29 25 "" + PROMPT 31 26 "" FIELD 7->STATOSOC GROUP 2 END @@ -425,7 +425,7 @@ END STRINGA 49 BEGIN KEY "NAT.GIURIDICA" - PROMPT 49 25 "" + PROMPT 51 26 "" FIELD 7->NATGIU GROUP 2 END @@ -433,7 +433,7 @@ END STRINGA 50 BEGIN KEY "SITUAZIONE" - PROMPT 73 25 "" + PROMPT 75 26 "" FIELD 7->SITSOC GROUP 2 END @@ -441,14 +441,14 @@ END STRINGA 51 BEGIN KEY "TELEFONO - PREF" - PROMPT 99 25 "" + PROMPT 99 27 "" GROUP 2 END STRINGA 52 BEGIN KEY "TELEFONO - NUMERO" - PROMPT 110 25 "" + PROMPT 110 27 "" GROUP 2 END diff --git a/m770/77base2.frm b/m770/77base2.frm index 2b773012a..8a1745cea 100755 --- a/m770/77base2.frm +++ b/m770/77base2.frm @@ -11,8 +11,8 @@ END GENERAL BEGIN OFFSET 0 0 - FONT "Courier 17cpi" - SIZE 10 + FONT "Roman 17cpi" + SIZE 12 CA "X" IN 3 2 FI 131 diff --git a/m770/77base3.frm b/m770/77base3.frm index a61ea0256..a8408384b 100755 --- a/m770/77base3.frm +++ b/m770/77base3.frm @@ -11,8 +11,8 @@ END GENERAL BEGIN OFFSET 0 0 - FONT "Courier 17cpi" - SIZE 10 + FONT "Roman 17cpi" + SIZE 12 CA "X" IN 3 2 FI 131 diff --git a/m770/77base4.frm b/m770/77base4.frm index ad53fd9d2..88c87ead4 100755 --- a/m770/77base4.frm +++ b/m770/77base4.frm @@ -28,8 +28,8 @@ END GENERAL BEGIN OFFSET 0 0 - FONT "Courier 17cpi" - SIZE 10 + FONT "Roman 17cpi" + SIZE 12 CA "X" IN 3 2 FI 131 diff --git a/m770/77qa.frm b/m770/77qa.frm index f1d894e6b..db53da345 100755 --- a/m770/77qa.frm +++ b/m770/77qa.frm @@ -24,8 +24,8 @@ END GENERAL BEGIN OFFSET 0 0 - FONT "Courier New" - SIZE 11 + FONT "Roman 17cpi" + SIZE 12 CARATTERE "X" INIZIO_POS 3 2 FINE_POS 131 diff --git a/m770/77qbb.uml b/m770/77qbb.uml index 4c962b850..cfea5430a 100755 --- a/m770/77qbb.uml +++ b/m770/77qbb.uml @@ -22,7 +22,7 @@ BEGIN PROMPT 1 1 "@bDipendente" END -NUMBER QBF_CODDIP 5 +NUMBER QBF_CODDIP 6 BEGIN PROMPT 17 1 "" USE LF_DIPEND KEY 1 @@ -372,7 +372,7 @@ END NUMBER QBF_PERCABB2 15 BEGIN PROMPT COLTFRB3 RIGTFRB2 "" - FIELD LF_QUAB->PERCABB2 + FIELD LF_QUAB->ABBATT PICTURE "." GROUP GROUP_ALL END diff --git a/m770/77ql.frm b/m770/77ql.frm new file mode 100755 index 000000000..7acb851bc --- /dev/null +++ b/m770/77ql.frm @@ -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 + + + diff --git a/m770/77qn.frm b/m770/77qn.frm new file mode 100755 index 000000000..ad53fd9d2 --- /dev/null +++ b/m770/77qn.frm @@ -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 + + + diff --git a/m770/77stba.cpp b/m770/77stba.cpp new file mode 100755 index 000000000..0137a79ae --- /dev/null +++ b/m770/77stba.cpp @@ -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 _dDvpos() >= 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; iaddstatus(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; +} + diff --git a/m770/77stba.h b/m770/77stba.h new file mode 100755 index 000000000..efcbd869f --- /dev/null +++ b/m770/77stba.h @@ -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 diff --git a/m770/77stq.cpp b/m770/77stq.cpp index 47b29c708..761573402 100755 --- a/m770/77stq.cpp +++ b/m770/77stq.cpp @@ -1,4 +1,5 @@ #include "77stq.h" +#include "77stba.h" #include "77stqab.h" #include "77stqc.h" @@ -3775,1087 +3776,7 @@ bool TStampaBusta::print_quadro(const int OffsetDitta, const bool modulaser) // BASE // /////////////////////////////////////////////////////////////////////////////////////////// -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; - long iContaSoci(); - protected: - void stampa_corpo(TPrinter& pr); - void stampa_soci(TPrinter& pr); - 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(); -}; - -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); -} - -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(); - fut.update(); - const long iSoci = iContaSoci(); - if (iSoci > 11) - /* TBI stampa su file (allegato) */; - else - { - int i=0; - TString sRagsoc,sSesso,sComuneNa,sProvNa,sDataNa,sCodFis,sCodQua; - for ((*c)=0L; c->pos() < c->items(); ++(*c)) - { - 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); - fut.field(1).set(sSesso); - fut.field(2).set(sComuneNa); - fut.field(3).set(sProvNa); - fut.field(4).set(sDataNa); - fut.field(5).set(sCodFis); - fut.field(6).set(sCodQua); - pr.print(fut.row(i++)); - _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(); - jump_to_line(pr, prima_riga(PRIMA)); - stampa_corpo(pr); - stampa_soci(pr); - next_page(pr); - close_print(); - return TRUE; -} - -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() {} -}; - -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; -} - -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() {} -}; - -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); -} - -const int _RIGA_TOTALI_L = 65; - -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; -} - -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() { } -}; - -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"); -} - -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() { } -}; - -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; -} - -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() { } -}; - -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"); -} - -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() {} -}; - -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; -} - -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() { } -}; - -// Ordina le righe N per periodo di riferimento -int TRigaPS::compare(const TSortable& s) const -{ - const TRigaPS& rec = (const TRigaPS&)s; - return _dDvpos() >= 0) - _data.add(n); - else - delete n; - } - _data.sort(); - const int i = _data.items(); - return i; -} - -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() {} -}; - -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; iaddstatus(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); -} - -const int _FIELD_L = 740; - -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; -} - -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) { } -}; - -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; -} - ///////////////////////////////////////////////////////////////////////////////// // // MAIN diff --git a/m770/quadb_b1.cpp b/m770/quadb_b1.cpp index 38f0ff63f..77ccc9ae4 100755 --- a/m770/quadb_b1.cpp +++ b/m770/quadb_b1.cpp @@ -181,9 +181,9 @@ TMask* TQuadriBB1_application::load_mask(int n) 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 c29=m.get_real(QBF_TRID); real c37 = c28 - c29;