From 550569575d40aae3bee6775767aa2f15cf318ade Mon Sep 17 00:00:00 2001 From: cris Date: Tue, 17 Jun 1997 15:50:08 +0000 Subject: [PATCH] versione del 17/06/97 git-svn-id: svn://10.65.10.50/trunk@4688 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- at/at0.cpp | 4 +- at/at0.h | 1 + at/at0.url | 8 +- at/at0100a.h | 235 ++--- at/at0100a.uml | 622 +++++++++---- at/at0100c.uml | 12 +- at/at0200.cpp | 40 +- at/at0200a.h | 11 +- at/at0200a.uml | 21 +- at/at0300a.uml | 8 +- at/at0400.cpp | 392 +++++--- at/at0400a.h | 38 +- at/at0400a.uml | 97 +- at/at0500.cpp | 179 ++++ at/at0500a.h | 16 + at/at0500a.uml | 149 ++++ at/at0700.h | 5 + at/at0700a.uml | 183 ++-- at/at0800a.uml | 2 +- at/at1.cpp | 6 +- at/at1.url | 12 + at/at1100.cpp | 36 +- at/at1200.cpp | 38 +- at/at1300.cpp | 18 +- at/at1400a.uml | 8 +- at/at1500.cpp | 252 ++++++ at/at1500a.h | 17 + at/{at3400a.uml => at1500a.uml} | 202 +---- at/at1600.cpp | 190 ++++ at/at1600a.h | 12 + at/at1600a.uml | 143 +++ at/at2.cpp | 4 +- at/at2.h | 1 + at/at2.url | 6 + at/at2100.cpp | 44 +- at/at2200.cpp | 35 +- at/at2300.cpp | 36 +- at/at2400.cpp | 36 +- at/at2500.cpp | 37 +- at/at2600.cpp | 16 +- at/at2700.cpp | 352 ++++++++ at/{at3300a.h => at2700a.h} | 27 +- at/{at3300a.uml => at2700a.uml} | 142 ++- at/at3.cpp | 26 +- at/at3.h | 7 +- at/at3100.cpp | 502 ++--------- at/at3100a.h | 18 - at/at3100a.uml | 166 +--- at/at3200.cpp | 218 ----- at/at3200a.h | 8 - at/at3200a.uml | 44 - at/at3300.cpp | 359 -------- at/at3400.cpp | 334 ------- at/at3400a.h | 30 - at/at3500a.h | 42 - at/at3500a.uml | 364 -------- at/at4.cpp | 4 +- at/at4.url | 6 + at/at4100.cpp | 15 +- at/at4200.cpp | 38 +- at/at4300.cpp | 19 +- at/at4300a.uml | 15 +- at/at4400.cpp | 431 +++++++++ at/at4400a.h | 19 + at/{at3600a.uml => at4400a.uml} | 83 +- at/at6.cpp | 6 +- at/at6.h | 1 + at/at6.url | 5 +- at/at6300.cpp | 301 +++++++ at/at6300a.h | 18 + at/at6300a.uml | 194 ++++ at/at7.cpp | 23 + at/at7.h | 7 + at/at7.url | 11 + at/at7100.cpp | 117 +++ at/at7100a.uml | 15 + at/at7200.cpp | 117 +++ at/at7200a.uml | 15 + at/at_etcar.frm | 293 +++--- at/at_etsog.frm | 215 ++--- at/at_pag02.frm | 836 ++++++++++++++++++ at/at_pagin.frm | 1473 ++++++++++++++++++------------- at/atlib1.cpp | 47 +- at/avis.mnu | 35 +- at/batbbnz.uml | 2 +- at/batbctd.uml | 2 +- at/batbctn.uml | 2 +- at/batbgaz.uml | 2 +- at/batbido.uml | 8 +- at/batblcp.uml | 2 +- at/batbldl.uml | 2 +- at/batbldn.h | 9 +- at/batbldn.uml | 88 +- at/batbmtc.h | 3 + at/batbmtc.uml | 40 + at/batbprf.uml | 2 +- at/batbtcs.uml | 17 +- at/batbtdn.uml | 4 +- at/benem.h | 6 + at/contsan.h | 2 + at/convoc.h | 6 + at/donaz.h | 18 +- at/f115.dir | 6 +- at/f115.trr | 30 +- at/f116.dir | 6 +- at/f116.trr | 21 +- at/f90.dir | 6 +- at/f90.trr | 182 ++-- at/f91.dir | 6 +- at/f91.trr | 26 +- at/f92.dir | 6 +- at/f92.trr | 37 +- at/f93.dir | 6 +- at/f93.trr | 36 +- at/f94.dir | 6 +- at/f94.trr | 28 +- at/f95.dir | 6 +- at/f95.trr | 18 +- at/f96.dir | 6 +- at/f96.trr | 78 +- at/f97.dir | 6 +- at/f97.trr | 26 +- at/kell.h | 6 + at/modalita.h | 1 + at/rconvoc.h | 3 + at/rh.h | 2 +- at/sezioni.h | 7 +- at/soggetti.h | 21 +- 128 files changed, 6797 insertions(+), 4170 deletions(-) create mode 100755 at/at0500.cpp create mode 100755 at/at0500a.h create mode 100755 at/at0500a.uml create mode 100755 at/at1500.cpp create mode 100755 at/at1500a.h rename at/{at3400a.uml => at1500a.uml} (50%) create mode 100755 at/at1600.cpp create mode 100755 at/at1600a.h create mode 100755 at/at1600a.uml create mode 100755 at/at2700.cpp rename at/{at3300a.h => at2700a.h} (56%) rename at/{at3300a.uml => at2700a.uml} (70%) delete mode 100755 at/at3100a.h delete mode 100755 at/at3200.cpp delete mode 100755 at/at3200a.h delete mode 100755 at/at3200a.uml delete mode 100755 at/at3300.cpp delete mode 100755 at/at3400.cpp delete mode 100755 at/at3400a.h delete mode 100755 at/at3500a.h delete mode 100755 at/at3500a.uml create mode 100755 at/at4400.cpp create mode 100755 at/at4400a.h rename at/{at3600a.uml => at4400a.uml} (63%) create mode 100755 at/at6300.cpp create mode 100755 at/at6300a.h create mode 100755 at/at6300a.uml create mode 100755 at/at7.cpp create mode 100755 at/at7.h create mode 100755 at/at7.url create mode 100755 at/at7100.cpp create mode 100755 at/at7100a.uml create mode 100755 at/at7200.cpp create mode 100755 at/at7200a.uml create mode 100755 at/at_pag02.frm create mode 100755 at/batbmtc.h create mode 100755 at/batbmtc.uml create mode 100755 at/kell.h diff --git a/at/at0.cpp b/at/at0.cpp index 8f14ddbe4..b6ffe1367 100755 --- a/at/at0.cpp +++ b/at/at0.cpp @@ -4,7 +4,7 @@ #include "at0.h" -#define usage "Error - usage : %s -{0|1|2|3}" +#define usage "Error - usage : %s -{0|1|2|3|4}" int main(int argc,char** argv) @@ -22,6 +22,8 @@ int main(int argc,char** argv) rt = at0300(argc,argv) ; break; case 3: rt = at0400(argc,argv) ; break; + case 4: + rt = at0500(argc,argv) ; break; default: error_box(usage, argv[0]) ; break; } diff --git a/at/at0.h b/at/at0.h index 92eabd0e0..3e73d3d62 100755 --- a/at/at0.h +++ b/at/at0.h @@ -5,6 +5,7 @@ int at0100(int argc, char* argv[]); int at0200(int argc, char* argv[]); int at0300(int argc, char* argv[]); int at0400(int argc, char* argv[]); +int at0500(int argc, char* argv[]); #endif // __AT0_H diff --git a/at/at0.url b/at/at0.url index 884bad253..393cb541a 100755 --- a/at/at0.url +++ b/at/at0.url @@ -23,9 +23,15 @@ MENUBAR MENU_BAR(2) MENU MENU_BAR(2) SUBMENU MENU_FILE "~File" -/* at0 -3 gestione convocazione */ +/* at0 -3 gestione convocazione su punto di raccolta*/ MENUBAR MENU_BAR(3) MENU MENU_BAR(3) SUBMENU MENU_FILE "~File" +/* at0 -4 spostamento convocazioni su punto di raccolta */ +MENUBAR MENU_BAR(4) + +MENU MENU_BAR(4) + SUBMENU MENU_FILE "~File" + diff --git a/at/at0100a.h b/at/at0100a.h index cda6ee0e5..ab7aaf82d 100755 --- a/at/at0100a.h +++ b/at/at0100a.h @@ -7,40 +7,39 @@ #define F_NOME 103 #define F_DATANASC 104 #define F_TESSAVIS 105 -#define F_T_STAMPATA 106 -#define F_CODSEZ 107 -#define F_DENSEZ 108 -#define F_CODSOT 109 -#define F_DENSOT 110 -#define F_CATDON 111 -#define F_DESC_CATDON 112 -#define F_DATAISC 113 -#define F_DATADIM 114 -#define F_DOM_INDIR 115 -#define F_DOM_CODCOM 116 -#define F_DOM_DENCOM 117 -#define F_DOM_CAPCOM 118 -#define F_DOM_PROVCOM 119 -#define F_DOM_CODLOC 120 -#define F_DOM_DENLOC 121 -#define F_DOM_STRADA 122 -#define F_DOM_DISTRI 123 -#define F_RES_INDIR 124 -#define F_RES_CODCOM 125 -#define F_RES_DENCOM 126 -#define F_RES_CAPCOM 127 -#define F_RES_PROVCOM 128 -#define F_RES_CODLOC 129 -#define F_RES_DENLOC 130 -#define F_COMNASC 131 -#define F_DENCOMNASC 132 -#define F_PROVCOMNASC 133 -#define F_SESSO 134 -#define F_CF 135 -#define F_DOCID 136 -#define F_TELABI 137 -#define F_TELLAV 138 -#define F_TELALT 139 +#define F_CODSEZ 106 +#define F_DENSEZ 107 +#define F_CODSOT 108 +#define F_DENSOT 109 +#define F_CATDON 110 +#define F_DESC_CATDON 111 +#define F_DATAISC 112 +#define F_DATADIM 113 +#define F_DOM_INDIR 114 +#define F_DOM_CODCOM 115 +#define F_DOM_DENCOM 116 +#define F_DOM_CAPCOM 117 +#define F_DOM_PROVCOM 118 +#define F_DOM_CODLOC 119 +#define F_DOM_DENLOC 120 +#define F_DOM_STRADA 121 +#define F_DOM_DISTRI 122 +#define F_RES_INDIR 123 +#define F_RES_CODCOM 124 +#define F_RES_DENCOM 125 +#define F_RES_CAPCOM 126 +#define F_RES_PROVCOM 127 +#define F_RES_CODLOC 128 +#define F_RES_DENLOC 129 +#define F_COMNASC 130 +#define F_DENCOMNASC 131 +#define F_PROVCOMNASC 132 +#define F_SESSO 133 +#define F_CF 134 +#define F_DOCID 135 +#define F_TELABI 136 +#define F_TELLAV 137 +#define F_TELALT 138 // pagina 2 #define F_CATNOND1 201 @@ -56,58 +55,65 @@ #define F_CODMED 211 #define F_COGNMED 212 #define F_NOMMED 213 -#define F_GRUPPOAB0 214 -#define F_RHANTID 215 -#define F_KELL 216 -#define F_FENOTIPORH 217 -#define F_DU 218 -#define F_MODCONV 219 -#define F_PUNTORACC 220 -#define F_DESC_PUNTORACC 221 -#define F_GPD_LUN 222 -#define F_GPD_MAR 223 -#define F_GPD_MER 224 -#define F_GPD_GIO 225 -#define F_GPD_VEN 226 -#define F_GPD_SAB 227 -#define F_GPD_DOM 228 -#define F_GPC_LUN 229 -#define F_GPC_MAR 230 -#define F_GPC_MER 231 -#define F_GPC_GIO 232 -#define F_GPC_VEN 233 -#define F_GPC_SAB 234 -#define F_GPC_DOM 235 +#define F_NOTIZIARIO 214 +#define F_BENEM 215 +#define F_GRUPPOAB0 216 +#define F_RHANTID 217 +#define F_KELL 218 +#define F_FENOTIPORH 219 +#define F_DU 220 +#define F_ANTICORPI 221 +#define F_CMV 222 +#define F_MODCONV 223 +#define F_PUNTORACC 224 +#define F_DESC_PUNTORACC 225 +#define F_GPD_LUN 226 +#define F_GPD_MAR 227 +#define F_GPD_MER 228 +#define F_GPD_GIO 229 +#define F_GPD_VEN 230 +#define F_GPD_SAB 231 +#define F_GPD_DOM 232 +#define F_GPC_LUN 233 +#define F_GPC_MAR 234 +#define F_GPC_MER 235 +#define F_GPC_GIO 236 +#define F_GPC_VEN 237 +#define F_GPC_SAB 238 +#define F_GPC_DOM 239 // pagina 3 #define F_STATO 301 #define F_DESCSTATO 302 #define F_DATASTATO 303 -#define F_IDON1 304 -#define F_DESC_ID1 305 -#define F_IDON2 306 -#define F_DESC_ID2 307 -#define F_IDON3 308 -#define F_DESC_ID3 309 -#define F_IDON4 310 -#define F_DESC_ID4 311 -#define F_DATAULTID 312 -#define F_TIPOULTID 313 -#define F_INTSI 314 -#define F_INTAF 315 -#define F_TOTDON 316 -#define F_DATAULTDON 317 -#define F_TIPOULTDON 318 -#define F_DESC_ULTDON 319 -#define F_DATAPROSSI 320 -#define F_DATAPROSAF 321 -#define F_DATAULTSI 322 -#define F_DATAULTAF 323 -#define F_TOTDONSI 324 -#define F_TOTDONAF 325 -#define F_DATACONV 326 -#define F_NUMCONV 327 +#define F_PROS_STATO 304 +#define F_DESCPROS_STATO 305 +#define F_DATA_PROS 306 +#define F_IDON1 307 +#define F_DESC_ID1 308 +#define F_IDON2 309 +#define F_DESC_ID2 310 +#define F_IDON3 311 +#define F_DESC_ID3 312 +#define F_IDON4 313 +#define F_DESC_ID4 314 +#define F_DATAULTID 315 +#define F_TIPOULTID 316 +#define F_INTSI 317 +#define F_INTAF 318 +#define F_TOTDON 319 +#define F_DATAULTDON 320 +#define F_TIPOULTDON 321 +#define F_DESC_ULTDON 322 +#define F_DATAPROSSI 323 +#define F_DATAPROSAF 324 +#define F_DATAULTSI 325 +#define F_DATAULTAF 326 +#define F_TOTDONSI 327 +#define F_TOTDONAF 328 +#define F_DATACONV 329 +#define F_NUMCONV 330 // pagina 4 #define F_CONDOCC 401 @@ -123,33 +129,42 @@ #define F_MOTESCL 411 #define F_UTENULTAGG 412 #define F_DATAULTAGG 413 -#define F_NOTE 414 +#define F_T_STAMPATA 414 +#define F_FAMIGLIA 415 +#define F_NOTE 416 // pagina 5 #define F_DONAZIONI 501 #define F_GENERA 502 +#define F_DONPRECSI 503 +#define F_DATAPRISI 504 +#define F_DONPRECAF 505 +#define F_DATAPRIAF 506 // pagina 6 #define F_CONTROLLI 601 // pagina 7 #define F_BENEMERENZE 701 -#define F_FAMIGLIA 702 -#define F_STORICO 703 +#define F_STORICO 702 // pagina donazioni #define F_D_DATADON 101 #define F_D_TIPODON 102 #define F_D_LUOGODON 103 -#define F_D_ETICHETTA 104 -#define F_D_CC 105 -#define F_D_PA 106 -#define F_D_HB 107 -#define F_D_SGPT 108 -#define F_D_PROTIDEMIA 109 -#define F_D_PRIMADON 110 -#define F_D_DESC_TIPODON 211 -#define F_D_DESC_LUOGODON 212 +#define F_D_DESC_LUOGODON 104 +#define F_D_ETICHETTA 105 +#define F_D_PRIMADON 106 +#define F_D_CODSEZ 107 +#define F_D_CODSOT 108 +#define F_D_DENSEZ 109 +#define F_D_DENSOT 110 +#define F_D_CC 111 +#define F_D_PA 112 +#define F_D_HB 113 +#define F_D_SGPT 114 +#define F_D_PROTIDEMIA 115 +#define F_D_DESC_TIPODON 151 // pagina controlli sanitari #define F_C_DATACON 101 @@ -162,18 +177,30 @@ #define F_C_INTAF 108 #define F_C_PROSSTIPO 109 #define F_C_PROSSDATA 110 -#define F_C_DESC_TIPOCON 211 -#define F_C_DESC_IDON1 212 -#define F_C_DESC_IDON2 213 -#define F_C_DESC_IDON3 214 -#define F_C_DESC_IDON4 215 -#define F_C_DESC_PROSSTIPO 216 +#define F_C_MOTIVO 111 +#define F_C_RESPONSAB 112 +#define F_C_DESC_TIPOCON 151 +#define F_C_DESC_IDON1 152 +#define F_C_DESC_IDON2 153 +#define F_C_DESC_IDON3 154 +#define F_C_DESC_IDON4 155 +#define F_C_DESC_PROSSTIPO 156 +#define F_C_DESC_MOTIVO 157 // pagina benemerenze #define F_B_TIPOBEN 101 -#define F_B_DATABEN 102 -#define F_B_RITIRATA 103 -#define F_B_DESC_TIPOBEN 211 +#define F_B_DESC_TIPOBEN 102 +#define F_B_DATAMAT 103 +#define F_B_BONUS 104 +#define F_B_DATABEN 105 +#define F_B_DATACON 106 +#define F_B_RITIRATA 107 +#define F_B_CODSEZ 108 +#define F_B_CODSOT 109 +#define F_B_GRUPPOAZIE 110 +#define F_B_DENSEZ 111 +#define F_B_DENSOT 112 +#define F_B_DESC_GRUPPOAZIE 151 // pagina storico iscrizioni e dimissioni #define F_S_DATAISC 101 @@ -182,7 +209,7 @@ #define F_S_CODSOT 104 #define F_S_CATISC 105 #define F_S_MOTDIM 106 -#define F_S_DENSEZ 211 -#define F_S_DENSOT 212 -#define F_S_DESC_CATISC 213 +#define F_S_DENSEZ 151 +#define F_S_DENSOT 152 +#define F_S_DESC_CATISC 153 diff --git a/at/at0100a.uml b/at/at0100a.uml index 75e8a767f..5f3560b89 100755 --- a/at/at0100a.uml +++ b/at/at0100a.uml @@ -6,7 +6,7 @@ TOOLBAR "" 0 20 0 2 #include ENDPAGE -PAGE "Dati 1" -1 -1 78 20 +PAGE "Anagr." -1 -1 78 20 GROUPBOX DLG_NULL 77 5 BEGIN @@ -14,7 +14,7 @@ BEGIN FLAGS "R" END -NUMBER F_CODICE 6 +NUMBER F_CODICE 8 BEGIN PROMPT 2 1 "Codice " FIELD CODICE @@ -22,9 +22,9 @@ BEGIN KEY 1 USE LF_SOGGETTI INPUT CODICE F_CODICE - DISPLAY "Codice@6" CODICE - DISPLAY "Cognome@36" COGNOME - DISPLAY "Nome@36" NOME + DISPLAY "Codice@8" CODICE + DISPLAY "Cognome@25" COGNOME + DISPLAY "Nome@25" NOME DISPLAY "Nato il@10" DATANASC DISPLAY "Sez." CODSEZ DISPLAY "Sot." CODSOT @@ -39,7 +39,7 @@ BEGIN CHECKTYPE REQUIRED END -STRING F_COGNOME 36 25 +STRING F_COGNOME 25 BEGIN PROMPT 2 2 "Cognome e nome " FIELD COGNOME @@ -47,25 +47,22 @@ BEGIN USE LF_SOGGETTI KEY 2 INPUT COGNOME F_COGNOME INPUT NOME F_NOME - DISPLAY "Cognome@36" COGNOME - DISPLAY "Nome@36" NOME + INPUT DATANASC F_DATANASC + DISPLAY "Cognome@25" COGNOME + DISPLAY "Nome@25" NOME DISPLAY "Nato il@10" DATANASC - DISPLAY "Codice@6" CODICE + DISPLAY "Codice@8" CODICE DISPLAY "Sez." CODSEZ DISPLAY "Sot." CODSOT DISPLAY "C." CATDON DISPLAY "Tessera" TESSAVIS OUTPUT F_CODICE CODICE - OUTPUT F_COGNOME COGNOME - OUTPUT F_NOME NOME - OUTPUT F_DATANASC DATANASC - OUTPUT F_TESSAVIS TESSAVIS MESSAGE COPY,2@ CHECKTYPE REQUIRED HELP "Cognome del soggetto" END -STRING F_NOME 36 25 +STRING F_NOME 25 BEGIN PROMPT 46 2 "" FIELD NOME @@ -80,6 +77,7 @@ DATE F_DATANASC BEGIN PROMPT 2 3 "Nato il " FIELD DATANASC + KEY 2 MESSAGE COPY,4@ CHECKTYPE REQUIRED VALIDATE NOT_EMPTY_CHECK_FIELD @@ -94,28 +92,18 @@ BEGIN KEY 5 USE LF_SOGGETTI KEY 5 INPUT TESSAVIS F_TESSAVIS - DISPLAY "Codice@6" CODICE - DISPLAY "Cognome@36" COGNOME - DISPLAY "Nome@36" NOME + DISPLAY "Tessera" TESSAVIS + DISPLAY "Codice@8" CODICE + DISPLAY "Cognome@25" COGNOME + DISPLAY "Nome@25" NOME DISPLAY "Nato il@10" DATANASC DISPLAY "Sez." CODSEZ DISPLAY "Sot." CODSOT DISPLAY "C." CATDON - DISPLAY "Tessera" TESSAVIS OUTPUT F_CODICE CODICE - OUTPUT F_COGNOME COGNOME - OUTPUT F_NOME NOME - OUTPUT F_DATANASC DATANASC - OUTPUT F_TESSAVIS TESSAVIS HELP "Numero tessera associativa AVIS" END -BOOLEAN F_T_STAMPATA -BEGIN - PROMPT 60 3 "Stampata " - FIELD T_STAMPATA -END - GROUPBOX DLG_NULL 77 4 BEGIN PROMPT 1 5 "Dati associativi" @@ -146,7 +134,6 @@ END STRING F_DENSEZ 24 BEGIN PROMPT 12 6 "" - //FLAGS "U" USE LF_SEZIONI KEY 2 INPUT DENSEZ F_DENSEZ DISPLAY "Sezione@25" DENSEZ @@ -164,6 +151,7 @@ STRING F_CODSOT 2 BEGIN PROMPT 40 6 "Sot. " FIELD CODSOT + FLAGS "U" COPY ALL F_CODSEZ CHECKTYPE NORMAL HELP "Codice sottogruppo di appartenenza" @@ -174,7 +162,6 @@ END STRING F_DENSOT 24 BEGIN PROMPT 50 6 "" - //FLAGS "U" COPY USE F_DENSEZ INPUT DENSEZ F_DENSEZ INPUT DENSOT F_DENSOT @@ -300,7 +287,6 @@ END STRING F_DOM_DENLOC 30 BEGIN PROMPT 30 12 "" - //FLAGS "U" USE LCP KEY 2 SELECT S7=#F_DOM_CODCOM INPUT S0 F_DOM_DENLOC DISPLAY "Localita'@30" S0 @@ -315,7 +301,8 @@ END STRING F_DOM_CAPCOM 5 BEGIN PROMPT 66 11 "CAP " - FLAGS "D" + FIELD DOM_CAP + //FLAGS "D" END STRING F_DOM_PROVCOM 5 @@ -401,7 +388,8 @@ END STRING F_RES_CAPCOM 5 BEGIN PROMPT 66 14 "CAP " - FLAGS "D" + FIELD RES_CAP + //FLAGS "D" END STRING F_RES_PROVCOM 5 @@ -492,7 +480,7 @@ END ENDPAGE -PAGE "Dati 2" -1 -1 78 20 +PAGE "Assoc." -1 -1 78 20 GROUPBOX DLG_NULL 77 5 BEGIN @@ -500,7 +488,7 @@ BEGIN FLAGS "R" END -NUMBER DLG_NULL 6 +NUMBER DLG_NULL 8 BEGIN PROMPT 2 1 "Codice " FLAGS "D" @@ -528,9 +516,9 @@ BEGIN GROUP 4 END -GROUPBOX DLG_NULL 77 4 +GROUPBOX DLG_NULL 77 7 BEGIN - PROMPT 1 5 "Altri dati associativi" + PROMPT 1 5 "Altri dati associativi/identificativi" END STRING F_CATNOND1 2 @@ -606,15 +594,9 @@ BEGIN HELP "Gruppo aziendale di appartenenza" END - -GROUPBOX DLG_NULL 77 4 -BEGIN - PROMPT 1 9 "Altri dati identificativi" -END - STRING F_CODCL 6 BEGIN - PROMPT 2 10 "Cart. clinica " + PROMPT 2 8 "Cart. clinica " FIELDS CODCL FLAGS "U" HELP "Numero cartella clinica" @@ -623,7 +605,7 @@ END STRING F_CODCT 6 BEGIN - PROMPT 25 10 "Cod. CT " + PROMPT 25 8 "Cod. CT " FIELDS CODCT FLAGS "U" HELP "Codice Centro Trasfusionale" @@ -631,7 +613,7 @@ END STRING F_TESSSSN 10 BEGIN - PROMPT 42 10 "SSN " + PROMPT 42 8 "SSN " FIELDS TESSSSN FLAGS "U" HELP "Numero tessera Servizio Sanitario Nazionale" @@ -639,14 +621,14 @@ END STRING F_TITINDIR 10 BEGIN - PROMPT 59 10 "Titolo " + PROMPT 59 8 "Titolo " FIELDS TESSSSN HELP "Eventuale titolo da stampare prima del nome sull'indirizzo" END NUMBER F_CODMED 6 BEGIN - PROMPT 2 11 "Medico di base " + PROMPT 2 9 "Medico di base " FIELD CODMED FLAGS "U" USE LF_MEDICI @@ -665,7 +647,7 @@ END STRING F_COGNMED 25 23 BEGIN - PROMPT 26 11 "" + PROMPT 26 9 "" USE LF_MEDICI KEY 2 INPUT COGNOME F_COGNMED DISPLAY "Cognome@25" COGNOME @@ -680,7 +662,7 @@ END STRING F_NOMMED 25 22 BEGIN - PROMPT 52 11 "" + PROMPT 52 9 "" USE LF_MEDICI KEY 2 INPUT COGNOME F_COGNMED INPUT NOME F_NOMMED @@ -694,14 +676,26 @@ BEGIN ADD MASK at0800a END -GROUPBOX DLG_NULL 77 3 +BOOLEAN F_NOTIZIARIO BEGIN - PROMPT 1 13 "Tipizzazione" + PROMPT 2 10 "Notiziario" + FIELD NOTIZIARIO +END + +BOOLEAN F_BENEM +BEGIN + PROMPT 17 10 "Benemerenze" + FIELD BENEM +END + +GROUPBOX DLG_NULL 77 4 +BEGIN + PROMPT 1 12 "Tipizzazione" END LISTBOX F_GRUPPOAB0 5 BEGIN - PROMPT 2 14 "Gruppo AB0 " + PROMPT 2 13 "Gruppo AB0 " FIELD GRUPPOAB0 FLAGS "U" #include "gruppo.h" @@ -709,7 +703,7 @@ END LISTBOX F_RHANTID 4 BEGIN - PROMPT 22 14 "Rh/AntiD " + PROMPT 22 13 "Rh/AntiD " FIELD RHANTID FLAGS "U" #include "rh.h" @@ -717,26 +711,44 @@ END STRING F_FENOTIPORH 6 BEGIN - PROMPT 39 14 "Fen.Rh " + PROMPT 39 13 "Fen.Rh " FIELD FENOTIPORH END LISTBOX F_KELL 4 BEGIN - PROMPT 54 14 "Kell " + PROMPT 54 13 "Kell " FIELD KELL FLAGS "U" -#include "rh.h" +#include "kell.h" END LISTBOX F_DU 4 BEGIN - PROMPT 67 14 "Du " + PROMPT 67 13 "Du " FIELD DU FLAGS "U" #include "rh.h" END +LISTBOX F_ANTICORPI 4 +BEGIN + PROMPT 2 14 "Anticorpi " + FIELD ANTICORPI + FLAGS "U" + ITEM " |" + ITEM "S|Si" + ITEM "N|No" +END + +LISTBOX F_CMV 4 +BEGIN + PROMPT 22 14 "CMV " + FIELD CMV + FLAGS "U" +#include "rh.h" +END + GROUPBOX DLG_NULL 77 5 BEGIN PROMPT 1 16 "Preferenze" @@ -765,7 +777,7 @@ BEGIN HELP "Punto di raccolta per la convocazione" END -STRING F_DESC_PUNTORACC 25 +STRING F_DESC_PUNTORACC 40 25 BEGIN PROMPT 51 17 "" FLAGS "D" @@ -877,7 +889,7 @@ END ENDPAGE -PAGE "Dati 3" -1 -1 78 20 +PAGE "Situaz." -1 -1 78 20 GROUPBOX DLG_NULL 77 5 BEGIN @@ -885,7 +897,7 @@ BEGIN FLAGS "R" END -NUMBER DLG_NULL 6 +NUMBER DLG_NULL 8 BEGIN PROMPT 2 1 "Codice " FLAGS "D" @@ -937,11 +949,35 @@ END DATE F_DATASTATO BEGIN - PROMPT 55 6 "Data stato " + PROMPT 52 6 "Data stato " FIELD DATASTATO FLAGS "D" END +STRING F_PROS_STATO 2 +BEGIN + PROMPT 2 7 "Stato pross. " + FIELD PROS_STATO + FLAGS "D" + USE TCS + INPUT CODTAB F_PROS_STATO + OUTPUT F_DESCPROS_STATO S3 + CHECKTYPE NORMAL +END + +STRING F_DESCPROS_STATO 20 +BEGIN + PROMPT 20 7 "" + FLAGS "D" +END + +DATE F_DATA_PROS +BEGIN + PROMPT 52 7 "Data prossimo " + FIELD DATA_PROS + FLAGS "D" +END + STRING F_IDON1 2 BEGIN PROMPT 2 8 "Tipi di idon. " @@ -1120,19 +1156,19 @@ DATE F_DATACONV BEGIN PROMPT 2 18 "Convocazioni : Data ultima " FIELD DATACONV - FLAGS "D" + //FLAGS "D" END NUMBER F_NUMCONV 3 BEGIN PROMPT 48 18 "Numero " FIELD NUMCONV - FLAGS "D" + //FLAGS "D" END ENDPAGE -PAGE "Dati 4" -1 -1 78 20 +PAGE "Vari" -1 -1 78 20 GROUPBOX DLG_NULL 77 5 BEGIN @@ -1140,7 +1176,7 @@ BEGIN FLAGS "R" END -NUMBER DLG_NULL 6 +NUMBER DLG_NULL 8 BEGIN PROMPT 2 1 "Codice " FLAGS "D" @@ -1321,6 +1357,17 @@ BEGIN FLAGS "D" END +BOOLEAN F_T_STAMPATA +BEGIN + PROMPT 44 14 "Tessera stampata " + FIELD T_STAMPATA +END + +BUTTON F_FAMIGLIA 10 1 +BEGIN + PROMPT 65 14 "Famiglia" +END + MEMO F_NOTE 77 4 BEGIN PROMPT 1 16 "Note " @@ -1337,7 +1384,7 @@ BEGIN FLAGS "R" END -NUMBER DLG_NULL 6 +NUMBER DLG_NULL 8 BEGIN PROMPT 2 1 "Codice " FLAGS "D" @@ -1365,29 +1412,51 @@ BEGIN GROUP 4 END -BUTTON F_GENERA 18 1 +GROUPBOX DLG_NULL 77 3 BEGIN - PROMPT 1 5 "Genera donazioni" + PROMPT 1 5 "Donazioni non dettagliate" END -//GROUPBOX DLG_NULL 77 15 -//BEGIN -// PROMPT 1 5 "Donazioni" -//END +BUTTON F_GENERA 6 1 +BEGIN + PROMPT 2 6 "Genera" +END + +NUMBER F_DONPRECSI 3 +BEGIN + PROMPT 12 6 "Don.SI " + FIELD DONPRECSI +END + +DATE F_DATAPRISI +BEGIN + PROMPT 24 6 "Prima SI " + FIELD DATAPRISI +END + +NUMBER F_DONPRECAF 3 +BEGIN + PROMPT 45 6 "Don.AF " + FIELD DONPRECAF +END + +DATE F_DATAPRIAF +BEGIN + PROMPT 57 6 "Prima AF " + FIELD DATAPRIAF +END SPREADSHEET F_DONAZIONI BEGIN - PROMPT 1 6 "" + PROMPT 1 8 "" ITEM "Data@10F" ITEM "Tipo@F" - ITEM "Luogo" - ITEM "Etichetta" - ITEM "CC@3" - ITEM "P.A.@7" - ITEM "Hb@4" - ITEM "SGPT" - ITEM "Prot." + ITEM "Luogo@6" + ITEM "Descrizione luogo@40" + ITEM "Et. sacca" ITEM "1ø" + ITEM "Sez." + ITEM "Sot." END ENDPAGE @@ -1400,7 +1469,7 @@ BEGIN FLAGS "R" END -NUMBER DLG_NULL 6 +NUMBER DLG_NULL 8 BEGIN PROMPT 2 1 "Codice " FLAGS "D" @@ -1428,11 +1497,6 @@ BEGIN GROUP 4 END -//GROUPBOX DLG_NULL 77 15 -//BEGIN -// PROMPT 1 5 "Controlli sanitari" -//END - SPREADSHEET F_CONTROLLI BEGIN PROMPT 1 5 "Controlli sanitari" @@ -1446,11 +1510,14 @@ BEGIN ITEM "Int.AF" ITEM "Pr.tipo" ITEM "Pr.data" + ITEM "Mot." + ITEM "Responsabile@50" + END ENDPAGE -PAGE "Dati 5" -1 -1 78 20 +PAGE "Ben./Sto." -1 -1 78 20 GROUPBOX DLG_NULL 77 5 BEGIN @@ -1458,7 +1525,7 @@ BEGIN FLAGS "R" END -NUMBER DLG_NULL 6 +NUMBER DLG_NULL 8 BEGIN PROMPT 2 1 "Codice " FLAGS "D" @@ -1486,32 +1553,24 @@ BEGIN GROUP 4 END -GROUPBOX DLG_NULL 35 8 +SPREADSHEET F_BENEMERENZE -1 7 BEGIN - PROMPT 1 5 "Benemerenze" + PROMPT 2 5 "Benemerenze" + ITEM "Ben.@F" + ITEM "Descrizione benemerenza@25F" + ITEM "Data mat.@10" + ITEM "Don." + ITEM "Data att.@10" + ITEM "Data con.@10" + ITEM "R." + ITEM "Sez." + ITEM "Sot." + ITEM "Gr.az." END -SPREADSHEET F_BENEMERENZE 33 6 +SPREADSHEET F_STORICO BEGIN - PROMPT 2 6 "" - ITEM "Tipo" - ITEM "Data@10" - ITEM "Ritirata?" -END - -BUTTON F_FAMIGLIA 10 2 -BEGIN - PROMPT 40 6 "Famiglia" -END - -GROUPBOX DLG_NULL 77 7 -BEGIN - PROMPT 1 13 "Storico iscrizioni e dimissioni" -END - -SPREADSHEET F_STORICO 75 5 -BEGIN - PROMPT 2 14 "" + PROMPT 2 13 "Storico iscrizioni/dimissioni" ITEM "Dal@10" ITEM "Al@10" ITEM "Sez." @@ -1524,11 +1583,16 @@ ENDPAGE ENDMASK -PAGE "Donazioni" -1 -1 75 13 +PAGE "Donazioni" -1 -1 75 16 + +GROUPBOX DLG_NULL 73 5 +BEGIN + PROMPT 1 1 "Dati identificativi della donazione" +END DATE F_D_DATADON BEGIN - PROMPT 2 1 "Data donazione " + PROMPT 2 2 "Data donazione " FIELD LF_DONAZ->DATADON CHECKTYPE REQUIRED VALIDATE NOT_EMPTY_FUNC @@ -1537,7 +1601,7 @@ END STRING F_D_TIPODON 2 BEGIN - PROMPT 2 2 "Tipo donazione " + PROMPT 2 3 "Tipo donazione " FIELD LF_DONAZ->TIPODON FLAGS "U" USE TDN @@ -1554,13 +1618,13 @@ END STRING F_D_LUOGODON 4 BEGIN - PROMPT 2 3 "Luogo donazione " + PROMPT 2 4 "Luogo donazione " FIELD LF_DONAZ->LUOGODON FLAGS "U" USE LDN INPUT CODTAB F_D_LUOGODON DISPLAY "Codice" CODTAB - DISPLAY "Descrizione@40" S0 + DISPLAY "Descrizione@50" S0 OUTPUT F_D_LUOGODON CODTAB OUTPUT F_D_DESC_LUOGODON S0 CHECKTYPE NORMAL @@ -1568,68 +1632,137 @@ BEGIN HELP "Luogo donazione" END +STRING F_D_DESC_LUOGODON 50 40 +BEGIN + PROMPT 26 4 "" + FLAGS "D" +END + +GROUPBOX DLG_NULL 73 5 +BEGIN + PROMPT 1 6 "Dati complementari" +END + NUMBER F_D_ETICHETTA 9 BEGIN - PROMPT 2 5 "Etichetta sacca " + PROMPT 2 7 "Etichetta sacca " FIELD LF_DONAZ->ETICHETTA END +BOOLEAN F_D_PRIMADON +BEGIN + PROMPT 30 7 "Prima donazione " + FIELD LF_DONAZ->PRIMADON +END + +STRING F_D_CODSEZ 2 +BEGIN + PROMPT 2 8 "Sezione di app. " + FIELD LF_DONAZ->CODSEZ + FLAGS "U" + USE LF_SEZIONI + INPUT CODSEZ F_D_CODSEZ + INPUT CODSOT F_D_CODSOT + DISPLAY "Cod.sez" CODSEZ + DISPLAY "Cod.sot." CODSOT + DISPLAY "Sezione@25" DENSEZ + DISPLAY "Sottogruppo@25" DENSOT + OUTPUT F_D_CODSEZ CODSEZ + OUTPUT F_D_DENSEZ DENSEZ + OUTPUT F_D_CODSOT CODSOT + OUTPUT F_D_DENSOT DENSOT + CHECKTYPE SEARCH + HELP "Codice sezione di appartenenza" + ADD MASK at0700a + WARNING "Codice sezione assente" +END + +STRING F_D_CODSOT 2 +BEGIN + PROMPT 2 9 "Sottog. di app. " + FIELD LF_DONAZ->CODSOT + FLAGS "U" + COPY ALL F_D_CODSEZ + CHECKTYPE NORMAL + HELP "Codice sottogruppo di appartenenza" + ADD MASK at0700a + WARNING "Codice sottogruppo assente" +END + +STRING F_D_DENSEZ 25 +BEGIN + PROMPT 23 8 "" + USE LF_SEZIONI KEY 2 + INPUT DENSEZ F_D_DENSEZ + DISPLAY "Sezione@25" DENSEZ + DISPLAY "Sottogruppo@25" DENSOT + DISPLAY "Cod.sez" CODSEZ + DISPLAY "Cod.sot." CODSOT + COPY OUTPUT F_D_CODSEZ + CHECKTYPE NORMAL + HELP "Denominazione sezione di appartenenza" + ADD MASK at0700a + WARNING "Denominazione assente" +END + +STRING F_D_DENSOT 25 +BEGIN + PROMPT 23 9 "" + COPY USE F_D_DENSEZ + INPUT DENSEZ F_D_DENSEZ + INPUT DENSOT F_D_DENSOT + COPY DISPLAY F_D_DENSEZ + COPY OUTPUT F_D_DENSEZ + CHECKTYPE NORMAL + HELP "Sottogruppo di appartenenza" + ADD MASK at0700a + WARNING "Denominazione sottogruppo assente" +END + +GROUPBOX DLG_NULL 73 3 +BEGIN + PROMPT 1 11 "Dati sanitari" +END + NUMBER F_D_CC 3 BEGIN - PROMPT 30 5 "CC " + PROMPT 2 12 "CC " FIELD LF_DONAZ->CC FLAGS "U" END - -GROUPBOX DLG_NULL 70 3 -BEGIN - PROMPT 1 7 "Dati sanitari" -END - STRING F_D_PA 7 BEGIN - PROMPT 2 8 "PA " + PROMPT 10 12 "PA " FIELD LF_DONAZ->PA END NUMBER F_D_HB 4 1 BEGIN - PROMPT 17 8 "Hb " + PROMPT 25 12 "Hb " FIELD LF_DONAZ->HB FLAGS "U" END NUMBER F_D_SGPT 3 BEGIN - PROMPT 32 8 "SGPT " + PROMPT 40 12 "SGPT " FIELD LF_DONAZ->SGPT FLAGS "U" END NUMBER F_D_PROTIDEMIA 3 1 BEGIN - PROMPT 47 8 "Protidemia " + PROMPT 55 12 "Protidemia " FIELD LF_DONAZ->PROTIDEMIA FLAGS "U" END -BOOLEAN F_D_PRIMADON -BEGIN - PROMPT 2 10 "Prima donazione " - FIELD LF_DONAZ->PRIMADON -END - STRING F_D_DESC_TIPODON 25 BEGIN - PROMPT 30 2 "" + PROMPT 24 3 "" FLAGS "D" END -STRING F_D_DESC_LUOGODON 25 -BEGIN - PROMPT 30 3 "" - FLAGS "D" -END BUTTON DLG_OK 9 2 BEGIN @@ -1651,11 +1784,11 @@ ENDPAGE ENDMASK -PAGE "Controlli sanitari" -1 -1 75 18 +PAGE "Controlli sanitari" -1 -1 75 20 -GRUPBOX DLG_NULL 70 4 +GRUPBOX DLG_NULL 73 4 BEGIN - PROMPT 1 1 "Dati fondamentali del controllo" + PROMPT 1 1 "Dati identificativi del controllo" END DATE F_C_DATACON @@ -1684,7 +1817,7 @@ BEGIN HELP "Tipo/Esito controllo sanitario" END -GRUPBOX DLG_NULL 70 7 +GRUPBOX DLG_NULL 73 7 BEGIN PROMPT 1 5 "Dati da compilare se si tratta di idoneita'" END @@ -1780,12 +1913,11 @@ BEGIN VALIDATE NOT_EMPTY_FUNC END -GROUPBOX DLG_NULL 70 4 +GROUPBOX DLG_NULL 73 3 BEGIN PROMPT 1 12 "Prossimo tipo/esito" END - STRING F_C_PROSSTIPO 2 BEGIN PROMPT 2 13 "Tipo controllo " @@ -1802,48 +1934,79 @@ BEGIN HELP "Tipo/Esito controllo sanitario" END - DATE F_C_PROSSDATA BEGIN - PROMPT 2 14 "Data prevista " + PROMPT 53 13 "Data " FIELD LF_CONTSAN->PROSSDATA HELP "Data controllo" END - -STRING F_C_DESC_TIPOCON 25 +GROUPBOX DLG_NULL 73 4 BEGIN - PROMPT 25 3 "" + PROMPT 1 15 "Dati complementari" +END + +STRING F_C_MOTIVO 4 +BEGIN + PROMPT 2 16 "Motivo " + FIELD LF_CONTSAN->MOTIVO + FLAGS "U" + USE MTC + INPUT CODTAB F_C_MOTIVO + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_C_MOTIVO CODTAB + OUTPUT F_C_DESC_MOTIVO S0 + CHECKTYPE NORMAL + WARNING "Codice motivo non presente" + HELP "Motivo del controllo sanitario" +END + +STRING F_C_RESPONSAB 50 +BEGIN + PROMPT 2 17 "Responsabile " + FIELD LF_CONTSAN->RESPONSAB +END + +STRING F_C_DESC_TIPOCON 30 25 +BEGIN + PROMPT 24 3 "" FLAGS "D" END STRING F_C_DESC_IDON1 25 BEGIN - PROMPT 10 7 "" + PROMPT 8 7 "" FLAGS "D" END STRING F_C_DESC_IDON2 25 BEGIN - PROMPT 10 8 "" + PROMPT 8 8 "" FLAGS "D" END STRING F_C_DESC_IDON3 25 BEGIN - PROMPT 10 9 "" + PROMPT 8 9 "" FLAGS "D" END STRING F_C_DESC_IDON4 25 BEGIN - PROMPT 10 10 "" + PROMPT 8 10 "" FLAGS "D" END STRING F_C_DESC_PROSSTIPO 25 BEGIN - PROMPT 25 13 "" + PROMPT 23 13 "" + FLAGS "D" +END + +STRING F_C_DESC_MOTIVO 25 +BEGIN + PROMPT 23 16 "" FLAGS "D" END @@ -1863,16 +2026,21 @@ BEGIN MESSAGE EXIT, K_DEL END - ENDPAGE ENDMASK PAGE "Benemerenze" -1 -1 75 14 + +GRUPBOX DLG_NULL 73 6 +BEGIN + PROMPT 1 1 "Dati identificativi della benemerenza" +END + STRING F_B_TIPOBEN 2 BEGIN - PROMPT 2 1 "Benemerenza " + PROMPT 2 2 "Benemerenza " FIELD LF_BENEM->TIPOBEN FLAGS "U" USE BNZ @@ -1887,26 +2055,146 @@ BEGIN HELP "Benemerenza assegnata" END +STRING F_B_DESC_TIPOBEN 25 +BEGIN + PROMPT 26 2 "" + FLAGS "D" +END + +DATE F_B_DATAMAT +BEGIN + PROMPT 2 3 "Data maturazione " + FIELD LF_BENEM->DATAMAT + HELP "Data maturazione benemerenza" +END + +NUMBER F_B_BONUS 3 +BEGIN + PROMP 35 3 "Donazioni quando maturata " + FIELD LF_BENEM->BONUS +END + DATE F_B_DATABEN BEGIN - PROMPT 2 2 "Data assegnazione " + PROMPT 2 4 "Data assegnazione " FIELD LF_BENEM->DATABEN CHECKTYPE REQUIRED VALIDATE NOT_EMPTY_FUNC HELP "Data assegnazione benemerenza" END +DATE F_B_DATACON +BEGIN + PROMPT 2 5 "Data pr. consegna " + FIELD LF_BENEM->DATACON + HELP "Data prevista consegna" +END + BOOLEAN F_B_RITIRATA BEGIN - PROMPT 40 2 "Ritirata " + PROMPT 35 5 "Benem. ritirata " FIELD LF_BENEM->RITIRATA END - -STRING F_B_DESC_TIPOBEN 25 +GRUPBOX DLG_NULL 73 5 BEGIN - PROMPT 26 1 "" - FLAGS "D" + PROMPT 1 7 "Benemerenza assegnata da" +END + + +STRING F_B_CODSEZ 2 +BEGIN + PROMPT 2 8 "Sezione " + FIELD LF_BENEM->CODSEZ + FLAGS "U" + USE LF_SEZIONI + INPUT CODSEZ F_B_CODSEZ + INPUT CODSOT F_B_CODSOT + DISPLAY "Cod.sez" CODSEZ + DISPLAY "Cod.sot." CODSOT + DISPLAY "Sezione@25" DENSEZ + DISPLAY "Sottogruppo@25" DENSOT + OUTPUT F_B_CODSEZ CODSEZ + OUTPUT F_B_DENSEZ DENSEZ + OUTPUT F_B_CODSOT CODSOT + OUTPUT F_B_DENSOT DENSOT + CHECKTYPE SEARCH + HELP "Codice sezione di appartenenza" + ADD MASK at0700a + WARNING "Codice sezione assente" +END + +STRING F_B_CODSOT 2 +BEGIN + PROMPT 2 9 "Sottogruppo " + FIELD LF_BENEM->CODSOT + FLAGS "U" + COPY ALL F_B_CODSEZ + CHECKTYPE NORMAL + HELP "Codice sottogruppo di appartenenza" + ADD MASK at0700a + WARNING "Codice sottogruppo assente" +END + +STRING F_B_GRUPPOAZIE 4 +BEGIN + PROMPT 2 10 "Gruppo aziendale " + FIELD LF_BENEM->GRUPPOAZIE + FLAGS "U" + USE GAZ + INPUT CODTAB F_B_GRUPPOAZIE + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@30" S0 + OUTPUT F_B_GRUPPOAZIE CODTAB + OUTPUT F_B_DESC_GRUPPOAZIE S0 + CHECKTYPE NORMAL + WARNING "Codice gruppo aziendale non presente" + HELP "Gruppo aziendale di appartenenza" +END + +STRING F_B_DENSEZ 25 +BEGIN + PROMPT 26 8 "" + USE LF_SEZIONI KEY 2 + INPUT DENSEZ F_B_DENSEZ + DISPLAY "Sezione@25" DENSEZ + DISPLAY "Sottogruppo@25" DENSOT + DISPLAY "Cod.sez" CODSEZ + DISPLAY "Cod.sot." CODSOT + COPY OUTPUT F_B_CODSEZ + CHECKTYPE NORMAL + HELP "Denominazione sezione di appartenenza" + ADD MASK at0700a + WARNING "Denominazione assente" +END + +STRING F_B_DENSOT 25 +BEGIN + PROMPT 26 9 "" + COPY USE F_B_DENSEZ + INPUT DENSEZ F_B_DENSEZ + INPUT DENSOT F_B_DENSOT + COPY DISPLAY F_B_DENSEZ + COPY OUTPUT F_B_DENSEZ + CHECKTYPE NORMAL + HELP "Sottogruppo di appartenenza" + ADD MASK at0700a + WARNING "Denominazione sottogruppo assente" +END + + +STRING F_B_DESC_GRUPPOAZIE 30 +BEGIN + PROMPT 28 10 "" + FLAGS "U" + USE GAZ KEY 2 + INPUT S0 F_B_DESC_GRUPPOAZIE + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@30" S0 + COPY OUTPUT F_B_GRUPPOAZIE + CHECKTYPE NORMAL + WARNING "Gruppo aziendale non presente" + HELP "Gruppo aziendale di appartenenza" END BUTTON DLG_OK 9 2 @@ -1985,8 +2273,7 @@ BEGIN PROMPT 2 5 "Sottogruppo " FIELD LF_STORICO->CODSOT COPY ALL F_S_CODSEZ - //CHECKTYPE NORMAL - CHECKTYPE SEARCH + CHECKTYPE NORMAL HELP "Codice sottogruppo di iscrizione" END @@ -2019,14 +2306,12 @@ BEGIN HELP "Categoria di iscrizione" END - STRING F_S_DESC_CATISC 25 BEGIN PROMPT 20 7 "" FLAGS "D" END - LISTBOX F_S_MOTDIM 25 BEGIN PROMPT 2 9 "Motivo dim. " @@ -2051,7 +2336,6 @@ BEGIN MESSAGE EXIT, K_DEL END - ENDPAGE ENDMASK diff --git a/at/at0100c.uml b/at/at0100c.uml index ea7a7975d..3461f068e 100755 --- a/at/at0100c.uml +++ b/at/at0100c.uml @@ -30,14 +30,14 @@ BEGIN GROUP 1 END -NUMBER F_ES_CODICE 6 +NUMBER F_ES_CODICE 8 BEGIN PROMPT 31 2 "Codice " FLAGS "RG" USE LF_SOGGETTI SELECT LF_FAMIGLIE->CODFAM!=0 JOIN LF_FAMIGLIE TO LF_SOGGETTI KEY 2 INTO CODFAM=CODICE INPUT CODICE F_ES_CODICE - DISPLAY "Codice@6" CODICE + DISPLAY "Codice@8" CODICE DISPLAY "Cognome@25" COGNOME DISPLAY "Nome@25" NOME DISPLAY "Nato il@10" DATANASC @@ -63,7 +63,7 @@ BEGIN DISPLAY "Cognome@25" COGNOME DISPLAY "Nome@25" NOME DISPLAY "Nato il@10" DATANASC - DISPLAY "Codice@6" CODICE + DISPLAY "Codice@8" CODICE DISPLAY "Sez." CODSEZ DISPLAY "Sot." CODSOT DISPLAY "C." CATDON @@ -90,7 +90,7 @@ SPREADSHEET F_FAMIGLIARI BEGIN PROMPT 2 6 "" ITEM "Grado" - ITEM "Codice" + ITEM "Codice@8" ITEM "Cognome@25" ITEM "Nome@25" ITEM "Nato il@10" @@ -120,7 +120,7 @@ BEGIN #include "parenti.h" END -NUMBER F_F_CODICE 6 +NUMBER F_F_CODICE 8 BEGIN PROMPT 2 2 "Codice " FLAGS "RG" @@ -155,7 +155,7 @@ BEGIN DISPLAY "Cognome@25" COGNOME DISPLAY "Nome@25" NOME DISPLAY "Nato il@10" DATANASC - DISPLAY "Codice@6" CODICE + DISPLAY "Codice@8" CODICE DISPLAY "Sez." CODSEZ DISPLAY "Sot." CODSOT DISPLAY "C." CATDON diff --git a/at/at0200.cpp b/at/at0200.cpp index 827e4a2e3..0e743d9c2 100755 --- a/at/at0200.cpp +++ b/at/at0200.cpp @@ -21,6 +21,7 @@ #include "soggetti.h" #include "donaz.h" #include "contsan.h" +#include "rconvoc.h" #include "atlib.h" @@ -34,6 +35,7 @@ class TDonaz_app : public TApplication TLocalisamfile* _soggetti; TLocalisamfile* _donaz; TLocalisamfile* _contsan; + TLocalisamfile* _rconvoc; TRecord_array* _sdonazioni; TRecord_array* _scontrolli; TAssoc_array* _asoggetti; // array dei soggetti inseriti per controllare doppio ins. @@ -91,6 +93,7 @@ bool TDonaz_app::create() _rel->add("CTD", "CODTAB==CATDON",1,0,ALIAS_CTD); _donaz = new TLocalisamfile(LF_DONAZ); _contsan = new TLocalisamfile(LF_CONTSAN); + _rconvoc = new TLocalisamfile(LF_RCONVOC); _sdonazioni = new TRecord_array(LF_DONAZ,DON_PROGDON); _scontrolli = new TRecord_array(LF_CONTSAN,CON_PROGCON); _asoggetti = new TAssoc_array(); @@ -112,6 +115,7 @@ bool TDonaz_app::destroy() delete _msk; delete _donaz; delete _contsan; + delete _rconvoc; delete _sdonazioni; delete _scontrolli; delete _asoggetti; @@ -181,7 +185,8 @@ int TDonaz_app::write(TSheet_field& s) TProgind *pi; pi = new TProgind(items,"Registrazione donazioni e controlli", FALSE, TRUE, 10); pi->setstatus(1); - + TLocalisamfile& sog = get_relation()->lfile(); + TLocalisamfile& rconv(LF_RCONVOC); for (int r=1; r<=s.items(); r++) { @@ -191,7 +196,7 @@ int TDonaz_app::write(TSheet_field& s) const long codsog = row.get_long(0); if (codsog != 0) { - TLocalisamfile& sog = get_relation()->lfile(); + //TLocalisamfile& sog = get_relation()->lfile(); sog.setkey(1); sog.zero(); sog.put(SOG_CODICE, codsog); @@ -252,6 +257,10 @@ int TDonaz_app::write(TSheet_field& s) rec->put(DON_DATADON, m.get(F_DATADON)); rec->put(DON_TIPODON, m.get(F_TIPODON)); rec->put(DON_LUOGODON, m.get(F_LUOGODON)); + rec->put(DON_ETICHETTA, row.get(4)); + + rec->put(DON_CODSEZ,sog.get(SOG_CODSEZ)); + rec->put(DON_CODSOT,sog.get(SOG_CODSOT)); bool insert = FALSE; bool exist = FALSE; @@ -295,9 +304,30 @@ int TDonaz_app::write(TSheet_field& s) if (!exist) { _sdonazioni->write(TRUE); - - + + // se ha una convocazione successiva alla donazione, + // va cancellata, anche dall'archivio convocazioni TDate dataultdon = sog.get_date(SOG_DATAULTDON); + TDate dataconv = sog.get_date(SOG_DATACONV); + if (dataultdon >= dataconv) + { + rconv.setkey(2); + rconv.zero(); + rconv.put(RCV_DATACONV, dataconv); + rconv.put(RCV_CODICE, codsog); + int err = rconv.read(); + if (err == NOERR) + { + rconv.put(RCV_ANNULLATO,TRUE) + rconv.rewrite(); + } + sog.put(SOG_DATACONV, NULLDATE); + sog.put(SOG_DATAULTSOL, NULLDATE); + const int zeroconv = 0; + sog.put(SOG_NUMCONV, zeroconv); + } + // controllo se è idoneo + const TString16 tipo = m.get(F_TIPODON); int totdon = sog.get_int(SOG_TOTDON); sog.put(SOG_TOTDON,totdon+1); @@ -412,7 +442,7 @@ int TDonaz_app::write(TSheet_field& s) sog.put(SOG_CATDON,ctd.get("S6")); } - // controllo se è idoneo + // aggiorno data e utente ultimo aggiornamento sog.put(SOG_DATAULTAGG,TODAY); sog.put(SOG_UTENULTAGG,user()); diff --git a/at/at0200a.h b/at/at0200a.h index d954abbbf..3e3d8c296 100755 --- a/at/at0200a.h +++ b/at/at0200a.h @@ -16,11 +16,12 @@ #define F_S_COGNOME 102 #define F_S_NOME 103 #define F_S_TIPOCON 104 -#define F_S_DATANASC 105 -#define F_S_CODSEZ 106 -#define F_S_CODSOT 107 -#define F_S_CATDON 108 -#define F_S_TESSAVIS 109 +#define F_S_ETICHETTA 105 +#define F_S_DATANASC 106 +#define F_S_CODSEZ 107 +#define F_S_CODSOT 108 +#define F_S_CATDON 109 +#define F_S_TESSAVIS 110 #define F_S_DENSEZ 151 #define F_S_DENSOT 152 diff --git a/at/at0200a.uml b/at/at0200a.uml index d660d4deb..bc1bce84e 100755 --- a/at/at0200a.uml +++ b/at/at0200a.uml @@ -76,7 +76,7 @@ BEGIN USE LDN INPUT CODTAB F_LUOGODON DISPLAY "Codice" CODTAB - DISPLAY "Descrizione@30" S0 + DISPLAY "Descrizione@50" S0 OUTPUT F_LUOGODON CODTAB OUTPUT F_DESC_LUOGODON S0 CHECKTYPE NORMAL @@ -84,13 +84,13 @@ BEGIN HELP "Luogo donazione" END -STRING F_DESC_TIPODON 25 +STRING F_DESC_TIPODON 30 BEGIN PROMPT 30 2 "" FLAGS "D" END -STRING F_DESC_LUOGODON 25 +STRING F_DESC_LUOGODON 50 BEGIN PROMPT 30 3 "" FLAGS "D" @@ -104,10 +104,11 @@ END SPREADSHEET F_SOGGETTI BEGIN PROMPT 2 6 "Soggetti" - ITEM "Codice@6" + ITEM "Codice@8" ITEM "Cognome@25" ITEM "Nome@25" ITEM "Con." + ITEM "Et. sacca" ITEM "Nato il@10" ITEM "Sez." ITEM "Sot." @@ -127,13 +128,13 @@ BEGIN FLAGS "R" END -NUMBER F_S_CODICE 6 +NUMBER F_S_CODICE 8 BEGIN PROMPT 2 1 "Codice " FLAGS "RG" USE LF_SOGGETTI KEY 1 INPUT CODICE F_S_CODICE - DISPLAY "Codice@6" CODICE + DISPLAY "Codice@8" CODICE DISPLAY "Cognome@25" COGNOME DISPLAY "Nome@25" NOME DISPLAY "Nato il@10" DATANASC @@ -162,7 +163,7 @@ BEGIN DISPLAY "Cognome@25" COGNOME DISPLAY "Nome@25" NOME DISPLAY "Nato il@10" DATANASC - DISPLAY "Codice@6" CODICE + DISPLAY "Codice@8" CODICE DISPLAY "Sez." CODSEZ DISPLAY "Sot." CODSOT DISPLAY "C." CATDON @@ -205,6 +206,12 @@ BEGIN HELP "Tipo/Esito controllo sanitario" END +NUMBER F_S_ETICHETTA 9 +BEGIN + PROMPT 2 17 "Etichetta sacca " +END + + DATE F_S_DATANASC BEGIN PROMPT 2 3 "Nato il " diff --git a/at/at0300a.uml b/at/at0300a.uml index 944299e3e..edc799aee 100755 --- a/at/at0300a.uml +++ b/at/at0300a.uml @@ -104,7 +104,7 @@ END SPREADSHEET F_SOGGETTI BEGIN PROMPT 2 6 "Soggetti" - ITEM "Codice@6" + ITEM "Codice@8" ITEM "Cognome@25" ITEM "Nome@25" ITEM "Contr." @@ -129,13 +129,13 @@ BEGIN FLAGS "R" END -NUMBER F_S_CODICE 6 +NUMBER F_S_CODICE 8 BEGIN PROMPT 2 1 "Codice " FLAGS "RG" USE LF_SOGGETTI KEY 1 INPUT CODICE F_S_CODICE - DISPLAY "Codice@6" CODICE + DISPLAY "Codice@8" CODICE DISPLAY "Cognome@25" COGNOME DISPLAY "Nome@25" NOME DISPLAY "Nato il@10" DATANASC @@ -164,7 +164,7 @@ BEGIN DISPLAY "Cognome@25" COGNOME DISPLAY "Nome@25" NOME DISPLAY "Nato il@10" DATANASC - DISPLAY "Codice@6" CODICE + DISPLAY "Codice@8" CODICE DISPLAY "Sez." CODSEZ DISPLAY "Sot." CODSOT DISPLAY "C." CATDON diff --git a/at/at0400.cpp b/at/at0400.cpp index 826b019f9..5ff1ad0e0 100755 --- a/at/at0400.cpp +++ b/at/at0400.cpp @@ -7,21 +7,27 @@ #include #include "at0.h" -#include "lf.h" // se non lo metto non riesco a usare gli LF +#include "lf.h" +#include "atlib.h" // nomi campi maschera #include "at0400a.h" // nomi dei campi #include "soggetti.h" +#include "sezioni.h" #include "convoc.h" #include "rconvoc.h" +#define ALIAS_CTD -100 +#define ALIAS_TCS -200 #define IDON_SI "SI" #define IDON_AF "AF" class TConvoc_app: public TRelation_application { + static bool filter_func_convoc(const TRelation* rel); + TMask* _msk; TRelation* _rel; TRelation* _relsog; @@ -36,6 +42,9 @@ class TConvoc_app: public TRelation_application TString16 _tipo; // tipo donazione TString16 _codsez; // codice sezione convocata TString16 _codsot; // codice sottogruppo + TDate _dataini; + bool _ritarda; + int _maxrit; protected: virtual bool user_create(); @@ -52,6 +61,7 @@ protected: static bool convocati_notify(TSheet_field& s, int r, KEY k); static bool esegui_handler(TMask_field& f, KEY k); + static bool data_handler(TMask_field&f, KEY k); public: TConvoc_app() {} @@ -60,30 +70,101 @@ public: HIDDEN inline TConvoc_app& app() { return (TConvoc_app&) main_app(); } -/* -bool is_idon_one(TString16 idon, const char* tipo) -// verifica che l'idoneità "idon" sia del tipo "tipo" -// esempio: se passo PL, AF restituisce TRUE -{ - bool is_idon = FALSE; - TTable ido("IDO"); - ido.put("CODTAB",idon); - if (ido.read() == NOERR) - { - TString16 tipol(2); - tipol = ido.get("S6"); - if (tipol == tipo) - is_idon = TRUE; - } - return is_idon; +bool TConvoc_app::filter_func_convoc(const TRelation* rel) +{ + bool filtrato = FALSE; + TRectype& sog = rel->curr(); + const TString16 cat = sog.get(SOG_CATDON); + const char stato = modstato_tcs(sog.get(SOG_STATO)); + const TString16 escluso = sog.get(SOG_ESCLUSO); + const bool dimesso = rel->lfile(ALIAS_CTD).get_bool("B0"); + filtrato = (cat.not_empty() && (stato == 'I' || stato == 'F') && !dimesso && escluso.empty()); + if (filtrato) + { + filtrato = FALSE; + const TString16 punto = sog.get(SOG_PUNTORACC); + const TString16 codsez = sog.get(SOG_CODSEZ); + const TString16 codsot = sog.get(SOG_CODSOT); + if (punto == app()._punto) + filtrato = TRUE; + else + { + if (app()._codsez.not_empty() && app()._codsez == codsez) + filtrato = (punto.empty()); + if ((app()._codsot.not_empty()) && (app()._codsot != codsot)) + filtrato = FALSE; + } + // filtro per data prossima donazione + //const TDate dataprossi = sog.get(SOG_DATAPROSSI); + //filtrato = (dataprossi.ok()) && (dataprossi <= data) && filtrato; + // filtro per intervallo tra cartoline/solleciti/ritardatari + if (filtrato) + { + filtrato = FALSE; + const TDate data = app()._data; + const int numconv = sog.get_int(SOG_NUMCONV); + const TDate dataultconv = sog.get(SOG_DATACONV); + const TDate dataultsol = sog.get(SOG_DATAULTSOL); + TRectype& sez = rel->curr(LF_SEZIONI); + const int giocarsol = sez.get_int(SEZ_GIOCARSOL); + const int giosolsol = sez.get_int(SEZ_GIOSOLSOL); + const int gioultsol = sez.get_int(SEZ_GIOULTSOL); + const int giorit = sez.get_int(SEZ_GIOPERRIT); + const int numsol = sez.get_int(SEZ_NUMMAXSOL); + if (numconv == 0) + filtrato = TRUE; + else + if ((numconv == 1) && (data-dataultconv>=giocarsol)) + filtrato = TRUE; + else + if ((numconv >= 2 && numconv <= numsol-1) && (data-dataultconv >= giosolsol)) + filtrato = TRUE; + else + if ((numconv == numsol && numsol > 0) && (data-dataultconv >= gioultsol)) + filtrato = TRUE; + else + if ((numconv > numsol && numsol > 0) && (app()._ritarda) && (data-dataultsol<=app()._maxrit) && (data-dataultconv>=giorit)) + filtrato = TRUE; + } + } + return filtrato; } -bool is_idon(TString16 id1, TString16 id2, TString16 id3, TString16 id4, const char* tipo) -//verifica che almeno una delle "id" sia del tipo "tipo" +bool TConvoc_app::data_handler(TMask_field& f, KEY k) { - return (is_idon_one(id1,tipo) || is_idon_one(id2,tipo) || is_idon_one(id3,tipo) || is_idon_one(id4,tipo)); + if (f.to_check(k)) + { + const TDate data = f.get(); + const int giorno = data.wday(); + TString16 datagio = ""; + switch (giorno) + { + case 0: + datagio = "Domenica"; + break; + case 1: + datagio = "Lunedi"; + break; + case 2: + datagio = "Martedi"; + break; + case 3: + datagio = "Mercoledi"; + break; + case 4: + datagio = "Giovedi"; + break; + case 5: + datagio = "Venerdi"; + break; + case 6: + datagio = "Sabato"; + break; + } + f.mask().set(F_DATAGIO,datagio); + } + return TRUE; } -*/ bool TConvoc_app::esegui_handler(TMask_field& f, KEY k) { @@ -92,45 +173,158 @@ bool TConvoc_app::esegui_handler(TMask_field& f, KEY k) TMask& m = f.mask(); TCursor* cur = app()._cur; - app()._numero = m.get_long(F_NUMERO); - app()._data = m.get(F_DATA); - app()._punto = m.get(F_PUNTO); - app()._tipo = m.get(F_TIPO); - app()._codsez = m.get(F_CODSEZ); - app()._codsot = m.get(F_CODSOT); + app()._numero = m.get_long(F_NUMERO); + app()._data = m.get(F_DATA); + app()._punto = m.get(F_PUNTO); + app()._tipo = m.get(F_TIPO); + app()._codsez = m.get(F_CODSEZ); + app()._codsot = m.get(F_CODSOT); + app()._dataini = m.get(F_DATAINI); + app()._ritarda = m.get_bool(F_RITARDA); + app()._maxrit = m.get_int(F_MAXRIT); + if (app()._numero == 0 || !app()._data.ok() || app()._punto.empty() || app()._tipo.empty()) return f.error_box("Mancano i dati fondamentali per la convocazione"); + // filtro per sezione - TRectype da(LF_SOGGETTI); - if (app()._codsez.not_empty()) - da.put(SOG_CODSEZ, app()._codsez); - if (app()._codsot.not_empty()) - da.put(SOG_CODSOT, app()._codsot); - cur->setregion(da, da); + //TRectype da(LF_SOGGETTI); + //if (app()._codsez.not_empty()) + // da.put(SOG_CODSEZ, app()._codsez); + //if (app()._codsot.not_empty()) + // da.put(SOG_CODSOT, app()._codsot); + //cur->setregion(da, da); + + //TString256 filtro; + // filtro per categoria donatori non vuota e non dimessi + // e non escluso e idoneo + //filtro.format("(CATDON != \"\") && (%d->B0 == \"\") && (ESCLUSO == \"\") && ((%d->S6 == \"I\" ) || (%d->S6 == \"F\"))",ALIAS_CTD,ALIAS_TCS,ALIAS_TCS); // filtro per punto di raccolta - cur->setfilter(format("PUNTORACC == \"%s\"",(const char*)app()._punto)); - // altri filtri piu' complicati - //cur->set_filterfunction(filter_func_convoc); + //filtro << " && "; + //if (app()._codsez.empty()) + // filtro << format("(PUNTORACC == \"%s\")",(const char*)app()._punto); + //else + // filtro << "(PUNTORACC == \"\")"; + // filtro per data donazione non vuota + // e <= data inizio convocazione + // per ora subito SI + // lo facciamo con la set_filterfunction + + //cur->setfilter((const char*) filtro, TRUE); + + const TDate data = app()._data; + const TDate dataini = app()._dataini; + TDate datalimite = dataini; + datalimite.set_year(datalimite.year()-2); + // filtro per data prossima donazione + TRectype da(LF_SOGGETTI); + TRectype a(LF_SOGGETTI); + da.put(SOG_DATAPROSSI,datalimite); + a.put(SOG_DATAPROSSI,data); + cur->setregion(da, a); + + cur->set_filterfunction(filter_func_convoc, TRUE); + TSheet_field& s = (TSheet_field&)m.field(F_CONVOCATI); s.destroy(); TRectype& rec = cur->curr(); - long last = cur->items(); + TRectype& sez = cur->curr(LF_SEZIONI); + + int nconv=0; + int nsoll=0; + int nrit=0; + TDate datasog = data; + const int giorni = (int)(data-dataini); // giorni su cui suddividere la chiamata -1 + const int dim = giorni+1; + int* numperdata = new int[dim]; + int quanti = ((int)(cur->items())/(giorni+1)); // quanti donatori per giorno + if (quanti < 1) + quanti = 1; + for (int i=0; iitems(); int r=0; TProgind prg (last, "Elaborazione in corso... Prego attendere", FALSE, TRUE, 30); for ( *cur=0; cur->pos() < last; ++(*cur) ) - { + { prg.addstatus(1); + const int numconv = rec.get_int(SOG_NUMCONV); + const TDate dataultconv = rec.get(SOG_DATACONV); + const TDate dataultsol = rec.get(SOG_DATAULTSOL); + const TDate dataprossi = rec.get(SOG_DATAPROSSI); + const int giocarsol = sez.get_int(SEZ_GIOCARSOL); + const int giosolsol = sez.get_int(SEZ_GIOSOLSOL); + const int gioultsol = sez.get_int(SEZ_GIOULTSOL); + const int giorit = sez.get_int(SEZ_GIOPERRIT); + const int numsol = sez.get_int(SEZ_NUMMAXSOL); + char chiamata = ' '; + if (numconv == 0) + chiamata = 'C'; + else + if ((numconv == 1) && (data-dataultconv>=giocarsol)) + chiamata = 'S'; + else + if ((numconv >= 2 && numconv <= numsol-1) && (data-dataultconv >= giosolsol)) + chiamata = 'S'; + else + if ((numconv == numsol && numsol > 0) && (data-dataultconv >= gioultsol)) + chiamata = 'S'; + else + if ((numconv > numsol && numsol > 0) && (app()._ritarda) && (data-dataultsol<=app()._maxrit) && (data-dataultconv>=giorit)) + chiamata = 'R'; + switch (chiamata) + { + case 'C': + nconv++; + break; + case 'S': + nsoll++; + break; + case 'R': + nrit++; + break; + } + if (giorni > 0) + { + datasog = NULLDATE; + int partenza; + if (dataprossi <= dataini) + partenza = 0; + else + partenza = (int)(dataprossi-dataini); + for (int r=partenza;r<=giorni;r++) + { + if ((numperdata[r]add("CTD", "CODTAB==CATDON",1,0,-ALIAS_CTD); + _relsog->add("TCS", "CODTAB==STATO",1,0,-ALIAS_TCS); + _relsog->add(LF_SEZIONI, "CODSEZ==CODSEZ|CODSOT==CODSOT"); + _cur = new TCursor(_relsog, "", 6); //cursore ordinamento per data prossima donazione _rconvoc = new TLocalisamfile(LF_RCONVOC); _soggetti = new TLocalisamfile(LF_SOGGETTI); _sconvocati = new TRecord_array(LF_RCONVOC,RCV_PROGCONV); _msk->set_handler(F_ESEGUI,esegui_handler); + _msk->set_handler(F_DATA,data_handler); TSheet_field& sc = (TSheet_field&)_msk->field(F_CONVOCATI); sc.set_notify(convocati_notify); //TMask& scmask = sc.sheet_mask(); @@ -158,6 +356,7 @@ bool TConvoc_app::user_destroy() delete _rel; delete _relsog; delete _msk; + delete _cur; delete _rconvoc; delete _soggetti; delete _sconvocati; @@ -208,7 +407,10 @@ int TConvoc_app::read(TMask& m) soggetti.zero(); row.add(soggetti.get(SOG_COGNOME)); row.add(soggetti.get(SOG_NOME)); + row.add(riga.get(RCV_DATACONV)); + row.add(riga.get(RCV_CHIAMATA)); row.add(riga.get(RCV_STAMPATO)); + row.add(riga.get(RCV_ANNULLATO)); row.add(soggetti.get(SOG_DATANASC)); row.add(soggetti.get(SOG_CATDON)); row.add(soggetti.get(SOG_TESSAVIS)); @@ -243,6 +445,7 @@ int TConvoc_app::scrivi(const TMask& m, bool ri) int err = ri ? TRelation_application::rewrite(m) : TRelation_application::write(m); if (err == NOERR) { + TLocalisamfile soggetti(LF_SOGGETTI); _sconvocati->destroy_rows(); TSheet_field& s = (TSheet_field&)m.field(F_CONVOCATI); TRectype* key = new TRectype(LF_RCONVOC); @@ -252,8 +455,28 @@ int TConvoc_app::scrivi(const TMask& m, bool ri) { TToken_string& row = s.row(r-1); TRectype& rec = _sconvocati->row(r,TRUE); - rec.put(RCV_CODICE, row.get(0)); - rec.put(RCV_STAMPATO, row.get(3)); + const long codice = row.get_long(0); + const TDate dataconv = row.get(3); + const char chiamata = row.get_char(4); + rec.put(RCV_CODICE,codice); + rec.put(RCV_DATACONV,dataconv); + rec.put(RCV_CHIAMATA,chiamata); + rec.put(RCV_STAMPATO,row.get(5)); + rec.put(RCV_ANNULLATO,row.get(6)); + if (!ri) + { + // aggiornamento archivio soggetti + soggetti.put(SOG_CODICE,codice); + if (soggetti.read() == NOERR) + { + if (chiamata == 'S') + soggetti.put(SOG_DATAULTSOL,dataconv); + soggetti.put(SOG_DATACONV,dataconv); + int numconv = soggetti.get_int(SOG_NUMCONV); + soggetti.put(SOG_NUMCONV,numconv+1); + soggetti.rewrite(); + } + } } err = ri ? _sconvocati->rewrite() : _sconvocati->write(); } @@ -262,79 +485,28 @@ int TConvoc_app::scrivi(const TMask& m, bool ri) bool TConvoc_app::convocati_notify(TSheet_field& s, int r, KEY k) { - return TRUE; -} - -/* -bool TSoggetti_app::controlli_notify(TSheet_field& s, int r, KEY k) -{ - static bool delete_l = FALSE; // flag per cancellazione ultima riga - static TToken_string oldrow; - bool modified = FALSE; - TMask& mask = s.mask(); - - if (k == K_CTRL+K_DEL) // avvenuta cancellazione riga - { - if (delete_l) - modified = TRUE; - delete_l = FALSE; - } - else + bool result = TRUE; + switch (k) { - switch (k) + case K_CTRL+K_DEL: // avvenuta cancellazione riga + { + int numconv = s.mask().get_int(F_NUMCONV); + s.mask().set(F_NUMCONV,numconv-1); + } + break; + case K_CTRL+K_INS: { - case K_SPACE: // inizio modifica riga - oldrow = s.row(r); - break; - case K_ENTER: // uscita da riga modificata - { - TToken_string& row = s.row(r); - const TDate actdata(row.get(0)); - const TString16 acttipo(row.get()); - const TDate olddata(oldrow.get(0)); - const TString16 oldtipo(oldrow.get()); - if (olddata != actdata) - { - ordina_sheet_data(s); - app().tipocon_set_sheet(s); - s.force_update(); - } - if (modstato_tcs(oldtipo) != ' ' || modstato_tcs(acttipo) != ' ') - modified = TRUE; - } - break; - case K_DEL: // richiesta di cancellazione riga - { - oldrow = s.row(r); - const TString16 oldtipo(oldrow.get(1)); - if (r == (s.items()-1) && modstato_tcs(oldtipo) != ' ') - delete_l = TRUE; - } - break; - } - } - if (modified) - c_reord(s); - return TRUE; + int numconv = s.mask().get_int(F_NUMCONV); + s.mask().set(F_NUMCONV,numconv+1); + } + break; + case K_INS: + result = FALSE; + break; + } + return result; } -bool TSoggetti_app::benemerenze_notify(TSheet_field& s, int r, KEY k) -{ - if (k == K_ENTER) - { - } - return TRUE; -} - -bool TSoggetti_app::storico_notify(TSheet_field& s, int r, KEY k) -{ - if (k == K_ENTER) - { - } - return TRUE; -} - -*/ int at0400(int argc, char* argv[]) { TConvoc_app a; diff --git a/at/at0400a.h b/at/at0400a.h index f105f19b5..9e7c1d63d 100755 --- a/at/at0400a.h +++ b/at/at0400a.h @@ -3,16 +3,23 @@ #define F_NUMERO 101 #define F_DATA 102 -#define F_PUNTO 103 -#define F_D_PUNTO 104 -#define F_TIPO 105 -#define F_D_TIPO 106 -#define F_CODSEZ 107 -#define F_DENSEZ 108 -#define F_CODSOT 109 -#define F_DENSOT 110 -#define F_NOTE 111 -#define F_CONVOCATI 112 +#define F_DATAGIO 103 +#define F_PUNTO 104 +#define F_D_PUNTO 105 +#define F_TIPO 106 +#define F_D_TIPO 107 +#define F_CODSEZ 108 +#define F_DENSEZ 109 +#define F_CODSOT 110 +#define F_DENSOT 111 +#define F_DATAINI 112 +#define F_RITARDA 113 +#define F_MAXRIT 114 +#define F_NOTE 115 +#define F_NUMCONV 116 +#define F_NUMSOLL 117 +#define F_NUMRIT 118 +#define F_CONVOCATI 119 #define F_ESEGUI 140 @@ -20,9 +27,12 @@ #define F_S_CODICE 101 #define F_S_COGNOME 102 #define F_S_NOME 103 -#define F_S_STAMPATO 104 -#define F_S_DATANASC 105 -#define F_S_CATDON 106 -#define F_S_TESSAVIS 107 +#define F_S_DATACONV 104 +#define F_S_CHIAMATA 105 +#define F_S_STAMPATO 106 +#define F_S_ANNULLATO 107 +#define F_S_DATANASC 108 +#define F_S_CATDON 109 +#define F_S_TESSAVIS 110 #define F_S_DESC_CATDON 151 diff --git a/at/at0400a.uml b/at/at0400a.uml index d2004015a..d0d3663f9 100755 --- a/at/at0400a.uml +++ b/at/at0400a.uml @@ -9,7 +9,7 @@ ENDPAGE PAGE "Testata" -1 -1 78 20 -GROUPBOX DLG_NULL 77 9 +GROUPBOX DLG_NULL 77 12 BEGIN PROMPT 1 0 "Opzioni per la convocazione" END @@ -55,6 +55,12 @@ BEGIN VALIDATE NOT_EMPTY_FUNC END +STRING F_DATAGIO 10 +BEGIN + PROMPT 35 2 "" + FLAGS "D" +END + STRING F_PUNTO 4 BEGIN PROMPT 2 3 "Punto di raccolta " @@ -63,7 +69,7 @@ BEGIN USE LDN INPUT CODTAB F_PUNTO DISPLAY "Codice" CODTAB - DISPLAY "Descrizione@40" S0 + DISPLAY "Descrizione@50" S0 OUTPUT F_PUNTO CODTAB OUTPUT F_D_PUNTO S0 CHECKTYPE REQUIRED @@ -72,7 +78,7 @@ BEGIN VALIDATE NOT_EMPTY_FUNC END -STRING F_D_PUNTO 25 +STRING F_D_PUNTO 50 BEGIN PROMPT 27 3 "" FLAGS "D" @@ -97,7 +103,7 @@ END STRING F_D_TIPO 25 BEGIN - PROMPT 27 4 "" + PROMPT 25 4 "" FLAGS "D" END @@ -124,7 +130,7 @@ END STRING F_DENSEZ 25 BEGIN - PROMPT 27 5 "" + PROMPT 25 5 "" FLAGS "U" USE LF_SEZIONI KEY 2 INPUT DENSEZ F_DENSEZ @@ -150,7 +156,7 @@ END STRING F_DENSOT 25 BEGIN - PROMPT 27 6 "" + PROMPT 25 6 "" FLAGS "U" COPY USE F_DENSEZ INPUT DENSEZ F_DENSEZ @@ -162,30 +168,70 @@ BEGIN ADD MASK at0700a END -STRING F_NOTE 100 60 +DATE F_DATAINI BEGIN - PROMPT 2 7 "Note " + PROMPT 2 7 "Data inizio conv. " + FIELD DATAINI +END + +BOOLEAN F_RITARDA +BEGIN + PROMPT 2 8 "Ritardatari" + FIELD RITARDA +END + +NUMBER F_MAXRIT 3 +BEGIN + PROMPT 20 8 "Massimo ritardo in giorni" + FIELD MAXRIT +END + +STRING F_NOTE 100 50 +BEGIN + PROMPT 2 9 "Note " FIELD NOTE END +NUMBER F_NUMCONV 4 +BEGIN + PROMPT 2 10 "Numero convocati " + FIELD NUMCONV + FLAGS "D" +END + +NUMBER F_NUMSOLL 4 +BEGIN + PROMPT 27 10 "sollecitati " + FIELD NUMSOLL + FLAGS "D" +END + +NUMBER F_NUMRIT 4 +BEGIN + PROMPT 50 10 "ritardatari " + FIELD NUMRIT + FLAGS "D" +END + BUTTON F_ESEGUI 20 2 BEGIN PROMPT -11 -1 "Esegui convocazione" END - - ENDPAGE PAGE "Soggetti" -1 -1 78 20 SPREADSHEET F_CONVOCATI BEGIN - PROMPT 0 1 "" + PROMPT 1 1 "Convocati" ITEM "Codice@6" ITEM "Cognome@25" ITEM "Nome@25" + ITEM "Data conv." + ITEM "Tipo" ITEM "St." + ITEM "An." ITEM "Nato il@10" ITEM "Cat." ITEM "Tessera" @@ -203,13 +249,13 @@ BEGIN FLAGS "R" END -NUMBER F_S_CODICE 6 +NUMBER F_S_CODICE 8 BEGIN PROMPT 2 1 "Codice " FLAGS "RG" USE LF_SOGGETTI KEY 1 INPUT CODICE F_S_CODICE - DISPLAY "Codice@6" CODICE + DISPLAY "Codice@8" CODICE DISPLAY "Cognome@25" COGNOME DISPLAY "Nome@25" NOME DISPLAY "Nato il@10" DATANASC @@ -236,7 +282,7 @@ BEGIN DISPLAY "Cognome@25" COGNOME DISPLAY "Nome@25" NOME DISPLAY "Nato il@10" DATANASC - DISPLAY "Codice@6" CODICE + DISPLAY "Codice@8" CODICE DISPLAY "Sez." CODSEZ DISPLAY "Sot." CODSOT DISPLAY "C." CATDON @@ -257,9 +303,24 @@ BEGIN ADD RUN at0 -0 END +DATE F_S_DATACONV +BEGIN + PROMPT 2 5 "Convocato il " +END + +STRING F_S_CHIAMATA 1 +BEGIN + PROMPT 30 5 "Chiamata " +END + BOOLEAN F_S_STAMPATO BEGIN - PROMPT 46 3 "Convoc. stampata" + PROMPT 2 6 "Convocazione stampata" +END + +BOOLEAN F_S_ANNULLATO +BEGIN + PROMPT 2 7 "Convocazione annullata" END DATE F_S_DATANASC @@ -270,7 +331,7 @@ END STRING F_S_CATDON 2 BEGIN - PROMPT 2 7 "Cat. " + PROMPT 2 8 "Cat. " FLAGS "D" USE CTD INPUT CODTAB F_S_CATDON @@ -280,13 +341,13 @@ END STRING F_S_TESSAVIS 10 BEGIN - PROMPT 52 7 "Tessera AVIS " + PROMPT 52 8 "Tessera AVIS " FLAGS "D" END STRING F_S_DESC_CATDON 25 BEGIN - PROMPT 12 7 "" + PROMPT 12 8 "" FLAGS "D" END diff --git a/at/at0500.cpp b/at/at0500.cpp new file mode 100755 index 000000000..4756d2678 --- /dev/null +++ b/at/at0500.cpp @@ -0,0 +1,179 @@ +#include +#include +#include + +#include "lf.h" +#include "soggetti.h" +#include "sezioni.h" +#include "convoc.h" +#include "rconvoc.h" + +#include "lf.h" +#include "at0.h" +#include "at0500a.h" + +class TSpostamento_app : public TPrintapp +{ + TRelation* _rel; + TMask* _msk; + int _cur1; + TLocalisamfile* _rconvoc; + TLocalisamfile* _soggetti; + TDate _dataini, _datafin, _spostadal, _spostaal; + TString16 _punto,_tipo, _sezione, _sottog; + TString16 _codsez, _codsot; + int _quanti; // numero di convocazioni per giorni + int _spostati; // contatore dei soggetti spostati + TDate _data; // data a cui spostare + //static bool filter_func_stconvoc(const TRelation* rel); + +protected: + virtual bool user_create(); + virtual bool user_destroy(); + virtual bool set_print(int m); + virtual void set_page(int file, int cnt); + virtual bool preprocess_page(int file, int counter); + +public: + TMask& app_mask() { return *_msk; } + TSpostamento_app() {} +}; + +HIDDEN inline TSpostamento_app& app() { return (TSpostamento_app&) main_app(); } + +void TSpostamento_app::set_page(int file, int cnt) +{ + + set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"#########")); + set_row(1,"@10g@S", FLD(LF_SOGGETTI,SOG_CATDON)); + set_row(1,"@13g@S", FLD(LF_SOGGETTI,SOG_COGNOME)); + set_row(1,"@39g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); + set_row(1,"@50g@ld", FLD(LF_RCONVOC,RCV_DATACONV)); + + set_row(2,"@13g@S", FLD(LF_SOGGETTI,SOG_NOME)); + set_row(2,"@50g@S", FLD(LF_RCONVOC,RCV_CHIAMATA)); + + set_row(3, ""); +} + +bool TSpostamento_app::preprocess_page(int file, int counter) +{ + TDate& data = app()._data; + app()._spostati++; + if (app()._spostati > app()._quanti) + { + ++data; + if (data > app()._spostaal) + data = app()._spostaal; + app()._spostati = 1; + } + current_cursor()->curr().put(RCV_DATACONV,data); + current_cursor()->file().setkey(1); + const int err = current_cursor()->file().rewrite(); + current_cursor()->file().setkey(2); + current_cursor()->curr(LF_SOGGETTI).put(SOG_DATACONV,data); + current_cursor()->file(LF_SOGGETTI).rewrite(); + return TRUE; +} + +bool TSpostamento_app::set_print(int m) +{ + KEY tasto; + tasto = _msk->run(); + if (tasto == K_ENTER) + { + _dataini = _msk->get(F_DATAINI); + _datafin = _msk->get(F_DATAFIN); + _punto = _msk->get(F_PUNTO); + _tipo = _msk->get(F_TIPO); + _codsez = _msk->get(F_CODSEZ); + _codsot = _msk->get(F_CODSOT); + _spostadal = _msk->get(F_SPOSTADAL); + _spostaal = _msk->get(F_SPOSTAAL); + TString80 filtro = ""; + // filtro per punto di raccolta + if (_punto.not_empty()) + { + if (filtro.not_empty()) + filtro << " && "; + filtro << format("(115->PUNTO == \"%s\")",(const char*)_punto); + } + // filtro per tipo + if (_tipo.not_empty()) + { + if (filtro.not_empty()) + filtro << " && "; + filtro << format("(115->TIPO == \"%s\")",(const char*)_tipo); + } + // filtro per sezione/sottogruppo + if (_sezione.not_empty()) + { + if (filtro.not_empty()) + filtro << " && "; + filtro << format("(90->CODSEZ == \"%s\")",(const char*)_sezione); + if (_sottog.not_empty()) + { + if (filtro.not_empty()) + filtro << " && "; + filtro << format("(90->CODSOT == \"%s\")",(const char*)_sottog); + } + } + // filtro per data + TRectype da(LF_RCONVOC); + TRectype a (LF_RCONVOC); + if (_dataini.ok()) + da.put(RCV_DATACONV, _dataini); + if (_datafin.ok()) + a.put(RCV_DATACONV, _datafin); + _cur1 = add_cursor(new TCursor(_rel,"", 2, &da, &a)); + // non posso metterlo nel costruttore del tcursor perchè + // non c'è la possibilità di specificare il parametro TRUE che c'è + // nella setfilter + current_cursor()->setfilter((const char*) filtro, TRUE); + current_cursor()->freeze(); + const int giorni = (int)(_spostaal-_spostadal)+1; // giorni su cui suddividere la chiamata + _quanti = ((int)(current_cursor()->items())/giorni); // quanti donatori per giorno + if (_quanti < 1) + _quanti = 1; + _spostati = 0; + _data = _spostadal; + reset_files(); + add_file(LF_RCONVOC); + reset_print(); + return TRUE; + } + else + return FALSE; +} + +bool TSpostamento_app::user_create() +{ + _rel = new TRelation(LF_RCONVOC); + _rel->add(LF_SOGGETTI, "CODICE==CODICE"); + _rel->add(LF_CONVOC, "NUMERO==NUMERO"); +/* + _rel->add("LCP", "CODTAB==DOM_CODLOC",1,LF_SOGGETTI,ALIAS_LCP); + _rel->add(LF_COMUNI, "COM==DOM_CODCOM",1,LF_SOGGETTI); + // per stampare la denominazione della sezione nell'intestazione + _rel->add(LF_SEZIONI, "CODSEZ==CODSEZ|CODSOT==CODSOT",1,LF_SOGGETTI); +*/ + _msk = new TMask("at0500a"); + return TRUE; +} + +bool TSpostamento_app::user_destroy() +{ + delete _msk; + delete _rel; + return TRUE; +} + +int at0500(int argc, char* argv[]) +{ + + TSpostamento_app a; + + a.run(argc, argv, "Spostamento convocazioni su punto di raccolta"); + + return 0; +} diff --git a/at/at0500a.h b/at/at0500a.h new file mode 100755 index 000000000..dd60e3a7c --- /dev/null +++ b/at/at0500a.h @@ -0,0 +1,16 @@ +// Spostamento convocazioni per BOLOGNA +// definizione campi per maschera + +#define F_DATAINI 101 +#define F_DATAFIN 102 +#define F_PUNTO 103 +#define F_D_PUNTO 104 +#define F_TIPO 105 +#define F_D_TIPO 106 +#define F_CODSEZ 107 +#define F_DENSEZ 108 +#define F_CODSOT 109 +#define F_DENSOT 110 +#define F_SPOSTADAL 111 +#define F_SPOSTAAL 112 +#define F_SPOSTATI 113 diff --git a/at/at0500a.uml b/at/at0500a.uml new file mode 100755 index 000000000..0b97198b3 --- /dev/null +++ b/at/at0500a.uml @@ -0,0 +1,149 @@ +#include "at0500a.h" +#include "lf.h" +PAGE "Spostamento convocazioni" -1 -1 78 20 + +GROUPBOX DLG_NULL 77 8 +BEGIN + PROMPT 1 1 "Convocoazioni da spostare" +END + +DATE F_DATAINI +BEGIN + PROMPT 2 2 "Data iniziale " +END + +DATE F_DATAFIN +BEGIN + PROMPT 2 3 "Data finale " +END + +STRING F_PUNTO 4 +BEGIN + PROMPT 2 4 "Punto raccolta " + FLAGS "U" + USE LDN + INPUT CODTAB F_PUNTO + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@40" S0 + OUTPUT F_PUNTO CODTAB + OUTPUT F_D_PUNTO S0 + CHECTYPE NORMAL +END + +STRING F_D_PUNTO 50 +BEGIN + PROMPT 25 4 "" + FLAGS "D" +END + +STRING F_TIPO 2 +BEGIN + PROMPT 2 5 "Tipo donazione " + FLAGS "U" + USE TDN + INPUT CODTAB F_TIPO + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@40" S0 + OUTPUT F_TIPO CODTAB + OUTPUT F_D_TIPO S0 + CHECKTYPE NORMAL +END + +STRING F_D_TIPO 25 +BEGIN + PROMPT 23 5 "" + FLAGS "D" +END + +STRING F_CODSEZ 2 +BEGIN + PROMPT 2 6 "Sezione " + FLAGS "U" + USE LF_SEZIONI + INPUT CODSEZ F_CODSEZ + INPUT CODSOT F_CODSOT + DISPLAY "Cod.sez" CODSEZ + DISPLAY "Cod.sot." CODSOT + DISPLAY "Sezione@25" DENSEZ + DISPLAY "Sottogruppo@25" DENSOT + OUTPUT F_CODSEZ CODSEZ + OUTPUT F_DENSEZ DENSEZ + OUTPUT F_CODSOT CODSOT + OUTPUT F_DENSOT DENSOT + CHECKTYPE SEARCH + HELP "Codice sezione da convocare" + ADD MASK at0700a +END + +STRING F_DENSEZ 25 +BEGIN + PROMPT 23 6 "" + FLAGS "U" + USE LF_SEZIONI KEY 2 + INPUT DENSEZ F_DENSEZ + DISPLAY "Sezione@25" DENSEZ + DISPLAY "Sottogruppo@25" DENSOT + DISPLAY "Cod.sez" CODSEZ + DISPLAY "Cod.sot." CODSOT + COPY OUTPUT F_CODSEZ + CHECKTYPE NORMAL + HELP "Denominazione sezione da convocare" + ADD MASK at0700a +END + +STRING F_CODSOT 2 +BEGIN + PROMPT 2 7 "Sottogruppo " + COPY ALL F_CODSEZ + CHECKTYPE NORMAL + HELP "Codice sottogruppo da convocare" + ADD MASK at0700a +END + +STRING F_DENSOT 25 +BEGIN + PROMPT 23 7 "" + FLAGS "U" + COPY USE F_DENSEZ + INPUT DENSEZ F_DENSEZ + INPUT DENSOT F_DENSOT + COPY DISPLAY F_DENSEZ + COPY OUTPUT F_DENSEZ + CHECKTYPE NORMAL + HELP "Sottogruppo da convocare" + ADD MASK at0700a +END + +GROUPBOX DLG_NULL 77 4 +BEGIN + PROMPT 1 10 "Periodo su cui distribuire le convocazioni" +END + +DATE F_SPOSTADAL +BEGIN + PROMPT 2 11 "Data iniziale " +END + +DATE F_SPOSTAAL +BEGIN + PROMPT 2 12 "Data finale " +END + +NUMBER F_SPOSTATI 4 +BEGIN + PROMPT 50 11 "Numero spostati " + FLAGS "D" +END + +BUTTON DLG_OK 9 2 +BEGIN + PROMPT -12 16 "" +END + +BUTTON DLG_QUIT 9 2 +BEGIN + PROMPT -22 16 "" +END + +ENDPAGE +ENDMASK diff --git a/at/at0700.h b/at/at0700.h index 8023b3891..76eda9027 100755 --- a/at/at0700.h +++ b/at/at0700.h @@ -38,3 +38,8 @@ #define F_DESC_CATESTI 136 #define F_CATCANC 137 #define F_DESC_CATCANC 138 +#define F_GIOCARSOL 140 +#define F_GIOSOLSOL 141 +#define F_GIOULTSOL 142 +#define F_GIOPERRIT 143 +#define F_NUMMAXSOL 144 diff --git a/at/at0700a.uml b/at/at0700a.uml index f9de9a197..bf1db55e5 100755 --- a/at/at0700a.uml +++ b/at/at0700a.uml @@ -121,7 +121,7 @@ BEGIN USE LCP SELECT S7=#F_COM INPUT CODTAB F_LOCALITA DISPLAY "Codice" CODTAB - DISPLAY "Località@30" S0 + DISPLAY "Localita'@30" S0 DISPLAY "CAP@5" S6 OUTPUT F_LOCALITA CODTAB OUTPUT F_DENLOC S0 @@ -134,7 +134,7 @@ END STRING F_DENLOC 30 BEGIN PROMPT 19 7 "" - COPY USE F_LOCALITA + USE LCP KEY 2 SELECT S7=#F_COM INPUT S0 F_DENLOC DISPLAY "Località@30" S0 DISPLAY "CAP@5" S6 @@ -159,7 +159,7 @@ END STRING F_TELEFONO 15 BEGIN - PROMPT 2 8 "Telefono " + PROMPT 2 8 "Telefono " FIELD TELEFONO END @@ -183,75 +183,76 @@ BEGIN ITEM "E|Estinta" END - -GROUPBOX DLG_NULL 35 7 -BEGIN - PROMPT 16 11 "Parametri convocazione" -END - -NUMBER F_INTMINCONV 4 -BEGIN - PROMPT 17 12 "Int. min. convoc. " - FIELD INTMINCONV - HELP "Intervallo minimo di convocazione in giorni (dall'ultima don.)" -END - -NUMBER F_INTMIN 4 -BEGIN - PROMPT 17 13 "Int. avvisi: min. " - FIELD INTMIN -END - -NUMBER F_INTMAX 4 -BEGIN - PROMPT 17 14 " max. " - FIELD INTMAX -END - -LISTBOX F_TIPOCONV 11 -BEGIN - PROMPT 17 15 "Tipo convocazione " - FIELD TIPOCONV - ITEM "D|Data fissa" - ITEM "G|dal Giorno" -END - -DATE F_DATAULTCON -BEGIN - PROMPT 17 16 "Data ultima conv. " - FIELD DATAULTCON - FLAGS "D" -END - GROUPBOX DLG_NULL 25 6 BEGIN - PROMPT 53 11 "Intestazione tessere" + PROMPT 16 11 "Intestazione tessere" END STRING F_INTESTAZ1 20 BEGIN - PROMPT 55 12 "" + PROMPT 17 12 "" FIELD INTESTAZ1 END STRING F_INTESTAZ2 20 BEGIN - PROMPT 55 13 "" + PROMPT 17 13 "" FIELD INTESTAZ2 END STRING F_INTESTAZ3 20 BEGIN - PROMPT 55 14 "" + PROMPT 17 14 "" FIELD INTESTAZ3 END STRING F_INTESTAZ4 20 BEGIN - PROMPT 55 15 "" + PROMPT 17 15 "" FIELD INTESTAZ4 END +GROUPBOX DLG_NULL 35 8 +BEGIN + PROMPT 43 11 "Dati per stampa cartolina" +END + +STRING F_CONVORA 20 +BEGIN + PROMPT 44 12 "Orario " + FIELD CONVORA +END + +STRING F_CONVSEDE1 25 +BEGIN + PROMPT 44 13 "Sede " + FIELD CONVSEDE1 +END + +STRING F_CONVSEDE2 25 +BEGIN + PROMPT 44 14 " " + FIELD CONVSEDE2 +END + +STRING F_CONVSEDE3 25 +BEGIN + PROMPT 44 15 " " + FIELD CONVSEDE3 +END + +STRING F_CONVSEDE4 25 +BEGIN + PROMPT 44 16 " " + FIELD CONVSEDE4 +END + +STRING F_CONVNOTE 25 +BEGIN + PROMPT 44 17 "Note " + FIELD CONVNOTE +END + ENDPAGE PAGE "Sezioni 2" -1 -1 78 20 @@ -290,46 +291,84 @@ BEGIN GROUP 4 END -GROUPBOX DLG_NULL 35 8 +GROUPBOX DLG_NULL 35 7 BEGIN - PROMPT 1 4 "Dati per stampa cartolina" + PROMPT 1 4 "Parametri convocazione" END -STRING F_CONVORA 20 +NUMBER F_INTMINCONV 4 BEGIN - PROMPT 2 5 "Orario " - FIELD CONVORA + PROMPT 2 5 "Int. min. convoc. " + FIELD INTMINCONV + HELP "Intervallo minimo di convocazione in giorni (dall'ultima don.)" END -STRING F_CONVSEDE1 25 +NUMBER F_INTMIN 4 BEGIN - PROMPT 2 6 "Sede " - FIELD CONVSEDE1 + PROMPT 2 6 "Int. avvisi: min. " + FIELD INTMIN END -STRING F_CONVSEDE2 25 +NUMBER F_INTMAX 4 BEGIN - PROMPT 2 7 " " - FIELD CONVSEDE2 + PROMPT 2 7 " max. " + FIELD INTMAX END -STRING F_CONVSEDE3 25 +LISTBOX F_TIPOCONV 11 BEGIN - PROMPT 2 8 " " - FIELD CONVSEDE3 -END - -STRING F_CONVSEDE4 25 -BEGIN - PROMPT 2 9 " " - FIELD CONVSEDE4 + PROMPT 2 8 "Tipo convocazione " + FIELD TIPOCONV + ITEM "D|Data fissa" + ITEM "G|dal Giorno" END -STRING F_CONVNOTE 25 +DATE F_DATAULTCON BEGIN - PROMPT 2 10 "Note " - FIELD CONVNOTE -END + PROMPT 2 9 "Data ultima conv. " + FIELD DATAULTCON + FLAGS "D" +END + +GROUPBOX DLG_NULL 35 7 +BEGIN + PROMPT 1 11 "Parametri convocazione BO" +END + +NUMBER F_GIOCARSOL 3 +BEGIN + PROMPT 2 12 "Gio. tra cart. e soll. " + FIELD GIOCARSOL + HELP "Intervallo in giorni tra cartolina e primo sollecito" +END + +NUMBER F_GIOSOLSOL 3 +BEGIN + PROMPT 2 13 "Gio. tra soll. e soll. " + FIELD GIOSOLSOL + HELP "Intervallo in giorni tra solleciti" +END + +NUMBER F_GIOULTSOL 3 +BEGIN + PROMPT 2 14 "Gio. tra penult. e ult. soll. " + FIELD GIOULTSOL + HELP "Intervallo tra penultimo e ultimo sollecito" +END + +NUMBER F_GIOPERRIT 3 +BEGIN + PROMPT 2 15 "Gio. tra chiamate per ritard. " + FIELD GIOPERRIT + HELP "Giorni tra le chiamate per ritardatari" +END + +NUMBER F_NUMMAXSOL 2 +BEGIN + PROMPT 2 16 "Num. max di solleciti " + FIELD NUMMAXSOL + HELP "Numero massimo di solleciti inviabili per soggetto" +END GROUPBOX DLG_NULL 41 8 BEGIN diff --git a/at/at0800a.uml b/at/at0800a.uml index 525ca09cf..af0beb824 100755 --- a/at/at0800a.uml +++ b/at/at0800a.uml @@ -114,7 +114,7 @@ END STRING F_DENLOC 30 BEGIN PROMPT 19 9 "" - COPY USE F_LOCALITA + USE LCP KEY 2 SELECT S7=#F_COM INPUT S0 F_DENLOC DISPLAY "Località@30" S0 DISPLAY "CAP@5" S6 diff --git a/at/at1.cpp b/at/at1.cpp index 9339ce4e4..5b5db2d08 100755 --- a/at/at1.cpp +++ b/at/at1.cpp @@ -4,7 +4,7 @@ #include "at1.h" -#define usage "Error - usage : %s -{0|1|2|3}" +#define usage "Error - usage : %s -{0|1|2|3|4|5}" int main(int argc,char** argv) @@ -22,6 +22,10 @@ int main(int argc,char** argv) rt = at1300(argc,argv) ; break; case 3: rt = at1400(argc,argv) ; break; + case 4: + rt = at1500(argc,argv) ; break; + case 5: + rt = at1600(argc,argv) ; break; default: error_box(usage, argv[0]) ; break; } diff --git a/at/at1.url b/at/at1.url index 63aab9631..cacbcb5af 100755 --- a/at/at1.url +++ b/at/at1.url @@ -29,3 +29,15 @@ MENUBAR MENU_BAR(3) MENU MENU_BAR(3) SUBMENU MENU_FILE "~File" +/* at1 -4 modifica intervalli di donazione */ +MENUBAR MENU_BAR(4) + +MENU MENU_BAR(4) + SUBMENU MENU_FILE "~File" + +/* at1 -5 sblocco esclusi */ +MENUBAR MENU_BAR(5) + +MENU MENU_BAR(5) + SUBMENU MENU_FILE "~File" + diff --git a/at/at1100.cpp b/at/at1100.cpp index 869c6b829..cb8fdd514 100755 --- a/at/at1100.cpp +++ b/at/at1100.cpp @@ -1,10 +1,9 @@ -#include #include #include #include #include "at1.h" -#include "lf.h" // se non lo metto non riesco a usare gli LF +#include "lf.h" // nomi campi maschera #include "at1100a.h" @@ -19,7 +18,7 @@ class TChiusura_app : public TPrintapp { - static bool filter_func_chiusura(const TRelation *); + static bool filter_func_chiusura(const TRelation* rel); TMask* _msk; TRelation* _rel; @@ -71,7 +70,8 @@ bool TChiusura_app::preprocess_page(int file, int counter) _operazione = "Nulla"; TRectype& recsez = current_cursor()->curr(LF_SEZIONI); - TLocalisamfile& sogg = current_cursor()->file(LF_SOGGETTI); + TRectype& recsog = current_cursor()->curr(); + TLocalisamfile& filesog = current_cursor()->file(); const TString16 cat_estinti = recsez.get(SEZ_CATESTI); const TString16 cat_cancellati = recsez.get(SEZ_CATCANC); @@ -80,31 +80,31 @@ bool TChiusura_app::preprocess_page(int file, int counter) const int intesti = recsez.get_int(SEZ_INTESTI); const int donemer = recsez.get_int(SEZ_DONEMER); - const TString16 catsog = sogg.get(SOG_CATDON); + const TString16 catsog = recsog.get(SOG_CATDON); if (catsog==cat_estinti || catsog==cat_cancellati) { - const int totdon = sogg.get_int(SOG_TOTDON); + const int totdon = recsog.get_int(SOG_TOTDON); if (totdon >= donemer && donemer != 0) { _operazione = "Passaggio a emeriti"; - sogg.put(SOG_CATDON,cat_emeriti); - sogg.rewrite(); + recsog.put(SOG_CATDON,cat_emeriti); + filesog.rewrite(); } else _operazione = "Cancellato"; - sogg.remove(); + filesog.remove(); } else { - TDate dataultdon = sogg.get(SOG_DATAULTDON); + TDate dataultdon = recsog.get(SOG_DATAULTDON); if (dataultdon.ok()) { dataultdon.addyear(intesti); if (dataultdon < _data_chiusura) { _operazione = "Passaggio a estinti"; - sogg.put(SOG_CATDON,cat_estinti); - sogg.rewrite(); + recsog.put(SOG_CATDON,cat_estinti); + filesog.rewrite(); } else _operazione = "Non doveva essere filtrato: data ancora valida"; @@ -118,14 +118,14 @@ bool TChiusura_app::preprocess_page(int file, int counter) void TChiusura_app::set_page(int file, int cnt) { - set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"######")); - set_row(1,"@7g@S", FLD(LF_SOGGETTI,SOG_CATDON)); - set_row(1,"@10g@S", FLD(LF_SOGGETTI,SOG_COGNOME)); - set_row(1,"@36g@S", FLD(LF_SOGGETTI,SOG_NOME)); - set_row(1,"@63g#a", &_operazione); + set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########")); + set_row(1,"@9g@S", FLD(LF_SOGGETTI,SOG_CATDON)); + set_row(1,"@12g@S", FLD(LF_SOGGETTI,SOG_COGNOME)); + set_row(1,"@38g@S", FLD(LF_SOGGETTI,SOG_NOME)); + set_row(1,"@65g#a", &_operazione); } -bool TChiusura_app::filter_func_chiusura(const TRelation * rel) +bool TChiusura_app::filter_func_chiusura(const TRelation* rel) { bool filtrato = FALSE; diff --git a/at/at1200.cpp b/at/at1200.cpp index 9207ada36..309befa9d 100755 --- a/at/at1200.cpp +++ b/at/at1200.cpp @@ -6,7 +6,7 @@ #include #include "at1.h" -#include "lf.h" // se non lo metto non riesco a usare gli LF +#include "lf.h" // nomi campi maschera #include "at1200a.h" @@ -44,8 +44,6 @@ protected: virtual void set_page(int file, int cnt); virtual bool preprocess_page(int file, int counter); - //virtual TMask& get_mask() { return *_msk; } - public: void filtra_sezioni(); void crea_intestazione(); @@ -76,17 +74,20 @@ void TAttriben_app::filtra_sezioni() bool TAttriben_app::preprocess_page(int file, int counter) { - TString80 nome = current_cursor()->curr().get(SOG_COGNOME); + TRectype& recsez = current_cursor()->curr(LF_SEZIONI); + TRectype& recsog = current_cursor()->curr(); + TLocalisamfile& filesog = current_cursor()->file(); + + + TString80 nome = recsog.get(SOG_COGNOME); nome << " "; - nome << current_cursor()->curr().get(SOG_NOME); + nome << recsog.get(SOG_NOME); _cognome_nome = nome; - TRectype& recsez = current_cursor()->curr(LF_SEZIONI); - TLocalisamfile& sogg = current_cursor()->file(LF_SOGGETTI); - const int totdon = sogg.get_int(SOG_TOTDON); + const int totdon = recsog.get_int(SOG_TOTDON); // salto pagina se cambio sezione - const TString16 codsez = current_cursor()->curr().get(SOG_CODSEZ); - const TString16 codsot = current_cursor()->curr().get(SOG_CODSOT); + const TString16 codsez = recsog.get(SOG_CODSEZ); + const TString16 codsot = recsog.get(SOG_CODSOT); if ((_codsez!=codsez)||(_codsot!=codsot)) { if (_codsez != "**") @@ -100,16 +101,11 @@ bool TAttriben_app::preprocess_page(int file, int counter) void TAttriben_app::set_page(int file, int cnt) { - set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"######")); - set_row(1,"@7g@S", FLD(LF_SOGGETTI,SOG_CATDON)); - set_row(1,"@10g@S", FLD(LF_SOGGETTI,SOG_COGNOME)); - set_row(1,"@36g@S", FLD(LF_SOGGETTI,SOG_NOME)); - - set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"######")); - set_row(1,"@7g@S", FLD(LF_SOGGETTI,SOG_CATDON)); - set_row(1,"@10g#a", &_cognome_nome); - set_row(1,"@36g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); - set_row(1,"@47g@pn", FLD(LF_SOGGETTI,SOG_TOTDON,"###")); + set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########")); + set_row(1,"@9g@S", FLD(LF_SOGGETTI,SOG_CATDON)); + set_row(1,"@12g#a", &_cognome_nome); + set_row(1,"@38g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); + set_row(1,"@49g@pn", FLD(LF_SOGGETTI,SOG_TOTDON,"###")); } bool TAttriben_app::filter_func_attriben(const TRelation* rel) @@ -205,7 +201,7 @@ void TAttriben_app::crea_intestazione() sep.fill('-'); set_header(3, (const char *) sep); set_header(4,"@0gCod.@7gC.@10gCognome e nome@36gNato il@47Num.don."); - set_header(5,"@0g------@7g--@10g-------------------------@36g----------@47g--------"); + set_header(5,"@0g------@9g--@12g-------------------------@38g----------@49g--------"); } bool TAttriben_app::user_create() diff --git a/at/at1300.cpp b/at/at1300.cpp index 0ee5ec423..5f753c451 100755 --- a/at/at1300.cpp +++ b/at/at1300.cpp @@ -91,8 +91,8 @@ bool TSbloccoSO_app::preprocess_page(int file, int counter) current_cursor()->file().rewrite(); // salto pagina se cambio sezione - const TString16 codsez = current_cursor()->curr().get(SOG_CODSEZ); - const TString16 codsot = current_cursor()->curr().get(SOG_CODSOT); + const TString16 codsez = recsog.get(SOG_CODSEZ); + const TString16 codsot = recsog.get(SOG_CODSOT); if ((_codsez!=codsez)||(_codsot!=codsot)) { if (_codsez != "**") @@ -106,11 +106,11 @@ bool TSbloccoSO_app::preprocess_page(int file, int counter) void TSbloccoSO_app::set_page(int file, int cnt) { - set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"######")); - set_row(1,"@7g@S", FLD(LF_SOGGETTI,SOG_CATDON)); - set_row(1,"@10g@S", FLD(LF_SOGGETTI,SOG_COGNOME)); - set_row(1,"@36g@S", FLD(LF_SOGGETTI,SOG_NOME)); - set_row(1,"@61g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); + set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########")); + set_row(1,"@9g@S", FLD(LF_SOGGETTI,SOG_CATDON)); + set_row(1,"@12g@S", FLD(LF_SOGGETTI,SOG_COGNOME)); + set_row(1,"@38g@S", FLD(LF_SOGGETTI,SOG_NOME)); + set_row(1,"@63g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); } bool TSbloccoSO_app::filter_func_sbloccoSO(const TRelation* rel) @@ -213,8 +213,8 @@ void TSbloccoSO_app::crea_intestazione() sep = ""; sep.fill('-'); set_header(3, (const char *) sep); - set_header(4,"@0gCod.@7gC.@10gCognome e nome@36gNato il"); - set_header(5,"@0g------@7g--@10g-------------------------@36g----------"); + set_header(4,"@0gCod.@9gC.@12gCognome e nome@38gNato il"); + set_header(5,"@0g------@9g--@12g-------------------------@38g----------"); } bool TSbloccoSO_app::user_create() diff --git a/at/at1400a.uml b/at/at1400a.uml index 48b2238ec..7cca2f1d4 100755 --- a/at/at1400a.uml +++ b/at/at1400a.uml @@ -292,7 +292,7 @@ END SPREADSHEET F_SOGGETTI BEGIN PROMPT 2 4 "Soggetti" - ITEM "Codice@6" + ITEM "Codice@8" ITEM "Cognome@25" ITEM "Nome@25" ITEM "Nato il@10" @@ -315,13 +315,13 @@ BEGIN FLAGS "R" END -NUMBER F_S_CODICE 6 +NUMBER F_S_CODICE 8 BEGIN PROMPT 2 1 "Codice " FLAGS "RG" USE LF_SOGGETTI KEY 1 INPUT CODICE F_S_CODICE - DISPLAY "Codice@6" CODICE + DISPLAY "Codice@8" CODICE DISPLAY "Cognome@25" COGNOME DISPLAY "Nome@25" NOME DISPLAY "Nato il@10" DATANASC @@ -350,7 +350,7 @@ BEGIN DISPLAY "Cognome@25" COGNOME DISPLAY "Nome@25" NOME DISPLAY "Nato il@10" DATANASC - DISPLAY "Codice@6" CODICE + DISPLAY "Codice@8" CODICE DISPLAY "Sez." CODSEZ DISPLAY "Sot." CODSOT DISPLAY "C." CATDON diff --git a/at/at1500.cpp b/at/at1500.cpp new file mode 100755 index 000000000..7cef2963d --- /dev/null +++ b/at/at1500.cpp @@ -0,0 +1,252 @@ +#include +#include +#include +#include +#include +#include + +#include "at1.h" +#include "lf.h" +#include "atlib.h" + +#define ALIAS_TCS 200 // alias tabella tipi/esiti controlli sanitari +#define MODIFICA_ID "MI" // controllo per modificare idoneita' precedente + +// nomi campi maschera +#include "at1500a.h" + +// nomi dei campi +#include "soggetti.h" +#include "contsan.h" +#include "sezioni.h" + +class TCambiaInt_app : public TPrintapp +{ + TMask* _msk; + TRelation* _rel; + + TLocalisamfile* _contsan; + TRecord_array* _scontrolli; + + int _cur; + bool _modsi, _modaf; + int _oldsi, _oldaf, _newsi, _newaf; + TDate _data_stampa; + TString16 _codsez, _codsot; + + static bool filter_func_cambiaint(const TRelation* rel); + +protected: + virtual bool user_create(); + virtual bool user_destroy(); + virtual bool set_print(int m); + virtual void set_page(int file, int cnt); + virtual bool preprocess_page(int file, int counter); + +public: + void filtra_sezioni(); + void crea_intestazione(); + void header_sezione(const TString16 codsez, const TString16 codsot); + TCambiaInt_app() : _data_stampa(TODAY) {} +}; + +HIDDEN inline TCambiaInt_app& app() { return (TCambiaInt_app&) main_app(); } + +void TCambiaInt_app::filtra_sezioni() +{ + const TString16 sezini = _msk->get(F_SEZINI); + const TString16 sotini = _msk->get(F_SOTINI); + const TString16 sezfin = _msk->get(F_SEZFIN); + const TString16 sotfin = _msk->get(F_SOTFIN); + TRectype da(LF_SOGGETTI); + TRectype a(LF_SOGGETTI); + if (sezini.not_empty()) + da.put(SOG_CODSEZ, sezini); + if (sotini.not_empty()) + da.put(SOG_CODSOT, sotini); + if (sezfin.not_empty()) + a.put(SOG_CODSEZ, sezfin); + if (sotfin.not_empty()) + a.put(SOG_CODSOT, sotfin); + current_cursor()->setregion(da, a); +} + +bool TCambiaInt_app::preprocess_page(int file, int counter) +{ + TRectype& recsog = current_cursor()->curr(); + TRectype* key = new TRectype(LF_CONTSAN); + long codice = recsog.get_long(SOG_CODICE); + key->put(CON_CODICE, codice); + int err = _scontrolli->read(key); + int progcon = _scontrolli->rows()+1; + TRectype& reccon = _contsan->curr(); + reccon.zero(); + reccon.put(CON_CODICE, codice); + reccon.put(CON_PROGCON, progcon); + reccon.put(CON_DATACON, _data_stampa); + reccon.put(CON_TIPOCON, MODIFICA_ID); + reccon.put(CON_IDON1, recsog.get(SOG_IDON1)); + reccon.put(CON_IDON2, recsog.get(SOG_IDON2)); + reccon.put(CON_IDON3, recsog.get(SOG_IDON3)); + reccon.put(CON_IDON4, recsog.get(SOG_IDON4)); + if (_modsi) + reccon.put(CON_INTSI, _newsi); + else + reccon.put(CON_INTSI, recsog.get_int(SOG_INTSI)); + if (_modaf) + reccon.put(CON_INTAF, _newaf); + else + reccon.put(CON_INTAF, recsog.get_int(SOG_INTAF)); + _scontrolli->add_row(reccon); + _scontrolli->rewrite(); + con_reord(recsog, _scontrolli); + current_cursor()->file().rewrite(); + + // salto pagina se cambio sezione + const TString16 codsez = recsog.get(SOG_CODSEZ); + const TString16 codsot = recsog.get(SOG_CODSOT); + if ((_codsez!=codsez)||(_codsot!=codsot)) + { + if (_codsez != "**") + printer().formfeed(); + _codsez = codsez; + _codsot = codsot; + header_sezione(codsez, codsot); + } + return TRUE; +} + +void TCambiaInt_app::set_page(int file, int cnt) +{ + set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"######")); + set_row(1,"@9g@S", FLD(LF_SOGGETTI,SOG_CATDON)); + set_row(1,"@12g@S", FLD(LF_SOGGETTI,SOG_COGNOME)); + set_row(1,"@38g@S", FLD(LF_SOGGETTI,SOG_NOME)); + set_row(1,"@63g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); +} + +bool TCambiaInt_app::filter_func_cambiaint(const TRelation* rel) +{ + bool filtrato = FALSE; + TRectype& recsog = rel->lfile().curr(); + if (app()._modsi) + filtrato = (app()._oldsi == recsog.get_int(SOG_INTSI)); + if (app()._modaf && !filtrato) + filtrato = (app()._oldaf == recsog.get_int(SOG_INTAF)); + return filtrato; +} + +void TCambiaInt_app::header_sezione(const TString16 codsez, const TString16 codsot) +{ + const TString80 densez = current_cursor()->curr(LF_SEZIONI).get(SEZ_DENSEZ); + const TString80 densot = current_cursor()->curr(LF_SEZIONI).get(SEZ_DENSOT); + TString intestazione(132); + intestazione = "Sezione: "; + intestazione << codsez; + intestazione << "/"; + intestazione << codsot; + intestazione << " "; + intestazione << densez; + if ((densot.ok())&& (densot.not_empty())) + { + intestazione << "/"; + intestazione << densot; + } + intestazione.center_just(); + set_header(1,"@0g%s", (const char*) intestazione); + return; +} + +bool TCambiaInt_app::set_print(int) +{ + KEY tasto; + tasto = _msk->run(); + if (tasto == K_ENTER) + { + _codsez = "**"; + _codsot = "**"; + _modsi = _msk->get_bool(F_MOD_SI); + _modaf = _msk->get_bool(F_MOD_AF); + _oldsi = _msk->get_int(F_OLD_SI); + _oldaf = _msk->get_int(F_OLD_AF); + _newsi = _msk->get_int(F_NEW_SI); + _newaf = _msk->get_int(F_NEW_AF); + reset_files(); + add_file(LF_SOGGETTI); + filtra_sezioni(); + // non si puo' fare il filtro per intervalli perche' la setfilter + // non funziona bene con i campi numerici + current_cursor()->set_filterfunction(filter_func_cambiaint, TRUE); + reset_print(); + crea_intestazione(); + return TRUE; + } + else + return FALSE; +} + +void TCambiaInt_app::crea_intestazione() +{ + reset_header(); + + TString sep(132); + sep = "MODIFICA INTERVALLI DI DONAZIONE "; + if (_modsi) + { + sep << "SI da "; + sep << _oldsi ; + sep << " a "; + sep << _newsi; + } + if (_modaf) + { + if (_modsi) + sep << " - "; + sep << "AF da "; + sep << _oldaf ; + sep << " a "; + sep << _newaf; + } + sep.center_just(); + set_header(2, "@0g%s", (const char*) sep); + TString16 data_stampa = _data_stampa.string(); + set_header(2,"@0g%10s", (const char*) data_stampa); + sep = ""; + sep << "Pag. @#"; + set_header(2, "@120g%s", (const char*) sep); + + sep = ""; + sep.fill('-'); + set_header(3, (const char *) sep); + set_header(4,"@0gCod.@9gC.@12gCognome e nome@38gNato il"); + set_header(5,"@0g------@9g--@12g-------------------------@38g----------"); +} + +bool TCambiaInt_app::user_create() +{ + _msk = new TMask("at1500a"); + _rel = new TRelation(LF_SOGGETTI); + _rel->add(LF_SEZIONI,"CODSEZ==CODSEZ|CODSOT==CODSOT"); + _rel->add("TCS", "CODTAB==STATO",1,0,ALIAS_TCS); + _cur = add_cursor(new TCursor(_rel, "", 3)); //cursore ordinamento per sezione+sottogruppo+codice + + _contsan = new TLocalisamfile(LF_CONTSAN); + _scontrolli = new TRecord_array(LF_CONTSAN, CON_PROGCON); + return TRUE; +} + +bool TCambiaInt_app::user_destroy() +{ + delete _rel; + delete _msk; + delete _contsan; + delete _scontrolli; + return TRUE; +} + +int at1500(int argc, char* argv[]) +{ + TCambiaInt_app a; + a.run(argc, argv, "Modifica intervalli di donazione"); + return 0; +} \ No newline at end of file diff --git a/at/at1500a.h b/at/at1500a.h new file mode 100755 index 000000000..5ed8288c1 --- /dev/null +++ b/at/at1500a.h @@ -0,0 +1,17 @@ +// modifica intervalli di donazione +// definizione campi per maschera di selezione + +#define F_SEZINI 101 +#define F_D_SEZINI 102 +#define F_SOTINI 103 +#define F_D_SOTINI 104 +#define F_SEZFIN 105 +#define F_D_SEZFIN 106 +#define F_SOTFIN 107 +#define F_D_SOTFIN 108 +#define F_MOD_SI 109 +#define F_OLD_SI 110 +#define F_NEW_SI 111 +#define F_MOD_AF 112 +#define F_OLD_AF 113 +#define F_NEW_AF 114 diff --git a/at/at3400a.uml b/at/at1500a.uml similarity index 50% rename from at/at3400a.uml rename to at/at1500a.uml index 88e059724..52fc15deb 100755 --- a/at/at3400a.uml +++ b/at/at1500a.uml @@ -1,6 +1,6 @@ -#include "at3400a.h" +#include "at1500a.h" #include "lf.h" -PAGE "Definizione Stampe" -1 -1 78 20 +PAGE "Modifica intervalli di donazione" -1 -1 78 11 GROUPBOX DLG_NULL 77 4 BEGIN @@ -117,171 +117,63 @@ BEGIN HELP "Sottogruppo finale" END -GROUPBOX DLG_NULL 77 5 -BEGIN - PROMPT 1 5 "Categorie" -END - - -STRING F_CAT1 2 -BEGIN - PROMPT 2 6 "" - FLAGS "U" - USE CTD - INPUT CODTAB F_CAT1 - DISPLAY "Codice" CODTAB - DISPLAY "Descrizione@30" S0 - OUTPUT F_CAT1 CODTAB - OUTPUT F_D_CAT1 S0 - CHECKTYPE NORMAL - WARNING "Codice non presente" - HELP "Categoria di appartenenza" -END - -STRING F_D_CAT1 30 -BEGIN - PROMPT 8 6 "" - FLAGS "D" -END - -STRING F_CAT2 2 -BEGIN - PROMPT 2 7 "" - FLAGS "U" - USE CTD - INPUT CODTAB F_CAT2 - COPY DISPLAY F_CAT1 - OUTPUT F_CAT2 CODTAB - OUTPUT F_D_CAT2 S0 - CHECKTYPE NORMAL - WARNING "Codice non presente" - HELP "Categoria di appartenenza" -END - -STRING F_D_CAT2 30 -BEGIN - PROMPT 8 7 "" - FLAGS "D" -END - -STRING F_CAT3 2 -BEGIN - PROMPT 2 8 "" - FLAGS "U" - USE CTD - INPUT CODTAB F_CAT3 - COPY DISPLAY F_CAT1 - OUTPUT F_CAT3 CODTAB - OUTPUT F_D_CAT3 S0 - CHECKTYPE NORMAL - WARNING "Codice non presente" - HELP "Categoria di appartenenza" -END - -STRING F_D_CAT3 30 -BEGIN - PROMPT 8 8 "" - FLAGS "D" -END - -STRING F_CAT4 2 -BEGIN - PROMPT 40 6 "" - FLAGS "U" - USE CTD - INPUT CODTAB F_CAT4 - COPY DISPLAY F_CAT1 - OUTPUT F_CAT4 CODTAB - OUTPUT F_D_CAT4 S0 - CHECKTYPE NORMAL - WARNING "Codice non presente" - HELP "Categoria di appartenenza" -END - -STRING F_D_CAT4 30 -BEGIN - PROMPT 46 6 "" - FLAGS "D" -END - -STRING F_CAT5 2 -BEGIN - PROMPT 40 7 "" - FLAGS "U" - USE CTD - INPUT CODTAB F_CAT5 - COPY DISPLAY F_CAT1 - OUTPUT F_CAT5 CODTAB - OUTPUT F_D_CAT5 S0 - CHECKTYPE NORMAL - WARNING "Codice non presente" - HELP "Categoria di appartenenza" -END - -STRING F_D_CAT5 30 -BEGIN - PROMPT 46 7 "" - FLAGS "D" -END - -STRING F_CAT6 2 -BEGIN - PROMPT 40 8 "" - FLAGS "U" - USE CTD - INPUT CODTAB F_CAT6 - COPY DISPLAY F_CAT1 - OUTPUT F_CAT6 CODTAB - OUTPUT F_D_CAT6 S0 - CHECKTYPE NORMAL - WARNING "Codice non presente" - HELP "Categoria di appartenenza" -END - -STRING F_D_CAT6 30 -BEGIN - PROMPT 46 8 "" - FLAGS "D" -END - -GROUPBOX DLG_NULL 77 3 -BEGIN - PROMPT 1 10 "Selezione soggetti" -END - -DATE F_DATAINI -BEGIN - PROMPT 2 11 "Soggetti modificati dal " - HELP "Data iniziale" -END - -//DATE F_DATAFIN -//BEGIN -// PROMPT 20 11 "Al " -// HELP "Data di nascita finale" -//END - - GROUPBOX DLG_NULL 77 4 BEGIN - PROMPT 1 13 "Stampa" + PROMPT 1 5 "Opzioni per la modifica" END -BUTTON F_ELENCO 9 2 +BOOLEAN F_MOD_SI BEGIN - PROMPT -13 14 "Elenco" - MESSAGE EXIT,F_ELENCO + PROMPT 2 6 "Modifica intervallo SI" + HELP "Si vuole modificare l'intervallo per la donazione SI" + MESSAGE TRUE ENABLE, 1@ + MESSAGE FALSE DISABLE, 1@ END -BUTTON F_PAGINE 9 2 +NUMBER F_OLD_SI 3 BEGIN - PROMPT -23 14 "Pagine" - MESSAGE EXIT,F_PAGINE + PROMPT 30 6 "Vecchio " + HELP "Indicare l'intervallo di donazione SI che si vuole modificare" + GROUP 1 +END + +NUMBER F_NEW_SI 3 +BEGIN + PROMPT 45 6 "Nuovo " + HELP "Indicare il nuovo intervallo di donazione SI" + GROUP 1 +END + +BOOLEAN F_MOD_AF +BEGIN + PROMPT 2 7 "Modifica intervallo AF" + HELP "Si vuole modificare l'intervallo per la donazione AF" + MESSAGE TRUE ENABLE, 2@ + MESSAGE FALSE DISABLE, 2@ +END + +NUMBER F_OLD_AF 3 +BEGIN + PROMPT 30 7 "Vecchio " + HELP "Indicare l'intervallo di donazione AF che si vuole modificare" + GROUP 2 +END + +NUMBER F_NEW_AF 3 +BEGIN + PROMPT 45 7 "Nuovo " + HELP "Indicare il nuovo intervallo di donazione AF" + GROUP 2 +END + +BUTTON DLG_OK 9 2 +BEGIN + PROMPT -12 -1 "" END BUTTON DLG_QUIT 9 2 BEGIN - PROMPT -33 14 "" + PROMPT -22 -1 "" END ENDPAGE diff --git a/at/at1600.cpp b/at/at1600.cpp new file mode 100755 index 000000000..7e085141e --- /dev/null +++ b/at/at1600.cpp @@ -0,0 +1,190 @@ +#include +#include +#include +#include +#include +#include + +#include "at1.h" +#include "lf.h" + +// nomi campi maschera +#include "at1600a.h" + +// nomi dei campi +#include "soggetti.h" +#include "sezioni.h" + +class TSbloccoES_app : public TPrintapp +{ + TMask* _msk; + TRelation* _rel; + + int _cur; + TDate _data_sblocco; // data scadenza esclusione fino a _data_sblocco + TDate _data_stampa; + TString16 _codsez, _codsot; + + static bool filter_func_sbloccoES(const TRelation* rel); + +protected: + virtual bool user_create(); + virtual bool user_destroy(); + virtual bool set_print(int m); + virtual void set_page(int file, int cnt); + virtual bool preprocess_page(int file, int counter); + +public: + void filtra_sezioni(); + void crea_intestazione(); + void header_sezione(const TString16 codsez, const TString16 codsot); + TSbloccoES_app() : _data_sblocco(TODAY), _data_stampa(TODAY) {} +}; + +HIDDEN inline TSbloccoES_app& app() { return (TSbloccoES_app&) main_app(); } + +void TSbloccoES_app::filtra_sezioni() +{ + const TString16 sezini = _msk->get(F_SEZINI); + const TString16 sotini = _msk->get(F_SOTINI); + const TString16 sezfin = _msk->get(F_SEZFIN); + const TString16 sotfin = _msk->get(F_SOTFIN); + TRectype da(LF_SOGGETTI); + TRectype a(LF_SOGGETTI); + if (sezini.not_empty()) + da.put(SOG_CODSEZ, sezini); + if (sotini.not_empty()) + da.put(SOG_CODSOT, sotini); + if (sezfin.not_empty()) + a.put(SOG_CODSEZ, sezfin); + if (sotfin.not_empty()) + a.put(SOG_CODSOT, sotfin); + current_cursor()->setregion(da, a); +} + +bool TSbloccoES_app::preprocess_page(int file, int counter) +{ + TRectype& recsog = current_cursor()->curr(); + recsog.put(SOG_ESCLUSO, " "); + recsog.put(SOG_TERMESCL, NULLDATE); + current_cursor()->file().rewrite(); + + // salto pagina se cambio sezione + const TString16 codsez = recsog.get(SOG_CODSEZ); + const TString16 codsot = recsog.get(SOG_CODSOT); + if ((_codsez!=codsez)||(_codsot!=codsot)) + { + if (_codsez != "**") + printer().formfeed(); + _codsez = codsez; + _codsot = codsot; + header_sezione(codsez, codsot); + } + return TRUE; +} + +void TSbloccoES_app::set_page(int file, int cnt) +{ + set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########")); + set_row(1,"@9g@S", FLD(LF_SOGGETTI,SOG_CATDON)); + set_row(1,"@12g@S", FLD(LF_SOGGETTI,SOG_COGNOME)); + set_row(1,"@38g@S", FLD(LF_SOGGETTI,SOG_NOME)); + set_row(1,"@63g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); +} + +bool TSbloccoES_app::filter_func_sbloccoES(const TRelation* rel) +{ + TRectype& recsog = rel->lfile().curr(); + TDate scadenza = recsog.get(SOG_TERMESCL); + return (scadenza.ok() && scadenza <= app()._data_sblocco); +} + +void TSbloccoES_app::header_sezione(const TString16 codsez, const TString16 codsot) +{ + const TString80 densez = current_cursor()->curr(LF_SEZIONI).get(SEZ_DENSEZ); + const TString80 densot = current_cursor()->curr(LF_SEZIONI).get(SEZ_DENSOT); + TString intestazione(132); + intestazione = "Sezione: "; + intestazione << codsez; + intestazione << "/"; + intestazione << codsot; + intestazione << " "; + intestazione << densez; + if ((densot.ok())&& (densot.not_empty())) + { + intestazione << "/"; + intestazione << densot; + } + intestazione.center_just(); + set_header(1,"@0g%s", (const char*) intestazione); + return; +} + +bool TSbloccoES_app::set_print(int) +{ + KEY tasto; + tasto = _msk->run(); + if (tasto == K_ENTER) + { + _codsez = "**"; + _codsot = "**"; + _data_sblocco = _msk->get(F_DATA); + reset_files(); + add_file(LF_SOGGETTI); + filtra_sezioni(); + current_cursor()->setfilter("ESCLUSO == \"TD\"", TRUE); + current_cursor()->set_filterfunction(filter_func_sbloccoES, TRUE); + reset_print(); + crea_intestazione(); + return TRUE; + } + else + return FALSE; +} + +void TSbloccoES_app::crea_intestazione() +{ + reset_header(); + + TString sep(132); + sep = "SBLOCCO ESCLUSO "; + sep << " FINO ALLA DATA "; + TString16 data_stampa = _data_sblocco.string(); + sep << data_stampa; + sep.center_just(); + set_header(2, "@0g%s", (const char*) sep); + data_stampa = _data_stampa.string(); + set_header(2,"@0g%10s", (const char*) data_stampa); + sep = ""; + sep << "Pag. @#"; + set_header(2, "@120g%s", (const char*) sep); + + sep = ""; + sep.fill('-'); + set_header(3, (const char *) sep); + set_header(4,"@0gCod.@9gC.@12gCognome e nome@38gNato il"); + set_header(5,"@0g--------@9g--@12g-------------------------@38g----------"); +} + +bool TSbloccoES_app::user_create() +{ + _msk = new TMask("at1600a"); + _rel = new TRelation(LF_SOGGETTI); + _rel->add(LF_SEZIONI,"CODSEZ==CODSEZ|CODSOT==CODSOT"); + _cur = add_cursor(new TCursor(_rel, "", 3)); //cursore ordinamento per sezione+sottogruppo+codice + return TRUE; +} + +bool TSbloccoES_app::user_destroy() +{ + delete _rel; + delete _msk; + return TRUE; +} + +int at1600(int argc, char* argv[]) +{ + TSbloccoES_app a; + a.run(argc, argv, "Sblocco esclusi"); + return 0; +} \ No newline at end of file diff --git a/at/at1600a.h b/at/at1600a.h new file mode 100755 index 000000000..1deddc417 --- /dev/null +++ b/at/at1600a.h @@ -0,0 +1,12 @@ +// sblocco esclusi +// definizione campi per maschera di selezione + +#define F_SEZINI 101 +#define F_D_SEZINI 102 +#define F_SOTINI 103 +#define F_D_SOTINI 104 +#define F_SEZFIN 105 +#define F_D_SEZFIN 106 +#define F_SOTFIN 107 +#define F_D_SOTFIN 108 +#define F_DATA 109 diff --git a/at/at1600a.uml b/at/at1600a.uml new file mode 100755 index 000000000..fef622dc2 --- /dev/null +++ b/at/at1600a.uml @@ -0,0 +1,143 @@ +#include "at1600a.h" +#include "lf.h" +PAGE "Sblocco esclusi" -1 -1 78 11 + +GROUPBOX DLG_NULL 77 4 +BEGIN + PROMPT 1 1 "Scelta sezioni/sottogruppi" +END + +STRING F_SEZINI 2 +BEGIN + PROMPT 2 2 "Da " + FLAGS "U" + USE LF_SEZIONI + INPUT CODSEZ F_SEZINI + INPUT CODSOT F_SOTINI + DISPLAY "Cod.sez" CODSEZ + DISPLAY "Cod.sot." CODSOT + DISPLAY "Sezione@25" DENSEZ + DISPLAY "Sottogruppo@25" DENSOT + OUTPUT F_SEZINI CODSEZ + OUTPUT F_D_SEZINI DENSEZ + OUTPUT F_SOTINI CODSOT + OUTPUT F_D_SOTINI DENSOT + CHECKTYPE SEARCH + HELP "Codice sezione da cui partire" +END + +STRING F_D_SEZINI 25 +BEGIN + PROMPT 11 2 "" + FLAGS "U" + USE LF_SEZIONI KEY 2 + INPUT DENSEZ F_D_SEZINI + DISPLAY "Sezione@25" DENSEZ + DISPLAY "Sottogruppo@25" DENSOT + DISPLAY "Cod.sez" CODSEZ + DISPLAY "Cod.sot." CODSOT + COPY OUTPUT F_SEZINI + CHECKTYPE NORMAL + HELP "Sezione da cui partire" +END + +STRING F_SOTINI 2 +BEGIN + PROMPT 2 3 " " + COPY ALL F_SEZINI + CHECKTYPE SEARCH + HELP "Codice sottogruppo da cui partire" +END + +STRING F_D_SOTINI 25 +BEGIN + PROMPT 11 3 "" + FLAGS "U" + COPY USE F_D_SEZINI + INPUT DENSEZ F_D_SEZINI + INPUT DENSOT F_D_SOTINI + COPY DISPLAY F_D_SEZINI + COPY OUTPUT F_D_SEZINI + CHECKTYPE NORMAL + HELP "Sottogruppo da cui partire" +END + +STRING F_SEZFIN 2 +BEGIN + PROMPT 41 2 "A " + FLAGS "U" + USE LF_SEZIONI + INPUT CODSEZ F_SEZFIN + INPUT CODSOT F_SOTFIN + DISPLAY "Cod.sez" CODSEZ + DISPLAY "Cod.sot." CODSOT + DISPLAY "Sezione@25" DENSEZ + DISPLAY "Sottogruppo@25" DENSOT + OUTPUT F_SEZFIN CODSEZ + OUTPUT F_D_SEZFIN DENSEZ + OUTPUT F_SOTFIN CODSOT + OUTPUT F_D_SOTFIN DENSOT + CHECKTYPE SEARCH + HELP "Codice sezione finale" +END + +STRING F_D_SEZFIN 25 +BEGIN + PROMPT 49 2 "" + FLAGS "U" + USE LF_SEZIONI KEY 2 + INPUT DENSEZ F_D_SEZFIN + DISPLAY "Sezione@25" DENSEZ + DISPLAY "Sottogruppo@25" DENSOT + DISPLAY "Cod.sez" CODSEZ + DISPLAY "Cod.sot." CODSOT + COPY OUTPUT F_SEZFIN + CHECKTYPE NORMAL + HELP "Sezione finale" +END + +STRING F_SOTFIN 2 +BEGIN + PROMPT 41 3 " " + COPY ALL F_SEZFIN + CHECKTYPE SEARCH + HELP "Codice sottogruppo finale" +END + +STRING F_D_SOTFIN 25 +BEGIN + PROMPT 49 3 "" + FLAGS "U" + COPY USE F_D_SEZFIN + INPUT DENSEZ F_D_SEZFIN + INPUT DENSOT F_D_SOTFIN + COPY DISPLAY F_D_SEZFIN + COPY OUTPUT F_D_SEZFIN + CHECKTYPE NORMAL + HELP "Sottogruppo finale" +END + +GROUPBOX DLG_NULL 77 3 +BEGIN + PROMPT 1 5 "Opzioni per lo sblocco" +END + +DATE F_DATA +BEGIN + PROMPT 2 6 "Scadenza fino al " + CHECKTYPE REQUIRED + HELP "Data di riferimento per la scadenza (fino al)" +END + +BUTTON DLG_OK 9 2 +BEGIN + PROMPT -12 -1 "" +END + +BUTTON DLG_QUIT 9 2 +BEGIN + PROMPT -22 -1 "" +END + +ENDPAGE +ENDMASK diff --git a/at/at2.cpp b/at/at2.cpp index 73974dfb8..72a09c204 100755 --- a/at/at2.cpp +++ b/at/at2.cpp @@ -3,7 +3,7 @@ #include "at2.h" -#define usage "Error - usage : %s -[0,1,2,3,4,5]" +#define usage "Error - usage : %s -[0,1,2,3,4,5,6]" int main(int argc, char** argv) { @@ -24,6 +24,8 @@ int main(int argc, char** argv) rt = at2500(argc, argv); break; case 5: rt = at2600(argc, argv); break; + case 6: + rt = at2700(argc, argv); break; default: error_box(usage, argv[0]) ; rt = 1; break; } diff --git a/at/at2.h b/at/at2.h index c41f06f05..5194a251a 100755 --- a/at/at2.h +++ b/at/at2.h @@ -7,6 +7,7 @@ int at2300(int argc, char* argv[]); // elenco soggetti esclusi int at2400(int argc, char* argv[]); // elenco soggetti modificati int at2500(int argc, char* argv[]); // elenco soggetti idonei int at2600(int argc, char* argv[]); // elenco soggetti iscritti/dimessi +int at2700(int argc, char* argv[]); // elenco soggetti per categorie #endif // __AT2_H diff --git a/at/at2.url b/at/at2.url index a448c990b..f8d5a01b6 100755 --- a/at/at2.url +++ b/at/at2.url @@ -39,3 +39,9 @@ MENUBAR MENU_BAR(5) MENU MENU_BAR(5) SUBMENU MENU_FILE "~File" +/* at2 -6 elenco per categorie */ +MENUBAR MENU_BAR(6) + +MENU MENU_BAR(6) + SUBMENU MENU_FILE "~File" + diff --git a/at/at2100.cpp b/at/at2100.cpp index d8f65cdfc..90ddc3cbc 100755 --- a/at/at2100.cpp +++ b/at/at2100.cpp @@ -107,18 +107,18 @@ void TSospesi_application::set_page(int file, int cnt) break; case elenco: { - set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"######")); - set_row(1,"@7g@S", FLD(LF_SOGGETTI,SOG_CATDON)); - set_row(1,"@10g#a", &_cognome_nome); - set_row(1,"@36g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); - set_row(1,"@47g@ld", FLD(LF_SOGGETTI,SOG_DATASTATO)); - set_row(1,"@58g@S", FLD(LF_SOGGETTI,SOG_STATO)); - set_row(1,"@61g@ld", FLD(LF_SOGGETTI,SOG_DATAULTID)); - set_row(1,"@72g@S", FLD(LF_SOGGETTI,SOG_TIPOULTID)); - set_row(1,"@75g@pn", FLD(LF_SOGGETTI,SOG_INTSI,"###")); - set_row(1,"@79g@pn", FLD(LF_SOGGETTI,SOG_INTAF,"###")); - set_row(1,"@86g@ld", FLD(LF_SOGGETTI,SOG_DATAULTDON)); - set_row(1,"@97g@S", FLD(LF_SOGGETTI,SOG_TIPOULTDON)); + set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########")); + set_row(1,"@9g@S", FLD(LF_SOGGETTI,SOG_CATDON)); + set_row(1,"@12g#a", &_cognome_nome); + set_row(1,"@38g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); + set_row(1,"@49g@ld", FLD(LF_SOGGETTI,SOG_DATASTATO)); + set_row(1,"@60g@S", FLD(LF_SOGGETTI,SOG_STATO)); + set_row(1,"@63g@ld", FLD(LF_SOGGETTI,SOG_DATAULTID)); + set_row(1,"@74g@S", FLD(LF_SOGGETTI,SOG_TIPOULTID)); + set_row(1,"@77g@pn", FLD(LF_SOGGETTI,SOG_INTSI,"###")); + set_row(1,"@81g@pn", FLD(LF_SOGGETTI,SOG_INTAF,"###")); + set_row(1,"@88g@ld", FLD(LF_SOGGETTI,SOG_DATAULTDON)); + set_row(1,"@99g@S", FLD(LF_SOGGETTI,SOG_TIPOULTDON)); } break; } @@ -140,21 +140,19 @@ bool TSospesi_application::filter_func_sospesi(const TRelation* rel) bool TSospesi_application::preprocess_page(int file, int counter) { - // contatore soggetti stampati - // per ora non c'è if (_tipo_stampa == elenco) { - TString80 nome = current_cursor()->curr().get(SOG_COGNOME); + TRectype& recsog = current_cursor()->curr(); + TString80 nome = recsog.get(SOG_COGNOME); nome << " "; - nome << current_cursor()->curr().get(SOG_NOME); + nome << recsog.get(SOG_NOME); _cognome_nome = nome; // salto pagina se cambio sezione - const TString16 codsez = current_cursor()->curr().get(SOG_CODSEZ); - const TString16 codsot = current_cursor()->curr().get(SOG_CODSOT); + const TString16 codsez = recsog.get(SOG_CODSEZ); + const TString16 codsot = recsog.get(SOG_CODSOT); if ((_codsez!=codsez)||(_codsot!=codsot)) { - //if (!_codsez.blank()) if (_codsez != "**") printer().formfeed(); _codsez = codsez; @@ -195,8 +193,6 @@ bool TSospesi_application::set_print(int m) { case F_ELENCO: _tipo_stampa = elenco; - //_codsez.spaces(2); - //_codsot.spaces(2); _codsez = "**"; _codsot = "**"; break; @@ -277,9 +273,9 @@ void TSospesi_application::crea_intestazione() sep.fill('-'); set_header(3, (const char *) sep); - set_header(4,"@0gCod.@7gC.@10gCognome e nome@36gNato il@47gSospensione@61gUltima idon.@75gIntervalli@86gUltima donaz.@100gUlt.controllo@114gPross.contr."); - set_header(5,"@76gSI AF"); - set_header(6,"@0g------@7g--@10g-------------------------@36g----------@47g-------------@61g-------------@75g----------@86g-------------@100g-------------@114g-------------"); + set_header(4,"@0gCodice@9gC.@12gCognome e nome@38gNato il@49gSospensione@63gUltima idon.@77gIntervalli@88gUltima donaz.@102gUlt.controllo@116gPross.contr."); + set_header(5,"@78gSI AF"); + set_header(6,"@0g--------@9g--@12g-------------------------@38g----------@49g-------------@63g-------------@77g----------@88g-------------@102g-------------@116g-------------"); } } diff --git a/at/at2200.cpp b/at/at2200.cpp index b18c10d8e..9958f7b46 100755 --- a/at/at2200.cpp +++ b/at/at2200.cpp @@ -110,15 +110,15 @@ void TPereta_application::set_page(int file, int cnt) break; case elenco: { - set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"######")); - set_row(1,"@7g@S", FLD(LF_SOGGETTI,SOG_CATDON)); - set_row(1,"@10g#a", &_cognome_nome); - set_row(1,"@36g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); - set_row(1,"@47g@S", FLD(LF_SOGGETTI,SOG_DOM_INDIR)); - set_row(1,"@98g@S", FLD(LF_SOGGETTI,SOG_TELABI)); - set_row(1,"@114g@S", FLD(LF_SOGGETTI,SOG_TELLAV)); - set_row(2,"@47g#a", &_dencom); - set_row(2,"@114g@S", FLD(LF_SOGGETTI,SOG_TELALT)); + set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########")); + set_row(1,"@9g@S", FLD(LF_SOGGETTI,SOG_CATDON)); + set_row(1,"@12g#a", &_cognome_nome); + set_row(1,"@38g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); + set_row(1,"@49g@S", FLD(LF_SOGGETTI,SOG_DOM_INDIR)); + set_row(1,"@100g@S", FLD(LF_SOGGETTI,SOG_TELABI)); + set_row(1,"@116g@S", FLD(LF_SOGGETTI,SOG_TELLAV)); + set_row(2,"@49g#a", &_dencom); + set_row(2,"@116g@S", FLD(LF_SOGGETTI,SOG_TELALT)); } break; } @@ -170,13 +170,12 @@ void TPereta_application::header_sezione(const TString16 codsez, const TString16 bool TPereta_application::preprocess_page(int file, int counter) { - // contatore soggetti stampati - // per ora non c'è if (_tipo_stampa == elenco) { - TString80 nome = current_cursor()->curr().get(SOG_COGNOME); + TRectype recsog = current_cursor()->curr(); + TString80 nome = recsog.get(SOG_COGNOME); nome << " "; - nome << current_cursor()->curr().get(SOG_NOME); + nome << recsog.get(SOG_NOME); _cognome_nome = nome; TString256 localita = ""; localita << current_cursor()->curr(-ALIAS_LCP).get("S6"); @@ -196,8 +195,8 @@ bool TPereta_application::preprocess_page(int file, int counter) _dencom = localita; // salto pagina se cambio sezione - const TString16 codsez = current_cursor()->curr().get(SOG_CODSEZ); - const TString16 codsot = current_cursor()->curr().get(SOG_CODSOT); + const TString16 codsez = recsog.get(SOG_CODSEZ); + const TString16 codsot = recsog.get(SOG_CODSOT); if ((_codsez!=codsez)||(_codsot!=codsot)) { if (_codsez != "**") @@ -294,9 +293,9 @@ void TPereta_application::crea_intestazione() sep.fill('-'); set_header(3, (const char *) sep); - set_header(4,"@0gCod.@7gC.@10gCognome e nome@36gNato il@47gIndirizzo@98gTelefono abit.@114gTelefono lavoro"); - set_header(5,"@47gCAP/Località/Comune/Prov.@114gTelefono altro"); - set_header(6,"@0g------@7g--@10g-------------------------@36g----------@47g--------------------------------------------------@98g---------------@114g---------------"); + set_header(4,"@0gCodice@9gC.@12gCognome e nome@38gNato il@49gIndirizzo@100gTelefono abit.@116gTelefono lavoro"); + set_header(5,"@49gCAP/Località/Comune/Prov.@116gTelefono altro"); + set_header(6,"@0g--------@9g--@12g-------------------------@38g----------@49g--------------------------------------------------@100g---------------@116g---------------"); } } diff --git a/at/at2300.cpp b/at/at2300.cpp index b84cbf1f8..e63f432ac 100755 --- a/at/at2300.cpp +++ b/at/at2300.cpp @@ -109,13 +109,13 @@ void TEsclusi_application::set_page(int file, int cnt) break; case elenco: { - set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"######")); - set_row(1,"@7g@S", FLD(LF_SOGGETTI,SOG_CATDON)); - set_row(1,"@10g#a", &_cognome_nome); - set_row(1,"@36g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); - set_row(1,"@47g@S", FLD(LF_SOGGETTI,SOG_ESCLUSO)); - set_row(1,"@50g@ld", FLD(LF_SOGGETTI,SOG_TERMESCL)); - set_row(1,"@61g@S", FLD(LF_SOGGETTI,SOG_MOTESCL)); + set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########")); + set_row(1,"@9g@S", FLD(LF_SOGGETTI,SOG_CATDON)); + set_row(1,"@12g#a", &_cognome_nome); + set_row(1,"@38g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); + set_row(1,"@49g@S", FLD(LF_SOGGETTI,SOG_ESCLUSO)); + set_row(1,"@52g@ld", FLD(LF_SOGGETTI,SOG_TERMESCL)); + set_row(1,"@63g@S", FLD(LF_SOGGETTI,SOG_MOTESCL)); } break; } @@ -143,17 +143,16 @@ bool TEsclusi_application::filter_func_esclusi(const TRelation * rel) bool TEsclusi_application::preprocess_page(int file, int counter) { - // contatore soggetti stampati - // per ora non c'è if (_tipo_stampa == elenco) { - TString80 nome = current_cursor()->curr().get(SOG_COGNOME); + TRectype& recsog = current_cursor()->curr(); + TString80 nome = recsog.get(SOG_COGNOME); nome << " "; - nome << current_cursor()->curr().get(SOG_NOME); + nome << recsog.get(SOG_NOME); _cognome_nome = nome; // salto pagina se cambio sezione - const TString16 codsez = current_cursor()->curr().get(SOG_CODSEZ); - const TString16 codsot = current_cursor()->curr().get(SOG_CODSOT); + const TString16 codsez = recsog.get(SOG_CODSEZ); + const TString16 codsot = recsog.get(SOG_CODSOT); if ((_codsez!=codsez)||(_codsot!=codsot)) { if (_codsez != "**") @@ -278,14 +277,9 @@ void TEsclusi_application::crea_intestazione() sep.fill('-'); set_header(3, (const char *) sep); - set_header(4,"@0gCod.@7gC.@10gCognome e nome@36gNato il@47gEsclusione@61gMotivo"); - set_header(5,"@47gTipo Termine"); - set_header(6,"@0g------@7g--@10g-------------------------@36g----------@47g-------------@61g------------------------------"); - - //set_header(4,"@0gCod.@7gC.@10gCognome e nome@36gNato il@47gSospensione@61gUltima idon.@75gIntervalli@86gUltima donaz.@100gUlt.controllo@114gPross.contr."); - //set_header(5,"@76gSI AF"); - //set_header(6,"@0g------@7g--@10g-------------------------@36g----------@47g-------------@61g-------------@75g----------@86g-------------@100g-------------@114g-------------"); - + set_header(4,"@0gCodice@9gC.@12gCognome e nome@38gNato il@49gEsclusione@63gMotivo"); + set_header(5,"@49gTipo Termine"); + set_header(6,"@0g--------@9g--@12g-------------------------@38g----------@49g-------------@63g------------------------------"); } } diff --git a/at/at2400.cpp b/at/at2400.cpp index 19d551a16..06613a4ba 100755 --- a/at/at2400.cpp +++ b/at/at2400.cpp @@ -118,15 +118,15 @@ void TModificati_application::set_page(int file, int cnt) break; case elenco: { - set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"######")); - set_row(1,"@7g@S", FLD(LF_SOGGETTI,SOG_CATDON)); - set_row(1,"@10g#a", &_cognome_nome); - set_row(1,"@36g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); - set_row(1,"@47g@S", FLD(LF_SOGGETTI,SOG_DOM_INDIR)); - set_row(1,"@98g@S", FLD(LF_SOGGETTI,SOG_TELABI)); - set_row(1,"@114g@S", FLD(LF_SOGGETTI,SOG_TELLAV)); - set_row(2,"@47g#a", &_dencom); - set_row(2,"@114g@S", FLD(LF_SOGGETTI,SOG_TELALT)); + set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########")); + set_row(1,"@9g@S", FLD(LF_SOGGETTI,SOG_CATDON)); + set_row(1,"@12g#a", &_cognome_nome); + set_row(1,"@38g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); + set_row(1,"@49g@S", FLD(LF_SOGGETTI,SOG_DOM_INDIR)); + set_row(1,"@100g@S", FLD(LF_SOGGETTI,SOG_TELABI)); + set_row(1,"@116g@S", FLD(LF_SOGGETTI,SOG_TELLAV)); + set_row(2,"@49g#a", &_dencom); + set_row(2,"@116g@S", FLD(LF_SOGGETTI,SOG_TELALT)); } break; } @@ -154,13 +154,12 @@ bool TModificati_application::filter_func_modificati(const TRelation* rel) bool TModificati_application::preprocess_page(int file, int counter) { - // contatore soggetti stampati - // per ora non c'è if (_tipo_stampa == elenco) { - TString80 nome = current_cursor()->curr().get(SOG_COGNOME); + TRectype& recsog = current_cursor()->curr(); + TString80 nome = recsog.get(SOG_COGNOME); nome << " "; - nome << current_cursor()->curr().get(SOG_NOME); + nome << recsog.get(SOG_NOME); _cognome_nome = nome; TString256 localita = ""; localita << current_cursor()->curr(-ALIAS_LCPDOM).get("S6"); @@ -180,11 +179,10 @@ bool TModificati_application::preprocess_page(int file, int counter) _dencom = localita; // salto pagina se cambio sezione - const TString16 codsez = current_cursor()->curr().get(SOG_CODSEZ); - const TString16 codsot = current_cursor()->curr().get(SOG_CODSOT); + const TString16 codsez = recsog.get(SOG_CODSEZ); + const TString16 codsot = recsog.get(SOG_CODSOT); if ((_codsez!=codsez)||(_codsot!=codsot)) { - //if (!_codsez.blank()) if (_codsez != "**") printer().formfeed(); _codsez = codsez; @@ -294,9 +292,9 @@ void TModificati_application::crea_intestazione() sep.fill('-'); set_header(3, (const char *) sep); - set_header(4,"@0gCod.@7gC.@10gCognome e nome@36gNato il@47gIndirizzo@98gTelefono abit.@114gTelefono lavoro"); - set_header(5,"@47gCAP/Località/Comune/Prov.@114gTelefono altro"); - set_header(6,"@0g------@7g--@10g-------------------------@36g----------@47g--------------------------------------------------@98g---------------@114g---------------"); + set_header(4,"@0gCodice@9gC.@12gCognome e nome@38gNato il@49gIndirizzo@100gTelefono abit.@116gTelefono lavoro"); + set_header(5,"@49gCAP/Località/Comune/Prov.@116gTelefono altro"); + set_header(6,"@0g--------@9g--@12g-------------------------@38g----------@49g--------------------------------------------------@100g---------------@116g---------------"); } } diff --git a/at/at2500.cpp b/at/at2500.cpp index 74b3cd289..ebedd707c 100755 --- a/at/at2500.cpp +++ b/at/at2500.cpp @@ -108,17 +108,17 @@ void TIdonei_application::set_page(int file, int cnt) break; case elenco: { - set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"######")); - set_row(1,"@7g@S", FLD(LF_SOGGETTI,SOG_CATDON)); - set_row(1,"@10g#a", &_cognome_nome); - set_row(1,"@36g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); - set_row(1,"@47g@ld", FLD(LF_SOGGETTI,SOG_DATAULTID)); // potremmo mettere anche datastato - set_row(1,"@58g@S", FLD(LF_SOGGETTI,SOG_IDON1)); - set_row(1,"@61g@S", FLD(LF_SOGGETTI,SOG_IDON2)); - set_row(1,"@64g@S", FLD(LF_SOGGETTI,SOG_IDON3)); - set_row(1,"@67g@S", FLD(LF_SOGGETTI,SOG_IDON4)); + set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########")); + set_row(1,"@9g@S", FLD(LF_SOGGETTI,SOG_CATDON)); + set_row(1,"@12g#a", &_cognome_nome); + set_row(1,"@38g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); + set_row(1,"@49g@ld", FLD(LF_SOGGETTI,SOG_DATAULTID)); // potremmo mettere anche datastato + set_row(1,"@60g@S", FLD(LF_SOGGETTI,SOG_IDON1)); + set_row(1,"@63g@S", FLD(LF_SOGGETTI,SOG_IDON2)); + set_row(1,"@66g@S", FLD(LF_SOGGETTI,SOG_IDON3)); + set_row(1,"@69g@S", FLD(LF_SOGGETTI,SOG_IDON4)); - set_row(2,"@50g@S", FLD(LF_SOGGETTI,SOG_STATO)); + set_row(2,"@52g@S", FLD(LF_SOGGETTI,SOG_STATO)); } break; } @@ -168,18 +168,17 @@ bool TIdonei_application::filter_func_idonei(const TRelation * rel) bool TIdonei_application::preprocess_page(int file, int counter) { - // contatore soggetti stampati - // per ora non c'è if (_tipo_stampa == elenco) { - TString80 nome = current_cursor()->curr().get(SOG_COGNOME); + TRectype& recsog = current_cursor()->curr(); + TString80 nome = recsog.get(SOG_COGNOME); nome << " "; - nome << current_cursor()->curr().get(SOG_NOME); + nome << recsog.get(SOG_NOME); _cognome_nome = nome; // salto pagina se cambio sezione - const TString16 codsez = current_cursor()->curr().get(SOG_CODSEZ); - const TString16 codsot = current_cursor()->curr().get(SOG_CODSOT); + const TString16 codsez = recsog.get(SOG_CODSEZ); + const TString16 codsot = recsog.get(SOG_CODSOT); if ((_codsez!=codsez)||(_codsot!=codsot)) { if (_codsez != "**") @@ -330,9 +329,9 @@ void TIdonei_application::crea_intestazione() sep.fill('-'); set_header(3, (const char *) sep); - set_header(4,"@0gCod.@7gC.@10gCognome e nome@36gNato il@47gData ID@58gTipi idon."); - set_header(5,"@47gTipo/Esito"); - set_header(6,"@0g------@7g--@10g-------------------------@36g----------@47g----------@58g-- -- -- --"); + set_header(4,"@0gCodice@9gC.@12gCognome e nome@38gNato il@49gData ID@60gTipi idon."); + set_header(5,"@49gTipo/Esito"); + set_header(6,"@0g--------@9g--@12g-------------------------@38g----------@49g----------@60g-- -- -- --"); } } diff --git a/at/at2600.cpp b/at/at2600.cpp index 31701cf44..c3c050d39 100755 --- a/at/at2600.cpp +++ b/at/at2600.cpp @@ -150,18 +150,16 @@ bool TIscritti_application::filter_func_iscritti(const TRelation * rel) bool TIscritti_application::preprocess_page(int file, int counter) { - // contatore soggetti stampati - // per ora non c'è if (_tipo_stampa == elenco) { - TString80 nome = current_cursor()->curr().get(SOG_COGNOME); + TRectype& recsog = current_cursor()->curr(); + TString80 nome = recsog.get(SOG_COGNOME); nome << " "; - nome << current_cursor()->curr().get(SOG_NOME); + nome << recsog.get(SOG_NOME); _cognome_nome = nome; - // salto pagina se cambio sezione - const TString16 codsez = current_cursor()->curr().get(SOG_CODSEZ); - const TString16 codsot = current_cursor()->curr().get(SOG_CODSOT); + const TString16 codsez = recsog.get(SOG_CODSEZ); + const TString16 codsot = recsog.get(SOG_CODSOT); if ((_codsez!=codsez)||(_codsot!=codsot)) { if (_codsez != "**") @@ -285,8 +283,8 @@ void TIscritti_application::crea_intestazione() sep.fill('-'); set_header(3, (const char *) sep); - set_header(4,"@0gCod.@7gC.@10gCognome e nome@36gNato il@47gData isc.@58gData dim."); - set_header(5,"@0g------@7g--@10g-------------------------@36g----------@47g----------@58g----------"); + set_header(4,"@0gCodice@9gC.@12gCognome e nome@38gNato il@49gData isc.@60gData dim."); + set_header(5,"@0g--------@9g--@12g-------------------------@38g----------@49g----------@60g----------"); } } diff --git a/at/at2700.cpp b/at/at2700.cpp new file mode 100755 index 000000000..56230f019 --- /dev/null +++ b/at/at2700.cpp @@ -0,0 +1,352 @@ +#include +#include +#include + +#include "lf.h" +#include "soggetti.h" +#include "sezioni.h" +#include + +#include "at2.h" +#include "at2700a.h" + +#define ALIAS_LCP 100 +#define ALIAS_TCS 200 + +enum ts { undefined = 0, elenco = 1, etichette = 2 }; + +// definizione form per etichette +class TEti_percat_form : public TForm +{ +public: + + virtual TCursor* cursor() const; + virtual TRelation* relation() const; + TPrint_section& get_body() { return section('B'); } ; + TEti_percat_form(): TForm() {}; + TEti_percat_form(const char* form, const char * code = "", int editlevel = 0, const char* desc = "") + : TForm(form,code,editlevel,desc) {}; + virtual ~TEti_percat_form() {}; +}; + +class TPercat_application : public TPrintapp +{ + static bool filter_func_percat(const TRelation* rel); + + TRelation* _rel; + TMask* _msk; + TEti_percat_form* _form_eti; + + TAssoc_array _catdon; + TAssoc_array _catnondon; + + int _cur1; + TParagraph_string _cognome_nome, _dencom; + + TDate _data_stampa; + ts _tipo_stampa; + TString16 _codsez, _codsot; + + +protected: + virtual bool user_create(); + virtual bool user_destroy(); + virtual bool set_print(int m); + virtual void set_page(int file, int cnt); + virtual bool preprocess_page (int file, int counter); + +public: + void crea_intestazione(); + void filtra_sezioni(); + void header_sezione(const TString16 codsez, const TString16 codsot); + TMask& app_mask() { return *_msk; } + + TPercat_application() : _data_stampa(TODAY), _cognome_nome("",25), _dencom("",50) {} +}; + +HIDDEN inline TPercat_application& app() { return (TPercat_application&) main_app(); } + +TCursor* TEti_percat_form::cursor() const { return app().current_cursor(); } + +TRelation* TEti_percat_form::relation() const { return cursor()->relation(); } + +void TPercat_application::filtra_sezioni() +{ + const TString16 sezini = _msk->get(F_SEZINI); + const TString16 sotini = _msk->get(F_SOTINI); + const TString16 sezfin = _msk->get(F_SEZFIN); + const TString16 sotfin = _msk->get(F_SOTFIN); + TRectype da(LF_SOGGETTI); + TRectype a(LF_SOGGETTI); + if (sezini.not_empty()) + da.put(SOG_CODSEZ, sezini); + if (sotini.not_empty()) + da.put(SOG_CODSOT, sotini); + if (sezfin.not_empty()) + a.put(SOG_CODSEZ, sezfin); + if (sotfin.not_empty()) + a.put(SOG_CODSOT, sotfin); + current_cursor()->setregion(da, a); +} + +void TPercat_application::set_page(int file, int cnt) +{ + switch (_tipo_stampa) + { + case etichette: + { + TPrint_section& corpo = _form_eti->get_body(); + corpo.reset(); + corpo.update(); + for (int i = 0; i < corpo.height(); i++) + { + TPrintrow& riga = corpo.row(i); + set_row(i+1,riga); + } + force_setpage(TRUE); // serve perchè alla prossima etichetta rifaccia la setpage + // altrimenti stampa sempre la stessa etichetta + } + break; + case elenco: + { + set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########")); + set_row(1,"@9g@S", FLD(LF_SOGGETTI,SOG_CATDON)); + set_row(1,"@12g#a", &_cognome_nome); + set_row(1,"@38g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); + set_row(1,"@49g@S", FLD(LF_SOGGETTI,SOG_DOM_INDIR)); + set_row(1,"@100g@S", FLD(LF_SOGGETTI,SOG_TELABI)); + set_row(1,"@116g@S", FLD(LF_SOGGETTI,SOG_TELLAV)); + set_row(2,"@49g#a", &_dencom); + set_row(2,"@116g@S", FLD(LF_SOGGETTI,SOG_TELALT)); + } + break; + } +} + +bool TPercat_application::filter_func_percat(const TRelation* rel) +{ + bool filtrato = FALSE; + TLocalisamfile& sog = rel->lfile(); + // filtro per categorie + TAssoc_array& categorie = app()._catdon; + if (categorie.items() != 0) + { + const TString16 cat = sog.get(SOG_CATDON); + filtrato = categorie.is_key((const char*) cat); + } + if (!filtrato) + { + // filtro per categorie non donatori + TAssoc_array& categorie = app()._catnondon; + if (categorie.items() != 0) + { + const TString16 cat1 = sog.get(SOG_CATNOND1); + const TString16 cat2 = sog.get(SOG_CATNOND2); + filtrato = (categorie.is_key((const char*) cat1) || categorie.is_key((const char*) cat2)) ; + } + } + if (app()._catdon.items() == 0 && app()._catnondon.items() == 0) + filtrato = TRUE; + return filtrato; +} + +void TPercat_application::header_sezione(const TString16 codsez, const TString16 codsot) +{ + const TString80 densez = current_cursor()->curr(LF_SEZIONI).get(SEZ_DENSEZ); + const TString80 densot = current_cursor()->curr(LF_SEZIONI).get(SEZ_DENSOT); + TString intestazione(132); + intestazione = "Sezione: "; + intestazione << codsez; + intestazione << "/"; + intestazione << codsot; + intestazione << " "; + intestazione << densez; + if ((densot.ok())&& (densot.not_empty())) + { + intestazione << "/"; + intestazione << densot; + } + intestazione.center_just(); + set_header(1,"@0g%s", (const char*) intestazione); + return; +} + +bool TPercat_application::preprocess_page(int file, int counter) +{ + if (_tipo_stampa == elenco) + { + TRectype& recsog = current_cursor()->curr(); + TString80 nome = recsog.get(SOG_COGNOME); + nome << " "; + nome << recsog.get(SOG_NOME); + _cognome_nome = nome; + TString256 localita = ""; + localita << current_cursor()->curr(-ALIAS_LCP).get("S6"); + if (localita.not_empty() && localita.ok()) + { + localita << " "; + localita << current_cursor()->curr(-ALIAS_LCP).get("S0"); + localita << " - "; + } + else + { + localita = current_cursor()->curr(LF_COMUNI).get(COM_CAPCOM); + localita << " "; + } + localita << current_cursor()->curr(LF_COMUNI).get(COM_DENCOM); + localita.trim(); + _dencom = localita; + // salto pagina se cambio sezione + const TString16 codsez = recsog.get(SOG_CODSEZ); + const TString16 codsot = recsog.get(SOG_CODSOT); + if ((_codsez!=codsez)||(_codsot!=codsot)) + { + if (_codsez != "**") + printer().formfeed(); + _codsez = codsez; + _codsot = codsot; + header_sezione(codsez, codsot); + } + } + return TRUE; +} + +bool TPercat_application::set_print(int m) +{ + _tipo_stampa = undefined; + KEY tasto; + tasto = _msk->run(); + switch (tasto) + { + case F_ELENCO: + _tipo_stampa = elenco; + _codsez = "**"; + _codsot = "**"; + break; + case F_ETICHETTE: + _tipo_stampa = etichette; + break; + } + if (_tipo_stampa != undefined) + { + TString80 chiave = ""; + bool percap = _msk->get_bool(F_PERCAP); + if (percap) + chiave = "13->CAPCOM|UPPER(90->COGNOME)|UPPER(90->NOME)"; + else + chiave = "UPPER(90->COGNOME)|UPPER(90->NOME)"; + _cur1 = add_cursor(new TSorted_cursor(_rel, (const char*) chiave)); + TString80 filtro = ""; + current_cursor()->setfilter((const char*) filtro, TRUE); + reset_files(); + add_file(LF_SOGGETTI); + //filtra_sezioni(); + + const TString16 catpri = _msk->get(F_CAT1); + const TString16 catsec = _msk->get(F_CAT2); + const TString16 catter = _msk->get(F_CAT3); + const TString16 catqua = _msk->get(F_CAT4); + const TString16 catqui = _msk->get(F_CAT5); + const TString16 catses = _msk->get(F_CAT6); + if (catpri.not_empty() && catpri.ok()) + _catdon.add((const char*) catpri); + if (catsec.not_empty() && catsec.ok()) + _catdon.add((const char*) catsec); + if (catter.not_empty() && catter.ok()) + _catdon.add((const char*) catter); + if (catqua.not_empty() && catqua.ok()) + _catdon.add((const char*) catqua); + if (catqui.not_empty() && catqui.ok()) + _catdon.add((const char*) catqui); + if (catses.not_empty() && catses.ok()) + _catdon.add((const char*) catses); + const TString16 catnpri = _msk->get(F_CATN1); + const TString16 catnsec = _msk->get(F_CATN2); + const TString16 catnter = _msk->get(F_CATN3); + const TString16 catnqua = _msk->get(F_CATN4); + const TString16 catnqui = _msk->get(F_CATN5); + const TString16 catnses = _msk->get(F_CATN6); + if (catnpri.not_empty() && catnpri.ok()) + _catnondon.add((const char*) catnpri); + if (catnsec.not_empty() && catnsec.ok()) + _catnondon.add((const char*) catnsec); + if (catnter.not_empty() && catnter.ok()) + _catnondon.add((const char*) catnter); + if (catnqua.not_empty() && catnqua.ok()) + _catnondon.add((const char*) catnqua); + if (catnqui.not_empty() && catnqui.ok()) + _catnondon.add((const char*) catnqui); + if (catnses.not_empty() && catnses.ok()) + _catnondon.add((const char*) catnses); + + current_cursor()->set_filterfunction (filter_func_percat); + + reset_print(); + crea_intestazione(); + return TRUE; + } + else + return FALSE; +} + +void TPercat_application::crea_intestazione() +{ + reset_header(); + + if (_tipo_stampa == elenco) + { + TString sep(132); + sep = "ELENCO PER CATEGORIE"; + sep.center_just(); + set_header(2, "@0g%s", (const char*) sep); + TString16 data_stampa = _data_stampa.string(); + set_header(2,"@0g%10s", (const char*) data_stampa); + sep = ""; + sep << "Pag. @#"; + set_header(2, "@120g%s", (const char*) sep); + + sep = ""; + sep.fill('-'); + set_header(3, (const char *) sep); + + set_header(4,"@0gCodice@9gC.@12gCognome e nome@38gNato il@49gIndirizzo@100gTelefono abit.@116gTelefono lavoro"); + set_header(5,"@49gCAP/Località/Comune/Prov.@116gTelefono altro"); + set_header(6,"@0g--------@9g--@12g-------------------------@38g----------@49g--------------------------------------------------@100g---------------@116g---------------"); + } +} + +bool TPercat_application::user_create() +{ + _rel = new TRelation(LF_SOGGETTI); + _rel->add("LCP", "CODTAB==DOM_CODLOC",1,0,ALIAS_LCP); + _rel->add(LF_COMUNI, "COM==DOM_CODCOM"); + // per stampare nell'intestazione la denominazione della sezione + _rel->add(LF_SEZIONI, "CODSEZ==CODSEZ|CODSOT==CODSOT"); + + //_cur1 = add_cursor(new TCursor(_rel, "", 1)); //cursore ordinamento per codice + //_cur2 = add_cursor(new TCursor(_rel, "", 2)); //cursore ordinamento per cognome e nome + //_cur3 = add_cursor(new TCursor(_rel, "", 3)); //cursore ordinamento per sezione+sottogruppo+codice + //_cur4 = add_cursor(new TCursor(_rel, "", 4)); //cursore ordinamento per sezione+sottogruppo+cognome e nome + + _form_eti = new TEti_percat_form("AT_ETSOG"); + _msk = new TMask("at2700a"); + return TRUE; +} + +bool TPercat_application::user_destroy() +{ + delete _msk; + delete _rel; + delete _form_eti; + return TRUE; +} + +int at2700(int argc, char* argv[]) +{ + + TPercat_application a; + + a.run(argc, argv, "Elenco per categorie"); + + return 0; +} diff --git a/at/at3300a.h b/at/at2700a.h similarity index 56% rename from at/at3300a.h rename to at/at2700a.h index 35a136f69..178ed1342 100755 --- a/at/at3300a.h +++ b/at/at2700a.h @@ -1,4 +1,4 @@ -// convocazione urgente +// stampa elenco soggetti per categoria // definizione campi per maschera di selezione #define F_SEZINI 101 @@ -23,15 +23,20 @@ #define F_CAT6 211 #define F_D_CAT6 212 +#define F_CATN1 301 +#define F_D_CATN1 302 +#define F_CATN2 303 +#define F_D_CATN2 304 +#define F_CATN3 305 +#define F_D_CATN3 306 +#define F_CATN4 307 +#define F_D_CATN4 308 +#define F_CATN5 309 +#define F_D_CATN5 310 +#define F_CATN6 311 +#define F_D_CATN6 312 -#define F_GRUPPOAB0 301 -#define F_RHANTID 302 -#define F_KELL 303 -#define F_FENOTIPORH 304 -#define F_DU 305 +#define F_PERCAP 401 -#define F_NUMERO 306 -#define F_GIORNI 307 - -#define F_ELENCO 401 -#define F_ETICHETTE 402 +#define F_ELENCO 501 +#define F_ETICHETTE 502 diff --git a/at/at3300a.uml b/at/at2700a.uml similarity index 70% rename from at/at3300a.uml rename to at/at2700a.uml index 87b2dee3c..b4cf02758 100755 --- a/at/at3300a.uml +++ b/at/at2700a.uml @@ -1,4 +1,4 @@ -#include "at3300a.h" +#include "at2700a.h" #include "lf.h" PAGE "Definizione Stampe" -1 -1 78 20 @@ -119,10 +119,9 @@ END GROUPBOX DLG_NULL 77 5 BEGIN - PROMPT 1 5 "Categorie" + PROMPT 1 5 "Categorie donatori" END - STRING F_CAT1 2 BEGIN PROMPT 2 6 "" @@ -244,71 +243,138 @@ BEGIN FLAGS "D" END - -GROUPBOX DLG_NULL 77 3 +GROUPBOX DLG_NULL 77 5 BEGIN - PROMPT 1 10 "Tipizzazione richiesta" + PROMPT 1 10 "Categorie non donatori" END -LISTBOX F_GRUPPOAB0 4 +STRING F_CATN1 2 BEGIN - PROMPT 2 11 "Gruppo AB0 " - FIELD GRUPPOAB0 + PROMPT 2 11 "" FLAGS "U" -#include "gruppo.h" -END + USE CTN + INPUT CODTAB F_CATN1 + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@30" S0 + OUTPUT F_CATN1 CODTAB + OUTPUT F_D_CATN1 S0 + CHECKTYPE NORMAL + WARNING "Codice non presente" + HELP "Categoria di appartenenza" +END -LISTBOX F_RHANTID 3 +STRING F_D_CATN1 30 BEGIN - PROMPT 22 11 "Rh/AntiD " - FIELD RHANTID + PROMPT 8 11 "" + FLAGS "D" +END + +STRING F_CATN2 2 +BEGIN + PROMPT 2 12 "" FLAGS "U" -#include "rh.h" + USE CTN + INPUT CODTAB F_CATN2 + COPY DISPLAY F_CATN1 + OUTPUT F_CATN2 CODTAB + OUTPUT F_D_CATN2 S0 + CHECKTYPE NORMAL + WARNING "Codice non presente" + HELP "Categoria di appartenenza" END -STRING F_FENOTIPORH 6 +STRING F_D_CATN2 30 BEGIN - PROMPT 39 11 "Fen.Rh " - FIELD FENOTIPORH + PROMPT 8 12 "" + FLAGS "D" END -LISTBOX F_KELL 3 +STRING F_CATN3 2 BEGIN - PROMPT 55 11 "Kell " - FIELD KELL + PROMPT 2 13 "" FLAGS "U" -#include "rh.h" + USE CTN + INPUT CODTAB F_CATN3 + COPY DISPLAY F_CATN1 + OUTPUT F_CATN3 CODTAB + OUTPUT F_D_CATN3 S0 + CHECKTYPE NORMAL + WARNING "Codice non presente" + HELP "Categoria di appartenenza" END -LISTBOX F_DU 3 +STRING F_D_CATN3 30 BEGIN - PROMPT 68 11 "Du " - FIELD DU + PROMPT 8 13 "" + FLAGS "D" +END + +STRING F_CATN4 2 +BEGIN + PROMPT 40 11 "" FLAGS "U" -#include "rh.h" + USE CTN + INPUT CODTAB F_CATN4 + COPY DISPLAY F_CATN1 + OUTPUT F_CATN4 CODTAB + OUTPUT F_D_CATN4 S0 + CHECKTYPE NORMAL + WARNING "Codice non presente" + HELP "Categoria di appartenenza" END -GROUPBOX DLG_NULL 77 3 +STRING F_D_CATN4 30 BEGIN - PROMPT 1 13 "Richieste" + PROMPT 46 11 "" + FLAGS "D" END -NUMBER F_NUMERO 3 +STRING F_CATN5 2 BEGIN - PROMPT 2 14 "Soggetti richiesti " - CHECKTYPE REQUIRED - WARNING "Inserire il numero dei soggetti richiesti" - HELP "Numero dei soggetti richiesti per l'urgenza" + PROMPT 40 12 "" + FLAGS "U" + USE CTN + INPUT CODTAB F_CATN5 + COPY DISPLAY F_CATN1 + OUTPUT F_CATN5 CODTAB + OUTPUT F_D_CATN5 S0 + CHECKTYPE NORMAL + WARNING "Codice non presente" + HELP "Categoria di appartenenza" END -NUMBER F_GIORNI 3 +STRING F_D_CATN5 30 BEGIN - PROMPT 40 14 "Giorni dall'ultima donazione" - CHECKTYPE REQUIRED - WARNING "Inserire il numero giorni" - HELP "N.ro minimo di giorni che devono essere trascorsi dall'ultima donazione" + PROMPT 46 12 "" + FLAGS "D" END +STRING F_CATN6 2 +BEGIN + PROMPT 40 13 "" + FLAGS "U" + USE CTN + INPUT CODTAB F_CATN6 + COPY DISPLAY F_CATN1 + OUTPUT F_CATN6 CODTAB + OUTPUT F_D_CATN6 S0 + CHECKTYPE NORMAL + WARNING "Codice non presente" + HELP "Categoria di appartenenza" +END + +STRING F_D_CATN6 30 +BEGIN + PROMPT 46 13 "" + FLAGS "D" +END + +BOOLEAN F_PERCAP +BEGIN + PROMPT 2 15 "Ordinamento per CAP" +END + + GROUPBOX DLG_NULL 77 4 BEGIN PROMPT 1 16 "Stampa" diff --git a/at/at3.cpp b/at/at3.cpp index 4238dc7b1..c0707008f 100755 --- a/at/at3.cpp +++ b/at/at3.cpp @@ -1,31 +1,23 @@ #include +#include #include #include "at3.h" -#define usage "Error - usage : %s -[0,1,2,3,4,5]" +#define usage "Error - usage : %s -{0}" + +int main(int argc,char** argv) -int main(int argc, char** argv) { - int rt = 0 ; + int rt = -1 ; const int r = (argc > 1) ? atoi(&argv[1][1]) : -1; - + switch (r) { case 0: - rt = at3100(argc, argv); break; - case 1: - rt = at3200(argc, argv); break; - case 2: - rt = at3300(argc, argv); break; - case 3: - rt = at3400(argc, argv); break; - case 4: - rt = at3500(argc, argv); break; - case 5: - rt = at3600(argc, argv); break; -default: - error_box(usage, argv[0]) ; rt = 1; break; + rt = at3100(argc,argv) ; break; + default: + error_box(usage, argv[0]) ; break; } return rt; } diff --git a/at/at3.h b/at/at3.h index 65e253223..99b52ea0c 100755 --- a/at/at3.h +++ b/at/at3.h @@ -1,12 +1,7 @@ #ifndef __AT3_H #define __AT3_H -int at3100(int argc, char* argv[]); // convocazioni -int at3200(int argc, char* argv[]); // tessere e pagine -int at3300(int argc, char* argv[]); // urgenze -int at3400(int argc, char* argv[]); // elenco soggetti modificati -int at3500(int argc, char* argv[]); // scadenze di donazione -int at3600(int argc, char* argv[]); // convocazioni su punto di raccolta +int at3100(int argc, char* argv[]); #endif // __AT3_H diff --git a/at/at3100.cpp b/at/at3100.cpp index 5feb4a713..c5e5915dc 100755 --- a/at/at3100.cpp +++ b/at/at3100.cpp @@ -1,446 +1,110 @@ +#include +#include #include -#include -#include -#include - -#include "lf.h" -#include "soggetti.h" -#include "sezioni.h" +#include +#include +#include +#include <..\ef\filetext.h> +#include <..\ef\filetext.cpp> #include "at3.h" -#include "at3100a.h" +#include "lf.h" -#define ALIAS_TABCTD 100 // alias tabella categorie donatori -#define ALIAS_TABTCS 200 // alias tabella tipi/esiti controlli sanitari -#define ALIAS_TABLCP 300 // alias tabella località postali +// nomi campi maschera +//#include "at3100a.h" + +// nomi dei campi +#include "soggetti.h" -#define STATO_IDONEO 'I' // IDONEITA' -#define STATO_FINESO 'F' // FINE SOSPENSIONE -// tpi di stampa -enum ts { undefined = 0, elenco = 1, etichette = 2, cartoline = 3 }; +//#include "atlib.h" -// definizione form per etichette e cartoline -class TConv_form : public TForm +class TCarica_app : public TApplication { -public: + TMask* _msk; + TRelation* _rel; + TFile_text* _trasfile; + + TLocalisamfile* _soggetti; - virtual TCursor* cursor() const; - virtual TRelation* relation() const; - TPrint_section& get_body() { return section('B'); } ; - TConv_form(): TForm() {}; - TConv_form(const char* form, const char * code = "", int editlevel = 0, const char* desc = "") - : TForm(form,code,editlevel,desc) {}; - virtual ~TConv_form() {}; -}; - -class TConv_application : public TPrintapp -{ - static bool filter_func_conv(const TRelation* rel); - - TRelation* _rel; - TMask* _msk; - TConv_form* _form_eti; // per etichette - TConv_form* _form_car; // per cartoline - TAssoc_array _asezioni; - - int _cur1, _cur2, _cur3, _cur4; - TDate _data_stampa; - - int _sez_corrente; - ts _tipo_stampa; - bool _intesta; - - // completare con tutti i dati selezionabili - TString16 _codsez, _codsot; - TDate _dataconv; - long _intmin, _intmax; - - protected: - virtual bool user_create(); - virtual bool user_destroy(); - virtual bool set_print(int m); - virtual void set_page(int file, int cnt); - virtual void print(); - virtual bool preprocess_page (int file, int counter); - - static bool check_sez_sheet(const char* codice); - static bool convocazioni_notify(TSheet_field& s, int r, KEY k); - static void add_rows_convocazioni(TSheet_field& s, int count = 10, int start = 1); + virtual bool create(); + virtual bool destroy(); + virtual bool menu(MENU_TAG m); + virtual TMask& get_mask() { return *_msk; } + virtual TRelation* get_relation() const { return _rel; } + + int write(); public: - void crea_intestazione(); - void filtra_sezione(); - void header_sezione(); - - TConv_application() : _data_stampa(TODAY) {} + TCarica_app() {} + }; -HIDDEN inline TConv_application& app() { return (TConv_application&) main_app(); } +HIDDEN inline TCarica_app& app() { return (TCarica_app&) main_app(); } -TCursor* TConv_form::cursor() const { return app().current_cursor(); } - -TRelation* TConv_form::relation() const { return cursor()->relation(); } - -void TConv_application::add_rows_convocazioni(TSheet_field& s, int count, int start) +bool TCarica_app::create() { - if (start == 1) - s.destroy(); - for (int r=start; rget_body(); - corpo.reset(); - corpo.update(); - for (int i = 0; i < corpo.items(); i++) - { - TPrintrow& riga = corpo.row(i); - set_row(i+1,"%s",riga.row()); - } - force_setpage(TRUE); // serve perchè alla prossima etichetta rifaccia la setpage - // altrimenti stampa sempre la stessa etichetta - } - break; - case cartoline: - { - TPrint_section& corpo = _form_car->get_body(); - corpo.reset(); - corpo.update(); - for (int i = 0; i < corpo.items(); i++) - { - TPrintrow& riga = corpo.row(i); - set_row(i+1,"%s",riga.row()); - } - force_setpage(TRUE); // serve perchè alla prossima etichetta rifaccia la setpage - // altrimenti stampa sempre la stessa etichetta - } - break; - } -} - -bool TConv_application::filter_func_conv (const TRelation* rel) -{ - TLocalisamfile& sog = rel->lfile(); - TDate dataprossi = sog.get_date(SOG_DATAPROSSI); - const char stato = rel->curr(-ALIAS_TABTCS).get_char("S6"); - const bool dimesso = rel->curr(-ALIAS_TABCTD).get_char("B0"); - //TDate dataultconv = sog.curr().get_date(SOG_DATAULTCONV); - if (dataprossi.ok()) - { - // intervallo tra data convocazione e data calcolata per pross. si - long intconvsi = app()._dataconv - dataprossi; - // intervallo tra data convocazione e data ultima convocazione - //long intultconvsi = app()._data - dataultconv; - if ((intconvsi >= 0) && (intconvsi < app()._intmax) && ((stato == STATO_IDONEO) || (stato == STATO_FINESO)) && (dimesso != 'X')) - return TRUE; - else - return FALSE; - } - else - // non ha la data di prossima donazione SI - return FALSE; -} - -bool TConv_application::preprocess_page(int file, int counter) -{ - if ((_tipo_stampa == elenco) && (!_intesta)) - { - _intesta = TRUE; - header_sezione(); - } - // contatore soggetti stampati - return TRUE; -} - -void TConv_application::print() -{ - _intesta = FALSE; - filtra_sezione(); - TPrint_application::print(); - TSheet_field& s = (TSheet_field&)_msk->field(F_CONVOCAZIONI); - _sez_corrente++; - if (_sez_corrente <= s.items()) - repeat_print(); - return; -} - -void TConv_application::filtra_sezione() -{ - TSheet_field& s = (TSheet_field&)_msk->field(F_CONVOCAZIONI); - TToken_string& row = s.row(_sez_corrente-1); - _codsez = row.get(0); - _codsot = row.get(); - _dataconv = row.get(); - // deve diventare un membro - TString16 _giorno = row.get(); - _intmin = row.get_int(); - _intmax = row.get_int(); - // deve diventare un membro - TString16 _tipoconv = row.get(); - - select_cursor(_cur4); - TLocalisamfile& fl = current_cursor()->file(LF_SOGGETTI); - TRectype da(fl.curr()); - TRectype a(fl.curr()); - da.zero(); - a.zero('Z'); - if ((_codsez.not_empty()) && (_codsez.ok())) - { - da.put(SOG_CODSEZ, _codsez); - a.put(SOG_CODSEZ, _codsez); - } - if ((_codsot.not_empty()) && (_codsot.ok())) - { - da.put(SOG_CODSOT, _codsot); - a.put(SOG_CODSOT, _codsot); - } - current_cursor()->freeze(FALSE); - current_cursor()->setregion(da, a); -} - -bool TConv_application::set_print(int) -{ - TSheet_field& s = (TSheet_field&)_msk->field(F_CONVOCAZIONI); - if (s.items()==0) - add_rows_convocazioni(s,8); - _asezioni.destroy(); - for (int r=0; r < s.items(); r++) - { - TToken_string& row = s.row(r); - TString16 codice = row.get(0); - TString16 codsot = row.get(); - codice << codsot; - if (codice.not_empty()) - _asezioni.add(codice); - } - _tipo_stampa = undefined; - KEY tasto; - tasto = _msk->run(); - switch (tasto) - { - case F_ELENCO: - _tipo_stampa = elenco; - break; - case F_ETICHETTE: - _tipo_stampa = etichette; - break; - case F_CARTOLINE: - _tipo_stampa = cartoline; - break; - case K_ESC: - _msk->reset(); - } - if (_tipo_stampa != undefined) - { - reset_files(); - add_file(LF_SOGGETTI); - - select_cursor(_cur4); - TSheet_field& s = (TSheet_field&)_msk->field(F_CONVOCAZIONI); - for (int r=s.items()-1; r>=s.first_empty(); r--) - { - TToken_string& row = s.row(r); - _codsez = row.get(0); - _codsot = row.get(); - if (_codsez.empty() || (!_codsez.ok())) - s.destroy(r); - } - // filtro su non esclusi, idonei e categorie non dimessi - // questo filtro non funziona perchè non funziona il riconoscimento dell'alias - // nelle espressioni; sarebbe molto bello averlo a disposizione! - //current_cursor()->setfilter("((ESCLUSO == \"\") && (-100->B0!=\"X\") && ((-200->S6 == \"I\") || (-200->S6 == \"F\")))", TRUE); - // filtro su non esclusi - current_cursor()->setfilter("(ESCLUSO == \"\")", TRUE); - // filtro su data e altri filtri che non posso mettere nella setfilter - current_cursor()->set_filterfunction (filter_func_conv, TRUE); - reset_print(); - _sez_corrente = 1; - crea_intestazione(); - return TRUE; - } - else - return FALSE; -} - -void TConv_application::crea_intestazione() -{ - - reset_header(); + _msk = new TMask("at3100a"); + _rel = new TRelation(LF_SOGGETTI); + _trasfile = new TFile_text("sogg.txt","sogg.ini"); + dispatch_e_menu(BAR_ITEM(1)); - if (_tipo_stampa == elenco) - { - TString256 sep(132); - sep = ""; - sep.fill('-'); - set_header(3, (const char *) sep); - - set_header(5,"@0gCod.@10gC.@13gCognome@39gNato il@50gData pr.SI@61gData pr.AF@72gData/Tipo@83gData/Tipo@94gIdon."); - set_header(6,"@13gNome@50gInterv. SI@61gInterv. AF@72gult. don.@83gult. idon.@94gper"); - set_header(7,"@0g---------@10g--@13g-------------------------@39g----------@50g----------@61g----------@72g----------@83g----------@94g-----"); - } -} + return TRUE; +} -void TConv_application::header_sezione() +bool TCarica_app::destroy() { - TString80 densez = current_cursor()->curr(LF_SEZIONI).get(SEZ_DENSEZ); - TString80 densot = current_cursor()->curr(LF_SEZIONI).get(SEZ_DENSOT); - TString256 intestazione(132); - intestazione = "Sezione: "; - intestazione << _codsez; - intestazione << "/"; - intestazione << _codsot; - intestazione << " "; - intestazione << densez; - if ((densot.ok())&& (densot.not_empty())) - { - intestazione << "/"; - intestazione << densot; - } - intestazione.center_just(); - set_header(1,"@0g%s", (const char*) intestazione); - - intestazione = "ELENCO CONVOCATI PER IL "; - intestazione << _dataconv.string(); - intestazione.center_just(); - set_header(2, "@0g%s", (const char*) intestazione); - TString16 data_stampa = _data_stampa.string(); - set_header(2,"@0g%10s", (const char*) data_stampa); - intestazione = ""; - intestazione << "Pag. @#"; - set_header(2, "@120g%s", (const char*) intestazione); - - return; + delete _rel; + delete _msk; + delete _trasfile; + return TRUE; } -bool TConv_application::user_create() -{ - _rel = new TRelation(LF_SOGGETTI); - _rel->add("TCS", "CODTAB==STATO", 1, 0, ALIAS_TABTCS); // per verificare che sia IDONEO - _rel->add("CTD", "CODTAB==CATDON", 1, 0, ALIAS_TABCTD); // per verificare che sia DONATORE NON DIMESSO - _rel->add("LCP", "CODTAB==DOM_CODLOC", 1, 0, ALIAS_TABLCP); // per verificare che sia DONATORE NON DIMESSO - _rel->add(LF_COMUNI, "COM==DOMC_CODCOM"); - _rel->add(LF_SEZIONI, "CODSEZ==CODSEZ|CODSOT==CODSOT"); - - _cur1 = add_cursor(new TCursor(_rel, "", 1)); //cursore ordinamento per codice - _cur2 = add_cursor(new TCursor(_rel, "", 2)); //cursore ordinamento per cognome e nome - _cur3 = add_cursor(new TCursor(_rel, "", 3)); //cursore ordinamento per sezione+sottogruppo+codice - _cur4 = add_cursor(new TCursor(_rel, "", 4)); //cursore ordinamento per sezione+sottogruppo+cognome e nome - - _msk = new TMask("at3100a"); - TSheet_field& sc = (TSheet_field&)_msk->field(F_CONVOCAZIONI); - sc.set_notify(convocazioni_notify); - _form_eti = new TConv_form("AT_ETSOG"); - _form_car = new TConv_form("AT_CARTO"); - - return TRUE; -} - -bool TConv_application::user_destroy() -{ - delete _msk; - delete _rel; - delete _form_eti; - delete _form_car; - return TRUE; -} - -bool TConv_application::check_sez_sheet(const char* codice) +bool TCarica_app::menu(MENU_TAG m) { - TAssoc_array& sez = app()._asezioni; - if (sez.is_key(codice)) - return FALSE; - else + TMask& msk = get_mask(); + KEY tasto; + do { - sez.add(codice); - return TRUE; + tasto = msk.run(); + switch (tasto) + { + case K_ENTER: // registra + { + TCarica_app::write(); + } + break; + } + } + while (tasto != K_QUIT); + return FALSE; +} + +int TCarica_app::write() +{ + + TProgind *pi; + pi = new TProgind(10,"Caricamento dati da file di testo", FALSE, TRUE, 1); + pi->setstatus(1); + + _trasfile->open("sogg.txt",'r'); + _rel->lfile().setkey(2); + _rel->write_enable(); + TRecord_text rec; + while (_trasfile->ok_r()) + { + pi->addstatus(1); + if (_trasfile->read(rec) == NOERR) + _trasfile->autosave(*_rel, rec); } -} - - -bool TConv_application::convocazioni_notify(TSheet_field& s, int r, KEY k) -{ - bool ok = TRUE; - switch (k) - { - case K_TAB: - // entrata riga - { - TToken_string& row = s.row(r); - TString16 codice = row.get(0); - TString16 codsot = row.get(); - codice << codsot; - if (codice.not_empty()) - { - TAssoc_array& array_sez = app()._asezioni; - if (array_sez.is_key(codice)) - array_sez.remove(codice); - } - if ((r == s.items()-1) && (r == s.first_empty())) - { - add_rows_convocazioni(s,8,r+1); - s.select(r); - } - } - break; - case K_CTRL+K_TAB: - // uscita riga - { - TToken_string& row = s.row(r); - TString16 codice = row.get(0); - TString16 codsot = row.get(); - codice << codsot; - if (codice.not_empty()) - { - ok = check_sez_sheet(codice); - if (!ok) - return s.error_box("Sezione già convocata"); - } - if ((r == s.items()-1) && (r == s.first_empty())) - { - add_rows_convocazioni(s,8,r+1); - s.select(r); - } - } - break; - } - return ok; + delete pi; + + return NOERR; } int at3100(int argc, char* argv[]) { - - TConv_application a; - - a.run(argc, argv, "Convocazioni"); - - return 0; -} + TCarica_app a; + a.run(argc, argv, "Carica dati da file di testo"); + return 0; +} \ No newline at end of file diff --git a/at/at3100a.h b/at/at3100a.h deleted file mode 100755 index 7d0efb566..000000000 --- a/at/at3100a.h +++ /dev/null @@ -1,18 +0,0 @@ -// convocazioni -// definizione campi per maschera di selezione -#define F_CONVOCAZIONI 101 -#define F_ELENCO 401 -#define F_ETICHETTE 402 -#define F_CARTOLINE 404 - -// campi di ogni riga -#define F_C_CODSEZ 101 -#define F_C_CODSOT 102 -#define F_C_DATA 103 -#define F_C_GIORNO 104 -#define F_C_INTMIN 105 -#define F_C_INTMAX 106 -#define F_C_CONV 107 -#define F_C_DENSEZ 151 -#define F_C_DENSOT 152 - diff --git a/at/at3100a.uml b/at/at3100a.uml index 0deeb3250..bb4c7c133 100755 --- a/at/at3100a.uml +++ b/at/at3100a.uml @@ -1,173 +1,23 @@ -#include "at3100a.h" -#include "lf.h" -PAGE "Definizione Stampe" -1 -1 78 20 +TOOLBAR "" 0 20 0 2 -GROUPBOX DLG_NULL 77 12 +BUTTON DLG_OK 10 2 BEGIN - PROMPT 1 1 "Selezioni per la convocazione" + PROMPT -12 -11 "" END -SPREADSHEET F_CONVOCAZIONI 75 10 +BUTTON DLG_QUIT 10 2 BEGIN - PROMPT 2 2 "" - ITEM "Sez." - ITEM "Sot." - ITEM "Data@10" - ITEM "Giorno@15" - ITEM "Int.min" - ITEM "Int.max" - ITEM "Tipo@15" -END - -GROUPBOX DLG_NULL 77 4 -BEGIN - PROMPT 1 13 "Stampa" -END - -BUTTON F_ELENCO 9 2 -BEGIN - PROMPT -15 14 "Elenco" - MESSAGE EXIT,F_ELENCO -END - -BUTTON F_ETICHETTE 9 2 -BEGIN - PROMPT -25 14 "Etichette" - MESSAGE EXIT,F_ETICHETTE -END - -BUTTON F_CARTOLINE 9 2 -BEGIN - PROMPT -35 14 "Cartoline" - MESSAGE EXIT,F_ETICHETTE -END - -BUTTON DLG_CANCEL 9 2 -BEGIN - PROMPT -45 14 "" -END - -BUTTON DLG_QUIT 9 2 -BEGIN - PROMPT -55 14 "" + PROMPT -22 -11 "" END ENDPAGE -ENDMASK +PAGE "Trasferimento dati da file di testo: prova" -1 -1 78 20 -PAGE "Convocazioni" -1 -1 78 12 - -STRING F_C_CODSEZ 2 +TEXT DLG_NULL BEGIN - PROMPT 2 1 "Sezione " - FLAGS "U" - USE LF_SEZIONI - INPUT CODSEZ F_C_CODSEZ - INPUT CODSOT F_C_CODSOT - DISPLAY "Cod.sez" CODSEZ - DISPLAY "Cod.sot." CODSOT - DISPLAY "Sezione@25" DENSEZ - DISPLAY "Sottogruppo@25" DENSOT - OUTPUT F_C_CODSEZ CODSEZ - OUTPUT F_C_DENSEZ DENSEZ - OUTPUT F_C_CODSOT CODSOT - OUTPUT F_C_DENSOT DENSOT - OUTPUT F_C_INTMIN INTMIN - OUTPUT F_C_INTMAX INTMAX - OUTPUT F_C_CONV TIPOCONV - CHECKTYPE SEARCH - HELP "Codice sezione di appartenenza" -END - -STRING F_C_DENSEZ 25 -BEGIN - PROMPT 16 1 "" - FLAGS "U" - USE LF_SEZIONI KEY 2 - INPUT DENSEZ F_C_DENSEZ - INPUT DENSOT F_C_DENSOT - DISPLAY "Sezione@25" DENSEZ - DISPLAY "Sottogruppo@25" DENSOT - DISPLAY "Cod.sez" CODSEZ - DISPLAY "Cod.sot." CODSOT - COPY OUTPUT F_C_CODSEZ - CHECKTYPE SEARCH - HELP "Denominazione sezione di appartenenza" -END - - -STRING F_C_CODSOT 2 -BEGIN - PROMPT 2 2 "Sottog. " - COPY ALL F_C_CODSEZ - CHECKTYPE REQUIRED - HELP "Codice sottogruppo di appartenenza" -END - -STRING F_C_DENSOT 25 -BEGIN - PROMPT 16 2 "" - FLAGS "U" - COPY ALL F_C_DENSEZ - CHECKTYPE SEARCH - HELP "Sottogruppo di appartenenza" -END - - -DATE F_C_DATA -BEGIN - PROMPT 2 4 "Data convocazione " - HELP "Data convocazione" - CHECKTYPE REQUIRED -END - -LISTBOX F_C_GIORNO 13 -BEGIN - PROMPT 2 5 "Giorno preferito " -#include "giorni.h" -END - -NUMBER F_C_INTMIN 4 -BEGIN - PROMPT 2 6 "Intervallo minimo " -END - -NUMBER F_C_INTMAX 4 -BEGIN - PROMPT 2 7 "Intervallo massimo " -END - -LISTBOX F_C_CONV 11 -BEGIN - PROMPT 2 8 "Tipo convocazione " - ITEM "D|Data fissa" - ITEM "G|dal Giorno" -END - -//DATE F_DATAULTCON -//BEGIN -// PROMPT 40 14 "Data ultima convocazione " -// FIELD DATAULTCON -// FLAGS "D" -//END - -BUTTON DLG_OK 9 2 -BEGIN - PROMPT -13 -1 "" -END - -BUTTON DLG_CANCEL 9 2 -BEGIN - PROMPT -23 -1 "" -END - -BUTTON DLG_DELREC 9 2 -BEGIN - PROMPT -33 -1 "" - MESSAGE EXIT, K_DEL + PROMPT 5 5 "Premere CONFERMA per iniziare" END ENDPAGE - ENDMASK diff --git a/at/at3200.cpp b/at/at3200.cpp deleted file mode 100755 index 6e0ae8321..000000000 --- a/at/at3200.cpp +++ /dev/null @@ -1,218 +0,0 @@ -#include -#include -#include - -#include "lf.h" -#include "soggetti.h" -#include "sezioni.h" -#include - -#include "at3.h" -#include "at3200a.h" - -#define ALIAS_COMRES 100 -#define ALIAS_COMNAS 200 - -enum ts { undefined = 0, tessere = 1, pagine = 2 }; - -// definizione form per pagine anagrafiche -class TTessere_form : public TForm -{ -public: - - virtual TCursor* cursor() const; - virtual TRelation* relation() const; - TPrint_section& get_body() { return section('B'); } ; - TTessere_form(): TForm() {}; - TTessere_form(const char* form, const char * code = "", int editlevel = 0, const char* desc = "") - : TForm(form,code,editlevel,desc) {}; - virtual ~TTessere_form() {}; -}; - -class TTessere_application : public TPrintapp -{ - TRelation* _rel; - TMask* _msk; - TTessere_form* _form_pag; - - int _cur1, _cur2, _cur3, _cur4; - TDate _data_stampa; - ts _tipo_stampa; - TString _riepilogodon; - - static bool filter_func_tessere(const TRelation* rel); - -protected: - virtual bool user_create(); - virtual bool user_destroy(); - virtual bool set_print(int m); - virtual void set_page(int file, int cnt); - virtual bool preprocess_page(int file, int counter); - -public: - void crea_intestazione(); - TMask& app_mask() { return *_msk; } - TTessere_application() : _data_stampa(TODAY), _riepilogodon(50) {} -}; - -HIDDEN inline TTessere_application& app() { return (TTessere_application&) main_app(); } - -TCursor* TTessere_form::cursor() const { return app().current_cursor(); } - -TRelation* TTessere_form::relation() const { return cursor()->relation(); } - -void TTessere_application::set_page(int file, int cnt) -{ - // costruzione pagine - switch (_tipo_stampa) - { - case pagine: - { - TPrint_section& corpo = _form_pag->get_body(); - corpo.reset(); - corpo.update(); - for (int i = 0; i < corpo.items(); i++) - { - TPrintrow& riga = corpo.row(i); - set_row(i+1,"%s",riga.row()); - } - force_setpage(TRUE); // serve perchè alla prossima etichetta rifaccia la setpage - // altrimenti stampa sempre la stessa etichetta - } - break; - case tessere: - { - TString16 data_stampa = _data_stampa.string(); - set_row(3, "@30g@S", FLD(LF_SEZIONI,SEZ_DENSEZ)); - set_row(4, "@30g@S", FLD(LF_SEZIONI,SEZ_DENSOT)); - set_row(9,"@33g%s@1j@pn", "Cod. prov.",FLD(LF_SOGGETTI,SOG_CODICE,"#########")); - set_row(12,"@37g@10ls", FLD(LF_SOGGETTI,SOG_TESSAVIS)); - set_row(14,"@45g%10s", (const char*) data_stampa); - set_row(16,"@8g@ls@1j@ls", FLD(LF_SOGGETTI,SOG_COGNOME), FLD(LF_SOGGETTI,SOG_NOME)); - set_row(18,"@8g@ls@1j@2s", FLD(-ALIAS_COMNAS,COM_DENCOM),FLD(-ALIAS_COMNAS,COM_PROVCOM)); - set_row(18,"@45g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); - set_row(20,"@10g@ls@1j@2s",FLD(-ALIAS_COMRES,COM_DENCOM),FLD(-ALIAS_COMRES,COM_PROVCOM)); - set_row(20,"@45g@15ls", FLD(LF_SOGGETTI,SOG_TELABI)); - set_row(22,"@2g@50ls", FLD(LF_SOGGETTI,SOG_DOM_INDIR)); - set_row(24,"@10g@16ls", FLD(LF_SOGGETTI,SOG_CF)); - set_row(28,"@4g@4ls", FLD(LF_SOGGETTI,SOG_GRUPPOAB0)); - set_row(28,"@17g@3ls", FLD(LF_SOGGETTI,SOG_RHANTID)); - set_row(28,"@30g@6ls", FLD(LF_SOGGETTI,SOG_FENOTIPORH)); - set_row(28,"@48g@3ls", FLD(LF_SOGGETTI,SOG_KELL)); - set_row(28,"@58g@3ls", FLD(LF_SOGGETTI,SOG_DU)); - set_row(32,"@4g@20ls", FLD(LF_SOGGETTI,SOG_DOCID)); - set_row(41,"@4g#t", &_riepilogodon); - set_row(72,""); - } - break; - } -} - -bool TTessere_application::preprocess_page(int file, int counter) -{ - // contatore soggetti stampati - // per ora non c'è - int totdon = current_cursor()->curr(LF_SOGGETTI).get_int(SOG_TOTDON); - TDate dataultima = current_cursor()->curr(LF_SOGGETTI).get(SOG_DATAULTDON); - - _riepilogodon = ""; - if (totdon != 0) - { - _riepilogodon = "Donazioni effettuate fino al "; - _riepilogodon << dataultima.string(); - _riepilogodon << " n.ro "; - _riepilogodon << totdon; - } - return TRUE; -} - -bool TTessere_application::set_print(int m) -{ - _tipo_stampa = undefined; - KEY tasto; - tasto = _msk->run(); - switch (tasto) - { - case F_TESSERE: - _tipo_stampa = tessere; - break; - case F_PAGINE: - _tipo_stampa = pagine; - break; - } - if (_tipo_stampa != undefined) - { - reset_files(); - add_file(LF_SOGGETTI); - - reset_print(); - crea_intestazione(); - return TRUE; - } - else - return FALSE; -} - -void TTessere_application::crea_intestazione() -{ - TString256 sep(132); - TString16 data_stampa; - - reset_header(); - - if (_tipo_stampa == pagine) - { - sep.fill('-'); - set_header(1, (const char *) sep); - sep = ""; - sep << "Pag. @#"; - sep.right_just(132); - set_header(2,(const char*) sep); - - set_header(2,"@0gSTAMPA PAGINE ANAGRAFICHE@64gDATA"); - data_stampa = _data_stampa.string(); - set_header(2,"@69g%10s", (const char*) data_stampa); - - sep = ""; - sep.fill('-'); - set_header(3, (const char *) sep); - } -} - -bool TTessere_application::user_create() -{ - _rel = new TRelation(LF_SOGGETTI); - _rel->add(LF_COMUNI, "COM==COMNASC",1,0,ALIAS_COMNAS); - _rel->add(LF_COMUNI, "COM==DOM_CODCOM",1,0,ALIAS_COMRES); - _rel->add("LCP", "CODTAB==DOM_CODLOC"); - _rel->add(LF_SEZIONI, "CODSEZ==CODSEZ|CODSOT==CODSOT"); - - _cur1 = add_cursor(new TCursor(_rel, "", 1)); //cursore ordinamento per codice - _cur2 = add_cursor(new TCursor(_rel, "", 2)); //cursore ordinamento per cognome e nome - _cur3 = add_cursor(new TCursor(_rel, "", 3)); //cursore ordinamento per sezione+sottogruppo+codice - _cur4 = add_cursor(new TCursor(_rel, "", 4)); //cursore ordinamento per sezione+sottogruppo+cognome e nome - - _msk = new TMask("at3200a"); - - _form_pag = new TTessere_form("AT_PAGIN"); // dovrà esserci PAGINE - - return TRUE; -} - -bool TTessere_application::user_destroy() -{ - delete _msk; - delete _rel; - delete _form_pag; - return TRUE; -} - -int at3200(int argc, char* argv[]) -{ - - TTessere_application a; - - a.run(argc, argv, "Stampa tessere e pagine"); - - return 0; -} diff --git a/at/at3200a.h b/at/at3200a.h deleted file mode 100755 index 4209d9052..000000000 --- a/at/at3200a.h +++ /dev/null @@ -1,8 +0,0 @@ -// stampa tessere associative e pagine anagrafiche -// definizione campi per maschera di selezione - -#define F_CODINI 101 -#define F_CODFIN 102 - -#define F_TESSERE 401 -#define F_PAGINE 402 diff --git a/at/at3200a.uml b/at/at3200a.uml deleted file mode 100755 index 6978939e3..000000000 --- a/at/at3200a.uml +++ /dev/null @@ -1,44 +0,0 @@ -#include "at3200a.h" -#include "lf.h" -PAGE "Definizione Stampe" -1 -1 78 20 - -GROUPBOX DLG_NULL 77 4 -BEGIN - PROMPT 1 1 "Selezione codici" -END - -NUMBER F_CODINI 6 -BEGIN - PROMPT 2 2 "Iniziale " -END - -NUMBER F_CODFIN 6 -BEGIN - PROMPT 40 2 "Finale " -END - - -GROUPBOX DLG_NULL 77 4 -BEGIN - PROMPT 1 16 "Stampa" -END - -BUTTON F_TESSERE 9 2 -BEGIN - PROMPT -13 17 "Tessere" - MESSAGE EXIT,F_TESSERE -END - -BUTTON F_PAGINE 9 2 -BEGIN - PROMPT -23 17 "Pagine" - MESSAGE EXIT,F_PAGINE -END - -BUTTON DLG_QUIT 9 2 -BEGIN - PROMPT -33 17 "" -END - -ENDPAGE -ENDMASK diff --git a/at/at3300.cpp b/at/at3300.cpp deleted file mode 100755 index 7173b6a67..000000000 --- a/at/at3300.cpp +++ /dev/null @@ -1,359 +0,0 @@ -#include -#include -#include - -#include "lf.h" -#include "soggetti.h" -#include "sezioni.h" -#include - -#include "at3.h" -#include "at3300a.h" - -#define ALIAS_LCP 100 -#define ALIAS_TCS 200 - -enum ts { undefined = 0, elenco = 1, etichette = 2 }; - -// definizione form per etichette -class TUrgenze_form : public TForm -{ -public: - - virtual TCursor* cursor() const; - virtual TRelation* relation() const; - TPrint_section& get_body() { return section('B'); } ; - TUrgenze_form(): TForm() {}; - TUrgenze_form(const char* form, const char * code = "", int editlevel = 0, const char* desc = "") - : TForm(form,code,editlevel,desc) {}; - virtual ~TUrgenze_form() {}; -}; - -class TUrgenze_application : public TPrintapp -{ - static bool filter_func_urgenze(const TRelation* rel); - - TRelation* _rel; - TMask* _msk; - TUrgenze_form* _form_eti; - TRectype* _sangue; - TAssoc_array _categorie; - long _giorni; - - int _cur1, _cur2, _cur3, _cur4; - TParagraph_string _cognome_nome, _dencom; - - TDate _data_stampa; - TDate _dataini, _datafin; - ts _tipo_stampa; - TString16 _codsez, _codsot; - - -protected: - virtual bool user_create(); - virtual bool user_destroy(); - virtual bool set_print(int m); - virtual void set_page(int file, int cnt); - virtual bool preprocess_page (int file, int counter); - -public: - void crea_intestazione(); - void filtra_sezioni(); - void header_sezione(TString16 codsez, TString16 codsot); - TMask& app_mask() { return *_msk; } - TRectype& get_sangue() { return *_sangue; } - - TUrgenze_application() : _data_stampa(TODAY), _cognome_nome("",25), _dencom("",50) {} -}; - -HIDDEN inline TUrgenze_application& app() { return (TUrgenze_application&) main_app(); } - -TCursor* TUrgenze_form::cursor() const { return app().current_cursor(); } - -TRelation* TUrgenze_form::relation() const { return cursor()->relation(); } - -void TUrgenze_application::filtra_sezioni() -{ - TString16 sezini = _msk->get(F_SEZINI); - TString16 sotini = _msk->get(F_SOTINI); - TString16 sezfin = _msk->get(F_SEZFIN); - TString16 sotfin = _msk->get(F_SOTFIN); - select_cursor(_cur4); - TLocalisamfile& fl = current_cursor()->file(LF_SOGGETTI); - TRectype da(fl.curr()); - TRectype a(fl.curr()); - da.zero(); - a.zero(); - if ((sezini.not_empty()) && (sezini.ok())) - da.put(SOG_CODSEZ, sezini); - if ((sotini.not_empty()) && (sotini.ok())) - da.put(SOG_CODSOT, sotini); - if ((sezfin.not_empty()) && (sezfin.ok())) - a.put(SOG_CODSEZ, sezfin); - if ((sotfin.not_empty()) && (sotfin.ok())) - a.put(SOG_CODSOT, sotfin); - current_cursor()->setregion(da, a); -} - -void TUrgenze_application::set_page(int file, int cnt) -{ - switch (_tipo_stampa) - { - case etichette: - { - TPrint_section& corpo = _form_eti->get_body(); - corpo.reset(); - corpo.update(); - for (int i = 0; i < corpo.height(); i++) - { - TPrintrow& riga = corpo.row(i); - set_row(i+1,riga); - } - force_setpage(TRUE); // serve perchè alla prossima etichetta rifaccia la setpage - // altrimenti stampa sempre la stessa etichetta - } - break; - case elenco: - { - set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"######")); - set_row(1,"@7g@S", FLD(LF_SOGGETTI,SOG_CATDON)); - set_row(1,"@10g#a", &_cognome_nome); - set_row(1,"@36g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); - set_row(1,"@47g@S", FLD(LF_SOGGETTI,SOG_DOM_INDIR)); - set_row(1,"@98g@S", FLD(LF_SOGGETTI,SOG_TELABI)); - set_row(1,"@114g@S", FLD(LF_SOGGETTI,SOG_TELLAV)); - set_row(2,"@47g#a", &_dencom); - set_row(2,"@114g@S", FLD(LF_SOGGETTI,SOG_TELALT)); - set_row(2,"@36g@ld", FLD(LF_SOGGETTI,SOG_DATAULTDON)); - } - break; - } -} - -bool TUrgenze_application::filter_func_urgenze(const TRelation* rel) -{ - bool filtrato = TRUE; - TLocalisamfile& sog = rel->lfile(); - //filtro per categorie - TAssoc_array& categorie = app()._categorie; - if (categorie.items() != 0) - { - TString16 cat = sog.get(SOG_CATDON); - filtrato = categorie.is_key((const char*) cat); - } - // filtro per tipizzazione - if (filtrato) - { - TRectype from = app().get_sangue(); - filtrato = (sog.curr()==from); - } - // filtro su data donazione - if (filtrato) - { - long giorni_sez = rel->lfile(LF_SEZIONI).get_long(SEZ_INTMINCONV); - long giorni = (giorni_sez > app()._giorni) ? giorni_sez : app()._giorni; - TDate data(TODAY); - data = data - (const long) giorni; - TDate dataultdon = sog.get(SOG_DATAULTDON); - filtrato = (dataultdon <= data); - } - return filtrato; -} - -bool TUrgenze_application::preprocess_page(int file, int counter) -{ - // contatore soggetti stampati - // per ora non c'è - if (_tipo_stampa == elenco) - { - TString80 nome = current_cursor()->curr().get(SOG_COGNOME); - nome << " "; - nome << current_cursor()->curr().get(SOG_NOME); - _cognome_nome = nome; - TString256 localita = ""; - localita << current_cursor()->curr(-ALIAS_LCP).get("S6"); - if (localita.not_empty() && localita.ok()) - { - localita << " "; - localita << current_cursor()->curr(-ALIAS_LCP).get("S0"); - localita << " - "; - } - else - { - localita = current_cursor()->curr(LF_COMUNI).get(COM_CAPCOM); - localita << " "; - } - localita << current_cursor()->curr(LF_COMUNI).get(COM_DENCOM); - localita.trim(); - _dencom = localita; - - // salto pagina se cambio sezione - TString16 codsez = current_cursor()->curr().get(SOG_CODSEZ); - TString16 codsot = current_cursor()->curr().get(SOG_CODSOT); - if ((_codsez!=codsez)||(_codsot!=codsot)) - { - if (_codsez != "**") - printer().formfeed(); - _codsez = codsez; - _codsot = codsot; - header_sezione(codsez, codsot); - } - } - return TRUE; -} - -void TUrgenze_application::header_sezione(TString16 codsez, TString16 codsot) -{ - TString80 densez = current_cursor()->curr(LF_SEZIONI).get(SEZ_DENSEZ); - TString80 densot = current_cursor()->curr(LF_SEZIONI).get(SEZ_DENSOT); - TString256 intestazione(132); - intestazione = "Sezione: "; - intestazione << codsez; - intestazione << "/"; - intestazione << codsot; - intestazione << " "; - intestazione << densez; - if ((densot.ok())&& (densot.not_empty())) - { - intestazione << "/"; - intestazione << densot; - } - intestazione.center_just(); - set_header(1,"@0g%s", (const char*) intestazione); - return; -} - -bool TUrgenze_application::set_print(int) -{ - _tipo_stampa = undefined; - KEY tasto; - tasto = _msk->run(); - switch (tasto) - { - case F_ELENCO: - _tipo_stampa = elenco; - _codsez = "**"; - _codsot = "**"; - break; - case F_ETICHETTE: - _tipo_stampa = etichette; - break; - } - if (_tipo_stampa != undefined) - { - reset_files(); - add_file(LF_SOGGETTI); - filtra_sezioni(); - // filtro per categorie - TString16 catpri = _msk->get(F_CAT1); - TString16 catsec = _msk->get(F_CAT2); - TString16 catter = _msk->get(F_CAT3); - TString16 catqua = _msk->get(F_CAT4); - TString16 catqui = _msk->get(F_CAT5); - TString16 catses = _msk->get(F_CAT6); - if (catpri.not_empty() && catpri.ok()) - _categorie.add((const char*) catpri); - if (catsec.not_empty() && catsec.ok()) - _categorie.add((const char*) catsec); - if (catter.not_empty() && catter.ok()) - _categorie.add((const char*) catter); - if (catqua.not_empty() && catqua.ok()) - _categorie.add((const char*) catqua); - if (catqui.not_empty() && catqui.ok()) - _categorie.add((const char*) catqui); - if (catses.not_empty() && catses.ok()) - _categorie.add((const char*) catses); - // filtro per tipizzazione - _sangue->zero(); - TString16 gruppoab0 = _msk->get(F_GRUPPOAB0); - TString16 rhantid = _msk->get(F_RHANTID); - TString16 kell = _msk->get(F_KELL); - TString16 fenotiporh = _msk->get(F_FENOTIPORH); - TString16 du = _msk->get(F_DU); - if ((gruppoab0.ok()) && (gruppoab0.not_empty())) - _sangue->put(SOG_GRUPPOAB0, gruppoab0); - if ((rhantid.ok()) && (rhantid.not_empty())) - _sangue->put(SOG_RHANTID, rhantid); - if ((kell.ok()) && (kell.not_empty())) - _sangue->put(SOG_KELL, kell); - if ((fenotiporh.ok()) && (fenotiporh.not_empty())) - _sangue->put(SOG_FENOTIPORH, fenotiporh); - if ((du.ok()) && (du.not_empty())) - _sangue->put(SOG_DU, du); - _giorni = _msk->get_long(F_GIORNI); - // filtra solo idonei - current_cursor()->setfilter("TCS->S6 == \"I\"", TRUE); - // filtra per categorie, tipizzazione e data donazione - current_cursor()->set_filterfunction (filter_func_urgenze, TRUE); - reset_print(); - crea_intestazione(); - return TRUE; - } - else - return FALSE; -} - -void TUrgenze_application::crea_intestazione() -{ - reset_header(); - - if (_tipo_stampa == elenco) - { - TString256 sep(132); - sep = "CONVOCAZIONI URGENTI"; - sep.center_just(); - set_header(2, "@0g%s", (const char*) sep); - TString16 data_stampa = _data_stampa.string(); - set_header(2,"@0g%10s", (const char*) data_stampa); - sep = ""; - sep << "Pag. @#"; - set_header(2, "@120g%s", (const char*) sep); - - sep = ""; - sep.fill('-'); - set_header(3, (const char *) sep); - - set_header(4,"@0gCod.@7gC.@10gCognome e nome@36gNato il@47gIndirizzo@98gTelefono abit.@114gTelefono lavoro"); - set_header(5,"@47gCAP/Località/Comune/Prov.@114gTelefono altro"); - set_header(6,"@0g------@7g--@10g-------------------------@36g----------@47g--------------------------------------------------@98g---------------@114g---------------"); - } -} - -bool TUrgenze_application::user_create() -{ - _rel = new TRelation(LF_SOGGETTI); - _rel->add("TCS", "CODTAB==STATO",1,0,ALIAS_TCS); - _rel->add("LCP", "CODTAB==LOCALITA",1,0,ALIAS_LCP); - _rel->add(LF_COMUNI, "COM==COM"); - // per stampare nell'intestazione la denominazione della sezione - _rel->add(LF_SEZIONI, "CODSEZ==CODSEZ|CODSOT==CODSOT"); - - _cur1 = add_cursor(new TCursor(_rel, "", 1)); //cursore ordinamento per codice - _cur2 = add_cursor(new TCursor(_rel, "", 2)); //cursore ordinamento per cognome e nome - _cur3 = add_cursor(new TCursor(_rel, "", 3)); //cursore ordinamento per sezione+sottogruppo+codice - _cur4 = add_cursor(new TCursor(_rel, "", 4)); //cursore ordinamento per sezione+sottogruppo+cognome e nome - - _form_eti = new TUrgenze_form("AT_ETSOG"); - _msk = new TMask("at3300a"); - _sangue = new TRectype(LF_SOGGETTI); - return TRUE; -} - -bool TUrgenze_application::user_destroy() -{ - delete _msk; - delete _rel; - delete _form_eti; - delete _sangue; - return TRUE; -} - -int at3300(int argc, char* argv[]) -{ - - TUrgenze_application a; - - a.run(argc, argv, "Urgenze"); - - return 0; -} diff --git a/at/at3400.cpp b/at/at3400.cpp deleted file mode 100755 index 8d3422dd4..000000000 --- a/at/at3400.cpp +++ /dev/null @@ -1,334 +0,0 @@ -#include -#include -#include - -#include "lf.h" -#include "soggetti.h" -#include "sezioni.h" -#include - -#include "at3.h" -#include "at3400a.h" - -#define ALIAS_LCP 100 -//#define ALIAS_TCS 200 - -enum ts { undefined = 0, elenco = 1, pagine = 2 }; - -// definizione form per pagine anagrafiche -class TModificati_form : public TForm -{ -public: - - virtual TCursor* cursor() const; - virtual TRelation* relation() const; - TPrint_section& get_body() { return section('B'); } ; - TModificati_form(): TForm() {}; - TModificati_form(const char* form, const char * code = "", int editlevel = 0, const char* desc = "") - : TForm(form,code,editlevel,desc) {}; - virtual ~TModificati_form() {}; -}; - -class TModificati_application : public TPrintapp -{ - static bool filter_func_modificati(const TRelation* rel); - - TRelation* _rel; - TMask* _msk; - TModificati_form* _form_pag; - TAssoc_array _categorie; - - int _cur1, _cur2, _cur3, _cur4; - TParagraph_string _cognome_nome, _dencom; - - TDate _data_stampa; - TDate _dataini, _datafin; - ts _tipo_stampa; - TString16 _codsez, _codsot; - - -protected: - virtual bool user_create(); - virtual bool user_destroy(); - virtual bool set_print(int m); - virtual void set_page(int file, int cnt); - virtual bool preprocess_page (int file, int counter); - -public: - void crea_intestazione(); - void filtra_sezioni(); - void header_sezione(TString16 codsez, TString16 codsot); - TMask& app_mask() { return *_msk; } - - TModificati_application() : _data_stampa(TODAY), _cognome_nome("",25), _dencom("",50) {} -}; - -HIDDEN inline TModificati_application& app() { return (TModificati_application&) main_app(); } - -TCursor* TModificati_form::cursor() const { return app().current_cursor(); } - -TRelation* TModificati_form::relation() const { return cursor()->relation(); } - -void TModificati_application::filtra_sezioni() -{ - TString16 sezini = _msk->get(F_SEZINI); - TString16 sotini = _msk->get(F_SOTINI); - TString16 sezfin = _msk->get(F_SEZFIN); - TString16 sotfin = _msk->get(F_SOTFIN); - select_cursor(_cur4); - TLocalisamfile& fl = current_cursor()->file(LF_SOGGETTI); - TRectype da(fl.curr()); - TRectype a(fl.curr()); - da.zero(); - a.zero(); - if ((sezini.not_empty()) && (sezini.ok())) - da.put(SOG_CODSEZ, sezini); - if ((sotini.not_empty()) && (sotini.ok())) - da.put(SOG_CODSOT, sotini); - if ((sezfin.not_empty()) && (sezfin.ok())) - a.put(SOG_CODSEZ, sezfin); - if ((sotfin.not_empty()) && (sotfin.ok())) - a.put(SOG_CODSOT, sotfin); - current_cursor()->setregion(da, a); -} - -void TModificati_application::set_page(int file, int cnt) -{ - switch (_tipo_stampa) - { - case pagine: - { - TPrint_section& corpo = _form_pag->get_body(); - corpo.reset(); - corpo.update(); - for (int i = 0; i < corpo.height(); i++) - { - TPrintrow& riga = corpo.row(i); - set_row(i+1,riga); - } - force_setpage(TRUE); // serve perchè alla prossima etichetta rifaccia la setpage - // altrimenti stampa sempre la stessa etichetta - } - break; - case elenco: - { - set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"######")); - set_row(1,"@7g@S", FLD(LF_SOGGETTI,SOG_CATDON)); - set_row(1,"@10g#a", &_cognome_nome); - set_row(1,"@36g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); - set_row(1,"@47g@S", FLD(LF_SOGGETTI,SOG_DOM_INDIR)); - set_row(1,"@98g@S", FLD(LF_SOGGETTI,SOG_TELABI)); - set_row(1,"@114g@S", FLD(LF_SOGGETTI,SOG_TELLAV)); - set_row(2,"@47g#a", &_dencom); - set_row(2,"@114g@S", FLD(LF_SOGGETTI,SOG_TELALT)); - } - break; - } -} - -bool TModificati_application::filter_func_modificati(const TRelation* rel) -{ - bool filtrato = TRUE; - TLocalisamfile& sog = rel->lfile(); - //filtro per categorie - TAssoc_array& categorie = app()._categorie; - if (categorie.items() != 0) - { - TString16 cat = sog.get(SOG_CATDON); - filtrato = categorie.is_key((const char*) cat); - } - // filtro per data aggiornamento - if (filtrato && app()._dataini.ok()) - { - TDate datamod = sog.get(SOG_DATAULTAGG); - filtrato = (datamod > app()._dataini); - } - return filtrato; -} - -bool TModificati_application::preprocess_page(int file, int counter) -{ - // contatore soggetti stampati - // per ora non c'è - if (_tipo_stampa == elenco) - { - TString80 nome = current_cursor()->curr().get(SOG_COGNOME); - nome << " "; - nome << current_cursor()->curr().get(SOG_NOME); - _cognome_nome = nome; - TString256 localita = ""; - localita << current_cursor()->curr(-ALIAS_LCP).get("S6"); - if (localita.not_empty() && localita.ok()) - { - localita << " "; - localita << current_cursor()->curr(-ALIAS_LCP).get("S0"); - localita << " - "; - } - else - { - localita = current_cursor()->curr(LF_COMUNI).get(COM_CAPCOM); - localita << " "; - } - localita << current_cursor()->curr(LF_COMUNI).get(COM_DENCOM); - localita.trim(); - _dencom = localita; - - // salto pagina se cambio sezione - TString16 codsez = current_cursor()->curr().get(SOG_CODSEZ); - TString16 codsot = current_cursor()->curr().get(SOG_CODSOT); - if ((_codsez!=codsez)||(_codsot!=codsot)) - { - //if (!_codsez.blank()) - if (_codsez != "**") - printer().formfeed(); - _codsez = codsez; - _codsot = codsot; - header_sezione(codsez, codsot); - } - } - return TRUE; -} - -void TModificati_application::header_sezione(TString16 codsez, TString16 codsot) -{ - TString80 densez = current_cursor()->curr(LF_SEZIONI).get(SEZ_DENSEZ); - TString80 densot = current_cursor()->curr(LF_SEZIONI).get(SEZ_DENSOT); - TString256 intestazione(132); - intestazione = "Sezione: "; - intestazione << codsez; - intestazione << "/"; - intestazione << codsot; - intestazione << " "; - intestazione << densez; - if ((densot.ok())&& (densot.not_empty())) - { - intestazione << "/"; - intestazione << densot; - } - intestazione.center_just(); - set_header(1,"@0g%s", (const char*) intestazione); - return; -} - -bool TModificati_application::set_print(int) -{ - _tipo_stampa = undefined; - KEY tasto; - tasto = _msk->run(); - switch (tasto) - { - case F_ELENCO: - _tipo_stampa = elenco; - //_codsez.spaces(2); - //_codsot.spaces(2); - _codsez = "**"; - _codsez = "**"; - break; - case F_PAGINE: - _tipo_stampa = pagine; - break; - } - if (_tipo_stampa != undefined) - { - reset_files(); - add_file(LF_SOGGETTI); - _dataini = _msk->get(F_DATAINI); - filtra_sezioni(); - - // filtro per categorie - TString16 catpri = _msk->get(F_CAT1); - TString16 catsec = _msk->get(F_CAT2); - TString16 catter = _msk->get(F_CAT3); - TString16 catqua = _msk->get(F_CAT4); - TString16 catqui = _msk->get(F_CAT5); - TString16 catses = _msk->get(F_CAT6); - if (catpri.not_empty() && catpri.ok()) - _categorie.add((const char*) catpri); - if (catsec.not_empty() && catsec.ok()) - _categorie.add((const char*) catsec); - if (catter.not_empty() && catter.ok()) - _categorie.add((const char*) catter); - if (catqua.not_empty() && catqua.ok()) - _categorie.add((const char*) catqua); - if (catqui.not_empty() && catqui.ok()) - _categorie.add((const char*) catqui); - if (catses.not_empty() && catses.ok()) - _categorie.add((const char*) catses); - - current_cursor()->set_filterfunction(filter_func_modificati); - reset_print(); - crea_intestazione(); - return TRUE; - } - else - return FALSE; -} - -void TModificati_application::crea_intestazione() -{ - reset_header(); - - if (_tipo_stampa == elenco) - { - TString256 sep(132); - sep = "ELENCO MODIFICATI"; - TDate data = _msk->get(F_DATAINI); - if (data.ok()) - { - sep << " dal "; - sep << data.string(); - } - sep.center_just(); - set_header(2, "@0g%s", (const char*) sep); - TString16 data_stampa = _data_stampa.string(); - set_header(2,"@0g%10s", (const char*) data_stampa); - sep = ""; - sep << "Pag. @#"; - set_header(2, "@120g%s", (const char*) sep); - - sep = ""; - sep.fill('-'); - set_header(3, (const char *) sep); - - set_header(4,"@0gCod.@7gC.@10gCognome e nome@36gNato il@47gIndirizzo@98gTelefono abit.@114gTelefono lavoro"); - set_header(5,"@47gCAP/Località/Comune/Prov.@114gTelefono altro"); - set_header(6,"@0g------@7g--@10g-------------------------@36g----------@47g--------------------------------------------------@98g---------------@114g---------------"); - } -} - -bool TModificati_application::user_create() -{ - _rel = new TRelation(LF_SOGGETTI); - //_rel->add("TCS", "CODTAB==STATO",1,0,ALIAS_TCS); - _rel->add("LCP", "CODTAB==LOCALITA",1,0,ALIAS_LCP); - _rel->add(LF_COMUNI, "COM==COM"); - // per stampare nell'intestazione la denominazione della sezione - _rel->add(LF_SEZIONI, "CODSEZ==CODSEZ|CODSOT==CODSOT"); - - _cur1 = add_cursor(new TCursor(_rel, "", 1)); //cursore ordinamento per codice - _cur2 = add_cursor(new TCursor(_rel, "", 2)); //cursore ordinamento per cognome e nome - _cur3 = add_cursor(new TCursor(_rel, "", 3)); //cursore ordinamento per sezione+sottogruppo+codice - _cur4 = add_cursor(new TCursor(_rel, "", 4)); //cursore ordinamento per sezione+sottogruppo+cognome e nome - - _form_pag = new TModificati_form("AT_PAGIN"); - _msk = new TMask("at3400a"); - return TRUE; -} - -bool TModificati_application::user_destroy() -{ - delete _msk; - delete _rel; - delete _form_pag; - return TRUE; -} - -int at3400(int argc, char* argv[]) -{ - - TModificati_application a; - - a.run(argc, argv, "Elenco soggetti modificati"); - - return 0; -} diff --git a/at/at3400a.h b/at/at3400a.h deleted file mode 100755 index a443241de..000000000 --- a/at/at3400a.h +++ /dev/null @@ -1,30 +0,0 @@ -// stampa elenco soggetti modficati a partire dal ... -// definizione campi per maschera di selezione - -#define F_SEZINI 101 -#define F_D_SEZINI 102 -#define F_SOTINI 103 -#define F_D_SOTINI 104 -#define F_SEZFIN 105 -#define F_D_SEZFIN 106 -#define F_SOTFIN 107 -#define F_D_SOTFIN 108 - -#define F_CAT1 201 -#define F_D_CAT1 202 -#define F_CAT2 203 -#define F_D_CAT2 204 -#define F_CAT3 205 -#define F_D_CAT3 206 -#define F_CAT4 207 -#define F_D_CAT4 208 -#define F_CAT5 209 -#define F_D_CAT5 210 -#define F_CAT6 211 -#define F_D_CAT6 212 - -#define F_DATAINI 301 -//#define F_DATAFIN 302 - -#define F_ELENCO 401 -#define F_PAGINE 402 diff --git a/at/at3500a.h b/at/at3500a.h deleted file mode 100755 index 95d6d98b7..000000000 --- a/at/at3500a.h +++ /dev/null @@ -1,42 +0,0 @@ -// Scadenze di donazione -// definizione campi per maschera di selezione - -#define F_SEZINI 101 -#define F_D_SEZINI 102 -#define F_SOTINI 103 -#define F_D_SOTINI 104 -#define F_SEZFIN 105 -#define F_D_SEZFIN 106 -#define F_SOTFIN 107 -#define F_D_SOTFIN 108 - -#define F_CAT1 201 -#define F_D_CAT1 202 -#define F_CAT2 203 -#define F_D_CAT2 204 -#define F_CAT3 205 -#define F_D_CAT3 206 -#define F_CAT4 207 -#define F_D_CAT4 208 -#define F_CAT5 209 -#define F_D_CAT5 210 -#define F_CAT6 211 -#define F_D_CAT6 212 - -#define F_PROCDON1 301 -//#define F_PROCDON2 302 -#define F_DATAINI 303 -#define F_DATAFIN 304 -#define F_USOGIORNO 305 -#define F_GIORNO 306 -#define F_USOMODO 307 -#define F_MODO 308 -#define F_DATAULTID 309 -#define F_AB01 310 -#define F_AB02 311 -#define F_AB03 312 -#define F_RHANTID 313 - -#define F_ELENCO 401 -#define F_ETICHETTE 402 -#define F_CARTOLINE 403 diff --git a/at/at3500a.uml b/at/at3500a.uml deleted file mode 100755 index 606846c38..000000000 --- a/at/at3500a.uml +++ /dev/null @@ -1,364 +0,0 @@ -#include "at3500a.h" -#include "lf.h" -PAGE "Definizione Stampe" -1 -1 78 20 - -GROUPBOX DLG_NULL 77 4 -BEGIN - PROMPT 1 0 "Scelta sezioni/sottogruppi" -END - -STRING F_SEZINI 2 -BEGIN - PROMPT 2 1 "Da " - FLAGS "U" - USE LF_SEZIONI - INPUT CODSEZ F_SEZINI - INPUT CODSOT F_SOTINI - DISPLAY "Cod.sez" CODSEZ - DISPLAY "Cod.sot." CODSOT - DISPLAY "Sezione@25" DENSEZ - DISPLAY "Sottogruppo@25" DENSOT - OUTPUT F_SEZINI CODSEZ - OUTPUT F_D_SEZINI DENSEZ - OUTPUT F_SOTINI CODSOT - OUTPUT F_D_SOTINI DENSOT - CHECKTYPE SEARCH - HELP "Codice sezione da cui partire" -END - -STRING F_D_SEZINI 25 -BEGIN - PROMPT 11 1 "" - FLAGS "U" - USE LF_SEZIONI KEY 2 - INPUT DENSEZ F_D_SEZINI - DISPLAY "Sezione@25" DENSEZ - DISPLAY "Sottogruppo@25" DENSOT - DISPLAY "Cod.sez" CODSEZ - DISPLAY "Cod.sot." CODSOT - COPY OUTPUT F_SEZINI - CHECKTYPE NORMAL - HELP "Sezione da cui partire" -END - -STRING F_SOTINI 2 -BEGIN - PROMPT 2 2 " " - COPY ALL F_SEZINI - CHECKTYPE SEARCH - HELP "Codice sottogruppo da cui partire" -END - -STRING F_D_SOTINI 25 -BEGIN - PROMPT 11 2 "" - FLAGS "U" - COPY USE F_D_SEZINI - INPUT DENSEZ F_D_SEZINI - INPUT DENSOT F_D_SOTINI - COPY DISPLAY F_D_SEZINI - COPY OUTPUT F_D_SEZINI - CHECKTYPE NORMAL - HELP "Sottogruppo da cui partire" -END - -STRING F_SEZFIN 2 -BEGIN - PROMPT 41 1 "A " - FLAGS "U" - USE LF_SEZIONI - INPUT CODSEZ F_SEZFIN - INPUT CODSOT F_SOTFIN - DISPLAY "Cod.sez" CODSEZ - DISPLAY "Cod.sot." CODSOT - DISPLAY "Sezione@25" DENSEZ - DISPLAY "Sottogruppo@25" DENSOT - OUTPUT F_SEZFIN CODSEZ - OUTPUT F_D_SEZFIN DENSEZ - OUTPUT F_SOTFIN CODSOT - OUTPUT F_D_SOTFIN DENSOT - CHECKTYPE SEARCH - HELP "Codice sezione finale" -END - -STRING F_D_SEZFIN 25 -BEGIN - PROMPT 49 1 "" - FLAGS "U" - USE LF_SEZIONI KEY 2 - INPUT DENSEZ F_D_SEZFIN - DISPLAY "Sezione@25" DENSEZ - DISPLAY "Sottogruppo@25" DENSOT - DISPLAY "Cod.sez" CODSEZ - DISPLAY "Cod.sot." CODSOT - COPY OUTPUT F_SEZFIN - CHECKTYPE NORMAL - HELP "Sezione finale" -END - -STRING F_SOTFIN 2 -BEGIN - PROMPT 41 2 " " - COPY ALL F_SEZFIN - CHECKTYPE SEARCH - HELP "Codice sottogruppo finale" -END - -STRING F_D_SOTFIN 25 -BEGIN - PROMPT 49 2 "" - FLAGS "U" - COPY USE F_D_SEZFIN - INPUT DENSEZ F_D_SEZFIN - INPUT DENSOT F_D_SOTFIN - COPY DISPLAY F_D_SEZFIN - COPY OUTPUT F_D_SEZFIN - CHECKTYPE NORMAL - HELP "Sottogruppo finale" -END - -GROUPBOX DLG_NULL 77 5 -BEGIN - PROMPT 1 4 "Categorie" -END - - -STRING F_CAT1 2 -BEGIN - PROMPT 2 5 "" - FLAGS "U" - USE CTD - INPUT CODTAB F_CAT1 - DISPLAY "Codice" CODTAB - DISPLAY "Descrizione@30" S0 - OUTPUT F_CAT1 CODTAB - OUTPUT F_D_CAT1 S0 - CHECKTYPE NORMAL - WARNING "Codice non presente" - HELP "Categoria di appartenenza" -END - -STRING F_D_CAT1 30 -BEGIN - PROMPT 8 5 "" - FLAGS "D" -END - -STRING F_CAT2 2 -BEGIN - PROMPT 2 6 "" - FLAGS "U" - USE CTD - INPUT CODTAB F_CAT2 - COPY DISPLAY F_CAT1 - OUTPUT F_CAT2 CODTAB - OUTPUT F_D_CAT2 S0 - CHECKTYPE NORMAL - WARNING "Codice non presente" - HELP "Categoria di appartenenza" -END - -STRING F_D_CAT2 30 -BEGIN - PROMPT 8 6 "" - FLAGS "D" -END - -STRING F_CAT3 2 -BEGIN - PROMPT 2 7 "" - FLAGS "U" - USE CTD - INPUT CODTAB F_CAT3 - COPY DISPLAY F_CAT1 - OUTPUT F_CAT3 CODTAB - OUTPUT F_D_CAT3 S0 - CHECKTYPE NORMAL - WARNING "Codice non presente" - HELP "Categoria di appartenenza" -END - -STRING F_D_CAT3 30 -BEGIN - PROMPT 8 7 "" - FLAGS "D" -END - -STRING F_CAT4 2 -BEGIN - PROMPT 40 5 "" - FLAGS "U" - USE CTD - INPUT CODTAB F_CAT4 - COPY DISPLAY F_CAT1 - OUTPUT F_CAT4 CODTAB - OUTPUT F_D_CAT4 S0 - CHECKTYPE NORMAL - WARNING "Codice non presente" - HELP "Categoria di appartenenza" -END - -STRING F_D_CAT4 30 -BEGIN - PROMPT 46 5 "" - FLAGS "D" -END - -STRING F_CAT5 2 -BEGIN - PROMPT 40 6 "" - FLAGS "U" - USE CTD - INPUT CODTAB F_CAT5 - COPY DISPLAY F_CAT1 - OUTPUT F_CAT5 CODTAB - OUTPUT F_D_CAT5 S0 - CHECKTYPE NORMAL - WARNING "Codice non presente" - HELP "Categoria di appartenenza" -END - -STRING F_D_CAT5 30 -BEGIN - PROMPT 46 6 "" - FLAGS "D" -END - -STRING F_CAT6 2 -BEGIN - PROMPT 40 7 "" - FLAGS "U" - USE CTD - INPUT CODTAB F_CAT6 - COPY DISPLAY F_CAT1 - OUTPUT F_CAT6 CODTAB - OUTPUT F_D_CAT6 S0 - CHECKTYPE NORMAL - WARNING "Codice non presente" - HELP "Categoria di appartenenza" -END - -STRING F_D_CAT6 30 -BEGIN - PROMPT 46 7 "" - FLAGS "D" -END - -GROUPBOX DLG_NULL 50 8 -BEGIN - PROMPT 1 9 "Opzioni di convocazione" -END - -LISTBOX F_PROCDON1 17 -BEGIN - PROMPT 2 10 "Procedura di donazione " - #include "procdon.h" -END - -//LISTBOX F_PROCDON2 17 -//BEGIN -// PROMPT 50 10 "" -// #include "procdon.h" -//END - -DATE F_DATAINI -BEGIN - PROMPT 2 11 "Data prossima don. da " -END - -DATE F_DATAFIN -BEGIN - PROMPT 37 11 "a " -END - -BOOLEAN F_USOGIORNO -BEGIN - PROMPT 2 13 "Uso giorno preferito " - MESSAGE TRUE ENABLE,F_GIORNO - MESSAGE FALSE RESET,F_GIORNO|DISABLE,F_GIORNO -END - -LISTBOX F_GIORNO 13 -BEGIN - PROMPT 30 13 "" - #include "giorni.h" -END - -BOOLEAN F_USOMODO -BEGIN - PROMPT 2 14 "Uso modalità preferita " - MESSAGE TRUE ENABLE,F_MODO - MESSAGE FALSE RESET,F_MODO|DISABLE,F_MODO -END - -LISTBOX F_MODO 13 -BEGIN - PROMPT 30 14 "" - #include "modalita.h" -END - -DATE F_DATAULTID -BEGIN - PROMPT 2 15 "Blocco per id. precedente a " -END - -GROUPBOX DLG_NULL 25 8 -BEGIN - PROMPT 53 9 "Tipizzazione" -END - -LISTBOX F_AB01 5 -BEGIN - PROMPT 54 10 "Gruppi AB0 " - #include "gruppo.h" -END - -LISTBOX F_AB02 5 -BEGIN - PROMPT 54 11 " " - #include "gruppo.h" -END - -LISTBOX F_AB03 5 -BEGIN - PROMPT 54 12 " " - #include "gruppo.h" -END - -LISTBOX F_RHANTID 5 -BEGIN - PROMPT 54 13 "Rh/AntiD " - #include "rh.h" -END - - -GROUPBOX DLG_NULL 77 4 -BEGIN - PROMPT 1 17 "Stampa" -END - -BUTTON F_ELENCO 9 2 -BEGIN - PROMPT -14 18 "Elenco" - MESSAGE EXIT,F_ELENCO -END - -BUTTON F_ETICHETTE 9 2 -BEGIN - PROMPT -24 18 "Etichette" - MESSAGE EXIT,F_ETICHETTE -END - -BUTTON F_CARTOLINE 9 2 -BEGIN - PROMPT -34 18 "Cartoline" - MESSAGE EXIT,F_CARTOLINE -END - -BUTTON DLG_QUIT 9 2 -BEGIN - PROMPT -44 18 "" -END - -ENDPAGE -ENDMASK diff --git a/at/at4.cpp b/at/at4.cpp index 82bd6a7e5..e819a0f00 100755 --- a/at/at4.cpp +++ b/at/at4.cpp @@ -4,7 +4,7 @@ #include "at4.h" -#define usage "Error - usage : %s -{0|1|2}" +#define usage "Error - usage : %s -{0|1|2|3}" int main(int argc,char** argv) @@ -20,6 +20,8 @@ int main(int argc,char** argv) rt = at4200(argc,argv) ; break; case 2: rt = at4300(argc,argv) ; break; + case 3: + rt = at4400(argc,argv) ; break; default: error_box(usage, argv[0]) ; break; } diff --git a/at/at4.url b/at/at4.url index d2aa4ced7..45b548d9f 100755 --- a/at/at4.url +++ b/at/at4.url @@ -23,3 +23,9 @@ MENUBAR MENU_BAR(2) MENU MENU_BAR(2) SUBMENU MENU_FILE "~File" +/* at4 -3 stampa convocazioni bologna */ +MENUBAR MENU_BAR(3) + +MENU MENU_BAR(3) + SUBMENU MENU_FILE "~File" + diff --git a/at/at4100.cpp b/at/at4100.cpp index 41d01c008..b97a73cd7 100755 --- a/at/at4100.cpp +++ b/at/at4100.cpp @@ -283,23 +283,18 @@ bool TScadenze_application::filter_func_scadenze(const TRelation* rel) bool TScadenze_application::preprocess_page(int file, int counter) { - // contatore soggetti stampati - // per ora non c'è - switch (_tipo_stampa) { case elenco: { - const TString16 codsez = current_cursor()->curr().get(SOG_CODSEZ); - const TString16 codsot = current_cursor()->curr().get(SOG_CODSOT); - TString80 nome = current_cursor()->curr().get(SOG_COGNOME); + TRectype& recsog = current_cursor()->curr(); + const TString16 codsez = recsog.get(SOG_CODSEZ); + const TString16 codsot = recsog.get(SOG_CODSOT); + TString80 nome = recsog.get(SOG_COGNOME); nome << " "; - nome << current_cursor()->curr().get(SOG_NOME); + nome << recsog.get(SOG_NOME); _cognome_nome = nome; - // salto pagina se cambio sezione - //const TString16 codsez = current_cursor()->curr().get(SOG_CODSEZ); - //const TString16 codsot = current_cursor()->curr().get(SOG_CODSOT); if ((_codsez!=codsez)||(_codsot!=codsot)) { if (_codsez != "**") diff --git a/at/at4200.cpp b/at/at4200.cpp index 4acfe24cb..e74b476df 100755 --- a/at/at4200.cpp +++ b/at/at4200.cpp @@ -112,16 +112,16 @@ void TUrgenze_application::set_page(int file, int cnt) break; case elenco: { - set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"######")); - set_row(1,"@7g@S", FLD(LF_SOGGETTI,SOG_CATDON)); - set_row(1,"@10g#a", &_cognome_nome); - set_row(1,"@36g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); - set_row(1,"@47g@S", FLD(LF_SOGGETTI,SOG_DOM_INDIR)); - set_row(1,"@98g@S", FLD(LF_SOGGETTI,SOG_TELABI)); - set_row(1,"@114g@S", FLD(LF_SOGGETTI,SOG_TELLAV)); - set_row(2,"@47g#a", &_dencom); - set_row(2,"@114g@S", FLD(LF_SOGGETTI,SOG_TELALT)); - set_row(2,"@36g@ld", FLD(LF_SOGGETTI,SOG_DATAULTDON)); + set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########")); + set_row(1,"@9g@S", FLD(LF_SOGGETTI,SOG_CATDON)); + set_row(1,"@12g#a", &_cognome_nome); + set_row(1,"@38g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); + set_row(1,"@49g@S", FLD(LF_SOGGETTI,SOG_DOM_INDIR)); + set_row(1,"@100g@S", FLD(LF_SOGGETTI,SOG_TELABI)); + set_row(1,"@116g@S", FLD(LF_SOGGETTI,SOG_TELLAV)); + set_row(2,"@49g#a", &_dencom); + set_row(2,"@116g@S", FLD(LF_SOGGETTI,SOG_TELALT)); + set_row(2,"@38g@ld", FLD(LF_SOGGETTI,SOG_DATAULTDON)); } break; } @@ -159,13 +159,12 @@ bool TUrgenze_application::filter_func_urgenze(const TRelation* rel) bool TUrgenze_application::preprocess_page(int file, int counter) { - // contatore soggetti stampati - // per ora non c'è if (_tipo_stampa == elenco) { - TString80 nome = current_cursor()->curr().get(SOG_COGNOME); + TRectype& recsog = current_cursor()->curr(); + TString80 nome = recsog.get(SOG_COGNOME); nome << " "; - nome << current_cursor()->curr().get(SOG_NOME); + nome << recsog.get(SOG_NOME); _cognome_nome = nome; TString256 localita = ""; localita << current_cursor()->curr(-ALIAS_LCP).get("S6"); @@ -183,10 +182,9 @@ bool TUrgenze_application::preprocess_page(int file, int counter) localita << current_cursor()->curr(LF_COMUNI).get(COM_DENCOM); localita.trim(); _dencom = localita; - // salto pagina se cambio sezione - const TString16 codsez = current_cursor()->curr().get(SOG_CODSEZ); - const TString16 codsot = current_cursor()->curr().get(SOG_CODSOT); + const TString16 codsez = recsog.get(SOG_CODSEZ); + const TString16 codsot = recsog.get(SOG_CODSOT); if ((_codsez!=codsez)||(_codsot!=codsot)) { if (_codsez != "**") @@ -310,9 +308,9 @@ void TUrgenze_application::crea_intestazione() sep.fill('-'); set_header(3, (const char *) sep); - set_header(4,"@0gCod.@7gC.@10gCognome e nome@36gNato il@47gIndirizzo@98gTelefono abit.@114gTelefono lavoro"); - set_header(5,"@47gCAP/Località/Comune/Prov.@114gTelefono altro"); - set_header(6,"@0g------@7g--@10g-------------------------@36g----------@47g--------------------------------------------------@98g---------------@114g---------------"); + set_header(4,"@0gCodice@9gC.@12gCognome e nome@38gNato il@49gIndirizzo@100gTelefono abit.@116gTelefono lavoro"); + set_header(5,"@49gCAP/Località/Comune/Prov.@116gTelefono altro"); + set_header(6,"@0g--------@9g--@12g-------------------------@38g----------@49g--------------------------------------------------@100g---------------@116g---------------"); } } diff --git a/at/at4300.cpp b/at/at4300.cpp index ad7d2c6af..dec9c7b84 100755 --- a/at/at4300.cpp +++ b/at/at4300.cpp @@ -153,14 +153,14 @@ bool TConv_application::filter_func_conv (const TRelation* rel) const TDate dataprossi = sog.get_date(SOG_DATAPROSSI); const char stato = rel->curr(-ALIAS_TABTCS).get_char("S6"); const bool dimesso = rel->curr(-ALIAS_TABCTD).get_char("B0"); - //TDate dataultconv = sog.curr().get_date(SOG_DATAULTCONV); + TDate dataconv = sog.curr().get_date(SOG_DATACONV); if (dataprossi.ok()) { - // intervallo tra data convocazione e data calcolata per pross. si + // intervallo tra data convocazione e data pross. si long intconvsi = app()._dataconv - dataprossi; // intervallo tra data convocazione e data ultima convocazione - //long intultconvsi = app()._data - dataultconv; - if ((intconvsi >= 0) && (intconvsi < app()._intmax) && ((stato == STATO_IDONEO) || (stato == STATO_FINESO)) && (dimesso != 'X')) + long intultconvsi = app()._dataconv - dataconv; + if ((intconvsi >= 0) && (intconvsi < app()._intmax) && (intultconvsi > app()._intmin) && ((stato == STATO_IDONEO) || (stato == STATO_FINESO)) && (dimesso != 'X')) return TRUE; else return FALSE; @@ -177,7 +177,16 @@ bool TConv_application::preprocess_page(int file, int counter) _intesta = TRUE; header_sezione(); } - // contatore soggetti stampati + if (_tipo_stampa == etichette || _tipo_stampa == cartoline) + { + + TRectype& recsog = current_cursor()->curr(); + recsog.put(SOG_DATACONV,app()._dataconv); + int numconv = recsog.get_int(SOG_NUMCONV); + numconv++; + recsog.put(SOG_NUMCONV, numconv); + current_cursor()->file().rewrite(); + } return TRUE; } diff --git a/at/at4300a.uml b/at/at4300a.uml index 504ebf306..d66478515 100755 --- a/at/at4300a.uml +++ b/at/at4300a.uml @@ -73,8 +73,8 @@ BEGIN OUTPUT F_C_DENSEZ DENSEZ OUTPUT F_C_CODSOT CODSOT OUTPUT F_C_DENSOT DENSOT - OUTPUT F_C_INTMIN INTMIN - OUTPUT F_C_INTMAX INTMAX + //OUTPUT F_C_INTMIN INTMIN + //OUTPUT F_C_INTMAX INTMAX OUTPUT F_C_CONV TIPOCONV CHECKTYPE SEARCH HELP "Codice sezione di appartenenza" @@ -83,7 +83,7 @@ END STRING F_C_DENSEZ 25 BEGIN PROMPT 16 1 "" - FLAGS "U" + //FLAGS "U" USE LF_SEZIONI KEY 2 INPUT DENSEZ F_C_DENSEZ INPUT DENSOT F_C_DENSOT @@ -92,7 +92,7 @@ BEGIN DISPLAY "Cod.sez" CODSEZ DISPLAY "Cod.sot." CODSOT COPY OUTPUT F_C_CODSEZ - CHECKTYPE SEARCH + CHECKTYPE NORMAL HELP "Denominazione sezione di appartenenza" END @@ -100,17 +100,18 @@ END STRING F_C_CODSOT 2 BEGIN PROMPT 2 2 "Sottog. " + FLAGS "U" COPY ALL F_C_CODSEZ - CHECKTYPE REQUIRED + CHECKTYPE NORMAL HELP "Codice sottogruppo di appartenenza" END STRING F_C_DENSOT 25 BEGIN PROMPT 16 2 "" - FLAGS "U" + //FLAGS "U" COPY ALL F_C_DENSEZ - CHECKTYPE SEARCH + CHECKTYPE NORMAL HELP "Sottogruppo di appartenenza" END diff --git a/at/at4400.cpp b/at/at4400.cpp new file mode 100755 index 000000000..41e22b0eb --- /dev/null +++ b/at/at4400.cpp @@ -0,0 +1,431 @@ +#include +#include +#include +#include + +#include "lf.h" +#include "soggetti.h" +#include "sezioni.h" +#include "convoc.h" +#include "rconvoc.h" + +#include "at4.h" +#include "at4400a.h" +#include "at4100b.h" +#include "at4100c.h" + +#define ALIAS_LCP 100 +#define ALIAS_TCS 200 + +enum ts { undefined = 0, elenco = 1, etichette = 2, cartoline = 3 }; + +// definizione form per etichette +class TStConvoc_form : public TForm +{ +public: + + virtual TCursor* cursor() const; + virtual TRelation* relation() const; + TPrint_section& get_body() { return section('B'); } ; + TStConvoc_form(): TForm() {}; + TStConvoc_form(const char* form, const char * code = "", int editlevel = 0, const char* desc = "") + : TForm(form,code,editlevel,desc) {}; + virtual ~TStConvoc_form() {}; +}; + +class TStConvoc_app : public TPrintapp +{ + TRelation* _rel; + TMask* _msk; + TStConvoc_form* _form_eti; + TStConvoc_form* _form_car; + + int _cur1; + TParagraph_string _cognome_nome; + TDate _data_stampa; + TDate _dataini, _datafin; + bool _aggiorna; + TString16 _punto,_tipo, _sezione, _sottog, _ordina; + TString16 _codsez, _codsot; + TString16 _orario, _datacart; + TString80 _invitoper, _data, _presso1, _presso2, _presso3, _presso4; + TString80 _note, _intest1, _intest2, _intest3, _intest4; + bool _usasez; + ts _tipo_stampa; + + //static bool filter_func_stconvoc(const TRelation* rel); + +protected: + virtual bool user_create(); + virtual bool user_destroy(); + virtual bool set_print(int m); + virtual void set_page(int file, int cnt); + virtual bool preprocess_page(int file, int counter); + ts dati_cartoline(); + +public: + void crea_intestazione(); + void header_sezione(const TString16 codsez, const TString16 codsot); + void dati_sezione(const TString16 codsez, const TString16 codsot); + TMask& app_mask() { return *_msk; } + TStConvoc_app() : _data_stampa(TODAY), _cognome_nome("",25) {} +}; + +HIDDEN inline TStConvoc_app& app() { return (TStConvoc_app&) main_app(); } + +TCursor* TStConvoc_form::cursor() const { return app().current_cursor(); } + +TRelation* TStConvoc_form::relation() const { return cursor()->relation(); } + +ts TStConvoc_app::dati_cartoline() +{ + TMask msk("at4100b"); + if (msk.run() == K_ENTER) + { + _invitoper = msk.get(F_INVITOPER); + _data = msk.get(F_DATA); + _presso1 = msk.get(F_PRESSO1); + _presso2 = msk.get(F_PRESSO2); + _presso3 = msk.get(F_PRESSO3); + _presso4 = msk.get(F_PRESSO4); + _datacart = msk.get(F_DATACART); + _orario = msk.get(F_ORARIO); + _note = msk.get(F_NOTE); + _usasez = msk.get_bool(F_USASEZ); + return cartoline; + } + else + return undefined; +} + +void TStConvoc_app::set_page(int file, int cnt) +{ + // costruzione etichette + switch (_tipo_stampa) + { + case etichette: + { + TPrint_section& corpo = _form_eti->get_body(); + corpo.update(); + for (int i = 0; i < corpo.height(); i++) + { + TPrintrow& riga = corpo.row(i); + set_row(i+1,riga); + } + force_setpage(TRUE); // serve perchè alla prossima etichetta rifaccia la setpage + // altrimenti stampa sempre la stessa etichetta + } + break; + case cartoline: + { + TPrint_section& corpo = _form_car->get_body(); + const TString16 codsez = current_cursor()->curr().get(SOG_CODSEZ); + const TString16 codsot = current_cursor()->curr().get(SOG_CODSOT); + if ((_codsez!=codsez)||(_codsot!=codsot)) + { + _codsez = codsez; + _codsot = codsot; + dati_sezione(codsez, codsot); + corpo.reset(); + TForm_item& intest1 = corpo.find_field(CAR_INTEST1); + intest1.set(_intest1); + TForm_item& intest2 = corpo.find_field(CAR_INTEST2); + intest2.set(_intest2); + TForm_item& intest3 = corpo.find_field(CAR_INTEST3); + intest3.set(_intest3); + TForm_item& intest4 = corpo.find_field(CAR_INTEST4); + intest4.set(_intest4); + TForm_item& invito = corpo.find_field(CAR_INVITOPER); + invito.set(_invitoper); + TForm_item& data = corpo.find_field(CAR_DATA); + data.set(_data); + TForm_item& presso1 = corpo.find_field(CAR_PRESSO1); + presso1.set(_presso1); + TForm_item& presso2 = corpo.find_field(CAR_PRESSO2); + presso2.set(_presso2); + TForm_item& presso3 = corpo.find_field(CAR_PRESSO3); + presso3.set(_presso3); + TForm_item& presso4 = corpo.find_field(CAR_PRESSO4); + presso4.set(_presso4); + TForm_item& orario = corpo.find_field(CAR_ORARIO); + orario.set(_orario); + TForm_item& datacart = corpo.find_field(CAR_DATACART); + datacart.set(_datacart); + TForm_item& note = corpo.find_field(CAR_NOTE); + note.set(_note); + } + corpo.update(); + for (int i = 0; i < corpo.height(); i++) + { + TPrintrow& riga = corpo.row(i); + set_row(i+1,riga); + } + force_setpage(TRUE); // serve perchè alla prossima etichetta rifaccia la setpage + // altrimenti stampa sempre la stessa etichetta + } + break; + case elenco: + { + set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"#########")); + set_row(1,"@10g@S", FLD(LF_SOGGETTI,SOG_CATDON)); + set_row(1,"@13g@S", FLD(LF_SOGGETTI,SOG_COGNOME)); + set_row(1,"@39g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); + set_row(1,"@50g@ld", FLD(LF_SOGGETTI,SOG_DATAPROSSI)); + set_row(1,"@61g@ld", FLD(LF_SOGGETTI,SOG_DATAPROSAF)); + set_row(1,"@72g@ld", FLD(LF_SOGGETTI,SOG_DATAULTDON)); + set_row(1,"@83g@ld", FLD(LF_SOGGETTI,SOG_DATAULTID)); + set_row(1,"@94g@S", FLD(LF_SOGGETTI,SOG_IDON1)); + set_row(1,"@97g@S", FLD(LF_SOGGETTI,SOG_IDON2)); + set_row(1,"@100g@S", FLD(LF_SOGGETTI,SOG_GRUPPOAB0)); + set_row(1,"@105g@ld", FLD(LF_RCONVOC,RCV_DATACONV)); + + set_row(2,"@13g@S", FLD(LF_SOGGETTI,SOG_NOME)); + set_row(2,"@53g@pn", FLD(LF_SOGGETTI,SOG_INTSI,"###")); + set_row(2,"@64g@pn", FLD(LF_SOGGETTI,SOG_INTAF,"###")); + set_row(2,"@76g@S", FLD(LF_SOGGETTI,SOG_TIPOULTDON)); + set_row(2,"@87g@S", FLD(LF_SOGGETTI,SOG_TIPOULTID)); + set_row(2,"@94g@S", FLD(LF_SOGGETTI,SOG_IDON3)); + set_row(2,"@97g@S", FLD(LF_SOGGETTI,SOG_IDON4)); + set_row(2,"@100g@S", FLD(LF_SOGGETTI,SOG_RHANTID)); + set_row(2,"@105g@S", FLD(LF_RCONVOC,RCV_CHIAMATA)); + + set_row(3, ""); + } + break; + } +} + +bool TStConvoc_app::preprocess_page(int file, int counter) +{ + // contatore soggetti stampati + // per ora non c'è + + switch (_tipo_stampa) + { + case elenco: + { + TString80 nome = current_cursor()->curr(LF_SOGGETTI).get(SOG_COGNOME); + nome << " "; + nome << current_cursor()->curr(LF_SOGGETTI).get(SOG_NOME); + _cognome_nome = nome; + + // salto pagina se cambio sezione + const TString16 codsez = current_cursor()->curr(LF_SOGGETTI).get(SOG_CODSEZ); + const TString16 codsot = current_cursor()->curr(LF_SOGGETTI).get(SOG_CODSOT); + if ((_codsez!=codsez)||(_codsot!=codsot)) + { + if (_codsez != "**") + printer().formfeed(); + _codsez = codsez; + _codsot = codsot; + header_sezione(codsez, codsot); + } + } + break; + } + return TRUE; +} + +void TStConvoc_app::header_sezione(const TString16 codsez, const TString16 codsot) +{ + const TString80 densez = current_cursor()->curr(LF_SEZIONI).get(SEZ_DENSEZ); + const TString80 densot = current_cursor()->curr(LF_SEZIONI).get(SEZ_DENSOT); + TString intestazione(132); + intestazione = "Sezione: "; + intestazione << codsez; + intestazione << "/"; + intestazione << codsot; + intestazione << " "; + intestazione << densez; + if ((densot.ok())&& (densot.not_empty())) + { + intestazione << "/"; + intestazione << densot; + } + intestazione.center_just(); + set_header(1,"@0g%s", (const char*) intestazione); + return; +} + +void TStConvoc_app::dati_sezione(const TString16 codsez, const TString16 codsot) +{ + _intest1 = current_cursor()->curr(LF_SEZIONI).get(SEZ_INTESTAZ1); + _intest2 = current_cursor()->curr(LF_SEZIONI).get(SEZ_INTESTAZ2); + _intest3 = current_cursor()->curr(LF_SEZIONI).get(SEZ_INTESTAZ3); + _intest4 = current_cursor()->curr(LF_SEZIONI).get(SEZ_INTESTAZ4); + if (_usasez) + { + if (_presso1.blank()) + { + _presso1 = current_cursor()->curr(LF_SEZIONI).get(SEZ_CONVSEDE1); + _presso2 = current_cursor()->curr(LF_SEZIONI).get(SEZ_CONVSEDE2); + _presso3 = current_cursor()->curr(LF_SEZIONI).get(SEZ_CONVSEDE3); + _presso4 = current_cursor()->curr(LF_SEZIONI).get(SEZ_CONVSEDE4); + } + if (_orario.blank()) + _orario = current_cursor()->curr(LF_SEZIONI).get(SEZ_CONVORA); + if (_note.blank()) + _note = current_cursor()->curr(LF_SEZIONI).get(SEZ_CONVNOTE); + } + return; +} + +bool TStConvoc_app::set_print(int m) +{ + _tipo_stampa = undefined; + KEY tasto; + tasto = _msk->run(); + switch (tasto) + { + case F_ELENCO: + _tipo_stampa = elenco; + break; + case F_ETICHETTE: + _tipo_stampa = etichette; + break; + case F_CARTOLINE: + _tipo_stampa = dati_cartoline(); + break; + } + if (_tipo_stampa != undefined) + { + _dataini = _msk->get(F_DATAINI); + _datafin = _msk->get(F_DATAFIN); + _punto = _msk->get(F_PUNTO); + _tipo = _msk->get(F_TIPO); + _codsez = _msk->get(F_CODSEZ); + _codsot = _msk->get(F_CODSOT); + _aggiorna = _msk->get_bool(F_AGGIORNA); + _ordina = _msk->get(F_ORDINA); + TString256 chiave = ""; + switch (_ordina[0]) + { + case 'A': + chiave = "90->CODSEZ|90->CODSOT|UPPER(90->COGNOME)|UPPER(90->NOME)|116->DATACONV"; + break; + case 'C': + chiave = "90->CODSEZ|90->CODSOT|90->DOM_CAP|UPPER(90->COGNOME)|UPPER(90->NOME)|116->DATACONV"; + break; + } + TString80 filtro = ""; + // filtro per punto di raccolta + if (_punto.not_empty()) + { + if (filtro.not_empty()) + filtro << " && "; + filtro << format("(115->PUNTO == \"%s\")",(const char*)_punto); + } + // filtro per tipo + if (_tipo.not_empty()) + { + if (filtro.not_empty()) + filtro << " && "; + filtro << format("(115->TIPO == \"%s\")",(const char*)_tipo); + } + // filtro per sezione/sottogruppo + if (_sezione.not_empty()) + { + if (filtro.not_empty()) + filtro << " && "; + filtro << format("(90->CODSEZ == \"%s\")",(const char*)_sezione); + if (_sottog.not_empty()) + { + if (filtro.not_empty()) + filtro << " && "; + filtro << format("(90->CODSOT == \"%s\")",(const char*)_sottog); + } + } + // filtro per data + TRectype da(LF_RCONVOC); + TRectype a (LF_RCONVOC); + if (_dataini.ok()) + da.put(RCV_DATACONV, _dataini); + if (_datafin.ok()) + a.put(RCV_DATACONV, _datafin); + _cur1 = add_cursor(new TSorted_cursor(_rel, (const char*) chiave,"", 2, &da, &a)); + current_cursor()->setfilter((const char*) filtro, TRUE); + //current_cursor()->set_filterfunction(filter_func_stconvoc); + _codsez = "**"; + _codsot = "**"; + reset_files(); + add_file(LF_RCONVOC); + reset_print(); + crea_intestazione(); + return TRUE; + } + else + return FALSE; +} + +void TStConvoc_app::crea_intestazione() +{ + reset_header(); + + if (_tipo_stampa == elenco) + { + TString sep(132); + sep = "STAMPA CONVOCATI"; + if (_tipo.not_empty()) + { + sep << " per "; + sep << _tipo; + } + sep << " dal "; + sep << _dataini.string(); + sep << " al "; + sep << _datafin.string(); + sep << " - PUNTO "; + sep << _punto; + sep.center_just(); + set_header(2, "@0g%s", (const char*) sep); + TString16 data_stampa = _data_stampa.string(); + set_header(2,"@0g%10s", (const char*) data_stampa); + + sep = ""; + sep << "Pag. @#"; + set_header(2, "@120g%s", (const char*) sep); + + sep = ""; + sep.fill('-'); + set_header(3, (const char *) sep); + + set_header(5,"@0gCod.@10gC.@13gCognome@39gNato il@50gData pr.SI@61gData pr.AF@72gData/Tipo@83gData/Tipo@94gIdon.@100gAB0@105gData conv."); + set_header(6,"@13gNome@50gInterv. SI@61gInterv. AF@72gult. don.@83gult. idon.@94gper@100gRh@105gTipo conv."); + set_header(7,"@0g---------@10g--@13g-------------------------@39g----------@50g----------@61g----------@72g----------@83g----------@94g-----@100g----@105g----------"); + } +} + +bool TStConvoc_app::user_create() +{ + _rel = new TRelation(LF_RCONVOC); + _rel->add(LF_SOGGETTI, "CODICE==CODICE"); + _rel->add(LF_CONVOC, "NUMERO==NUMERO"); + _rel->add("LCP", "CODTAB==DOM_CODLOC",1,LF_SOGGETTI,ALIAS_LCP); + _rel->add(LF_COMUNI, "COM==DOM_CODCOM",1,LF_SOGGETTI); + // per stampare la denominazione della sezione nell'intestazione + _rel->add(LF_SEZIONI, "CODSEZ==CODSEZ|CODSOT==CODSOT",1,LF_SOGGETTI); + _msk = new TMask("at4400a"); + _form_eti = new TStConvoc_form("AT_ETSOG"); + _form_car = new TStConvoc_form("AT_ETCAR"); + + return TRUE; +} + +bool TStConvoc_app::user_destroy() +{ + delete _msk; + delete _rel; + delete _form_eti; + delete _form_car; + return TRUE; +} + +int at4400(int argc, char* argv[]) +{ + + TStConvoc_app a; + + a.run(argc, argv, "Stampa convocazioni Bologna"); + + return 0; +} diff --git a/at/at4400a.h b/at/at4400a.h new file mode 100755 index 000000000..e746758a7 --- /dev/null +++ b/at/at4400a.h @@ -0,0 +1,19 @@ +// Stampa convocazioni per BOLOGNA +// definizione campi per maschera + +#define F_DATAINI 101 +#define F_DATAFIN 102 +#define F_PUNTO 103 +#define F_D_PUNTO 104 +#define F_TIPO 105 +#define F_D_TIPO 106 +#define F_CODSEZ 107 +#define F_DENSEZ 108 +#define F_CODSOT 109 +#define F_DENSOT 110 +#define F_AGGIORNA 111 +#define F_ORDINA 112 + +#define F_ELENCO 151 +#define F_ETICHETTE 152 +#define F_CARTOLINE 153 diff --git a/at/at3600a.uml b/at/at4400a.uml similarity index 63% rename from at/at3600a.uml rename to at/at4400a.uml index 997b4ecdd..411f2d963 100755 --- a/at/at3600a.uml +++ b/at/at4400a.uml @@ -1,21 +1,25 @@ -#include "at3600a.h" +#include "at4400a.h" #include "lf.h" PAGE "Definizione Stampe" -1 -1 78 20 -GROUPBOX DLG_NULL 77 7 +GROUPBOX DLG_NULL 77 12 BEGIN - PROMPT 1 0 "Opzioni per la convocazione" + PROMPT 1 1 "Opzioni per la stampa convocazioni" END -DATE F_DATACONV +DATE F_DATAINI BEGIN - PROMPT 2 1 "Data convocazione " + PROMPT 2 2 "Data iniziale " END +DATE F_DATAFIN +BEGIN + PROMPT 2 3 "Data finale " +END STRING F_PUNTO 4 BEGIN - PROMPT 2 2 "Punto di raccolta " + PROMPT 2 4 "Punto raccolta " FLAGS "U" USE LDN INPUT CODTAB F_PUNTO @@ -23,42 +27,37 @@ BEGIN DISPLAY "Descrizione@40" S0 OUTPUT F_PUNTO CODTAB OUTPUT F_D_PUNTO S0 - CHECKTYPE REQUIRED - WARNING "Codice non presente" - HELP "Punto di raccolta per la convocazione" + CHECTYPE NORMAL END -STRING F_D_PUNTO 25 +STRING F_D_PUNTO 50 BEGIN - PROMPT 27 2 "" + PROMPT 25 4 "" FLAGS "D" END -STRING F_TIPODON 2 +STRING F_TIPO 2 BEGIN - PROMPT 2 3 "Tipo donazione " + PROMPT 2 5 "Tipo donazione " FLAGS "U" USE TDN - INPUT CODTAB F_D_TIPODON + INPUT CODTAB F_TIPO DISPLAY "Codice" CODTAB DISPLAY "Descrizione@40" S0 - OUTPUT F_TIPODON CODTAB - OUTPUT F_D_TIPODON S0 - CHECKTYPE REQUIRED - VALIDATE NOT_EMPTY_FUNC - WARNING "Codice non presente" - HELP "Tipo donazione" + OUTPUT F_TIPO CODTAB + OUTPUT F_D_TIPO S0 + CHECKTYPE NORMAL END -STRING F_D_TIPODON 25 +STRING F_D_TIPO 25 BEGIN - PROMPT 27 3 "" + PROMPT 23 5 "" FLAGS "D" END STRING F_CODSEZ 2 BEGIN - PROMPT 2 4 "Sezione " + PROMPT 2 6 "Sezione " FLAGS "U" USE LF_SEZIONI INPUT CODSEZ F_CODSEZ @@ -73,12 +72,12 @@ BEGIN OUTPUT F_DENSOT DENSOT CHECKTYPE SEARCH HELP "Codice sezione da convocare" - //ADD MASK at0700a + ADD MASK at0700a END STRING F_DENSEZ 25 BEGIN - PROMPT 27 4 "" + PROMPT 23 6 "" FLAGS "U" USE LF_SEZIONI KEY 2 INPUT DENSEZ F_DENSEZ @@ -89,22 +88,21 @@ BEGIN COPY OUTPUT F_CODSEZ CHECKTYPE NORMAL HELP "Denominazione sezione da convocare" - //ADD MASK at0700a + ADD MASK at0700a END STRING F_CODSOT 2 BEGIN - PROMPT 2 5 "Sottogruppo " - FIELD CODSOT + PROMPT 2 7 "Sottogruppo " COPY ALL F_CODSEZ CHECKTYPE NORMAL HELP "Codice sottogruppo da convocare" - //ADD MASK at0700a + ADD MASK at0700a END STRING F_DENSOT 25 BEGIN - PROMPT 27 5 "" + PROMPT 23 7 "" FLAGS "U" COPY USE F_DENSEZ INPUT DENSEZ F_DENSEZ @@ -113,35 +111,48 @@ BEGIN COPY OUTPUT F_DENSEZ CHECKTYPE NORMAL HELP "Sottogruppo da convocare" - //ADD MASK at0700a + ADD MASK at0700a +END + +BOOLEAN F_AGGIORNA +BEGIN + PROMPT 2 9 "Aggiorna campo convocazione stampata" +END + +LISTBOX F_ORDINA 12 +BEGIN + PROMPT 2 11 "Ordinamento " + FLAGS "U" + ITEM "A|Alfabetico" + ITEM "C|CAP" END GROUPBOX DLG_NULL 77 4 BEGIN - PROMPT 1 17 "Stampa" + PROMPT 1 15 "Stampa" END BUTTON F_ELENCO 9 2 BEGIN - PROMPT -14 18 "Elenco" + PROMPT -14 16 "Elenco" MESSAGE EXIT,F_ELENCO END BUTTON F_ETICHETTE 9 2 BEGIN - PROMPT -24 18 "Etichette" + PROMPT -24 16 "Etichette" MESSAGE EXIT,F_ETICHETTE END BUTTON F_CARTOLINE 9 2 BEGIN - PROMPT -34 18 "Cartoline" + PROMPT -34 16 "Cartoline" MESSAGE EXIT,F_CARTOLINE END BUTTON DLG_QUIT 9 2 BEGIN - PROMPT -44 18 "" + PROMPT -44 16 "" END ENDPAGE diff --git a/at/at6.cpp b/at/at6.cpp index e96e75425..24d9d6228 100755 --- a/at/at6.cpp +++ b/at/at6.cpp @@ -3,7 +3,7 @@ #include "at6.h" -#define usage "Error - usage : %s -[0,1]" +#define usage "Error - usage : %s -[0|1|2]" int main(int argc, char** argv) { @@ -16,7 +16,9 @@ int main(int argc, char** argv) rt = at6100(argc, argv); break; case 1: rt = at6200(argc, argv); break; -default: + case 2: + rt = at6300(argc, argv); break; + default: error_box(usage, argv[0]) ; rt = 1; break; } return rt; diff --git a/at/at6.h b/at/at6.h index 82f873e12..a57eec074 100755 --- a/at/at6.h +++ b/at/at6.h @@ -3,5 +3,6 @@ int at6100(int argc, char* argv[]); // stampa tabella medici int at6200(int argc, char* argv[]); // stampa tabella sezioni/sottogruppi +int at6300(int argc, char* argv[]); // stampa di controllo donazioni #endif // __AT6_H diff --git a/at/at6.url b/at/at6.url index 774092c96..e2445eafd 100755 --- a/at/at6.url +++ b/at/at6.url @@ -9,11 +9,14 @@ MENU TASK_MENUBAR SUBMENU MENU_FILE "~File" - /* at6 -1 stampa archivio sezioni */ MENUBAR MENU_BAR(1) MENU MENU_BAR(1) SUBMENU MENU_FILE "~File" +/* at6 -2 stampa di controllo donazioni */ +MENUBAR MENU_BAR(2) +MENU MENU_BAR(2) + SUBMENU MENU_FILE "~File" diff --git a/at/at6300.cpp b/at/at6300.cpp new file mode 100755 index 000000000..0104ba785 --- /dev/null +++ b/at/at6300.cpp @@ -0,0 +1,301 @@ +#include +#include +#include +#include + +#include "lf.h" +#include "donaz.h" +#include "soggetti.h" +#include "sezioni.h" + +#include "at6.h" +#include "at6300a.h" + +#define ALIAS_LDN 100 + +class TElencoDon_app : public TPrintapp +{ + TRelation* _rel; + TMask* _msk; + int _counter; + int _cur1; + TDate _dataold, _dataini, _datafin; + TString16 _tipodon, _luogodon, _luogoold, _sezold; + TString16 _sezini, _sotini, _tipostampa; + + TParagraph_string _cognome_nome; + +protected: + virtual bool user_create(); + virtual bool user_destroy(); + virtual bool set_print(int m); + virtual void set_page(int file, int cnt); + virtual bool preprocess_page(int file, int counter); + +public: + void crea_intestazione(); + void header_data(const TDate data, const TString16 luogo, const TString16 sezione); + TMask& app_mask() { return *_msk; } + TElencoDon_app() : _cognome_nome("",35) {} +}; + +HIDDEN inline TElencoDon_app& app() { return (TElencoDon_app&) main_app(); } + +void TElencoDon_app::set_page(int file, int cnt) +{ + set_row(1,"@0g#D", &_counter); + set_row(1,"@7g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"######")); + set_row(1,"@14g@S", FLD(LF_SOGGETTI,SOG_TESSAVIS)); + set_row(1,"@22g#a", &_cognome_nome); + set_row(1,"@58g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); + set_row(1,"@69g@S", FLD(LF_SOGGETTI,SOG_CODSEZ)); + set_row(1,"@72g@S", FLD(LF_SOGGETTI,SOG_CODSOT)); + set_row(1,"@75g@ld", FLD(LF_DONAZ,DON_DATADON)); + set_row(1,"@86g@S", FLD(LF_DONAZ,DON_TIPODON)); + set_row(1,"@92g@S", FLD(LF_DONAZ, DON_LUOGODON)); +} + +bool TElencoDon_app::preprocess_page(int file, int counter) +{ + // contatore soggetti stampati + // per ora non c'è + TString80 nome = current_cursor()->curr(LF_SOGGETTI).get(SOG_COGNOME); + nome << " "; + nome << current_cursor()->curr(LF_SOGGETTI).get(SOG_NOME); + _cognome_nome = nome; + + // salto pagina se cambio punto di rottura + switch (_tipostampa[0]) + { + case 'D': + { + const TDate datanew = current_cursor()->curr().get(DON_DATADON); + if (datanew != _dataold ) + { + if (_dataold.ok()) + printer().formfeed(); + _dataold = datanew; + header_data(datanew,"",""); + _counter = 0; + } + } + break; + case 'L': + { + const TString16 luogonew = current_cursor()->curr().get(DON_LUOGODON); + if (luogonew != _luogoold ) + { + if (_luogoold != "****") + printer().formfeed(); + _luogoold = luogonew; + header_data(NULLDATE,luogonew,""); + _counter = 0; + } + } + break; + case 'S': + { + TString16 seznew = current_cursor()->curr(LF_SOGGETTI).get(SOG_CODSEZ); + seznew << "/"; + seznew << current_cursor()->curr(LF_SOGGETTI).get(SOG_CODSOT); + if (seznew != _sezold ) + { + if (_sezold != "****") + printer().formfeed(); + _sezold = seznew; + header_data(NULLDATE,"",seznew); + _counter = 0; + } + } + break; + } + _counter++; + return TRUE; +} + +void TElencoDon_app::header_data(const TDate data, const TString16 luogo, const TString16 sezione) +{ + TString intestazione(132); + intestazione = "STAMPA DI CONTROLLO DONAZIONI "; + switch (_tipostampa[0]) + { + case 'D': + { + intestazione << "PER DATA "; + intestazione << data; + } + break; + case 'L': + { + intestazione << "PER LUOGO "; + intestazione << luogo; + } + break; + case 'S': + { + intestazione << "PER SEZIONE "; + intestazione << sezione; + } + break; + } + intestazione.center_just(); + set_header(1,"@0g%s", (const char*) intestazione); + intestazione = "Pag. @#"; + set_header(1, "@110g%s", (const char*) intestazione); + return; +} + +bool TElencoDon_app::set_print(int m) +{ + KEY tasto; + tasto = _msk->run(); + if (tasto == K_ENTER) + { + _sezini = _msk->get(F_SEZINI); + _sotini = _msk->get(F_SOTINI); + _dataini = _msk->get_date(F_DATAINI); + _datafin = _msk->get_date(F_DATAFIN); + _tipodon = _msk->get(F_TIPODON); + _luogodon = _msk->get(F_LUOGODON); + + _tipostampa = _msk->get(F_TIPOSTAMPA); + TString80 chiave = ""; + switch (_tipostampa[0]) + { + case 'D': + chiave = "92->DATADON|UPPER(90->COGNOME)|UPPER(90->NOME)"; + break; + case 'L': + chiave = "92->LUOGODON|92->DATADON|UPPER(90->COGNOME)|UPPER(90->NOME)"; + break; + case 'S': + chiave = "90->CODSEZ|90->CODSOT|92->DATADON|UPPER(90->COGNOME)|UPPER(90->NOME)"; + break; + } + TString80 filtro = ""; + // filtro per tipo donazione + if (_tipodon.not_empty()) + filtro = format("(TIPODON == \"%s\")",(const char*)_tipodon); + // filtro per luogo donazione + if (_luogodon.not_empty()) + { + if (filtro.empty()) + filtro = format("(LUOGODON == \"%s\")",(const char*)_luogodon); + else + { + filtro << " && "; + filtro << format("(LUOGODON == \"%s\")",(const char*)_luogodon); + } + } + // filtro per sezione/sottogruppo + if (_sezini.not_empty()) + { + if (filtro.empty()) + filtro = format("(90->CODSEZ == \"%s\")",(const char*)_sezini); + else + { + filtro << " && "; + filtro << format("(90->CODSEZ == \"%s\")",(const char*)_sezini); + } + if (_sotini.not_empty()) + { + if (filtro.empty()) + filtro = format("(90->CODSOT == \"%s\")",(const char*)_sotini); + else + { + filtro << " && "; + filtro << format("(90->CODSOT == \"%s\")",(const char*)_sotini); + } + } + } + // filtro per data + TRectype da(LF_DONAZ); + TRectype a (LF_DONAZ); + if (_dataini.ok()) + da.put(DON_DATADON, _dataini); + if (_datafin.ok()) + a.put(DON_DATADON, _datafin); + _cur1 = add_cursor(new TSorted_cursor(_rel, (const char*) chiave, "", 2, &da, &a)); + current_cursor()->setfilter((const char*) filtro, TRUE); + _counter = 0; + _dataold = NULLDATE; + _luogoold = "****"; + _sezold = "****"; + reset_files(); + add_file(LF_DONAZ); + reset_print(); + crea_intestazione(); + return TRUE; + } + else + return FALSE; +} + +void TElencoDon_app::crea_intestazione() +{ + reset_header(); + TString sep(132); + sep = "Selezioni della stampa: "; + if (_sezini.not_empty()) + { + sep << "Sez. "; + sep << _sezini; + if (_sotini.not_empty()) + { + sep << "/"; + sep << _sotini; + } + sep << "; "; + } + if (_dataini.ok()) + { + sep << "Dal "; + sep << _dataini.string(); + } + if (_datafin.ok()) + { + sep << " Al "; + sep << _datafin.string(); + } + if (_dataini.ok() || _datafin.ok()) + sep << "; "; + if (_tipodon.not_empty()) + { + sep << "Tipo "; + sep << _tipodon; + sep << "; "; + } + if (_luogodon.not_empty()) + { + sep << "Luogo "; + sep << _luogodon; + sep << "; "; + } + sep.center_just(); + set_header(2,"@0g%s", (const char*) sep); + set_header(3,"@0gProg.@7gCodice@14gTessera@22gCognome e nome@58gNato il@69gSe/So@75gData don.@86gTipo@92gLuogo"); + set_header(4,"@0g------@7g------@14g-------@22g-----------------------------------@58g----------@69g-----@75g----------@86g----@91g-------------------------"); +} + +bool TElencoDon_app::user_create() +{ + _rel = new TRelation(LF_DONAZ); + _rel->add(LF_SOGGETTI, "CODICE==CODICE"); + _rel->add("LDN", "CODTAB==LUOGODON",1,0,ALIAS_LDN); + _msk = new TMask("at6300a"); + return TRUE; +} + +bool TElencoDon_app::user_destroy() +{ + delete _msk; + delete _rel; + return TRUE; +} + +int at6300(int argc, char* argv[]) +{ + TElencoDon_app a; + a.run(argc, argv, "Stampa di controllo donazioni"); + return 0; +} diff --git a/at/at6300a.h b/at/at6300a.h new file mode 100755 index 000000000..c09e16f11 --- /dev/null +++ b/at/at6300a.h @@ -0,0 +1,18 @@ +// stampa di controllo donazioni +// definizione campi per maschera di selezione + +#define F_SEZINI 101 +#define F_D_SEZINI 102 +#define F_SOTINI 103 +#define F_D_SOTINI 104 +//#define F_SEZFIN 105 +//#define F_D_SEZFIN 106 +//#define F_SOTFIN 107 +//#define F_D_SOTFIN 108 +#define F_DATAINI 109 +#define F_DATAFIN 110 +#define F_TIPODON 111 +#define F_LUOGODON 112 +#define F_TIPOSTAMPA 113 +#define F_D_TIPODON 201 +#define F_D_LUOGODON 202 diff --git a/at/at6300a.uml b/at/at6300a.uml new file mode 100755 index 000000000..fc85a94af --- /dev/null +++ b/at/at6300a.uml @@ -0,0 +1,194 @@ +#include "at6300a.h" +#include "lf.h" +PAGE "Definizione Stampe" -1 -1 78 20 + +GROUPBOX DLG_NULL 77 4 +BEGIN + PROMPT 1 1 "Scelta sezione/sottogruppo" +END + +STRING F_SEZINI 2 +BEGIN + PROMPT 2 2 "Sezione " + FLAGS "U" + USE LF_SEZIONI + INPUT CODSEZ F_SEZINI + INPUT CODSOT F_SOTINI + DISPLAY "Cod.sez" CODSEZ + DISPLAY "Cod.sot." CODSOT + DISPLAY "Sezione@25" DENSEZ + DISPLAY "Sottogruppo@25" DENSOT + OUTPUT F_SEZINI CODSEZ + OUTPUT F_D_SEZINI DENSEZ + OUTPUT F_SOTINI CODSOT + OUTPUT F_D_SOTINI DENSOT + CHECKTYPE SEARCH + HELP "Codice sezione da stampare" +END + +STRING F_D_SEZINI 25 +BEGIN + PROMPT 20 2 "" + FLAGS "U" + USE LF_SEZIONI KEY 2 + INPUT DENSEZ F_D_SEZINI + DISPLAY "Sezione@25" DENSEZ + DISPLAY "Sottogruppo@25" DENSOT + DISPLAY "Cod.sez" CODSEZ + DISPLAY "Cod.sot." CODSOT + COPY OUTPUT F_SEZINI + CHECKTYPE NORMAL + HELP "Sezione da stampare" +END + +STRING F_SOTINI 2 +BEGIN + PROMPT 2 3 "Sottogruppo " + COPY ALL F_SEZINI + CHECKTYPE SEARCH + HELP "Codice sottogruppo da stampare" +END + +STRING F_D_SOTINI 25 +BEGIN + PROMPT 20 3 "" + FLAGS "U" + COPY USE F_D_SEZINI + INPUT DENSEZ F_D_SEZINI + INPUT DENSOT F_D_SOTINI + COPY DISPLAY F_D_SEZINI + COPY OUTPUT F_D_SEZINI + CHECKTYPE NORMAL + HELP "Sottogruppo da cui partire" +END + +//STRING F_SEZFIN 2 +//BEGIN +// PROMPT 41 2 "A " +// FLAGS "U" +// USE LF_SEZIONI +// INPUT CODSEZ F_SEZFIN +// INPUT CODSOT F_SOTFIN +// DISPLAY "Cod.sez" CODSEZ +// DISPLAY "Cod.sot." CODSOT +// DISPLAY "Sezione@25" DENSEZ +// DISPLAY "Sottogruppo@25" DENSOT +// OUTPUT F_SEZFIN CODSEZ +// OUTPUT F_D_SEZFIN DENSEZ +// OUTPUT F_SOTFIN CODSOT +// OUTPUT F_D_SOTFIN DENSOT +// CHECKTYPE SEARCH +// HELP "Codice sezione finale" +//END + +//STRING F_D_SEZFIN 25 +//BEGIN +// PROMPT 49 2 "" +// FLAGS "U" +// USE LF_SEZIONI KEY 2 +// INPUT DENSEZ F_D_SEZFIN +// DISPLAY "Sezione@25" DENSEZ +// DISPLAY "Sottogruppo@25" DENSOT +// DISPLAY "Cod.sez" CODSEZ +// DISPLAY "Cod.sot." CODSOT +// COPY OUTPUT F_SEZFIN +// CHECKTYPE NORMAL +// HELP "Sezione finale" +//END + +//STRING F_SOTFIN 2 +//BEGIN +// PROMPT 41 3 " " +// COPY ALL F_SEZFIN +// CHECKTYPE SEARCH +// HELP "Codice sottogruppo finale" +//END + +//STRING F_D_SOTFIN 25 +//BEGIN +// PROMPT 49 3 "" +// FLAGS "U" +// COPY USE F_D_SEZFIN +// INPUT DENSEZ F_D_SEZFIN +// INPUT DENSOT F_D_SOTFIN +// COPY DISPLAY F_D_SEZFIN +// COPY OUTPUT F_D_SEZFIN +// CHECKTYPE NORMAL +// HELP "Sottogruppo finale" +//END + +GROUPBOX DLG_NULL 77 5 +BEGIN + PROMPT 1 5 "Selezione dati per la stampa" +END + +DATA F_DATAINI +BEGIN + PROMPT 2 6 "Donazioni dal " +END + +DATA F_DATAFIN +BEGIN + PROMPT 30 6 "al " +END + +STRING F_TIPODON 2 +BEGIN + PROMPT 2 7 "Tipo donazioni " + FLAGS "U" + USE TDN + INPUT CODTAB F_TIPODON + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@30" S0 + OUTPUT F_TIPODON CODTAB + OUTPUT F_D_TIPODON S0 + CHECKTYPE NORMAL + WARNING "Codice non presente" +END + +STRING F_D_TIPODON 30 +BEGIN + PROMPT 26 7 "" + FLAGS "D" +END + +STRING F_LUOGODON 4 +BEGIN + PROMPT 2 8 "Luogo donazione " + FLAGS "U" + USE LDN + INPUT CODTAB F_LUOGODON + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@30" S0 + OUTPUT F_LUOGODON CODTAB + OUTPUT F_D_LUOGODON S0 + CHECKTYPE NORMAL + WARNING "Codice non presente" +END + +STRING F_D_LUOGODON 30 +BEGIN + PROMPT 26 8 "" + FLAGS "D" +END + +RADIOBUTTON F_TIPOSTAMPA 25 +BEGIN + PROMPT 1 10 "Stampa per " + ITEM "D|Data donazione" + ITEM "L|Luogo donazione" + ITEM "S|Sezione/Sottogruppo" +END + +BUTTON DLG_OK 9 2 +BEGIN + PROMPT -12 -1 "" +END + +BUTTON DLG_QUIT 9 2 +BEGIN + PROMPT -22 -1 "" +END + +ENDPAGE +ENDMASK diff --git a/at/at7.cpp b/at/at7.cpp new file mode 100755 index 000000000..d23662163 --- /dev/null +++ b/at/at7.cpp @@ -0,0 +1,23 @@ +#include +#include +#include + +#include "at7.h" + +#define usage "Error - usage : %s -{0}" + +int main(int argc,char** argv) + +{ + int rt = -1 ; + const int r = (argc > 1) ? atoi(&argv[1][1]) : -1; + + switch (r) + { + case 0: + rt = at7100(argc,argv) ; break; + default: + error_box(usage, argv[0]) ; break; + } + return rt; +} diff --git a/at/at7.h b/at/at7.h new file mode 100755 index 000000000..af5e4c12c --- /dev/null +++ b/at/at7.h @@ -0,0 +1,7 @@ +#ifndef __AT7_H +#define __AT7_H + +int at7100(int argc, char* argv[]); + +#endif // __AT7_H + diff --git a/at/at7.url b/at/at7.url new file mode 100755 index 000000000..9c12cb692 --- /dev/null +++ b/at/at7.url @@ -0,0 +1,11 @@ +#define APPNAME AVIS +#define QAPPNAME "AVIS" +#define LIBDIR f:\xvt.403\win_x86\ptk\lib +#define QFIRMNAME "AGA Informatica S.r.l." + +#include + +/* at7 -0 sistema CAP*/ +MENU TASK_MENUBAR + SUBMENU MENU_FILE "~File" + diff --git a/at/at7100.cpp b/at/at7100.cpp new file mode 100755 index 000000000..17b2cf7ef --- /dev/null +++ b/at/at7100.cpp @@ -0,0 +1,117 @@ +#include +#include +#include +#include + +#include "at7.h" +#include "lf.h" // se non lo metto non riesco a usare gli LF + +// nomi dei campi +#include "soggetti.h" + +#define ALIAS_LCPD 100 +#define ALIAS_LCPR 200 +#define ALIAS_COMD 300 +#define ALIAS_COMR 400 +class TCAP_app : public TPrintapp +{ + TMask* _msk; + TRelation* _rel; + int _cur; + +protected: + virtual bool user_create(); + virtual bool user_destroy(); + virtual bool set_print(int m); + virtual void set_page(int file, int cnt); + virtual bool preprocess_page(int file, int counter); + +public: + TCAP_app() {} +}; + +HIDDEN inline TCAP_app& app() { return (TCAP_app&) main_app(); } + +bool TCAP_app::preprocess_page(int file, int counter) +{ + bool rew = FALSE; + TString16 cap; + TString16 loc; + TString16 com; + TRectype& recsog = current_cursor()->curr(); + cap = recsog.get(SOG_DOM_CAP); + com = recsog.get(SOG_DOM_CODCOM); + if (cap.empty() && com.not_empty()) + { + loc = recsog.get(SOG_DOM_CODLOC); + if (loc.empty()) + cap = current_cursor()->file(-ALIAS_COMD).get("CAPCOM"); + else + cap = current_cursor()->file(-ALIAS_LCPD).get("S6"); + recsog.put(SOG_DOM_CAP, cap); + rew = TRUE; + } + cap = recsog.get(SOG_RES_CAP); + com = recsog.get(SOG_RES_CODCOM); + if (cap.empty() && com.not_empty()) + { + loc = recsog.get(SOG_RES_CODLOC); + if (loc.empty()) + cap = current_cursor()->file(-ALIAS_COMR).get("CAPCOM"); + else + cap = current_cursor()->file(-ALIAS_LCPR).get("S6"); + recsog.put(SOG_RES_CAP, cap); + rew = TRUE; + } + if (rew) + current_cursor()->file().rewrite(); + return rew; +} + +void TCAP_app::set_page(int file, int cnt) +{ + set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########")); + set_row(1,"@10g@S", FLD(LF_SOGGETTI,SOG_COGNOME)); + set_row(1,"@36g@S", FLD(LF_SOGGETTI,SOG_NOME)); +} + +bool TCAP_app::set_print(int) +{ + KEY tasto; + tasto = _msk->run(); + if (tasto == K_ENTER) + { + reset_files(); + add_file(LF_SOGGETTI); + reset_print(); + return TRUE; + } + else + return FALSE; +} + +bool TCAP_app::user_create() +{ + _msk = new TMask("at7100a"); + _rel = new TRelation(LF_SOGGETTI); + _rel->add("LCP", "CODTAB==DOM_CODLOC",1,0,ALIAS_LCPD); + _rel->add(LF_COMUNI, "COM==DOM_CODCOM",1,0,ALIAS_COMD); + _rel->add("LCP", "CODTAB==RES_CODLOC",1,0,ALIAS_LCPR); + _rel->add(LF_COMUNI, "COM==RES_CODCOM",1,0,ALIAS_COMR); + _cur = add_cursor(new TCursor(_rel, "", 3)); //cursore ordinamento per sezione+sottogruppo+codice + return TRUE; +} + +bool TCAP_app::user_destroy() +{ + delete _rel; + delete _msk; + return TRUE; +} + +int at7100(int argc, char* argv[]) +{ + TCAP_app a; + a.run(argc, argv, "Aggiornamento CAP su indirizzi"); + return 0; +} \ No newline at end of file diff --git a/at/at7100a.uml b/at/at7100a.uml new file mode 100755 index 000000000..2ec3e255c --- /dev/null +++ b/at/at7100a.uml @@ -0,0 +1,15 @@ +#include "lf.h" +PAGE "Aggiornamento CAP" -1 -1 78 20 + +BUTTON DLG_OK 9 2 +BEGIN + PROMPT -12 14 "" +END + +BUTTON DLG_QUIT 9 2 +BEGIN + PROMPT -22 14 "" +END + +ENDPAGE +ENDMASK diff --git a/at/at7200.cpp b/at/at7200.cpp new file mode 100755 index 000000000..9eafa7b76 --- /dev/null +++ b/at/at7200.cpp @@ -0,0 +1,117 @@ +#include +#include +#include +#include + +#include "at7.h" +#include "lf.h" // se non lo metto non riesco a usare gli LF + +// nomi dei campi +#include "soggetti.h" +#include "donaz.h" +#include "contsan.h" + +#define ALIAS_TDN 100 +#define ALIAS_TCS 200 +class TRiordina_app : public TPrintapp +{ + TMask* _msk; + TRelation* _rel; + int _cur; + +protected: + virtual bool user_create(); + virtual bool user_destroy(); + virtual bool set_print(int m); + virtual void set_page(int file, int cnt); + virtual bool preprocess_page(int file, int counter); + +public: + TRiordina_app() {} +}; + +HIDDEN inline TRiordina_app& app() { return (TRiordina_app&) main_app(); } + +bool TRiordina_app::preprocess_page(int file, int counter) +{ + bool rew = FALSE; + TString16 cap; + TString16 loc; + TString16 com; + TRectype& recsog = current_cursor()->curr(); + cap = recsog.get(SOG_DOM_CAP); + com = recsog.get(SOG_DOM_CODCOM); + if (cap.empty() && com.not_empty()) + { + loc = recsog.get(SOG_DOM_CODLOC); + if (loc.empty()) + cap = current_cursor()->file(-ALIAS_COMD).get("CAPCOM"); + else + cap = current_cursor()->file(-ALIAS_LCPD).get("S6"); + recsog.put(SOG_DOM_CAP, cap); + rew = TRUE; + } + cap = recsog.get(SOG_RES_CAP); + com = recsog.get(SOG_RES_CODCOM); + if (cap.empty() && com.not_empty()) + { + loc = recsog.get(SOG_RES_CODLOC); + if (loc.empty()) + cap = current_cursor()->file(-ALIAS_COMR).get("CAPCOM"); + else + cap = current_cursor()->file(-ALIAS_LCPR).get("S6"); + recsog.put(SOG_RES_CAP, cap); + rew = TRUE; + } + if (rew) + current_cursor()->file().rewrite(); + return rew; +} + +void TCAP_app::set_page(int file, int cnt) +{ + set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########")); + set_row(1,"@10g@S", FLD(LF_SOGGETTI,SOG_COGNOME)); + set_row(1,"@36g@S", FLD(LF_SOGGETTI,SOG_NOME)); +} + +bool TCAP_app::set_print(int) +{ + KEY tasto; + tasto = _msk->run(); + if (tasto == K_ENTER) + { + reset_files(); + add_file(LF_SOGGETTI); + reset_print(); + return TRUE; + } + else + return FALSE; +} + +bool TCAP_app::user_create() +{ + _msk = new TMask("at7200a"); + _rel = new TRelation(LF_SOGGETTI); + _rel->add("TDN", "CODTAB==DOM_CODLOC",1,0,ALIAS_LCPD); + _rel->add(LF_COMUNI, "COM==DOM_CODCOM",1,0,ALIAS_COMD); + _rel->add("LCP", "CODTAB==RES_CODLOC",1,0,ALIAS_LCPR); + _rel->add(LF_COMUNI, "COM==RES_CODCOM",1,0,ALIAS_COMR); + _cur = add_cursor(new TCursor(_rel, "", 3)); //cursore ordinamento per sezione+sottogruppo+codice + return TRUE; +} + +bool TCAP_app::user_destroy() +{ + delete _rel; + delete _msk; + return TRUE; +} + +int at7200(int argc, char* argv[]) +{ + TRiordina_app a; + a.run(argc, argv, "Riordina donazioni e controlli"); + return 0; +} \ No newline at end of file diff --git a/at/at7200a.uml b/at/at7200a.uml new file mode 100755 index 000000000..0c8c5a188 --- /dev/null +++ b/at/at7200a.uml @@ -0,0 +1,15 @@ +#include "lf.h" +PAGE "Riordina donazioni e controlli" -1 -1 78 20 + +BUTTON DLG_OK 9 2 +BEGIN + PROMPT -12 14 "" +END + +BUTTON DLG_QUIT 9 2 +BEGIN + PROMPT -22 14 "" +END + +ENDPAGE +ENDMASK diff --git a/at/at_etcar.frm b/at/at_etcar.frm index 711ba069b..1453f2adb 100755 --- a/at/at_etcar.frm +++ b/at/at_etcar.frm @@ -1,118 +1,175 @@ -USE 90 -JOIN 13 INTO COM==DOM_CODCOM -JOIN LCP ALIAS 100 INTO CODTAB==DOM_CODLOC - -END -DESCRIPTION -BEGIN - 90->* "Soggetti Sezioni AVIS" - 13->* "COMUNI" - LCP->* "Località postali" -END - -GENERAL -BEGIN - OFFSET 0 0 - FONT "Arial" - SIZE 12 - GRID "" -END - -SECTION BODY ODD 9 - -STRINGA 1 25 -BEGIN - KEY "Cognome" - FIELD 90->COGNOME - PROMPT 0 0 "" - FLAGS "H" - MESSAGE RESET,3|COPY,3 -END - -STRINGA 2 25 -BEGIN - KEY "Nome" - FIELD 90->NOME - PROMPT 0 0 "" - FLAGS "H" - MESSAGE APPEND,3 -END - -STRINGA 3 33 2 -BEGIN - KEY "Cognome e nome" - PROMPT 1 1 "" -END - -STRINGA 4 33 2 -BEGIN - KEY "Indirizzo" - PROMPT 1 3 "" - FIELD 90->DOM_INDIR -END - -STRINGA 5 4 -BEGIN - KEY "Codice localita'" - PROMPT 0 0 "" - FLAG "H" - FIELD 90->DOM_CODLOC - MESSAGE ENABLE,1@|DISABLE,2@ - MESSAGE EMPTY ENABLE,2@|DISABLE,1@ -END - -STRINGA 6 5 -BEGIN - KEY "CAP loc." - PROMPT 1 5 "" - FIELD 100@->S6 - GROUP 1 -END - -STRINGA 7 30 -BEGIN - KEY "Localita'" - PROMPT 0 0 "" - FIELD 100@->S0 - GROUP 1 - FLAG "H" - MESSAGE RESET,11|COPY,11 -END - -STRINGA 8 5 -BEGIN - KEY "CAP" - PROMPT 1 5 "" - FIELD 13->CAPCOM - FLAG "D" - GROUP 2 -END - -STRINGA 9 50 -BEGIN - KEY "Comune" - PROMPT 0 0 "" - FIELD 13->DENCOM - GROUP 2 - FLAG "HD" - MESSAGE RESET,11|COPY,11 -END - -STRINGA 10 5 -BEGIN - KEY "Provincia" - PROMPT 0 0 "" - FIELD 13->PROVCOM - FLAG "H" - MESSAGE APPEND,11 -END - -STRINGA 11 27 2 -BEGIN - KEY "Loc./Com. e Prov." - PROMPT 7 5 "" -END - -END - -END +USE 90 +JOIN 13 INTO COM==DOM_CODCOM +JOIN LCP ALIAS 100 INTO CODTAB==DOM_CODLOC + +END +DESCRIPTION +BEGIN + 90->* "Soggetti Sezioni AVIS" + 13->* "COMUNI" + 100@->* "Localita' postali" +END + +GENERAL +BEGIN + OFFSET 0 0 + FONT "Roman" + SIZE 12 + GRID "" +END + +SECTION BODY ODD 24 + +STRINGA 1 25 +BEGIN + KEY "Cognome" + FIELD 90->COGNOME + PROMPT 0 0 "" + FLAGS "H" + MESSAGE RESET,3|COPY,3 +END + +STRINGA 2 25 +BEGIN + KEY "Nome" + FIELD 90->NOME + PROMPT 0 0 "" + FLAGS "H" + MESSAGE APPEND,3 +END + +STRINGA 3 33 2 +BEGIN + KEY "Cognome e nome" + PROMPT 32 13 "" +END + +STRINGA 4 33 2 +BEGIN + KEY "Indirizzo" + FIELD 90->DOM_INDIR + PROMPT 32 15 "" +END + +STRINGA 5 4 +BEGIN + KEY "Codice localita'" + FIELD 90->DOM_CODLOC + PROMPT 0 0 "" + FLAGS "H" +END + +STRINGA 6 5 +BEGIN + KEY "CAP" + FIELD 100@->S6 + FIELD 13->CAPCOM + PROMPT 32 17 "" +END + +STRINGA 7 30 +BEGIN + KEY "Denominazione localita' o comune" + FIELD 100@->S0 + FIELD 13->DENCOM + PROMPT 0 0 "" + FLAGS "H" + MESSAGE RESET,9|COPY,9 +END + +STRINGA 8 5 +BEGIN + KEY "Provincia" + FIELD 13->PROVCOM + PROMPT 0 0 "" + FLAGS "H" + MESSAGE APPEND,9 +END + +STRINGA 9 27 2 +BEGIN + KEY "Loc./Com. e Prov." + PROMPT 38 17 "" +END + +STRINGA 10 25 +BEGIN + KEY "Invito per" + PROMPT 3 9 "" +END + +STRINGA 11 25 +BEGIN + KEY "Data convocazione" + PROMPT 3 12 "" +END + +STRINGA 12 25 +BEGIN + KEY "Presso: riga 1" + PROMPT 3 14 "" +END + +STRINGA 13 25 +BEGIN + KEY "Presso: riga 2" + PROMPT 3 15 "" +END + +STRINGA 14 25 +BEGIN + KEY "Presso: riga 3" + PROMPT 3 16 "" +END + +STRINGA 15 25 +BEGIN + KEY "Presso: riga 4" + PROMPT 3 17 "" +END + +STRINGA 16 14 +BEGIN + KEY "Orario" + PROMPT 14 19 "" +END + +STRINGA 17 10 +BEGIN + KEY "Data cartolina" + PROMPT 18 21 "" +END + +STRINGA 18 25 +BEGIN + KEY "Note" + PROMPT 3 23 "" +END + +STRINGA 19 20 +BEGIN + KEY "Intestazione 1" + PROMPT 15 4 "" +END + +STRINGA 20 20 +BEGIN + KEY "Intestazione 2" + PROMPT 15 5 "" +END + +STRINGA 21 20 +BEGIN + KEY "Intestazione 3" + PROMPT 15 6 "" +END + +STRINGA 22 20 +BEGIN + KEY "Intestazione 4" + PROMPT 15 7 "" +END + +END + +END diff --git a/at/at_etsog.frm b/at/at_etsog.frm index 711ba069b..9b0e8e05b 100755 --- a/at/at_etsog.frm +++ b/at/at_etsog.frm @@ -1,118 +1,97 @@ -USE 90 -JOIN 13 INTO COM==DOM_CODCOM -JOIN LCP ALIAS 100 INTO CODTAB==DOM_CODLOC - -END -DESCRIPTION -BEGIN - 90->* "Soggetti Sezioni AVIS" - 13->* "COMUNI" - LCP->* "Località postali" -END - -GENERAL -BEGIN - OFFSET 0 0 - FONT "Arial" - SIZE 12 - GRID "" -END - -SECTION BODY ODD 9 - -STRINGA 1 25 -BEGIN - KEY "Cognome" - FIELD 90->COGNOME - PROMPT 0 0 "" - FLAGS "H" - MESSAGE RESET,3|COPY,3 -END - -STRINGA 2 25 -BEGIN - KEY "Nome" - FIELD 90->NOME - PROMPT 0 0 "" - FLAGS "H" - MESSAGE APPEND,3 -END - -STRINGA 3 33 2 -BEGIN - KEY "Cognome e nome" - PROMPT 1 1 "" -END - -STRINGA 4 33 2 -BEGIN - KEY "Indirizzo" - PROMPT 1 3 "" - FIELD 90->DOM_INDIR -END - -STRINGA 5 4 -BEGIN - KEY "Codice localita'" - PROMPT 0 0 "" - FLAG "H" - FIELD 90->DOM_CODLOC - MESSAGE ENABLE,1@|DISABLE,2@ - MESSAGE EMPTY ENABLE,2@|DISABLE,1@ -END - -STRINGA 6 5 -BEGIN - KEY "CAP loc." - PROMPT 1 5 "" - FIELD 100@->S6 - GROUP 1 -END - -STRINGA 7 30 -BEGIN - KEY "Localita'" - PROMPT 0 0 "" - FIELD 100@->S0 - GROUP 1 - FLAG "H" - MESSAGE RESET,11|COPY,11 -END - -STRINGA 8 5 -BEGIN - KEY "CAP" - PROMPT 1 5 "" - FIELD 13->CAPCOM - FLAG "D" - GROUP 2 -END - -STRINGA 9 50 -BEGIN - KEY "Comune" - PROMPT 0 0 "" - FIELD 13->DENCOM - GROUP 2 - FLAG "HD" - MESSAGE RESET,11|COPY,11 -END - -STRINGA 10 5 -BEGIN - KEY "Provincia" - PROMPT 0 0 "" - FIELD 13->PROVCOM - FLAG "H" - MESSAGE APPEND,11 -END - -STRINGA 11 27 2 -BEGIN - KEY "Loc./Com. e Prov." - PROMPT 7 5 "" -END - -END - -END +USE 90 +JOIN 13 INTO COM==DOM_CODCOM +JOIN LCP ALIAS 100 INTO CODTAB==DOM_CODLOC + +END +DESCRIPTION +BEGIN + 90->* "Soggetti Sezioni AVIS" + 13->* "COMUNI" + 100@->* "Localita' postali" +END + +GENERAL +BEGIN + OFFSET 0 0 + FONT "Arial" + SIZE 12 + GRID "" +END + +SECTION BODY ODD 9 + +STRINGA 1 25 +BEGIN + KEY "Cognome" + FIELD 90->COGNOME + PROMPT 0 0 "" + FLAGS "H" + MESSAGE RESET,3|COPY,3 +END + +STRINGA 2 25 +BEGIN + KEY "Nome" + FIELD 90->NOME + PROMPT 0 0 "" + FLAGS "H" + MESSAGE APPEND,3 +END + +STRINGA 3 33 2 +BEGIN + KEY "Cognome e nome" + PROMPT 1 1 "" +END + +STRINGA 4 33 2 +BEGIN + KEY "Indirizzo" + FIELD 90->DOM_INDIR + PROMPT 1 3 "" +END + +STRINGA 5 4 +BEGIN + KEY "Codice localita'" + FIELD 90->DOM_CODLOC + PROMPT 0 0 "" + FLAGS "H" +END + +STRINGA 6 5 +BEGIN + KEY "CAP" + FIELD 100@->S6 + FIELD 13->CAPCOM + PROMPT 1 5 "" +END + +STRINGA 7 30 +BEGIN + KEY "Denominazione localita' o comune" + FIELD 100@->S0 + FIELD 13->DENCOM + PROMPT 0 0 "" + FLAGS "H" + MESSAGE RESET,9|COPY,9 +END + +STRINGA 8 5 +BEGIN + KEY "Provincia" + FIELD 13->PROVCOM + PROMPT 0 0 "" + FLAGS "H" + MESSAGE APPEND,9 +END + +STRINGA 9 27 2 +BEGIN + KEY "Loc./Com. e Prov." + PROMPT 7 5 "" +END + +END + +END diff --git a/at/at_pag02.frm b/at/at_pag02.frm new file mode 100755 index 000000000..ae296d63b --- /dev/null +++ b/at/at_pag02.frm @@ -0,0 +1,836 @@ +USE 90 +JOIN CTD ALIAS 100 INTO CODTAB==CATDON +JOIN CTN ALIAS 110 INTO CODTAB==CATNOND1 +JOIN CTN ALIAS 120 INTO CODTAB==CATNOND2 +JOIN TCS ALIAS 200 INTO CODTAB==STATO +JOIN LDN ALIAS 300 INTO CODTAB==PUNTORACC +JOIN LCP ALIAS 400 INTO CODTAB==RES_CODLOC +JOIN LCP ALIAS 410 INTO CODTAB==DOM_CODLOC +JOIN 13 ALIAS 500 INTO COM==RES_CODCOM +JOIN 13 ALIAS 510 INTO COM==DOM_CODCOM +JOIN 13 ALIAS 520 INTO COM==COMNASC +JOIN 96 INTO CODSEZ==CODSEZ +JOIN 97 INTO CODMED==CODMED + +END + +DESCRIPTION +BEGIN + 90->* "Soggetti Sezioni AVIS" + CTD->* "Categorie donatori" + CTN->* "Categorie non donatori" + TCS->* "Tipi/Esiti controlli sanitari" + LDN->* "Luoghi di donazione/Punti di raccolta" + LCP->* "Localita' postali" + 13->* "COMUNI" + 96->* "Sezioni AVIS" + 97->* "Medici" +END + +GENERAL +BEGIN + OFFSET 0 0 + FONT "Arial" + SIZE 12 + GRID "" +END + +SECTION BODY ODD 33 + +NUMERO 1 15 +BEGIN + KEY "Codice" + FIELD 90->CODICE + PROMPT 1 1 "Codice " +END + +STRINGA 2 33 +BEGIN + KEY "Cognome" + FIELD 90->COGNOME + PROMPT 17 1 "Cognome " +END + +STRINGA 3 30 +BEGIN + KEY "Nome" + FIELD 90->NOME + PROMPT 52 1 "Nome " +END + +DATA 4 18 +BEGIN + KEY "Data nascita" + FIELD 90->DATANASC + PROMPT 1 2 "Nato il " +END + +STRINGA 5 30 +BEGIN + KEY "Comune di nascita" + PROMPT 0 0 "" + FIELD 520@->DENCOM + FLAG "H" + MESSAGE RESET,7|COPY,7 +END + +STRINGA 6 5 +BEGIN + KEY "Provincia di nascita" + PROMPT 0 0 "" + FIELD 520@->PROVCOM + FLAG "H" + MESSAGE APPEND,7 +END + +STRINGA 7 40 +BEGIN + KEY "Comune e provincia di nascita" + PROMPT 20 2 "Nato a " +END + +STRINGA 8 6 +BEGIN + KEY "Testo" + PROMPT 62 2 "Sesso " +END + +LISTA 9 +BEGIN + KEY "Sesso" + PROMPT 68 2 "Sesso " + FIELD 90->SESSO + ITEM "0|Sconosciuto" + ITEM "1|Maschio" + ITEM "2|Femmina" + ITEM "9|Non specif." +END + +STRINGA 10 7 +BEGIN + KEY "Codice sezione" + FIELD 90->CODSEZ + PROMPT 1 4 "Sez. " +END + +STRINGA 11 25 +BEGIN + KEY "Denominazione sezione" + FIELD 96->DENSEZ + PROMPT 9 4 "" +END + +STRINGA 12 7 +BEGIN + KEY "Codice sottog." + FIELD 90->CODSOT + PROMPT 41 4 "Sot. " +END + +STRINGA 13 25 +BEGIN + KEY "Denominazione sottog." + FIELD 96->DENSOT + PROMPT 49 4 "" +END + +STRINGA 14 7 +BEGIN + KEY "Categoria don." + FIELD 90->CATDON + PROMPT 1 5 "Cat. " +END + +STRINGA 15 25 +BEGIN + KEY "Descrizione categoria" + FIELD 100@->S0 + PROMPT 9 5 "" +END + +DATA 16 21 +BEGIN + KEY "Data iscrizione" + FIELD 90->DATAISC + PROMPT 36 5 "Data iscr. " +END + +DATA 17 20 +BEGIN + KEY "Data dimissione" + FIELD 90->DATADIM + PROMPT 59 5 "Data dim. " +END + +STRINGA 18 16 +BEGIN + KEY "Tessera AVIS" + FIELD 90->TESSAVIS + PROMPT 1 7 "Tess.AVIS " +END + +STRINGA 19 13 +BEGIN + KEY "Codice Centro Trasfusionale" + FIELD 90->CODCT + PROMPT 18 7 "Cod.CT " +END + +STRINGA 20 16 +BEGIN + KEY "Cartella clinica" + FIELD 90->CODCL + PROMPT 33 7 "Car.clin. " +END + +STRINGA 21 28 +BEGIN + KEY "Documento di identita'" + FIELD 90->DOCID + PROMPT 51 7 "Doc.id. " +END + +STRINGA 22 26 +BEGIN + KEY "Codice fiscale" + FIELD 90->CF + PROMPT 1 8 "Cod.fisc. " +END + +STRINGA 23 10 +BEGIN + KEY "Testo" + PROMPT 1 10 "Domicilio:" +END + +STRINGA 24 30 +BEGIN + KEY "Domicilio: indirizzo" + FIELD 90->DOM_INDIR + PROMPT 1 11 "" + MESSAGE RESET,30 +END + +STRINGA 25 4 +BEGIN + KEY "Domicilio: codice localita'" + FIELD 90->DOM_CODLOC + PROMPT 0 0 "" + FLAG "H" +END + +STRINGA 26 5 +BEGIN + KEY "Domicilio: CAP" + FIELD 410@->S6 + FIELD 510@->CAPCOM + PROMPT 0 0 "" + FLAG "H" + MESSAGE APPEND,30 +END + +STRINGA 27 30 +BEGIN + KEY "Domicilio: localita'" + FIELD 410@->S0 + PROMPT 0 0 "" + FLAG "H" + MESSAGE APPEND,30 +END + +STRINGA 28 50 +BEGIN + KEY "Domicilio: comune" + FIELD 510@->DENCOM + PROMPT 0 0 "" + FLAG "H" + MESSAGE APPEND,30 +END + +STRINGA 29 5 +BEGIN + KEY "Domicilio: provincia" + FIELD 510@->PROVCOM + PROMPT 0 0 "" + FLAG "H" + MESSAGE APPEND,30 +END + +STRINGA 30 39 3 +BEGIN + KEY "Domicilio: Loc/Com/Prov" + PROMPT 1 12 "" +END + +STRINGA 31 10 +BEGIN + KEY "Testo" + PROMPT 41 10 "Residenza:" +END + +STRINGA 32 30 +BEGIN + KEY "Residenza: indirizzo" + FIELD 90->RES_INDIR + PROMPT 41 11 "" + MESSAGE RESET,38 +END + +STRINGA 33 4 +BEGIN + KEY "Residenza: codice localita'" + FIELD 90->RES_CODLOC + PROMPT 0 0 "" + FLAG "H" +END + +STRINGA 34 5 +BEGIN + KEY "Residenza: CAP" + FIELD 400@->S6 + FIELD 500@->CAPCOM + PROMPT 0 0 "" + FLAG "H" + MESSAGE APPEND,38 +END + +STRINGA 35 30 +BEGIN + KEY "Residenza: localita'" + FIELD 400@->S0 + PROMPT 0 0 "" + FLAG "H" + MESSAGE APPEND,38 +END + +STRINGA 36 50 +BEGIN + KEY "Residenza: comune" + FIELD 500@->DENCOM + PROMPT 0 0 "" + FLAG "H" + MESSAGE APPEND,38 +END + +STRINGA 37 5 +BEGIN + KEY "Residenza: provincia" + FIELD 500@->PROVCOM + PROMPT 0 0 "" + FLAG "H" + MESSAGE APPEND,38 +END + +STRINGA 38 39 3 +BEGIN + KEY "Residenza: Loc/Com/Prov" + PROMPT 41 12 "" +END + +STRINGA 39 23 +BEGIN + KEY "Telefono abitazione" + FIELD 90->TELABI + PROMPT 1 15 "Tel.abi. " +END + +STRINGA 40 23 +BEGIN + KEY "Telefono lavoro" + FIELD 90->TELLAV + PROMPT 25 15 "Tel.lav. " +END + +STRINGA 41 25 +BEGIN + KEY "Telefono altro" + FIELD 90->TELALT + PROMPT 49 15 "Tel.altro " +END + +STRINGA 42 +BEGIN + KEY "Testo" + PROMPT 1 16 "Escluso " +END + +LISTA 43 +BEGIN + KEY "Esclusione" + FIELD 90->ESCLUSO + ITEM " | " + ITEM "TI|T. indeterminato" + ITEM "TD|T. determinato" + PROMPT 10 16 "Escluso " +END + +DATA 44 18 +BEGIN + KEY "Data termine esclusione" + FIELD 90->TERMESCL + PROMPT 27 16 "Termine " +END + +STRINGA 45 35 +BEGIN + KEY "Motivo esclusione" + FIELD 90->MOTESCL + PROMPT 46 16 "Per " +END + +STRINGA 46 26 +BEGIN + KEY "Descrizione stato" + FIELD 200@->S3 + PROMPT 1 17 "Stato " +END + +DATA 47 15 +BEGIN + KEY "Data stato" + FIELD 90->DATASTATO + PROMPT 28 17 "Data " +END + +STRINGA 48 11 +BEGIN + KEY "Tipo ultima idoneita'" + FIELD 90->TIPOULTID + PROMPT 45 17 "Ult. id. " +END + +DATA 49 10 +BEGIN + KEY "Data ultima idoneita'" + FIELD 90->DATAULTID + PROMPT 58 17 "" +END + +STRINGA 50 2 +BEGIN + KEY "Idoneita' alla donazione 1" + FIELD 90->IDON1 + PROMPT 70 17 "" +END + +STRINGA 51 2 +BEGIN + KEY "Idoneita' alla donazione 2" + FIELD 90->IDON2 + PROMPT 73 17 "" +END + +STRINGA 52 2 +BEGIN + KEY "Idoneita' alla donazione 3" + FIELD 90->IDON3 + PROMPT 76 17 "" +END + +STRINGA 53 2 +BEGIN + KEY "Idoneita' alla donazione 4" + FIELD 90->IDON4 + PROMPT 79 17 "" +END + +STRINGA 54 +BEGIN + KEY "Testo" + PROMPT 1 19 "Situazione donazioni:" +END + +NUMERO 55 8 +BEGIN + KEY "Totale donazioni" + FIELD 90->TOTDON + PROMPT 1 20 "Tot. " +END + +STRINGA 56 11 +BEGIN + KEY "Tipo ultima donazione" + FIELD 90->TIPOULTDON + PROMPT 1 21 "Ult.don. " +END + +DATA 57 10 +BEGIN + KEY "Data ultima donazione" + FIELD 90->DATAULTDON + PROMPT 13 21 "" +END + +STRINGA 58 13 +BEGIN + KEY "Testo" + PROMPT 26 20 "Donazioni SI:" +END + +STRINGA 59 13 +BEGIN + KEY "Testo" + PROMPT 26 21 "Donazioni AF:" +END + +STRINGA 60 4 +BEGIN + KEY "Testo" + PROMPT 42 19 "Tot." +END + +STRINGA 61 10 +BEGIN + KEY "Testo" + PROMPT 48 19 "Ultima" +END + +STRINGA 62 4 +BEGIN + KEY "Testo" + PROMPT 60 19 "Int." +END + +STRINGA 63 10 +BEGIN + KEY "Testo" + PROMPT 66 19 "Prossima" +END + +NUMERO 64 3 +BEGIN + KEY "Totale donazioni SI" + FIELD 90->TOTDONSI + PROMPT 42 20 "" +END + +NUMERO 65 3 +BEGIN + KEY "Totale donazioni AF" + FIELD 90->TOTDONAF + PROMPT 42 21 "" +END + +DATA 66 10 +BEGIN + KEY "Data ultima donazione SI" + FIELD 90->DATAULTSI + PROMPT 48 20 "" +END + +DATA 67 10 +BEGIN + KEY "Data ultima donazione AF" + FIELD 90->DATAULTAF + PROMPT 48 21 "" +END + +NUMERO 68 4 +BEGIN + KEY "Intervallo SI" + FIELD 90->INTSI + PROMPT 60 20 "" +END + +NUMERO 69 4 +BEGIN + KEY "Intervallo AF" + FIELD 90->INTAF + PROMPT 60 21 "" +END + +DATA 70 10 +BEGIN + KEY "Data prossima SI" + FIELD 90->DATAPROSSI + PROMPT 66 20 "" +END + +DATA 71 10 +BEGIN + KEY "Data prossima AF" + FIELD 90->DATAPROSAF + PROMPT 66 21 "" +END + +STRINGA 72 14 +BEGIN + KEY "Gruppo AB0" + FIELD 90->GRUPPOAB0 + PROMPT 1 23 "Gruppo AB0 " +END + +STRINGA 73 12 +BEGIN + KEY "Rh/AntiD" + FIELD 90->RHANTID + PROMPT 16 23 "Rh/AntiD " +END + +STRINGA 74 8 +BEGIN + KEY "Kell" + FIELD 90->KELL + PROMPT 30 23 "Kell " +END + +STRINGA 75 18 +BEGIN + KEY "Fenotipo Rh" + FIELD 90->FENOTIPORH + PROMPT 40 23 "Fenotipo Rh " +END + +STRINGA 76 12 +BEGIN + KEY "Du" + FIELD 90->DU + PROMPT 60 23 "Du " +END + +NUMERO 77 13 +BEGIN + KEY "Codice medico" + FIELD 90->CODMED + PROMPT 1 24 "Medico " +END + +STRINGA 78 25 +BEGIN + KEY "Cognome medico" + FIELD 97->COGNOME + FLAGS "H" + MESSAGE RESET,80|COPY,80 +END + +STRINGA 79 25 +BEGIN + KEY "Nome medico" + FIELD 97->NOME + FLAGS "H" + MESSAGE APPEND,80 +END + +STRINGA 80 51 +BEGIN + KEY "Cognome e nome medico" + PROMPT 15 24 "" +END + +STRINGA 81 10 +BEGIN + KEY "Testo" + PROMPT 1 25 "Mod.conv. " +END + +LISTA 83 22 +BEGIN + KEY "Modalita' di convocazione" + FIELD 90->MODCONV + PROMPT 11 25 "" + ITEM " |" + ITEM "PO|Postale" + ITEM "T1|Tel. abitaz." + ITEM "T2|Tel. lavoro" + ITEM "T3|Tel. altro" + ITEM "TE|Telefonica" + ITEM "IN|Indifferente" +END + +STRINGA 84 19 +BEGIN + KEY "Codice punto di racolta" + FIELD 90->PUNTORACC + PROMPT 35 25 "Punto di racc. " +END + +STRINGA 85 25 +BEGIN + KEY "Descrizione punto di raccolta" + FIELD 300@->S0 + PROMPT 56 25 "" +END + +STRINGA 86 27 +BEGIN + KEY "Testo" + PROMPT 1 26 "Giorni pref.: L M M G V S D" +END + +STRINGA 87 13 +BEGIN + KEY "Testo" + PROMPT 1 27 " Donazione" +END + +STRINGA 88 2 +BEGIN + KEY "Lu" + FIELD 90->GIOPREDON[1,1] + PROMPT 15 27 "" +END + +STRINGA 89 2 +BEGIN + KEY "Ma" + FIELD 90->GIOPREDON[2,2] + PROMPT 17 27 "" +END + +STRINGA 90 2 +BEGIN + KEY "Me" + FIELD 90->GIOPREDON[3,3] + PROMPT 19 27 "" +END + +STRINGA 91 2 +BEGIN + KEY "Gi" + FIELD 90->GIOPREDON[4,4] + PROMPT 21 27 "" +END + +STRINGA 92 2 +BEGIN + KEY "Ve" + FIELD 90->GIOPREDON[5,5] + PROMPT 23 27 "" +END + +STRINGA 93 2 +BEGIN + KEY "Sa" + FIELD 90->GIOPREDON[6,6] + PROMPT 25 27 "" +END + +STRINGA 94 2 +BEGIN + KEY "Do" + FIELD 90->GIOPREDON[7,7] + PROMPT 27 27 "" +END + +STRINGA 95 13 +BEGIN + KEY "Testo" + PROMPT 1 28 " Controlli" +END + +STRINGA 96 2 +BEGIN + KEY "Lu" + FIELD 90->GIOPRECON[1,1] + PROMPT 15 28 "" +END + +STRINGA 97 2 +BEGIN + KEY "Ma" + FIELD 90->GIOPRECON[2,2] + PROMPT 17 28 "" +END + +STRINGA 98 2 +BEGIN + KEY "Me" + FIELD 90->GIOPRECON[3,3] + PROMPT 19 28 "" +END + +STRINGA 99 2 +BEGIN + KEY "Gi" + FIELD 90->GIOPRECON[4,4] + PROMPT 21 28 "" +END + +STRINGA 100 2 +BEGIN + KEY "Ve" + FIELD 90->GIOPRECON[5,5] + PROMPT 23 28 "" +END + +STRINGA 101 2 +BEGIN + KEY "Sa" + FIELD 90->GIOPRECON[6,6] + PROMPT 25 28 "" +END + +STRINGA 102 2 +BEGIN + KEY "Do" + FIELD 90->GIOPRECON[7,7] + PROMPT 27 28 "" +END + +STRINGA 103 10 +BEGIN + KEY "Testo" + PROMPT 33 26 "Cond.occ. " +END + +LISTA 104 19 +BEGIN + KEY "Condizione occupazionale" + FIELD 90->CONDOCC + ITEM " |" + ITEM "01|Occupato" + ITEM "02|Disoccupato" + ITEM "03|In cerca di 1^ occ." + ITEM "04|Pensionato" + ITEM "05|Casalinga" + ITEM "06|Studente" + ITEM "07|Religioso" + ITEM "99|Altro" + PROMPT 44 26 "" +END + +STRINGA 105 10 +BEGIN + KEY "Testo" + PROMPT 33 27 "Pos.prof. " +END + +LISTA 106 19 +BEGIN + KEY "Posizione professionale" + FIELD 90->POSPROF + ITEM " |" + ITEM "01|Imprend./Profess." + ITEM "02|Lavoratore autonomo" + ITEM "03|Coadiuvante" + ITEM "04|Impiegato/Dirigente" + ITEM "05|Altro lav. dip." + ITEM "99|Altro" + PROMPT 44 27 "" +END + +STRINGA 107 10 +BEGIN + KEY "Testo" + PROMPT 33 28 "Ramo att. " +END + +LISTA 108 30 +BEGIN + KEY "Ramo di attivita'" + FIELD 90->RAMOATT + ITEM " |" + ITEM "01|Agricoltura e associati" + ITEM "02|Industria costruzioni" + ITEM "03|Industria manifatturiera" + ITEM "04|Energia, acqua, gas" + ITEM "05|Commercio" + ITEM "06|Pubblica amministrazione" + ITEM "07|Trasporti e comunicazioni" + ITEM "08|Credito e assicurazioni" + ITEM "09|Altri servizi" + ITEM "99|Altro" + PROMPT 44 28 "" +END + +END diff --git a/at/at_pagin.frm b/at/at_pagin.frm index aa99d4c66..ae296d63b 100755 --- a/at/at_pagin.frm +++ b/at/at_pagin.frm @@ -1,637 +1,836 @@ -USE 90 -JOIN 13 ALIAS 300 INTO COM==DOM_CODCOM -JOIN 13 ALIAS 200 INTO COM==RES_CODCOM -JOIN LCP ALIAS 700 INTO CODTAB==DOM_CODLOC -JOIN LCP ALIAS 100 INTO CODTAB==RES_CODLOC -JOIN 96 INTO CODSEZ==CODSEZ -JOIN CTD ALIAS 800 INTO CODTAB==CATDON -JOIN CTN ALIAS 500 INTO CODTAB==CATNOND1 -JOIN CTN ALIAS 600 INTO CODTAB==CATNOND2 -JOIN TCS ALIAS 900 INTO CODTAB==STATO -JOIN 13 ALIAS 400 INTO COM==COMNASC -JOIN 97 INTO CODMED==CODMED - -END - -DESCRIPTION -BEGIN - 90->* "Soggetti Sezioni AVIS" - 13->* "COMUNI" - LCP->* "Localita' postali" - 96->* "Sezioni AVIS" - CTD->* "Categorie donatori" - CTN->* "Categorie non donatori" - TCS->* "Tipi/Esiti controlli sanitari" -END - -GENERAL -BEGIN - OFFSET 0 0 - FONT "Arial" - SIZE 12 - GRID "" -END - -SECTION BODY ODD 60 - -NUMERO 1 13 -BEGIN - KEY "Codice" - FIELD 90->CODICE - PROMPT 1 1 "Codice " -END - -STRINGA 2 33 -BEGIN - KEY "Cognome" - FIELD 90->COGNOME - PROMPT 15 1 "Cognome " -END - -STRINGA 3 30 -BEGIN - KEY "Nome" - FIELD 90->NOME - PROMPT 50 1 "Nome " -END - -DATA 4 18 -BEGIN - KEY "Data nascita" - FIELD 90->DATANASC - PROMPT 1 2 "Nato il " -END - -STRINGA 5 30 -BEGIN - KEY "Comune di nascita" - PROMPT 0 0 "" - FIELD 400@->DENCOM - FLAG "H" - MESSAGE RESET,7|COPY,7 -END - -STRINGA 6 5 -BEGIN - KEY "Provincia di nascita" - PROMPT 0 0 "" - FIELD 400@->PROVCOM - FLAG "H" - MESSAGE APPEND,7 -END - -STRINGA 7 40 -BEGIN - KEY "Comune e provincia di nascita" - PROMPT 20 2 "Nato a " -END - -STRINGA 8 6 -BEGIN - KEY "Testo" - PROMPT 62 2 "Sesso " -END - -LISTA 9 -BEGIN - KEY "Sesso" - PROMPT 68 2 "Sesso " - FIELD 90->SESSO - ITEM "0|Sconosciuto" - ITEM "1|Maschio" - ITEM "2|Femmina" - ITEM "9|Non specif." -END - -STRINGA 10 7 -BEGIN - KEY "Codice sezione" - FIELD 90->CODSEZ - PROMPT 1 4 "Sez. " -END - -STRINGA 11 25 -BEGIN - KEY "Denominazione sezione" - FIELD 96->DENSEZ - PROMPT 9 4 "" -END - -STRINGA 12 7 -BEGIN - KEY "Codice sottog." - FIELD 90->CODSOT - PROMPT 41 4 "Sot. " -END - -STRINGA 13 25 -BEGIN - KEY "Denominazione sottog." - FIELD 96->DENSOT - PROMPT 49 4 "" -END - -STRINGA 14 7 -BEGIN - KEY "Categoria don." - FIELD 90->CATDON - PROMPT 1 5 "Cat. " -END - -STRINGA 15 25 -BEGIN - KEY "Descrizione categoria" - FIELD 800@->S0 - PROMPT 9 5 "" -END - -DATA 16 21 -BEGIN - KEY "Data iscrizione" - FIELD 90->DATAISC - PROMPT 36 5 "Data iscr. " -END - -DATA 17 20 -BEGIN - KEY "Data dimissione" - FIELD 90->DATADIM - PROMPT 59 5 "Data dim. " -END - -STRINGA 18 16 -BEGIN - KEY "Tessera AVIS" - FIELD 90->TESSAVIS - PROMPT 1 7 "Tess.AVIS " -END - -STRINGA 19 13 -BEGIN - KEY "Codice Centro Trasfusionale" - FIELD 90->CODCT - PROMPT 18 7 "Cod.CT " -END - -STRINGA 20 16 -BEGIN - KEY "Cartella clinica" - FIELD 90->CODCL - PROMPT 33 7 "Car.clin. " -END - -STRINGA 21 28 -BEGIN - KEY "Documento di identita'" - FIELD 90->DOCID - PROMPT 51 7 "Doc.id. " -END - -STRINGA 22 26 -BEGIN - KEY "Codice fiscale" - FIELD 90->CF - PROMPT 1 8 "Cod.fisc. " -END - -STRINGA 23 10 -BEGIN - KEY "Testo" - PROMPT 1 10 "Domicilio:" -END - -STRINGA 24 30 -BEGIN - KEY "Domicilio: indirizzo" - FIELD 90->DOM_INDIR - PROMPT 1 11 "" - MESSAGE RESET,30 -END - -STRINGA 25 4 -BEGIN - KEY "Domicilio: codice localita'" - FIELD 90->DOM_CODLOC - PROMPT 0 0 "" - FLAG "H" -END - -STRINGA 26 5 -BEGIN - KEY "Domicilio: CAP" - FIELD 700@->S6 - FIELD 300@->CAPCOM - PROMPT 0 0 "" - FLAG "H" - MESSAGE APPEND,30 -END - -STRINGA 27 30 -BEGIN - KEY "Domicilio: localita'" - FIELD 700@->S0 - PROMPT 0 0 "" - FLAG "H" - MESSAGE APPEND,30 -END - -STRINGA 28 50 -BEGIN - KEY "Domicilio: comune" - FIELD 300@->DENCOM - PROMPT 0 0 "" - FLAG "H" - MESSAGE APPEND,30 -END - -STRINGA 29 5 -BEGIN - KEY "Domicilio: provincia" - FIELD 300@->PROVCOM - PROMPT 0 0 "" - FLAG "H" - MESSAGE APPEND,30 -END - -STRINGA 30 39 3 -BEGIN - KEY "Domicilio: Loc/Com/Prov" - PROMPT 1 12 "" -END - -STRINGA 31 10 -BEGIN - KEY "Testo" - PROMPT 41 10 "Residenza:" -END - -STRINGA 32 30 -BEGIN - KEY "Residenza: indirizzo" - FIELD 90->RES_INDIR - PROMPT 41 11 "" - MESSAGE RESET,38 -END - -STRINGA 33 4 -BEGIN - KEY "Residenza: codice localita'" - FIELD 90->RES_CODLOC - PROMPT 0 0 "" - FLAG "H" -END - -STRINGA 34 5 -BEGIN - KEY "Residenza: CAP" - FIELD 100@->S6 - FIELD 200@->CAPCOM - PROMPT 0 0 "" - FLAG "H" - MESSAGE APPEND,38 -END - -STRINGA 35 30 -BEGIN - KEY "Residenza: localita'" - FIELD 100@->S0 - PROMPT 0 0 "" - FLAG "H" - MESSAGE APPEND,38 -END - -STRINGA 36 50 -BEGIN - KEY "Residenza: comune" - FIELD 200@->DENCOM - PROMPT 0 0 "" - FLAG "H" - MESSAGE APPEND,38 -END - -STRINGA 37 5 -BEGIN - KEY "Residenza: provincia" - FIELD 200@->PROVCOM - PROMPT 0 0 "" - FLAG "H" - MESSAGE APPEND,38 -END - -STRINGA 38 39 3 -BEGIN - KEY "Residenza: Loc/Com/Prov" - PROMPT 41 12 "" -END - -STRINGA 39 23 -BEGIN - KEY "Telefono abitazione" - FIELD 90->TELABI - PROMPT 1 15 "Tel.abi. " -END - -STRINGA 40 23 -BEGIN - KEY "Telefono lavoro" - FIELD 90->TELLAV - PROMPT 25 15 "Tel.lav. " -END - -STRINGA 41 25 -BEGIN - KEY "Telefono altro" - FIELD 90->TELALT - PROMPT 49 15 "Tel.altro " -END - -STRINGA 42 -BEGIN - KEY "Testo" - PROMPT 1 16 "Escluso " -END - -LISTA 43 -BEGIN - KEY "Esclusione" - FIELD 90->ESCLUSO - ITEM " | " - ITEM "TI|T. indeterminato" - ITEM "TD|T. determinato" - PROMPT 10 16 "Escluso " -END - -DATA 44 18 -BEGIN - KEY "Data termine esclusione" - FIELD 90->TERMESCL - PROMPT 27 16 "Termine " -END - -STRINGA 45 35 -BEGIN - KEY "Motivo esclusione" - FIELD 90->MOTESCL - PROMPT 46 16 "Per " -END - -STRINGA 46 26 -BEGIN - KEY "Descrizione stato" - FIELD 900@->S3 - PROMPT 1 17 "Stato " -END - -DATA 47 15 -BEGIN - KEY "Data stato" - FIELD 90->DATASTATO - PROMPT 28 17 "Data " -END - -STRINGA 48 11 -BEGIN - KEY "Tipo ultima idoneita'" - FIELD 90->TIPOULTID - PROMPT 45 17 "Ult. id. " -END - -DATA 49 10 -BEGIN - KEY "Data ultima idoneita'" - FIELD 90->DATAULTID - PROMPT 58 17 "" -END - -STRINGA 50 2 -BEGIN - KEY "Idoneita' alla donazione 1" - FIELD 90->IDON1 - PROMPT 70 17 "" -END - -STRINGA 51 2 -BEGIN - KEY "Idoneita' alla donazione 2" - FIELD 90->IDON2 - PROMPT 73 17 "" -END - -STRINGA 52 2 -BEGIN - KEY "Idoneita' alla donazione 3" - FIELD 90->IDON3 - PROMPT 76 17 "" -END - -STRINGA 53 2 -BEGIN - KEY "Idoneita' alla donazione 4" - FIELD 90->IDON4 - PROMPT 79 17 "" -END - -STRINGA 54 -BEGIN - KEY "Testo" - PROMPT 1 19 "Situazione donazioni:" -END - -NUMERO 55 8 -BEGIN - KEY "Totale donazioni" - FIELD 90->TOTDON - PROMPT 1 20 "Tot. " -END - -STRINGA 56 11 -BEGIN - KEY "Tipo ultima donazione" - FIELD 90->TIPOULTDON - PROMPT 1 21 "Ult.don. " -END - -DATA 57 10 -BEGIN - KEY "Data ultima donazione" - FIELD 90->DATAULTDON - PROMPT 13 21 "" -END - -STRINGA 58 13 -BEGIN - KEY "Testo" - PROMPT 26 20 "Donazioni SI:" -END - -STRINGA 59 13 -BEGIN - KEY "Testo" - PROMPT 26 21 "Donazioni AF:" -END - -STRINGA 60 4 -BEGIN - KEY "Testo" - PROMPT 42 19 "Tot." -END - -STRINGA 61 10 -BEGIN - KEY "Testo" - PROMPT 48 19 "Ultima" -END - -STRINGA 62 4 -BEGIN - KEY "Testo" - PROMPT 60 19 "Int." -END - -STRINGA 63 10 -BEGIN - KEY "Testo" - PROMPT 66 19 "Prossima" -END - -NUMERO 64 3 -BEGIN - KEY "Totale donazioni SI" - FIELD 90->TOTDONSI - PROMPT 42 20 "" -END - -NUMERO 65 3 -BEGIN - KEY "Totale donazioni AF" - FIELD 90->TOTDONAF - PROMPT 42 21 "" -END - -DATA 66 10 -BEGIN - KEY "Data ultima donazione SI" - FIELD 90->DATAULTSI - PROMPT 48 20 "" -END - -DATA 67 10 -BEGIN - KEY "Data ultima donazione AF" - FIELD 90->DATAULTAF - PROMPT 48 21 "" -END - -NUMERO 68 4 -BEGIN - KEY "Intervallo SI" - FIELD 90->INTSI - PROMPT 60 20 "" -END - -NUMERO 69 4 -BEGIN - KEY "Intervallo AF" - FIELD 90->INTAF - PROMPT 60 21 "" -END - -DATA 70 10 -BEGIN - KEY "Data prossima SI" - FIELD 90->DATAPROSSI - PROMPT 66 20 "" -END - -DATA 71 10 -BEGIN - KEY "Data prossima AF" - FIELD 90->DATAPROSAF - PROMPT 66 21 "" -END - -STRINGA 72 14 -BEGIN - KEY "Gruppo AB0" - FIELD 90->GRUPPOAB0 - PROMPT 1 23 "Gruppo AB0 " -END - -STRINGA 73 12 -BEGIN - KEY "Rh/AntiD" - FIELD 90->RHANTID - PROMPT 16 23 "Rh/AntiD " -END - -STRINGA 74 8 -BEGIN - KEY "Kell" - FIELD 90->KELL - PROMPT 30 23 "Kell " -END - -STRINGA 75 18 -BEGIN - KEY "Fenotipo Rh" - FIELD 90->FENOTIPORH - PROMPT 40 23 "Fenotipo Rh " -END - -STRINGA 76 12 -BEGIN - KEY "Du" - FIELD 90->DU - PROMPT 60 23 "Du " -END - -NUMERO 77 13 -BEGIN - KEY "Codice medico" - FIELD 90->CODMED - PROMPT 1 24 "Medico " -END - -STRINGA 78 25 -BEGIN - KEY "Cognome medico" - FIELD 97->COGNOME - FLAGS "H" - MESSAGE RESET,80|COPY,80 -END - -STRINGA 79 25 -BEGIN - KEY "Nome medico" - FIELD 97->NOME - FLAGS "H" - MESSAGE APPEND,80 -END - -STRINGA 80 51 -BEGIN - KEY "Cognome e nome medico" - PROMPT 15 24 "" -END - -STRINGA 81 10 -BEGIN - KEY "Testo" - PROMPT 1 25 "Mod.conv. " -END - -LISTA 83 22 -BEGIN - KEY "Modalita' di convocazione" - FIELD 90->MODCONV - PROMPT 11 25 "" - ITEM " |" - ITEM "PO|Postale" - ITEM "T1|Tel. abitaz." - ITEM "T2|Tel. lavoro" - ITEM "T3|Tel. altro" - ITEM "TE|Telefonica" - ITEM "IN|Indifferente" -END - -END +USE 90 +JOIN CTD ALIAS 100 INTO CODTAB==CATDON +JOIN CTN ALIAS 110 INTO CODTAB==CATNOND1 +JOIN CTN ALIAS 120 INTO CODTAB==CATNOND2 +JOIN TCS ALIAS 200 INTO CODTAB==STATO +JOIN LDN ALIAS 300 INTO CODTAB==PUNTORACC +JOIN LCP ALIAS 400 INTO CODTAB==RES_CODLOC +JOIN LCP ALIAS 410 INTO CODTAB==DOM_CODLOC +JOIN 13 ALIAS 500 INTO COM==RES_CODCOM +JOIN 13 ALIAS 510 INTO COM==DOM_CODCOM +JOIN 13 ALIAS 520 INTO COM==COMNASC +JOIN 96 INTO CODSEZ==CODSEZ +JOIN 97 INTO CODMED==CODMED + +END + +DESCRIPTION +BEGIN + 90->* "Soggetti Sezioni AVIS" + CTD->* "Categorie donatori" + CTN->* "Categorie non donatori" + TCS->* "Tipi/Esiti controlli sanitari" + LDN->* "Luoghi di donazione/Punti di raccolta" + LCP->* "Localita' postali" + 13->* "COMUNI" + 96->* "Sezioni AVIS" + 97->* "Medici" +END + +GENERAL +BEGIN + OFFSET 0 0 + FONT "Arial" + SIZE 12 + GRID "" +END + +SECTION BODY ODD 33 + +NUMERO 1 15 +BEGIN + KEY "Codice" + FIELD 90->CODICE + PROMPT 1 1 "Codice " +END + +STRINGA 2 33 +BEGIN + KEY "Cognome" + FIELD 90->COGNOME + PROMPT 17 1 "Cognome " +END + +STRINGA 3 30 +BEGIN + KEY "Nome" + FIELD 90->NOME + PROMPT 52 1 "Nome " +END + +DATA 4 18 +BEGIN + KEY "Data nascita" + FIELD 90->DATANASC + PROMPT 1 2 "Nato il " +END + +STRINGA 5 30 +BEGIN + KEY "Comune di nascita" + PROMPT 0 0 "" + FIELD 520@->DENCOM + FLAG "H" + MESSAGE RESET,7|COPY,7 +END + +STRINGA 6 5 +BEGIN + KEY "Provincia di nascita" + PROMPT 0 0 "" + FIELD 520@->PROVCOM + FLAG "H" + MESSAGE APPEND,7 +END + +STRINGA 7 40 +BEGIN + KEY "Comune e provincia di nascita" + PROMPT 20 2 "Nato a " +END + +STRINGA 8 6 +BEGIN + KEY "Testo" + PROMPT 62 2 "Sesso " +END + +LISTA 9 +BEGIN + KEY "Sesso" + PROMPT 68 2 "Sesso " + FIELD 90->SESSO + ITEM "0|Sconosciuto" + ITEM "1|Maschio" + ITEM "2|Femmina" + ITEM "9|Non specif." +END + +STRINGA 10 7 +BEGIN + KEY "Codice sezione" + FIELD 90->CODSEZ + PROMPT 1 4 "Sez. " +END + +STRINGA 11 25 +BEGIN + KEY "Denominazione sezione" + FIELD 96->DENSEZ + PROMPT 9 4 "" +END + +STRINGA 12 7 +BEGIN + KEY "Codice sottog." + FIELD 90->CODSOT + PROMPT 41 4 "Sot. " +END + +STRINGA 13 25 +BEGIN + KEY "Denominazione sottog." + FIELD 96->DENSOT + PROMPT 49 4 "" +END + +STRINGA 14 7 +BEGIN + KEY "Categoria don." + FIELD 90->CATDON + PROMPT 1 5 "Cat. " +END + +STRINGA 15 25 +BEGIN + KEY "Descrizione categoria" + FIELD 100@->S0 + PROMPT 9 5 "" +END + +DATA 16 21 +BEGIN + KEY "Data iscrizione" + FIELD 90->DATAISC + PROMPT 36 5 "Data iscr. " +END + +DATA 17 20 +BEGIN + KEY "Data dimissione" + FIELD 90->DATADIM + PROMPT 59 5 "Data dim. " +END + +STRINGA 18 16 +BEGIN + KEY "Tessera AVIS" + FIELD 90->TESSAVIS + PROMPT 1 7 "Tess.AVIS " +END + +STRINGA 19 13 +BEGIN + KEY "Codice Centro Trasfusionale" + FIELD 90->CODCT + PROMPT 18 7 "Cod.CT " +END + +STRINGA 20 16 +BEGIN + KEY "Cartella clinica" + FIELD 90->CODCL + PROMPT 33 7 "Car.clin. " +END + +STRINGA 21 28 +BEGIN + KEY "Documento di identita'" + FIELD 90->DOCID + PROMPT 51 7 "Doc.id. " +END + +STRINGA 22 26 +BEGIN + KEY "Codice fiscale" + FIELD 90->CF + PROMPT 1 8 "Cod.fisc. " +END + +STRINGA 23 10 +BEGIN + KEY "Testo" + PROMPT 1 10 "Domicilio:" +END + +STRINGA 24 30 +BEGIN + KEY "Domicilio: indirizzo" + FIELD 90->DOM_INDIR + PROMPT 1 11 "" + MESSAGE RESET,30 +END + +STRINGA 25 4 +BEGIN + KEY "Domicilio: codice localita'" + FIELD 90->DOM_CODLOC + PROMPT 0 0 "" + FLAG "H" +END + +STRINGA 26 5 +BEGIN + KEY "Domicilio: CAP" + FIELD 410@->S6 + FIELD 510@->CAPCOM + PROMPT 0 0 "" + FLAG "H" + MESSAGE APPEND,30 +END + +STRINGA 27 30 +BEGIN + KEY "Domicilio: localita'" + FIELD 410@->S0 + PROMPT 0 0 "" + FLAG "H" + MESSAGE APPEND,30 +END + +STRINGA 28 50 +BEGIN + KEY "Domicilio: comune" + FIELD 510@->DENCOM + PROMPT 0 0 "" + FLAG "H" + MESSAGE APPEND,30 +END + +STRINGA 29 5 +BEGIN + KEY "Domicilio: provincia" + FIELD 510@->PROVCOM + PROMPT 0 0 "" + FLAG "H" + MESSAGE APPEND,30 +END + +STRINGA 30 39 3 +BEGIN + KEY "Domicilio: Loc/Com/Prov" + PROMPT 1 12 "" +END + +STRINGA 31 10 +BEGIN + KEY "Testo" + PROMPT 41 10 "Residenza:" +END + +STRINGA 32 30 +BEGIN + KEY "Residenza: indirizzo" + FIELD 90->RES_INDIR + PROMPT 41 11 "" + MESSAGE RESET,38 +END + +STRINGA 33 4 +BEGIN + KEY "Residenza: codice localita'" + FIELD 90->RES_CODLOC + PROMPT 0 0 "" + FLAG "H" +END + +STRINGA 34 5 +BEGIN + KEY "Residenza: CAP" + FIELD 400@->S6 + FIELD 500@->CAPCOM + PROMPT 0 0 "" + FLAG "H" + MESSAGE APPEND,38 +END + +STRINGA 35 30 +BEGIN + KEY "Residenza: localita'" + FIELD 400@->S0 + PROMPT 0 0 "" + FLAG "H" + MESSAGE APPEND,38 +END + +STRINGA 36 50 +BEGIN + KEY "Residenza: comune" + FIELD 500@->DENCOM + PROMPT 0 0 "" + FLAG "H" + MESSAGE APPEND,38 +END + +STRINGA 37 5 +BEGIN + KEY "Residenza: provincia" + FIELD 500@->PROVCOM + PROMPT 0 0 "" + FLAG "H" + MESSAGE APPEND,38 +END + +STRINGA 38 39 3 +BEGIN + KEY "Residenza: Loc/Com/Prov" + PROMPT 41 12 "" +END + +STRINGA 39 23 +BEGIN + KEY "Telefono abitazione" + FIELD 90->TELABI + PROMPT 1 15 "Tel.abi. " +END + +STRINGA 40 23 +BEGIN + KEY "Telefono lavoro" + FIELD 90->TELLAV + PROMPT 25 15 "Tel.lav. " +END + +STRINGA 41 25 +BEGIN + KEY "Telefono altro" + FIELD 90->TELALT + PROMPT 49 15 "Tel.altro " +END + +STRINGA 42 +BEGIN + KEY "Testo" + PROMPT 1 16 "Escluso " +END + +LISTA 43 +BEGIN + KEY "Esclusione" + FIELD 90->ESCLUSO + ITEM " | " + ITEM "TI|T. indeterminato" + ITEM "TD|T. determinato" + PROMPT 10 16 "Escluso " +END + +DATA 44 18 +BEGIN + KEY "Data termine esclusione" + FIELD 90->TERMESCL + PROMPT 27 16 "Termine " +END + +STRINGA 45 35 +BEGIN + KEY "Motivo esclusione" + FIELD 90->MOTESCL + PROMPT 46 16 "Per " +END + +STRINGA 46 26 +BEGIN + KEY "Descrizione stato" + FIELD 200@->S3 + PROMPT 1 17 "Stato " +END + +DATA 47 15 +BEGIN + KEY "Data stato" + FIELD 90->DATASTATO + PROMPT 28 17 "Data " +END + +STRINGA 48 11 +BEGIN + KEY "Tipo ultima idoneita'" + FIELD 90->TIPOULTID + PROMPT 45 17 "Ult. id. " +END + +DATA 49 10 +BEGIN + KEY "Data ultima idoneita'" + FIELD 90->DATAULTID + PROMPT 58 17 "" +END + +STRINGA 50 2 +BEGIN + KEY "Idoneita' alla donazione 1" + FIELD 90->IDON1 + PROMPT 70 17 "" +END + +STRINGA 51 2 +BEGIN + KEY "Idoneita' alla donazione 2" + FIELD 90->IDON2 + PROMPT 73 17 "" +END + +STRINGA 52 2 +BEGIN + KEY "Idoneita' alla donazione 3" + FIELD 90->IDON3 + PROMPT 76 17 "" +END + +STRINGA 53 2 +BEGIN + KEY "Idoneita' alla donazione 4" + FIELD 90->IDON4 + PROMPT 79 17 "" +END + +STRINGA 54 +BEGIN + KEY "Testo" + PROMPT 1 19 "Situazione donazioni:" +END + +NUMERO 55 8 +BEGIN + KEY "Totale donazioni" + FIELD 90->TOTDON + PROMPT 1 20 "Tot. " +END + +STRINGA 56 11 +BEGIN + KEY "Tipo ultima donazione" + FIELD 90->TIPOULTDON + PROMPT 1 21 "Ult.don. " +END + +DATA 57 10 +BEGIN + KEY "Data ultima donazione" + FIELD 90->DATAULTDON + PROMPT 13 21 "" +END + +STRINGA 58 13 +BEGIN + KEY "Testo" + PROMPT 26 20 "Donazioni SI:" +END + +STRINGA 59 13 +BEGIN + KEY "Testo" + PROMPT 26 21 "Donazioni AF:" +END + +STRINGA 60 4 +BEGIN + KEY "Testo" + PROMPT 42 19 "Tot." +END + +STRINGA 61 10 +BEGIN + KEY "Testo" + PROMPT 48 19 "Ultima" +END + +STRINGA 62 4 +BEGIN + KEY "Testo" + PROMPT 60 19 "Int." +END + +STRINGA 63 10 +BEGIN + KEY "Testo" + PROMPT 66 19 "Prossima" +END + +NUMERO 64 3 +BEGIN + KEY "Totale donazioni SI" + FIELD 90->TOTDONSI + PROMPT 42 20 "" +END + +NUMERO 65 3 +BEGIN + KEY "Totale donazioni AF" + FIELD 90->TOTDONAF + PROMPT 42 21 "" +END + +DATA 66 10 +BEGIN + KEY "Data ultima donazione SI" + FIELD 90->DATAULTSI + PROMPT 48 20 "" +END + +DATA 67 10 +BEGIN + KEY "Data ultima donazione AF" + FIELD 90->DATAULTAF + PROMPT 48 21 "" +END + +NUMERO 68 4 +BEGIN + KEY "Intervallo SI" + FIELD 90->INTSI + PROMPT 60 20 "" +END + +NUMERO 69 4 +BEGIN + KEY "Intervallo AF" + FIELD 90->INTAF + PROMPT 60 21 "" +END + +DATA 70 10 +BEGIN + KEY "Data prossima SI" + FIELD 90->DATAPROSSI + PROMPT 66 20 "" +END + +DATA 71 10 +BEGIN + KEY "Data prossima AF" + FIELD 90->DATAPROSAF + PROMPT 66 21 "" +END + +STRINGA 72 14 +BEGIN + KEY "Gruppo AB0" + FIELD 90->GRUPPOAB0 + PROMPT 1 23 "Gruppo AB0 " +END + +STRINGA 73 12 +BEGIN + KEY "Rh/AntiD" + FIELD 90->RHANTID + PROMPT 16 23 "Rh/AntiD " +END + +STRINGA 74 8 +BEGIN + KEY "Kell" + FIELD 90->KELL + PROMPT 30 23 "Kell " +END + +STRINGA 75 18 +BEGIN + KEY "Fenotipo Rh" + FIELD 90->FENOTIPORH + PROMPT 40 23 "Fenotipo Rh " +END + +STRINGA 76 12 +BEGIN + KEY "Du" + FIELD 90->DU + PROMPT 60 23 "Du " +END + +NUMERO 77 13 +BEGIN + KEY "Codice medico" + FIELD 90->CODMED + PROMPT 1 24 "Medico " +END + +STRINGA 78 25 +BEGIN + KEY "Cognome medico" + FIELD 97->COGNOME + FLAGS "H" + MESSAGE RESET,80|COPY,80 +END + +STRINGA 79 25 +BEGIN + KEY "Nome medico" + FIELD 97->NOME + FLAGS "H" + MESSAGE APPEND,80 +END + +STRINGA 80 51 +BEGIN + KEY "Cognome e nome medico" + PROMPT 15 24 "" +END + +STRINGA 81 10 +BEGIN + KEY "Testo" + PROMPT 1 25 "Mod.conv. " +END + +LISTA 83 22 +BEGIN + KEY "Modalita' di convocazione" + FIELD 90->MODCONV + PROMPT 11 25 "" + ITEM " |" + ITEM "PO|Postale" + ITEM "T1|Tel. abitaz." + ITEM "T2|Tel. lavoro" + ITEM "T3|Tel. altro" + ITEM "TE|Telefonica" + ITEM "IN|Indifferente" +END + +STRINGA 84 19 +BEGIN + KEY "Codice punto di racolta" + FIELD 90->PUNTORACC + PROMPT 35 25 "Punto di racc. " +END + +STRINGA 85 25 +BEGIN + KEY "Descrizione punto di raccolta" + FIELD 300@->S0 + PROMPT 56 25 "" +END + +STRINGA 86 27 +BEGIN + KEY "Testo" + PROMPT 1 26 "Giorni pref.: L M M G V S D" +END + +STRINGA 87 13 +BEGIN + KEY "Testo" + PROMPT 1 27 " Donazione" +END + +STRINGA 88 2 +BEGIN + KEY "Lu" + FIELD 90->GIOPREDON[1,1] + PROMPT 15 27 "" +END + +STRINGA 89 2 +BEGIN + KEY "Ma" + FIELD 90->GIOPREDON[2,2] + PROMPT 17 27 "" +END + +STRINGA 90 2 +BEGIN + KEY "Me" + FIELD 90->GIOPREDON[3,3] + PROMPT 19 27 "" +END + +STRINGA 91 2 +BEGIN + KEY "Gi" + FIELD 90->GIOPREDON[4,4] + PROMPT 21 27 "" +END + +STRINGA 92 2 +BEGIN + KEY "Ve" + FIELD 90->GIOPREDON[5,5] + PROMPT 23 27 "" +END + +STRINGA 93 2 +BEGIN + KEY "Sa" + FIELD 90->GIOPREDON[6,6] + PROMPT 25 27 "" +END + +STRINGA 94 2 +BEGIN + KEY "Do" + FIELD 90->GIOPREDON[7,7] + PROMPT 27 27 "" +END + +STRINGA 95 13 +BEGIN + KEY "Testo" + PROMPT 1 28 " Controlli" +END + +STRINGA 96 2 +BEGIN + KEY "Lu" + FIELD 90->GIOPRECON[1,1] + PROMPT 15 28 "" +END + +STRINGA 97 2 +BEGIN + KEY "Ma" + FIELD 90->GIOPRECON[2,2] + PROMPT 17 28 "" +END + +STRINGA 98 2 +BEGIN + KEY "Me" + FIELD 90->GIOPRECON[3,3] + PROMPT 19 28 "" +END + +STRINGA 99 2 +BEGIN + KEY "Gi" + FIELD 90->GIOPRECON[4,4] + PROMPT 21 28 "" +END + +STRINGA 100 2 +BEGIN + KEY "Ve" + FIELD 90->GIOPRECON[5,5] + PROMPT 23 28 "" +END + +STRINGA 101 2 +BEGIN + KEY "Sa" + FIELD 90->GIOPRECON[6,6] + PROMPT 25 28 "" +END + +STRINGA 102 2 +BEGIN + KEY "Do" + FIELD 90->GIOPRECON[7,7] + PROMPT 27 28 "" +END + +STRINGA 103 10 +BEGIN + KEY "Testo" + PROMPT 33 26 "Cond.occ. " +END + +LISTA 104 19 +BEGIN + KEY "Condizione occupazionale" + FIELD 90->CONDOCC + ITEM " |" + ITEM "01|Occupato" + ITEM "02|Disoccupato" + ITEM "03|In cerca di 1^ occ." + ITEM "04|Pensionato" + ITEM "05|Casalinga" + ITEM "06|Studente" + ITEM "07|Religioso" + ITEM "99|Altro" + PROMPT 44 26 "" +END + +STRINGA 105 10 +BEGIN + KEY "Testo" + PROMPT 33 27 "Pos.prof. " +END + +LISTA 106 19 +BEGIN + KEY "Posizione professionale" + FIELD 90->POSPROF + ITEM " |" + ITEM "01|Imprend./Profess." + ITEM "02|Lavoratore autonomo" + ITEM "03|Coadiuvante" + ITEM "04|Impiegato/Dirigente" + ITEM "05|Altro lav. dip." + ITEM "99|Altro" + PROMPT 44 27 "" +END + +STRINGA 107 10 +BEGIN + KEY "Testo" + PROMPT 33 28 "Ramo att. " +END + +LISTA 108 30 +BEGIN + KEY "Ramo di attivita'" + FIELD 90->RAMOATT + ITEM " |" + ITEM "01|Agricoltura e associati" + ITEM "02|Industria costruzioni" + ITEM "03|Industria manifatturiera" + ITEM "04|Energia, acqua, gas" + ITEM "05|Commercio" + ITEM "06|Pubblica amministrazione" + ITEM "07|Trasporti e comunicazioni" + ITEM "08|Credito e assicurazioni" + ITEM "09|Altri servizi" + ITEM "99|Altro" + PROMPT 44 28 "" +END + +END diff --git a/at/atlib1.cpp b/at/atlib1.cpp index 9e8efb75c..8f5fb2563 100755 --- a/at/atlib1.cpp +++ b/at/atlib1.cpp @@ -58,9 +58,10 @@ char modstato_tcs(TString16 tipo) void con_reord(TRectype& soggetto, TRecord_array* controlli) { - TDate data; - TString16 tipo; + TDate data, prossdata; + TString16 tipo, prosstipo; char modstato = ' '; + int r_modifica = -1; // eventuale ultima riga di modifica id. int r_ultid = -1; // riga ultima idoneità int r_ultstato = -1; // riga ultimo stato valido char penultstato = ' '; // penultimo stato valido @@ -72,12 +73,20 @@ void con_reord(TRectype& soggetto, TRecord_array* controlli) const TRectype& row = controlli->row(r); tipo = row.get(CON_TIPOCON); modstato = modstato_tcs(tipo); + if (modstato == 'M') + { + if (r_modifica == -1) + r_modifica = r; + } + else + { if ((modstato != ' ') && (r_ultstato == -1)) r_ultstato = r; else if ((modstato != ' ') && (penultstato == ' ')) penultstato = modstato; if ((modstato == 'I') && (r_ultid == -1)) r_ultid = r; + } } TString16 id1 = ' '; TString16 id2 = ' '; @@ -86,11 +95,13 @@ void con_reord(TRectype& soggetto, TRecord_array* controlli) int intsi = 0; int intaf = 0; tipo = ' '; + prosstipo = ' '; data = TDate(NULLDATE); + prossdata = TDate(NULLDATE); if (r_ultid != -1) { - const TRectype& row = controlli->row(r_ultid); + const TRectype& row = controlli->row(r_ultid); data = TDate(row.get(CON_DATACON)); tipo = row.get(CON_TIPOCON); id1 = row.get(CON_IDON1); @@ -99,6 +110,16 @@ void con_reord(TRectype& soggetto, TRecord_array* controlli) id4 = row.get(CON_IDON4); intsi = row.get_int(CON_INTSI); intaf = row.get_int(CON_INTAF); + if (r_modifica > r_ultid) + { + const TRectype& rowm = controlli->row(r_modifica); + id1 = rowm.get(CON_IDON1); + id2 = rowm.get(CON_IDON2); + id3 = rowm.get(CON_IDON3); + id4 = rowm.get(CON_IDON4); + intsi = rowm.get_int(CON_INTSI); + intaf = rowm.get_int(CON_INTAF); + } } soggetto.put(SOG_DATAULTID,data); soggetto.put(SOG_TIPOULTID,tipo); @@ -115,10 +136,14 @@ void con_reord(TRectype& soggetto, TRecord_array* controlli) const TRectype& row = controlli->row(r_ultstato); dataultstato = TDate(row.get(CON_DATACON)); tipo = row.get(CON_TIPOCON); + prosstipo = row.get(CON_PROSSTIPO); + prossdata = TDate(row.get(CON_PROSSDATA)); ultstato = modstato_tcs(tipo); } soggetto.put(SOG_STATO,tipo); soggetto.put(SOG_DATASTATO,dataultstato); + soggetto.put(SOG_PROS_STATO,prosstipo); + soggetto.put(SOG_DATA_PROS,prossdata); don_datepross(soggetto); @@ -129,6 +154,16 @@ void con_reord(TRectype& soggetto, TRecord_array* controlli) data = soggetto.get_date(SOG_DATAPROSAF); if (data < dataultstato) soggetto.put(SOG_DATAPROSAF,dataultstato); } + if ((penultstato == '1') && (ultstato == 'F')) + { + data = soggetto.get_date(SOG_DATAPROSSI); + if (data < dataultstato) soggetto.put(SOG_DATAPROSSI,dataultstato); + } + if ((penultstato == '2') && (ultstato == 'F')) + { + data = soggetto.get_date(SOG_DATAPROSAF); + if (data < dataultstato) soggetto.put(SOG_DATAPROSAF,dataultstato); + } } void don_datepross(TRectype& soggetto) @@ -152,7 +187,7 @@ void don_datepross(TRectype& soggetto) bool id_af = FALSE; // il soggetto è idoneo per af? modstato = modstato_tcs(stato); - if (modstato == 'I' || modstato == 'F') // il soggetto è idoneo + if (modstato == 'I' || modstato == 'F' || modstato == '1' || modstato == '2') // il soggetto è idoneo { id_si = (is_idon(id1,id2,id3,id4,IDON_SI) && intsi != 0); // il soggetto è idoneo SI id_af = (is_idon(id1,id2,id3,id4,IDON_AF) && intaf != 0); // il soggetto è idoneo AF @@ -207,6 +242,10 @@ void don_datepross(TRectype& soggetto) dataaf = soggetto.get_date(SOG_DATAULTID); } } + if (modstato == '1') + datasi = NULLDATE; + if (modstato == '2') + dataaf = NULLDATE; soggetto.put(SOG_DATAPROSSI,datasi); soggetto.put(SOG_DATAPROSAF,dataaf); } diff --git a/at/avis.mnu b/at/avis.mnu index 63835d16b..55f5be39c 100755 --- a/at/avis.mnu +++ b/at/avis.mnu @@ -1,8 +1,8 @@ -0|Menu principale|20 +0|Menu principale| 0|Archivi|1 0|Tabelle|2 0|Operazioni periodiche|3 -0|Elenchi di soggetti|4 +0|Elenchi|4 0|Stampe per convocazioni|5 0|Stampe di controllo|6 0|Stampa tessere associative|at1 -3 @@ -11,18 +11,20 @@ 1|Soggetti|at0 -0 1|Giornaliero donazioni/controlli|at0 -1 1|Giornaliero controlli|at0 -2 -1|Convocazioni Bologna|at0 -3 +1|Convocazioni su punto di raccolta|at0 -3 +1|Spostamento convocazioni|at0 -4 2|Tabelle|23 2|Sezioni|ba3 -3 at0700a 96 2|Medici|ba3 -3 at0800a 97 -2|Gruppi aziendali|ba3 -0 gaz 2|Benemerenze|ba3 -0 bnz 2|Categorie donatori|ba3 -0 ctd 2|Categorie non donatori|ba3 -0 ctn +2|Gruppi aziendali|ba3 -0 gaz 2|Idoneita' alla donazione|ba3 -0 ido 2|Localita' postali|ba3 -0 lcp 2|Luoghi di donazione|ba3 -0 ldn 2|Luoghi di lavoro|ba3 -0 ldl +2|Motivi per controlli sanitari|ba3 -0 mtc 2|Professioni|ba3 -0 prf 2|Tipi di donazione|ba3 -0 tdn 2|Tipi/Esiti controlli sanitari|ba3 -0 tcs @@ -32,32 +34,25 @@ 3|Chiusura|at1 -0 3|Attribuzione benemerenze|at1 -1 3|Sblocco sospesi|at1 -2 -4|Elenchi di soggetti|22 +3|Modifica intervalli di don.|at1 -4 +3|Sblocco esclusi|at1 -5 +4|Elenchi|22 4|Elenco sospesi|at2 -0 4|Elenco per data di nascita|at2 -1 4|Elenco esclusi|at2 -2 4|Soggetti modificati|at2 -3 4|Elenco idonei|at2 -4 4|Elenco iscritti/dimessi|at2 -5 +4|Elenco per categorie|at2 -6 5|Stampe per convocazioni|22 -5|Scadenze di donazione|at4 -1 -5|Urgenze|at4 -2 -5|Convocazioni Parma|at4 -3 +5|Scadenze di donazione|at4 -0 +5|Urgenze|at4 -1 +5|Convocazioni Parma|at4 -2 +5|Stampa convocazioni su punto di raccolta|at4 -3 6|Stampe di controllo|25 6|Medici|at6 -0 6|Sezioni|at6 -1 -6|Benemerenze|ba3 -1 bnz -6|Categorie donatori|ba3 -1 ctd -6|Categorie non donatori|ba3 -1 ctn -6|Idoneita' alla donazione|ba3 -1 ido -6|Localita' postali|ba3 -1 lcp -6|Luoghi di donazione|ba3 -1 ldn -6|Luoghi di lavoro|ba3 -1 ldl -6|Professioni|ba3 -1 prf -6|Tipi di donazione|ba3 -1 tdn -6|Tipi/Esiti controlli sanitari|ba3 -1 tcs -6|Stati esteri|ba3 -1 %sta -6|Comuni|ba6 -1 +6|Donazioni|at6 -2 99|Manutenzione|04 99|Archivi|ba1 99|Utenti|ba1 -3 diff --git a/at/batbbnz.uml b/at/batbbnz.uml index 33d9be4d6..d90b31d18 100755 --- a/at/batbbnz.uml +++ b/at/batbbnz.uml @@ -19,7 +19,7 @@ BEGIN OUTPUT F_TABBNZ_CODTAB CODTAB OUTPUT F_TABBNZ_DESCR S0 KEY 1 - FLAGS "URZ" + FLAGS "U" END STRING F_TABBNZ_DESCR 30 diff --git a/at/batbctd.uml b/at/batbctd.uml index ad25f7b10..d60daf20d 100755 --- a/at/batbctd.uml +++ b/at/batbctd.uml @@ -19,7 +19,7 @@ BEGIN OUTPUT F_TABCTD_CODTAB CODTAB OUTPUT F_TABCTD_DESCR S0 KEY 1 - FLAGS "URZ" + FLAGS "U" END STRING F_TABCTD_DESCR 30 diff --git a/at/batbctn.uml b/at/batbctn.uml index 8b7fa6776..e6b95279f 100755 --- a/at/batbctn.uml +++ b/at/batbctn.uml @@ -19,7 +19,7 @@ BEGIN OUTPUT F_TABCTN_CODTAB CODTAB OUTPUT F_TABCTN_DESCR S0 KEY 1 - FLAGS "URZ" + FLAGS "U" END STRING F_TABCTN_DESCR 30 diff --git a/at/batbgaz.uml b/at/batbgaz.uml index f8845fbb7..e7d45e544 100755 --- a/at/batbgaz.uml +++ b/at/batbgaz.uml @@ -19,7 +19,7 @@ BEGIN OUTPUT F_TABGAZ_CODTAB CODTAB OUTPUT F_TABGAZ_DESCR S0 KEY 1 - FLAGS "URZ" + FLAGS "U" END STRING F_TABGAZ_DESCR 30 diff --git a/at/batbido.uml b/at/batbido.uml index 898cfd099..066e7cf1f 100755 --- a/at/batbido.uml +++ b/at/batbido.uml @@ -4,7 +4,7 @@ TOOLBAR "" 0 20 0 2 #include ENDPAGE -PAGE "Idoneità alla donazione" -1 -1 78 7 +PAGE "Idoneita' alla donazione" -1 -1 78 7 STRING F_TABIDO_CODTAB 2 BEGIN @@ -19,14 +19,14 @@ BEGIN OUTPUT F_TABIDO_CODTAB CODTAB OUTPUT F_TABIDO_DESCR S0 KEY 1 - FLAGS "URZ" + FLAGS "U" END STRING F_TABIDO_DESCR 30 BEGIN PROMPT 2 3 "Descrizione " FIELD S0 - HELP "Inserire la descrizione della idoneità" + HELP "Inserire la descrizione della idoneita'" USE IDO KEY 2 CHECKTYPE REQUIRED INPUT S0 F_TABIDO_DESCR @@ -41,7 +41,7 @@ BEGIN PROMPT 2 5 "Procedura di don. " FIELD S6 #include "procdon.h" - HELP "Indicare la procedura di donazione collegata alla idoneità" + HELP "Indicare la procedura di donazione collegata alla idoneita'" END ENDPAGE diff --git a/at/batblcp.uml b/at/batblcp.uml index fdc617605..7befd1839 100755 --- a/at/batblcp.uml +++ b/at/batblcp.uml @@ -20,7 +20,7 @@ BEGIN OUTPUT F_TABLCP_CODTAB CODTAB OUTPUT F_TABLCP_LOCALITA S0 KEY 1 - FLAGS "URZ" + FLAGS "U" END STRING F_TABLCP_LOCALITA 30 diff --git a/at/batbldl.uml b/at/batbldl.uml index fc7ef5db3..aca3a6011 100755 --- a/at/batbldl.uml +++ b/at/batbldl.uml @@ -19,7 +19,7 @@ BEGIN OUTPUT F_TABLDL_CODTAB CODTAB OUTPUT F_TABLDL_DESCR S0 KEY 1 - FLAGS "URZ" + FLAGS "U" END STRING F_TABLDL_DESCR 40 diff --git a/at/batbldn.h b/at/batbldn.h index c489cba86..0de7efdd8 100755 --- a/at/batbldn.h +++ b/at/batbldn.h @@ -1,3 +1,10 @@ #define F_TABLDN_CODTAB 100 #define F_TABLDN_DESCR 101 -#define DLG_DEL 105 +#define F_TABLDN_INDIR 102 +#define F_TABLDN_LOC 103 +#define F_TABLDN_COM 104 +#define F_TABLDN_DENCOM 105 +#define F_TABLDN_DENLOC 106 +#define F_TABLDN_PROVCOM 107 +#define F_TABLDN_CAPCOM 108 +#define DLG_DEL 110 diff --git a/at/batbldn.uml b/at/batbldn.uml index 1bc7f2a58..7242226ff 100755 --- a/at/batbldn.uml +++ b/at/batbldn.uml @@ -8,33 +8,109 @@ PAGE "Luoghi di donazione" -1 -1 78 7 STRING F_TABLDN_CODTAB 4 BEGIN - PROMPT 2 1 "Codice " + PROMPT 2 1 "Codice " FIELD CODTAB HELP "Inserire il codice del luogo di donazione" USE LDN CHECKTYPE REQUIRED INPUT CODTAB F_TABLDN_CODTAB DISPLAY "Codice" CODTAB - DISPLAY "Descrizione@25" S0 + DISPLAY "Descrizione@50" S0 OUTPUT F_TABLDN_CODTAB CODTAB OUTPUT F_TABLDN_DESCR S0 KEY 1 - FLAGS "URZ" + FLAGS "U" END -STRING F_TABLDN_DESCR 25 +STRING F_TABLDN_DESCR 50 BEGIN - PROMPT 2 3 "Descrizione " + PROMPT 2 3 "Luogo " FIELD S0 HELP "Inserire la descrizione del luogo" USE LDN KEY 2 CHECKTYPE REQUIRED INPUT S0 F_TABLDN_DESCR - DISPLAY "Descrizione@25" S0 + DISPLAY "Descrizione@50" S0 DISPLAY "Codice" CODTAB COPY OUTPUT F_TABLDN_CODTAB KEY 2 END +STRING F_TABLDN_INDIR 50 +BEGIN + PROMPT 2 5 "Indirizzo " + FIELD S1 +END + +STRING F_TABLDN_COM 4 +BEGIN + PROMPT 2 6 "Comune " + FIELD S6 + FLAGS "U" + USE LF_COMUNI + INPUT STATO "" + INPUT COM F_TABLDN_COM + #include + OUTPUT F_TABLDN_COM COM + OUTPUT F_TABLDN_DENCOM DENCOM + OUTPUT F_TABLDN_PROVCOM PROVCOM + OUTPUT F_TABLDN_CAPCOM CAPCOM + CHECKTYPE NORMAL + WARNING "Comune assente" +END + +STRING F_TABLDN_DENCOM 48 +BEGIN + PROMPT 19 6 "" + USE LF_COMUNI KEY 2 + INPUT DENCOM F_TABLDN_DENCOM + #include + COPY OUTPUT F_TABLDN_COM + CHECKTYPE NORMAL +END + +STRING F_TABLDN_LOC 4 +BEGIN + PROMPT 2 7 "Localita' " + FIELD S7 + FLAGS "U" + USE LCP SELECT S7=#F_TABLDN_COM + INPUT CODTAB F_TABLDN_LOC + DISPLAY "Codice" CODTAB + DISPLAY "Localita'@30" S0 + DISPLAY "CAP@5" S6 + OUTPUT F_TABLDN_LOC CODTAB + OUTPUT F_TABLDN_DENLOC S0 + OUTPUT F_TABLDN_CAPCOM S6 + OUTPUT F_TABLDN_COM S7 + CHECKTYPE NORMAL + HELP "Codice localit… postale se diversa dal comune" +END + +STRING F_TABLDN_DENLOC 30 +BEGIN + PROMPT 19 7 "" + USE LCP KEY 2 SELECT S7=#F_TABLDN_COM + INPUT S0 F_TABLDN_DENLOC + DISPLAY "Località@30" S0 + DISPLAY "CAP@5" S6 + DISPLAY "Codice" CODTAB + COPY OUTPUT F_TABLDN_LOC + CHECKTYPE NORMAL + HELP "Localit… postale se diversa dal comune" +END + +STRING F_TABLDN_PROVCOM 5 +BEGIN + PROMPT 71 6 "" + FLAGS "D" +END + +STRING F_TABLDN_CAPCOM 5 +BEGIN + PROMPT 67 7 "CAP " + FLAGS "D" +END + ENDPAGE ENDMASK diff --git a/at/batbmtc.h b/at/batbmtc.h new file mode 100755 index 000000000..370810a4c --- /dev/null +++ b/at/batbmtc.h @@ -0,0 +1,3 @@ +#define F_TABMTC_CODTAB 100 +#define F_TABMTC_DESCR 101 +#define DLG_DEL 105 diff --git a/at/batbmtc.uml b/at/batbmtc.uml new file mode 100755 index 000000000..205740ac4 --- /dev/null +++ b/at/batbmtc.uml @@ -0,0 +1,40 @@ +#include "batbmtc.h" + +TOOLBAR "" 0 20 0 2 +#include +ENDPAGE + +PAGE "Motivi per controlli sanitari" -1 -1 78 7 + +STRING F_TABMTC_CODTAB 4 +BEGIN + PROMPT 2 1 "Codice " + FIELD CODTAB + HELP "Inserire il codice del motivo" + USE MTC + CHECKTYPE REQUIRED + INPUT CODTAB F_TABMTC_CODTAB + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@25" S0 + OUTPUT F_TABMTC_CODTAB CODTAB + OUTPUT F_TABMTC_DESCR S0 + KEY 1 + FLAGS "U" +END + +STRING F_TABMTC_DESCR 25 +BEGIN + PROMPT 2 3 "Descrizione " + FIELD S0 + HELP "Inserire la descrizione del motivo" + USE MTC KEY 2 + CHECKTYPE REQUIRED + INPUT S0 F_TABMTC_DESCR + DISPLAY "Descrizione@25" S0 + DISPLAY "Codice" CODTAB + COPY OUTPUT F_TABMTC_CODTAB + KEY 2 +END + +ENDPAGE +ENDMASK diff --git a/at/batbprf.uml b/at/batbprf.uml index 723ffcd91..5e033456c 100755 --- a/at/batbprf.uml +++ b/at/batbprf.uml @@ -19,7 +19,7 @@ BEGIN OUTPUT F_TABPRF_CODTAB CODTAB OUTPUT F_TABPRF_DESCR S0 KEY 1 - FLAGS "URZ" + FLAGS "U" END STRING F_TABPRF_DESCR 40 diff --git a/at/batbtcs.uml b/at/batbtcs.uml index 43827860b..302dfcaf2 100755 --- a/at/batbtcs.uml +++ b/at/batbtcs.uml @@ -4,7 +4,7 @@ TOOLBAR "" 0 20 0 2 #include ENDPAGE -PAGE "Tipi/Esiti controlli sanitari" -1 -1 78 7 +PAGE "Tipi/Esiti controlli sanitari" -1 -1 78 18 STRING F_TABTCS_CODTAB 2 BEGIN @@ -19,7 +19,7 @@ BEGIN OUTPUT F_TABTCS_CODTAB CODTAB OUTPUT F_TABTCS_DESCR S0 KEY 1 - FLAGS "URZ" + FLAGS "U" END STRING F_TABTCS_DESCR 30 @@ -36,7 +36,7 @@ BEGIN KEY 2 END -RADIOBUTTON F_TABTCS_MODSTATO 23 +RADIOBUTTON F_TABTCS_MODSTATO 25 BEGIN PROMPT 2 5 "Modifica stato" FIELD S6 @@ -49,12 +49,19 @@ BEGIN MESSAGE ENABLE, F_TABTCS_STATO ITEM "F|Fine sospensione" MESSAGE ENABLE, F_TABTCS_STATO - HELP "Indicare se il controllo modifica lo stato e in che modo" + ITEM "1|Sospeso per SI" + MESSAGE ENABLE, F_TABTCS_STATO + ITEM "2|Sospeso per AF" + MESSAGE ENABLE, F_TABTCS_STATO + ITEM "M|Modifica id. pr." + MESSAGE CLEAR, F_TABTCS_STATO + MESSAGE DISABLE, F_TABTCS_STATO + HELP "Indicare se il controllo modifica lo stato e in che modo" END STRING F_TABTCS_STATO 20 BEGIN - PROMPT 24 5 "Stato " + PROMPT 30 6 "Stato " FIELD S3 END diff --git a/at/batbtdn.uml b/at/batbtdn.uml index fb7d0159b..59b778f7c 100755 --- a/at/batbtdn.uml +++ b/at/batbtdn.uml @@ -19,7 +19,7 @@ BEGIN OUTPUT F_TABTDN_CODTAB CODTAB OUTPUT F_TABTDN_DESCR S0 KEY 1 - FLAGS "URZ" + FLAGS "U" END STRING F_TABTDN_DESCR 30 @@ -55,6 +55,7 @@ BEGIN OUTPUT F_TABTDN_IDON1 CODTAB OUTPUT F_DESC_I1 S0 CHECKTYPE REQUIRED + FLAGS "U" END STRING F_DESC_I1 30 @@ -74,6 +75,7 @@ BEGIN OUTPUT F_TABTDN_IDON2 CODTAB OUTPUT F_DESC_I2 S0 CHECKTYPE NORMAL + FLAGS "U" END STRING F_DESC_I2 30 diff --git a/at/benem.h b/at/benem.h index ead55e895..6193eef79 100755 --- a/at/benem.h +++ b/at/benem.h @@ -3,5 +3,11 @@ #define BEN_CODICE "CODICE" #define BEN_PROGBEN "PROGBEN" #define BEN_TIPOBEN "TIPOBEN" +#define BEN_DATAMAT "DATAMAT" +#define BEN_BONUS "BONUS" #define BEN_DATABEN "DATABEN" +#define BEN_DATACON "DATACON" #define BEN_RITIRATA "RITIRATA" +#define BEN_CODSEZ "CODSEZ" +#define BEN_CODSOT "CODSOT" +#define BEN_GRUPPOAZIE "GRUPPOAZIE" diff --git a/at/contsan.h b/at/contsan.h index 0fdee30db..08e02c9a1 100755 --- a/at/contsan.h +++ b/at/contsan.h @@ -12,3 +12,5 @@ #define CON_INTAF "INTAF" #define CON_PROSSTIPO "PROSSTIPO" #define CON_PROSSDATA "PROSSDATA" +#define CON_MOTIVO "MOTIVO" +#define CON_RESPONSAB "RESPONSAB" diff --git a/at/convoc.h b/at/convoc.h index 0b84709c2..44063febd 100755 --- a/at/convoc.h +++ b/at/convoc.h @@ -6,4 +6,10 @@ #define COV_TIPO "TIPO" #define COV_CODSEZ "CODSEZ" #define COV_CODSOT "CODSOT" +#define COV_DATAINI "DATAINI" +#define COV_RITARDA "RITARDA" +#define COV_MAXRIT "MAXRIT" #define COV_NOTE "NOTE" +#define COV_NUMCONV "NUMCONV" +#define COV_NUMSOLL "NUMSOLL" +#define COV_NUMRIT "NUMRIT" diff --git a/at/donaz.h b/at/donaz.h index 9d6029f0c..4f1c12a63 100755 --- a/at/donaz.h +++ b/at/donaz.h @@ -1,14 +1,16 @@ // definizione campi dell'archivio DONAZ #define DON_CODICE "CODICE" -#define DON_PROGDON "PROGDON" +#define DON_PROGDON "PROGDON" #define DON_DATADON "DATADON" #define DON_TIPODON "TIPODON" #define DON_LUOGODON "LUOGODON" -#define DON_ETICHETTA "ETICHETTA" -#define DON_CC "CC" -#define DON_PA "PA" -#define DON_HB "HB" -#define DON_SGPT "SGPT" -#define DON_PROTIDEMIA "PROTIDEMIA" -#define DON_PRIMADON "PRIMADON" +#define DON_ETICHETTA "ETICHETTA" +#define DON_CC "CC" +#define DON_PA "PA" +#define DON_HB "HB" +#define DON_SGPT "SGPT" +#define DON_PROTIDEMIA "PROTIDEMIA" +#define DON_PRIMADON "PRIMADON" +#define DON_CODSEZ "CODSEZ" +#define DON_CODSOT "CODSOT" diff --git a/at/f115.dir b/at/f115.dir index 30e5cf9ca..fefc528bc 100755 --- a/at/f115.dir +++ b/at/f115.dir @@ -1,3 +1,3 @@ -115 -0 -$convoc|0|0|124|17|Convocazioni AVIS||| +115 +0 +$convoc|0|0|148|17|Convocazioni AVIS||| diff --git a/at/f115.trr b/at/f115.trr index 87f9db802..c9f3bae9d 100755 --- a/at/f115.trr +++ b/at/f115.trr @@ -1,12 +1,18 @@ -115 -7 -NUMERO|3|5|0|Numero convocazione -DATA|5|8|0|Data convocazione -PUNTO|1|4|0|Punto di raccolta -TIPO|1|2|0|Tipo donazione -CODSEZ|1|2|0|Codice sezione convocata -CODSOT|1|2|0|Codice sottogruppo convocato -NOTE|1|100|0|Note alla convocazione -2 -NUMERO| -DATA+PUNTO+TIPO+CODSEZ+CODSOT| +115 +13 +NUMERO|3|5|0|Numero convocazione +DATA|5|8|0|Data convocazione +PUNTO|1|4|0|Punto di raccolta +TIPO|1|2|0|Tipo donazione +CODSEZ|1|2|0|Codice sezione convocata +CODSOT|1|2|0|Codice sottogruppo convocato +DATAINI|5|8|0|Data inizio convocazione +RITARDA|8|1|0|Ritardatari S/N +MAXRIT|2|3|0|Giorni di massimo ritardo +NOTE|1|100|0|Note alla convocazione +NUMCONV|2|4|0|Numero convocati +NUMSOLL|2|4|0|Numero sollecitati +NUMRIT|2|4|0|Numero ritardatari +2 +NUMERO| +DATA+PUNTO+TIPO+CODSEZ+CODSOT| diff --git a/at/f116.dir b/at/f116.dir index 082e2863b..d2907bf88 100755 --- a/at/f116.dir +++ b/at/f116.dir @@ -1,3 +1,3 @@ -116 -0 -$rconvoc|0|0|17|17|Righe convocazioni AVIS||| +116 +0 +$rconvoc|0|0|29|17|Righe convocazioni AVIS||| diff --git a/at/f116.trr b/at/f116.trr index 351eedb51..efe09377a 100755 --- a/at/f116.trr +++ b/at/f116.trr @@ -1,9 +1,12 @@ -116 -4 -NUMERO|3|5|0|Numero convocazione -PROGCONV|2|4|0|Progressivo convocato -CODICE|3|6|0|Codice soggetto convocato -STAMPATO|8|1|0|Convocazione stampata (cartolina o etichetta) -2 -NUMERO+PROGCONV| -CODICE+NUMERO| +116 +7 +NUMERO|3|5|0|Numero convocazione +PROGCONV|2|4|0|Progressivo convocato +CODICE|3|8|0|Codice soggetto convocato +DATACONV|5|8|0|Data convocazione reale +CHIAMATA|7|1|0|Chiamata (C/S/R) +STAMPATO|8|1|0|Convocazione stampata (cartolina o etichetta) +ANNULLATO|8|1|0|Convocazione annullata +2 +NUMERO+PROGCONV| +DATACONV+CODICE| diff --git a/at/f90.dir b/at/f90.dir index 31c713408..541b7a15d 100755 --- a/at/f90.dir +++ b/at/f90.dir @@ -1,3 +1,3 @@ -90 -0 -$soggetti|0|0|526|17|Soggetti AVIS||| +90 +0 +$soggetti|0|0|613|17|Soggetti AVIS||| diff --git a/at/f90.trr b/at/f90.trr index 129b6fcd3..a2f01437b 100755 --- a/at/f90.trr +++ b/at/f90.trr @@ -1,83 +1,99 @@ -90 -75 -CODSEZ|1|2|0|Codice sezione di appartenenza -CODSOT|1|2|0|Codice sottogruppo di appartenenza -CODICE|3|6|0|Codice -COGNOME|1|25|0|Cognome -NOME|1|25|0|Nome -DATANASC|5|8|0|Data di nascita -COMNASC|1|4|0|Codice comune o stato estero di nascita -SESSO|1|1|0|Sesso -CATDON|1|2|0|Categoria donatori -DATAISC|5|8|0|Data iscrizione -DATADIM|5|8|0|Data dimissione -CATNOND1|1|2|0|Categoria non donatori 1 -CATNOND2|1|2|0|Categoria non donatori 2 -TESSAVIS|1|6|0|Tessera AVIS -TESSSSN|1|16|0|Tessera SSN -CODCT|1|6|0|Codice centro trasfusionale -CODCL|1|6|0|Codice cartella clinica -DOCID|1|20|0|Documento di identità -CF|1|16|0|Codice fiscale -DOM_INDIR|1|30|0|Domicilio - indirizzo -DOM_CODCOM|1|4|0|Domicilio - codice comune -DOM_CODLOC|1|4|0|Domicilio - codice localita' postale -DOM_STRADA|1|5|0|Domicilio - codice stradario -DOM_DISTRI|1|4|0|Domicilio - codice distribuzione -RES_INDIR|1|30|0|Residenza - indirizzo -RES_CODCOM|1|4|0|Residenza - codice comune -RES_CODLOC|1|4|0|Residenza - codice localita' postale -TELABI|1|14|0|Telefono abitazione -TELLAV|1|14|0|Telefono lavoro -TELALT|1|14|0|Telefono altro -TITINDIR|1|10|0|Titolo in indirizzo -ESCLUSO|1|2|0|Esclusione non sanitaria -TERMESCL|5|8|0|Data termine esclusione -MOTESCL|1|30|0|Motivo esclusione -STATO|1|2|0|Stato attuale -DATASTATO|5|8|0|Data in cui è stato attribuito lo stato -DATAULTID|5|8|0|Data ultima idoneità -TIPOULTID|1|2|0|Tipo ultima idoneità -IDON1|1|2|0|Idoneità 1 -IDON2|1|2|0|Idoneità 2 -IDON3|1|2|0|Idoneità 3 -IDON4|1|2|0|Idoneità 4 -INTSI|2|3|0|Intervallo sangue intero -INTAF|2|3|0|Intervallo aferesi -TOTDON|2|3|0|Totale donazioni -DATAULTDON|5|8|0|Data ultima donazione -TIPOULTDON|1|2|0|Tipo ultima donazione -DATAPROSSI|5|8|0|Data prossima SI -DATAPROSAF|5|8|0|Data prossima AF -DATAULTSI|5|8|0|Data ultima donazione SI -DATAULTAF|5|8|0|Data ultima donazione AF -TOTDONSI|2|3|0|Numero donazioni SI -TOTDONAF|2|3|0|Numero donazioni AF -GRUPPOAB0|1|3|0|Gruppo AB0 -RHANTID|1|3|0|Rh/AntiD -KELL|1|3|0|Kell -FENOTIPORH|1|6|0|Fenotipo Rh -DU|1|3|0|Du -PUNTORACC|1|4|0|Punto di raccolta per convocazione -CODMED|3|6|0|Codice regionale medico di base -MODCONV|1|2|0|Modalita' di convocazione -GIOPREDON|1|7|0|Giorni preferiti per donazioni -GIOPRECON|1|7|0|Giorni preferiti per controlli -NUMCONV|2|3|0|Numero convocazioni spedite -DATACONV|5|8|0|Data ultima convocazione spedita -DATAULTAGG|5|8|0|Data ultimo aggiornamento -UTENULTAGG|1|8|0|Utente ultimo aggiornamento -CONDOCC|1|2|0|Condizione occupazionale (da cambiare) -POSPROF|1|2|0|Posizione professionale (da cambiare) -RAMOATT|1|2|0|Ramo di attività (da cambiare) -TITSTUD|1|2|0|Titolo di studio (da cambiare) -LUOGOLAV|1|4|0|Luogo di lavoro (codice) -PROFESS|1|4|0|Professione (codice) -NOTE|11|10|0|Note -T_STAMPATA|8|1|0|Tessera stampata (S/N) -5 -CODICE| -UPPER(COGNOME)+UPPER(NOME)+DATANASC|X -CODSEZ+CODSOT+CODICE|X -CODSEZ+CODSOT+UPPER(COGNOME)+UPPER(NOME)+DATANASC|X -TESSAVIS|X +90 +90 +CODSEZ|1|2|0|Codice sezione di appartenenza +CODSOT|1|2|0|Codice sottogruppo di appartenenza +CODICE|3|8|0|Codice +COGNOME|1|25|0|Cognome +NOME|1|25|0|Nome +DATANASC|5|8|0|Data di nascita +COMNASC|1|4|0|Codice comune o stato estero di nascita +SESSO|1|1|0|Sesso +CATDON|1|2|0|Categoria donatori +DATAISC|5|8|0|Data iscrizione +DATADIM|5|8|0|Data dimissione +CATNOND1|1|2|0|Categoria non donatori 1 +CATNOND2|1|2|0|Categoria non donatori 2 +TESSAVIS|1|6|0|Tessera AVIS +TESSSSN|1|16|0|Tessera SSN +CODCT|1|6|0|Codice centro trasfusionale +CODCL|1|6|0|Codice cartella clinica +DOCID|1|20|0|Documento di identità +CF|1|16|0|Codice fiscale +DOM_INDIR|1|30|0|Domicilio - indirizzo +DOM_CODCOM|1|4|0|Domicilio - codice comune +DOM_CODLOC|1|4|0|Domicilio - codice localita' postale +DOM_STRADA|1|5|0|Domicilio - codice stradario +DOM_DISTRI|1|4|0|Domicilio - codice distribuzione +DOM_CAP|1|5|0|Domicilio - CAP +RES_INDIR|1|30|0|Residenza - indirizzo +RES_CODCOM|1|4|0|Residenza - codice comune +RES_CODLOC|1|4|0|Residenza - codice localita' postale +RES_CAP|1|5|0|Residenza - CAP +TELABI|1|14|0|Telefono abitazione +TELLAV|1|14|0|Telefono lavoro +TELALT|1|14|0|Telefono altro +TITINDIR|1|10|0|Titolo in indirizzo +ESCLUSO|1|2|0|Esclusione non sanitaria +TERMESCL|5|8|0|Data termine esclusione +MOTESCL|1|30|0|Motivo esclusione +STATO|1|2|0|Stato attuale +DATASTATO|5|8|0|Data in cui è stato attribuito lo stato +PROS_STATO|1|2|0|Stato prossimo +DATA_PROS|5|8|0|Data prossimo stato (per fine sospensione) +DATAULTID|5|8|0|Data ultima idoneità +TIPOULTID|1|2|0|Tipo ultima idoneità +IDON1|1|2|0|Idoneità 1 +IDON2|1|2|0|Idoneità 2 +IDON3|1|2|0|Idoneità 3 +IDON4|1|2|0|Idoneità 4 +INTSI|2|3|0|Intervallo sangue intero +INTAF|2|3|0|Intervallo aferesi +TOTDON|2|3|0|Totale donazioni +DATAULTDON|5|8|0|Data ultima donazione +TIPOULTDON|1|2|0|Tipo ultima donazione +DATAPROSSI|5|8|0|Data prossima SI +DATAPROSAF|5|8|0|Data prossima AF +DATAULTSI|5|8|0|Data ultima donazione SI +DATAULTAF|5|8|0|Data ultima donazione AF +TOTDONSI|2|3|0|Numero donazioni SI +TOTDONAF|2|3|0|Numero donazioni AF +DONPRECSI|2|3|0|Numero donazioni SI non dettagliate +DONPRECAF|2|3|0|Numero donazioni AF non dettagliate +DATAPRISI|5|8|0|Data prima donazione SI +DATAPRIAF|5|8|0|Data prima donazione AF +GRUPPOAB0|1|3|0|Gruppo AB0 +RHANTID|1|3|0|Rh/AntiD +KELL|1|3|0|Kell +FENOTIPORH|1|6|0|Fenotipo Rh +DU|1|3|0|Du +ANTICORPI|1|1|0|Anticorpi +CMV|1|3|0|CMV +PUNTORACC|1|4|0|Punto di raccolta per convocazione +CODMED|3|6|0|Codice regionale medico di base +MODCONV|1|2|0|Modalita' di convocazione +GIOPREDON|1|7|0|Giorni preferiti per donazioni +GIOPRECON|1|7|0|Giorni preferiti per controlli +NUMCONV|2|3|0|Numero convocazioni spedite +DATACONV|5|8|0|Data ultima convocazione spedita +DATAULTSOL|5|8|0|Data ultimo sollecito +DATAULTAGG|5|8|0|Data ultimo aggiornamento +UTENULTAGG|1|8|0|Utente ultimo aggiornamento +CONDOCC|1|2|0|Condizione occupazionale (da cambiare) +POSPROF|1|2|0|Posizione professionale (da cambiare) +RAMOATT|1|2|0|Ramo di attività (da cambiare) +TITSTUD|1|2|0|Titolo di studio (da cambiare) +LUOGOLAV|1|4|0|Luogo di lavoro (codice) +PROFESS|1|4|0|Professione (codice) +T_STAMPATA|8|1|0|Tessera stampata (S/N) +GRUPPOAZIE|1|4|0|Codice gruppo aziendale +NOTIZIARIO|8|1|0|Vuole il notiziario S/N +BENEM|8|1|0|Vuole le benemerenze S/N +COGNOME_SP|1|25|0|Cognome del marito +NOTE|11|10|0|Note +6 +CODICE| +UPPER(COGNOME)+UPPER(NOME)+DATANASC|X +CODSEZ+CODSOT+CODICE| +CODSEZ+CODSOT+UPPER(COGNOME)+UPPER(NOME)+DATANASC|X +TESSAVIS|X +DATAPROSSI|X diff --git a/at/f91.dir b/at/f91.dir index 7ff27de8b..a90334bd1 100755 --- a/at/f91.dir +++ b/at/f91.dir @@ -1,3 +1,3 @@ -91 -0 -$storico|0|0|36|17|Storico iscrizioni e dimissioni AVIS||| +91 +0 +$storico|0|0|38|17|Storico iscrizioni e dimissioni AVIS||| diff --git a/at/f91.trr b/at/f91.trr index 5526945db..c02560b53 100755 --- a/at/f91.trr +++ b/at/f91.trr @@ -1,13 +1,13 @@ -91 -9 -CODICE|3|6|0|Codice soggetto -PROGSTO|2|3|0|Progressivo storico -CODSEZ|1|2|0|Sezione di iscrizione -CODSOT|1|2|0|Sottogruppo di iscrizione -CATISC|1|2|0|Categoria di iscrizione -DATAISC|5|8|0|Data di iscrizione -CATDIM|1|2|0|Categoria di dimissione -DATADIM|5|8|0|Data di dimissione -MOTDIM|1|2|0|Motivo di dimissione -1 -CODICE+PROGSTO| +91 +9 +CODICE|3|8|0|Codice soggetto +PROGSTO|2|3|0|Progressivo storico +CODSEZ|1|2|0|Sezione di iscrizione +CODSOT|1|2|0|Sottogruppo di iscrizione +CATISC|1|2|0|Categoria di iscrizione +DATAISC|5|8|0|Data di iscrizione +CATDIM|1|2|0|Categoria di dimissione +DATADIM|5|8|0|Data di dimissione +MOTDIM|1|2|0|Motivo di dimissione +1 +CODICE+PROGSTO| diff --git a/at/f92.dir b/at/f92.dir index 9e6ecaf9d..c9f64a590 100755 --- a/at/f92.dir +++ b/at/f92.dir @@ -1,3 +1,3 @@ -92 -0 -$donaz|0|0|54|17|Donazioni AVIS||| +92 +0 +$donaz|0|0|60|17|Donazioni AVIS||| diff --git a/at/f92.trr b/at/f92.trr index da24fb4d5..560b786d4 100755 --- a/at/f92.trr +++ b/at/f92.trr @@ -1,17 +1,20 @@ -92 -12 -CODICE|3|6|0|Codice soggetto -PROGDON|2|3|0|Progressivo donazione -DATADON|5|8|0|Data donazione -TIPODON|1|2|0|Tipo donazione -LUOGODON|1|4|0|Luogo donazione -ETICHETTA|3|9|0|Etichetta sacca -CC|2|3|0|CC -PA|1|7|0|P.A. -HB|4|4|1|Hb -SGPT|2|3|0|SGPT -PROTIDEMIA|4|3|1|Protidemia -PRIMADON|8|1|0|Prima donazione -2 -CODICE+PROGDON| -DATADON+CODICE|X +92 +14 +CODICE|3|8|0|Codice soggetto +PROGDON|2|3|0|Progressivo donazione +DATADON|5|8|0|Data donazione +TIPODON|1|2|0|Tipo donazione +LUOGODON|1|4|0|Luogo donazione +ETICHETTA|3|9|0|Etichetta sacca +CC|2|3|0|CC +PA|1|7|0|P.A. +HB|4|4|1|Hb +SGPT|2|3|0|SGPT +PROTIDEMIA|4|3|1|Protidemia +PRIMADON|8|1|0|Prima donazione +CODSEZ|1|2|0|Sezione di app. al momento della donazione +CODSOT|1|2|0|Sottogruppo di app. +3 +CODICE+PROGDON| +DATADON+CODICE| +DATADON+TIPODON+LUOGODON+CODICE| diff --git a/at/f93.dir b/at/f93.dir index 82061dacc..695125a86 100755 --- a/at/f93.dir +++ b/at/f93.dir @@ -1,3 +1,3 @@ -93 -0 -$contsan|0|0|44|17|Controlli sanitari AVIS||| +93 +0 +$contsan|0|0|100|17|Controlli sanitari AVIS||| diff --git a/at/f93.trr b/at/f93.trr index cd21b3a2b..6b691f198 100755 --- a/at/f93.trr +++ b/at/f93.trr @@ -1,17 +1,19 @@ -93 -12 -CODICE|3|6|0|Codice soggetto -PROGCON|2|3|0|Progressivo controllo -DATACON|5|8|0|Data controllo -TIPOCON|1|2|0|Tipo o esito controllo -IDON1|1|2|0|Idoneità 1 -IDON2|1|2|0|Idoneità 2 -IDON3|1|2|0|Idoneità 3 -IDON4|1|2|0|Idoneità 4 -INTSI|2|3|0|Intervallo per sangue intero -INTAF|2|3|0|Intervallo per aferesi -PROSSTIPO|1|2|0|Prossimo tipo di controllo (programmato e/o presunto) -PROSSDATA|5|8|0|Data prossimo tipo -2 -CODICE+PROGCON| -DATACON+CODICE|X +93 +14 +CODICE|3|8|0|Codice soggetto +PROGCON|2|3|0|Progressivo controllo +DATACON|5|8|0|Data controllo +TIPOCON|1|2|0|Tipo o esito controllo +IDON1|1|2|0|Idoneità 1 +IDON2|1|2|0|Idoneità 2 +IDON3|1|2|0|Idoneità 3 +IDON4|1|2|0|Idoneità 4 +INTSI|2|3|0|Intervallo per sangue intero +INTAF|2|3|0|Intervallo per aferesi +PROSSTIPO|1|2|0|Prossimo tipo di controllo (programmato e/o presunto) +PROSSDATA|5|8|0|Data prossimo tipo +MOTIVO|1|4|0|Motivo (per controlli che modificano lo stato) +RESPONSAB|1|50|0|Responsabile (per controlli che modificano lo stato) +2 +CODICE+PROGCON| +DATACON+CODICE|X diff --git a/at/f94.dir b/at/f94.dir index 1d59c184a..3fc0f4fbe 100755 --- a/at/f94.dir +++ b/at/f94.dir @@ -1,3 +1,3 @@ -94 -0 -$benem|0|0|21|17|Benemerenze AVIS||| +94 +0 +$benem|0|0|50|17|Benemerenze AVIS||| diff --git a/at/f94.trr b/at/f94.trr index 9151b4cfc..f140330f3 100755 --- a/at/f94.trr +++ b/at/f94.trr @@ -1,11 +1,17 @@ -94 -5 -CODICE|3|6|0|Codice soggetto -PROGBEN|2|3|0|Progressivo benemerenza -TIPOBEN|1|2|0|Benemerenza -DATABEN|5|8|0|Data assegnazione -RITIRATA|8|1|0|Benemerenza ritirata? -3 -CODICE+PROGBEN| -DATABEN+CODICE|X -CODICE+TIPOBEN| +94 +11 +CODICE|3|8|0|Codice soggetto +PROGBEN|2|3|0|Progressivo benemerenza +TIPOBEN|1|2|0|Benemerenza +DATAMAT|5|8|0|Data maturazione +BONUS|2|3|0|Bonus maturazione +DATABEN|5|8|0|Data assegnazione (elaborazione benemerenze) +DATACON|5|8|0|Data prevista consegna +RITIRATA|8|1|0|Benemerenza ritirata? +CODSEZ|1|2|0|Sezione che ha assegnato +CODSOT|1|2|0|Sottogruppo che ha assegnato +GRUPPOAZIE|1|4|0|Gruppo aziendale che ha assegnato +3 +CODICE+PROGBEN| +DATABEN+CODICE|X +CODICE+TIPOBEN| diff --git a/at/f95.dir b/at/f95.dir index d9d0e9118..5a58fb0bd 100755 --- a/at/f95.dir +++ b/at/f95.dir @@ -1,3 +1,3 @@ -95 -0 -$famiglie|0|0|18|17|Famiglie AVIS||| +95 +0 +$famiglie|0|0|20|17|Famiglie AVIS||| diff --git a/at/f95.trr b/at/f95.trr index 4ddde8134..9eac85b1c 100755 --- a/at/f95.trr +++ b/at/f95.trr @@ -1,9 +1,9 @@ -95 -4 -FAMIGLIA|3|6|0|Codice famiglia (progressivo automatico) -PROGFAM|2|3|0|Progressivo familiare -GRADOPAR|1|2|0|Grado di parentela -CODFAM|3|6|0|Codice soggetto familiare -2 -FAMIGLIA+PROGFAM| -CODFAM| +95 +4 +FAMIGLIA|3|6|0|Codice famiglia (progressivo automatico) +PROGFAM|2|3|0|Progressivo familiare +GRADOPAR|1|2|0|Grado di parentela +CODFAM|3|8|0|Codice soggetto familiare +2 +FAMIGLIA+PROGFAM| +CODFAM| diff --git a/at/f96.dir b/at/f96.dir index 7479b393f..c2dd83b77 100755 --- a/at/f96.dir +++ b/at/f96.dir @@ -1,3 +1,3 @@ -96 -1 -%sezioni|0|0|451|17|Sezioni AVIS||| +96 +1 +%sezioni|0|0|469|17|Sezioni AVIS||| diff --git a/at/f96.trr b/at/f96.trr index 98d20bf27..7c07867cd 100755 --- a/at/f96.trr +++ b/at/f96.trr @@ -1,36 +1,42 @@ -96 -31 -CODSEZ|1|2|0|Codice sezione -DENSEZ|1|25|0|Denominazione sezione -CODSOT|1|2|0|Codice sottogruppo -DENSOT|1|25|0|Denominazione sottogruppo -INDIRIZZO|1|50|0|Indirizzo -COM|1|4|0|Codice comune residenza -LOCALITA|1|4|0|Località postale -TELEFONO|1|15|0|Telefono sezione -FAX|1|15|0|Fax sezione -REFERCED|1|50|0|Cognome e nome referente CED -STATO|1|1|0|Stato sezione -CONVORA|1|20|0|Orario per stampa cartolina -CONVSEDE1|1|25|0|Sede: 1° riga -CONVSEDE2|1|25|0|Sede: 2° riga -CONVSEDE3|1|25|0|Sede: 3° riga -CONVSEDE4|1|25|0|Sede: 4° riga -CONVNOTE|1|25|0|Note -TIPOCONV|1|1|0|Tipo convocazione -INTMINCONV|2|4|0|Intervallo minimo di convocazione in gg. -INTMIN|2|4|0|Intervallo min. per cartolina -INTMAX|2|4|0|Intervallo max per cartolina -DONEMER|2|3|0|Numero donazioni per passaggio a emeriti -INTESTI|2|2|0|Intervallo di estinzione in anni -CATEMER|1|2|0|Categoria emeriti -CATESTI|1|2|0|Categoria estinti -CATCANC|1|2|0|Categoria cancellati -DATAULTCON|5|8|0|Data ultima convocazione -INTESTAZ1|1|20|0|1° Riga di intestazione per tessere e cartoline -INTESTAZ2|1|20|0|2° Riga di intestazione per tessere e cartoline -INTESTAZ3|1|20|0|3° Riga di intestazione per tessere e cartoline -INTESTAZ4|1|20|0|4° Riga di intestazione per tessere e cartoline -2 -CODSEZ+CODSOT| -UPPER(DENSEZ)+UPPER(DENSOT)| +96 +37 +CODSEZ|1|2|0|Codice sezione +DENSEZ|1|25|0|Denominazione sezione +CODSOT|1|2|0|Codice sottogruppo +DENSOT|1|25|0|Denominazione sottogruppo +INDIRIZZO|1|50|0|Indirizzo +COM|1|4|0|Codice comune residenza +LOCALITA|1|4|0|Località postale +TELEFONO|1|15|0|Telefono sezione +FAX|1|15|0|Fax sezione +REFERCED|1|50|0|Cognome e nome referente CED +STATO|1|1|0|Stato sezione +CONVORA|1|20|0|Orario per stampa cartolina +CONVSEDE1|1|25|0|Sede: 1° riga +CONVSEDE2|1|25|0|Sede: 2° riga +CONVSEDE3|1|25|0|Sede: 3° riga +CONVSEDE4|1|25|0|Sede: 4° riga +CONVNOTE|1|25|0|Note +TIPOCONV|1|1|0|Tipo convocazione +INTMINCONV|2|4|0|Intervallo minimo di convocazione in gg. +INTMIN|2|4|0|Intervallo min. per cartolina +INTMAX|2|4|0|Intervallo max per cartolina +DONEMER|2|3|0|Numero donazioni per passaggio a emeriti +INTESTI|2|2|0|Intervallo di estinzione in anni +CATEMER|1|2|0|Categoria emeriti +CATESTI|1|2|0|Categoria estinti +CATCANC|1|2|0|Categoria cancellati +DATAULTCON|5|8|0|Data ultima convocazione +INTESTAZ1|1|20|0|1° Riga di intestazione per tessere e cartoline +INTESTAZ2|1|20|0|2° Riga di intestazione per tessere e cartoline +INTESTAZ3|1|20|0|3° Riga di intestazione per tessere e cartoline +INTESTAZ4|1|20|0|4° Riga di intestazione per tessere e cartoline +PUNTORACC|1|4|0|Codice punto di raccolta per convocazione +GIOCARSOL|2|3|0|Giorni tra cartolina e primo sollecito +GIOSOLSOL|2|3|0|Giorni tra sollecito e sollecito +GIOULTSOL|2|3|0|Giorni tra penultimo e ultimo sollecito +GIOPERRIT|2|3|0|Giorni tra le chiamate per ritardatari +NUMMAXSOL|2|2|0|Numero massimo di solleciti +2 +CODSEZ+CODSOT| +UPPER(DENSEZ)+UPPER(DENSOT)| diff --git a/at/f97.dir b/at/f97.dir index 916e93bb4..090305089 100755 --- a/at/f97.dir +++ b/at/f97.dir @@ -1,3 +1,3 @@ -97 -1 -%medici|0|0|145|17|Medici di base AVIS||| +97 +1 +%medici|0|0|145|17|Medici di base AVIS||| diff --git a/at/f97.trr b/at/f97.trr index c2dc0fe1a..855a51c34 100755 --- a/at/f97.trr +++ b/at/f97.trr @@ -1,13 +1,13 @@ -97 -8 -CODMED|3|6|0|Codice regionale del medico -COGNOME|1|25|0|Cognome medico -NOME|1|25|0|Nome medico -INDIRIZZO|1|50|0|Indirizzo medico -COM|1|4|0|Codice comune di residenza -LOCALITA|1|4|0|Località postale -TELAMB|1|15|0|Telefono ambulatorio -TELABI|1|15|0|Telefono abitazione -2 -CODMED| -UPPER(COGNOME)+UPPER(NOME)| +97 +8 +CODMED|3|6|0|Codice regionale del medico +COGNOME|1|25|0|Cognome medico +NOME|1|25|0|Nome medico +INDIRIZZO|1|50|0|Indirizzo medico +COM|1|4|0|Codice comune di residenza +LOCALITA|1|4|0|Località postale +TELAMB|1|15|0|Telefono ambulatorio +TELABI|1|15|0|Telefono abitazione +2 +CODMED| +UPPER(COGNOME)+UPPER(NOME)| diff --git a/at/kell.h b/at/kell.h new file mode 100755 index 000000000..dd101fc93 --- /dev/null +++ b/at/kell.h @@ -0,0 +1,6 @@ +// listbox per Kell + +ITEM " |" +ITEM "NEG|NEG" +ITEM "POS|POS" +ITEM "DPO|++" diff --git a/at/modalita.h b/at/modalita.h index e97cfa5cc..2c9fca939 100755 --- a/at/modalita.h +++ b/at/modalita.h @@ -2,6 +2,7 @@ ITEM " |" ITEM "PO|Postale" +ITEM "SP|Spontanea" ITEM "T1|Tel. abitaz." ITEM "T2|Tel. lavoro" ITEM "T3|Tel. altro" diff --git a/at/rconvoc.h b/at/rconvoc.h index 33a4b70b6..5f008692d 100755 --- a/at/rconvoc.h +++ b/at/rconvoc.h @@ -3,4 +3,7 @@ #define RCV_NUMERO "NUMERO" #define RCV_PROGCONV "PROGCONV" #define RCV_CODICE "CODICE" +#define RCV_DATACONV "DATACONV" +#define RCV_CHIAMATA "CHIAMATA" #define RCV_STAMPATO "STAMPATO" +#define RCV_ANNULLATO "ANNULLATO" diff --git a/at/rh.h b/at/rh.h index f60f68060..20fa55f7c 100755 --- a/at/rh.h +++ b/at/rh.h @@ -1,4 +1,4 @@ -// listbox per Rh, Kell, Du +// listbox per Rh, Kell, Du, CMV ITEM " |" ITEM "NEG|NEG" diff --git a/at/sezioni.h b/at/sezioni.h index cf7b9ff61..69a85eca2 100755 --- a/at/sezioni.h +++ b/at/sezioni.h @@ -31,4 +31,9 @@ #define SEZ_INTESTAZ2 "INTESTAZ2" #define SEZ_INTESTAZ3 "INTESTAZ3" #define SEZ_INTESTAZ4 "INTESTAZ4" - +#define SEZ_PUNTORACC "PUNTORACC" +#define SEZ_GIOCARSOL "GIOCARSOL" +#define SEZ_GIOSOLSOL "GIOSOLSOL" +#define SEZ_GIOULTSOL "GIOULTSOL" +#define SEZ_GIOPERRIT "GIOPERRIT" +#define SEZ_NUMMAXSOL "NUMMAXSOL" diff --git a/at/soggetti.h b/at/soggetti.h index 4936978a1..ce479d741 100755 --- a/at/soggetti.h +++ b/at/soggetti.h @@ -19,16 +19,16 @@ #define SOG_CODCL "CODCL" #define SOG_DOCID "DOCID" #define SOG_CF "CF" - #define SOG_DOM_INDIR "DOM_INDIR" #define SOG_DOM_STRADA "DOM_STRADA" #define SOG_DOM_DISTRI "DOM_DISTRI" #define SOG_DOM_CODCOM "DOM_CODCOM" #define SOG_DOM_CODLOC "DOM_CODLOC" +#define SOG_DOM_CAP "DOM_CAP" #define SOG_RES_INDIR "RES_INDIR" #define SOG_RES_CODCOM "RES_CODCOM" #define SOG_RES_CODLOC "RES_CODLOC" - +#define SOG_RES_CAP "RES_CAP" #define SOG_TELABI "TELABI" #define SOG_TELLAV "TELLAV" #define SOG_TELALT "TELALT" @@ -38,6 +38,8 @@ #define SOG_MOTESCL "MOTESCL" #define SOG_STATO "STATO" #define SOG_DATASTATO "DATASTATO" +#define SOG_PROS_STATO "PROS_STATO" +#define SOG_DATA_PROS "DATA_PROS" #define SOG_DATAULTID "DATAULTID" #define SOG_TIPOULTID "TIPOULTID" #define SOG_IDON1 "IDON1" @@ -49,17 +51,23 @@ #define SOG_TOTDON "TOTDON" #define SOG_DATAULTDON "DATAULTDON" #define SOG_TIPOULTDON "TIPOULTDON" +#define SOG_DATAPROSSI "DATAPROSSI" +#define SOG_DATAPROSAF "DATAPROSAF" #define SOG_DATAULTSI "DATAULTSI" #define SOG_DATAULTAF "DATAULTAF" #define SOG_TOTDONSI "TOTDONSI" #define SOG_TOTDONAF "TOTDONAF" -#define SOG_DATAPROSSI "DATAPROSSI" -#define SOG_DATAPROSAF "DATAPROSAF" +#define SOG_DONPRECSI "DONPRECSI" +#define SOG_DONPRECAF "DONPRECAF" +#define SOG_DATAPRISI "DATAPRISI" +#define SOG_DATAPRIAF "DATAPRIAF" #define SOG_GRUPPOAB0 "GRUPPOAB0" #define SOG_RHANTID "RHANTID" #define SOG_KELL "KELL" #define SOG_FENOTIPORH "FENOTIPORH" #define SOG_DU "DU" +#define SOG_ANTICORPI "ANTICORPI" +#define SOG_CMV "CMV" #define SOG_PUNTORACC "PUNTORACC" #define SOG_CODMED "CODMED" #define SOG_MODCONV "MODCONV" @@ -67,6 +75,7 @@ #define SOG_GIOPRECON "GIOPRECON" #define SOG_NUMCONV "NUMCONV" #define SOG_DATACONV "DATACONV" +#define SOG_DATAULTSOL "DATAULTSOL" #define SOG_DATAULTAGG "DATAULTAGG" #define SOG_UTENULTAGG "UTENULTAGG" #define SOG_CONDOCC "CONDOCC" @@ -75,7 +84,9 @@ #define SOG_TITSTUD "TITSTUD" #define SOG_LUOGOLAV "LUOGOLAV" #define SOG_PROFESS "PROFESS" -#define SOG_NOTE "NOTE" #define SOG_T_STAMPATA "T_STAMPATA" #define SOG_GRUPPOAZIE "GRUPPOAZIE" +#define SOG_NOTIZIARIO "NOTIZIARIO" +#define SOG_BENEM "BENEM" #define SOG_COGNOME_SP "COGNOME_SP" +#define SOG_NOTE "NOTE"