diff --git a/at/at3100.cpp b/at/at3100.cpp index cbbe7d63e..905851c1c 100755 --- a/at/at3100.cpp +++ b/at/at3100.cpp @@ -89,11 +89,11 @@ class TStatSogxEta : public TApplication TLocalisamfile* _atstats; TAssoc_array* _colonne; TArray _righe; - TString16 _sezini, _sotini, _sezfin, _sotfin; + TString16 _sezini, _sotini, _sezfin, _sotfin, _gruppoazie; TString16 _catdon; TDate _data; TArray _etaini, _etafin; - bool _solotot; + bool _solotot, _pergruppo; int _sezionistampate; protected: @@ -210,7 +210,9 @@ bool TStatSogxEta::menu(MENU_TAG m) _sotfin = _msk->get(F_SOTFIN); _catdon = _msk->get(F_CATDON); _data = _msk->get_date(F_DATA); - _solotot = msk.get_bool(F_SOLOTOT); + _pergruppo = _msk->get_bool(F_PERGRUPPO); + _gruppoazie = _msk->get(F_GRUPPOAZIE); + _solotot = msk.get_bool(F_SOLOTOT); TSheet_field& s = (TSheet_field&)_msk->field(F_FASCIE); for (int r=0; rCODSEZ <= \"%s\")",(const char*)_sezfin); } - _cur->setfilter((const char*) filtro, TRUE); - TString16 codsez, codsot, catdon, catcoll; + if (_pergruppo) + { + if (filtro.not_empty()) + filtro << " && "; + if (_gruppoazie.not_empty()) + filtro << format("(90->GRUPPOAZIE == \"%s\")",(const char*)_gruppoazie); + else + filtro << format("(90->GRUPPOAZIE != \"\")"); + } + _cur->setfilter((const char*) filtro, TRUE); + TString16 codsez, codsot, catdon, catcoll, gruppoazie; long numero; TString16 sesso; int eta, fascia; @@ -602,8 +623,17 @@ bool TStatSogxEta::riepilogo() } if (ok) { - codsez = recsog.get(SOG_CODSEZ); - codsot = recsog.get(SOG_CODSOT); + if (_pergruppo) + { + gruppoazie = recsog.get(SOG_GRUPPOAZIE); + codsez = gruppoazie.sub(0,2); + codsot = gruppoazie.sub(2,4); + } + else + { + codsez = recsog.get(SOG_CODSEZ); + codsot = recsog.get(SOG_CODSOT); + } datanasc = recsog.get_date(SOG_DATANASC); eta = _data.year() - datanasc.year(); fascia = data2row(eta); diff --git a/at/at3100a.h b/at/at3100a.h index 2836424f5..f47dffaee 100755 --- a/at/at3100a.h +++ b/at/at3100a.h @@ -13,8 +13,11 @@ #define F_CATDON 301 #define F_D_CATDON 302 #define F_DATA 303 -#define F_SOLOTOT 304 -#define F_FASCIE 305 +#define F_PERGRUPPO 304 +#define F_GRUPPOAZIE 305 +#define F_D_GRUPPOAZIE 306 +#define F_SOLOTOT 307 +#define F_FASCIE 308 #define F_ETAINI 101 #define F_ETAFIN 102 diff --git a/at/at3100a.uml b/at/at3100a.uml index a613228ae..add94a127 100755 --- a/at/at3100a.uml +++ b/at/at3100a.uml @@ -1,5 +1,17 @@ #include "at3100a.h" +TOOLBAR "" 0 20 0 2 +BUTTON DLG_OK 9 2 +BEGIN + PROMPT -12 -1 "" +END + +BUTTON DLG_QUIT 9 2 +BEGIN + PROMPT -22 -1 "" +END +ENDPAGE + PAGE "Statistica donatori per sesso e fascie di eta'" -1 -1 78 20 GROUPBOX DLG_NULL 77 4 @@ -117,7 +129,7 @@ BEGIN HELP "Sottogruppo finale" END -GROUPBOX DLG_NULL 77 14 +GROUPBOX DLG_NULL 77 15 BEGIN PROMPT 1 5 "Opzioni per la statistica" END @@ -149,43 +161,70 @@ BEGIN CHECKTYPE REQUIRED END +BOOLEAN F_PERGRUPPO +BEGIN + PROMPT 2 7 "Stampa per gruppo aziendale" + MESSAGE TRUE ENABLE,F_GRUPPOAZIE|ENABLE,F_D_GRUPPOAZIE|RESET,F_SOLOTOT|DISABLE,F_SOLOTOT + MESSAGE FALSE RESET,F_GRUPPOAZIE|RESET,F_D_GRUPPOAZIE|DISABLE,F_GRUPPOAZIE|DISABLE,F_D_GRUPPOAZIE|ENABLE,F_SOLOTOT +END + +STRING F_GRUPPOAZIE 4 +BEGIN + PROMPT 35 7 "" + FLAGS "U" + USE GAZ + INPUT CODTAB F_GRUPPOAZIE + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@30" S0 + OUTPUT F_GRUPPOAZIE CODTAB + OUTPUT F_D_GRUPPOAZIE S0 + CHECKTYPE NORMAL + WARNING "Codice gruppo aziendale non presente" + HELP "Gruppo aziendale di appartenenza" +END + +STRING F_D_GRUPPOAZIE 30 +BEGIN + PROMPT 43 7 "" + FLAGS "U" + USE GAZ KEY 2 + INPUT S0 F_D_GRUPPOAZIE + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@30" S0 + COPY OUTPUT F_GRUPPOAZIE + CHECKTYPE NORMAL + WARNING "Gruppo aziendale non presente" + HELP "Gruppo aziendale di appartenenza" +END + + TEXT DLG_NULL BEGIN - PROMPT 25 8 "Se la categoria e' vuota, la statistica vale" + PROMPT 25 10 "Se la categoria e' vuota, la statistica vale" END TEXT DLG_NULL BEGIN - PROMPT 25 9 "per tutte le categorie non di dimissione" + PROMPT 25 11 "per tutte le categorie non di dimissione" END BOOLEAN F_SOLOTOT BEGIN - PROMPT 2 7 "Stampa solo totale finale (non stampa il dettaglio per sezione)" + PROMPT 2 8 "Stampa solo totale finale (non stampa il dettaglio per sezione)" END TEXT DLG_NULL BEGIN - PROMPT 2 8 "Fascie di eta'" + PROMPT 2 9 "Fascie di eta'" END SPREADSHEET F_FASCIE 15 9 BEGIN - PROMPT 3 9 "" + PROMPT 3 10 "" ITEM "Da " ITEM "A " END -BUTTON DLG_OK 9 2 -BEGIN - PROMPT -12 -1 "" -END - -BUTTON DLG_QUIT 9 2 -BEGIN - PROMPT -22 -1 "" -END - ENDPAGE ENDMASK @@ -198,7 +237,7 @@ END NUMBER F_ETAFIN 3 BEGIN - PROMPT 3 2 "Eta' finale " + PROMPT 2 3 "Eta' finale " END BUTTON DLG_OK 9 2 diff --git a/at/at3300.cpp b/at/at3300.cpp index 984bc47c2..61541ded9 100755 --- a/at/at3300.cpp +++ b/at/at3300.cpp @@ -87,9 +87,9 @@ class TStatSogxCat : public TApplication TAssoc_array* _colonne; TAssoc_array* _categorie; TArray _righe; - TString16 _sezini, _sotini, _sezfin, _sotfin; + TString16 _sezini, _sotini, _sezfin, _sotfin, _gruppoazie; TDate _dataini, _datafin; - bool _solotot; + bool _solotot, _pergruppo; int _sezionistampate; protected: @@ -192,6 +192,8 @@ bool TStatSogxCat::menu(MENU_TAG m) _sotfin = _msk->get(F_SOTFIN); _dataini = _msk->get_date(F_DATAINI); _datafin = _msk->get_date(F_DATAFIN); + _pergruppo = _msk->get_bool(F_PERGRUPPO); + _gruppoazie = _msk->get(F_GRUPPOAZIE); _solotot = msk.get_bool(F_SOLOTOT); if (riepilogo()) stampa(); @@ -307,38 +309,48 @@ void TStatSogxCat::stampa_sezione(TString16 codsez, TString16 codsot) { if (_sezionistampate != 1) { - //rigastampa = "RIEPILOGO TOTALE PER TUTTE LE SEZIONI STAMPATE"; rigastampa = ""; rigastampa << "RIEPILOGO TOTALE SEZIONI DA " << _sezini << '/' << _sotini << " A " << _sezfin << '/' << _sotfin; + if (_pergruppo) + rigastampa << " - SOLO GRUPPI AZIENDALI"; } } else { _sezionistampate++; - rigastampa = "Sezione: "; - rigastampa << codsez; - if (codsot.not_empty()) + if (_pergruppo) { - rigastampa << "/"; + rigastampa = "Gruppo aziendale "; + rigastampa << codsez; rigastampa << codsot; - } - rigastampa << " "; - TLocalisamfile sezioni(LF_SEZIONI); - sezioni.setkey(1); - sezioni.zero(); - sezioni.put(SEZ_CODSEZ,codsez); - sezioni.put(SEZ_CODSOT,codsot); - if (sezioni.read() == NOERR) - { - TString80 den = sezioni.get(SEZ_DENSEZ); - rigastampa << den; - den = sezioni.get(SEZ_DENSOT); - if (den.not_empty()) + } + else + { + rigastampa = "Sezione: "; + rigastampa << codsez; + if (codsot.not_empty()) { rigastampa << "/"; + rigastampa << codsot; + } + rigastampa << " "; + TLocalisamfile sezioni(LF_SEZIONI); + sezioni.setkey(1); + sezioni.zero(); + sezioni.put(SEZ_CODSEZ,codsez); + sezioni.put(SEZ_CODSOT,codsot); + if (sezioni.read() == NOERR) + { + TString80 den = sezioni.get(SEZ_DENSEZ); rigastampa << den; + den = sezioni.get(SEZ_DENSOT); + if (den.not_empty()) + { + rigastampa << "/"; + rigastampa << den; + } } - } + } } if ((codsez == "ZZ" && codsot == "ZZ" && _sezionistampate != 1) || (codsez != "ZZ")) { @@ -455,8 +467,17 @@ bool TStatSogxCat::riepilogo() else filtro << format("(90->CODSEZ <= \"%s\")",(const char*)_sezfin); } + if (_pergruppo) + { + if (filtro.not_empty()) + filtro << " && "; + if (_gruppoazie.not_empty()) + filtro << format("(90->GRUPPOAZIE == \"%s\")",(const char*)_gruppoazie); + else + filtro << format("(90->GRUPPOAZIE != \"\")"); + } _cur->setfilter((const char*) filtro, TRUE); - TString16 codsez, codsot; + TString16 codsez, codsot, gruppoazie; long numero,numero2; TString16 catdon, cati, catd; TDate dataisc, datadim; @@ -472,8 +493,17 @@ bool TStatSogxCat::riepilogo() totalei = FALSE; nuovod = FALSE; totaled = FALSE; - codsez = recsog.get(SOG_CODSEZ); - codsot = recsog.get(SOG_CODSOT); + if (_pergruppo) + { + gruppoazie = recsog.get(SOG_GRUPPOAZIE); + codsez = gruppoazie.sub(0,2); + codsot = gruppoazie.sub(2,4); + } + else + { + codsez = recsog.get(SOG_CODSEZ); + codsot = recsog.get(SOG_CODSOT); + } catdon = recsog.get(SOG_CATDON); cati = ""; catd = ""; diff --git a/at/at3300a.h b/at/at3300a.h index 0cfa49752..b65a06ac6 100755 --- a/at/at3300a.h +++ b/at/at3300a.h @@ -10,6 +10,9 @@ #define F_SOTFIN 107 #define F_D_SOTFIN 108 -#define F_DATAINI 301 -#define F_DATAFIN 302 -#define F_SOLOTOT 303 +#define F_DATAINI 301 +#define F_DATAFIN 302 +#define F_PERGRUPPO 303 +#define F_GRUPPOAZIE 304 +#define F_D_GRUPPOAZIE 305 +#define F_SOLOTOT 306 diff --git a/at/at3300a.uml b/at/at3300a.uml index c5a4af2d0..92e5ea6ba 100755 --- a/at/at3300a.uml +++ b/at/at3300a.uml @@ -117,7 +117,7 @@ BEGIN HELP "Sottogruppo finale" END -GROUPBOX DLG_NULL 77 4 +GROUPBOX DLG_NULL 77 5 BEGIN PROMPT 1 5 "Opzioni per la statistica" END @@ -125,16 +125,56 @@ END DATE F_DATAINI BEGIN PROMPT 2 6 "Segnala i cambi di categoria dal " + CHECKTYPE REQUIRED + HELP "Data iniziale per elaborazione" END DATE F_DATAFIN BEGIN PROMPT 50 6 "al " + CHECKTYPE REQUIRED + HELP "Data finale per elaborazione" +END + +BOOLEAN F_PERGRUPPO +BEGIN + PROMPT 2 7 "Stampa per gruppo aziendale" + MESSAGE TRUE ENABLE,F_GRUPPOAZIE|ENABLE,F_D_GRUPPOAZIE|RESET,F_SOLOTOT|DISABLE,F_SOLOTOT + MESSAGE FALSE RESET,F_GRUPPOAZIE|RESET,F_D_GRUPPOAZIE|DISABLE,F_GRUPPOAZIE|DISABLE,F_D_GRUPPOAZIE|ENABLE,F_SOLOTOT +END + +STRING F_GRUPPOAZIE 4 +BEGIN + PROMPT 35 7 "" + FLAGS "U" + USE GAZ + INPUT CODTAB F_GRUPPOAZIE + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@30" S0 + OUTPUT F_GRUPPOAZIE CODTAB + OUTPUT F_D_GRUPPOAZIE S0 + CHECKTYPE NORMAL + WARNING "Codice gruppo aziendale non presente" + HELP "Gruppo aziendale di appartenenza" +END + +STRING F_D_GRUPPOAZIE 30 +BEGIN + PROMPT 43 7 "" + FLAGS "U" + USE GAZ KEY 2 + INPUT S0 F_D_GRUPPOAZIE + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@30" S0 + COPY OUTPUT F_GRUPPOAZIE + CHECKTYPE NORMAL + WARNING "Gruppo aziendale non presente" + HELP "Gruppo aziendale di appartenenza" END BOOLEAN F_SOLOTOT BEGIN - PROMPT 2 7 "Stampa solo totale finale (non stampa il dettaglio per sezione)" + PROMPT 2 8 "Stampa solo totale finale (non stampa il dettaglio per sezione)" END BUTTON DLG_OK 9 2 diff --git a/at/at3600.cpp b/at/at3600.cpp index 8e1f1daea..71873f3a8 100755 --- a/at/at3600.cpp +++ b/at/at3600.cpp @@ -94,7 +94,7 @@ class TStatDonGrRh : public TApplication TArray _righe; // array per riepilogo donazioni TString16 _sezini, _sotini, _sezfin, _sotfin; TAssoc_array* _asoggetti; - bool _solotot; + bool _solotot, _pergruppo; int _sezionistampate; protected: @@ -241,6 +241,7 @@ bool TStatDonGrRh::menu(MENU_TAG m) _tipodon3 = msk.get(F_TIPODON3); _tipodon4 = msk.get(F_TIPODON4); _tipodon5 = msk.get(F_TIPODON5); + _pergruppo = msk.get_bool(F_PERGRUPPO); _solotot = msk.get_bool(F_SOLOTOT); _sezini = msk.get(F_SEZINI); _sotini = msk.get(F_SOTINI); @@ -414,38 +415,48 @@ void TStatDonGrRh::stampa_sezione(TString16 codsez, TString16 codsot) { if (_sezionistampate != 1) { - //rigastampa = "RIEPILOGO TOTALE PER TUTTE LE SEZIONI STAMPATE"; rigastampa = ""; rigastampa << "RIEPILOGO TOTALE SEZIONI DA " << _sezini << '/' << _sotini << " A " << _sezfin << '/' << _sotfin; + if (_pergruppo) + rigastampa << " - SOLO GRUPPI AZIENDALI"; } } else { _sezionistampate++; - rigastampa = "Sezione: "; - rigastampa << codsez; - if (codsot.not_empty()) + if (_pergruppo) { - rigastampa << "/"; + rigastampa = "Gruppo aziendale "; + rigastampa << codsez; rigastampa << codsot; - } - rigastampa << " "; - TLocalisamfile sezioni(LF_SEZIONI); - sezioni.setkey(1); - sezioni.zero(); - sezioni.put(SEZ_CODSEZ,codsez); - sezioni.put(SEZ_CODSOT,codsot); - if (sezioni.read() == NOERR) - { - TString80 den = sezioni.get(SEZ_DENSEZ); - rigastampa << den; - den = sezioni.get(SEZ_DENSOT); - if (den.not_empty()) + } + else + { + rigastampa = "Sezione: "; + rigastampa << codsez; + if (codsot.not_empty()) { rigastampa << "/"; + rigastampa << codsot; + } + rigastampa << " "; + TLocalisamfile sezioni(LF_SEZIONI); + sezioni.setkey(1); + sezioni.zero(); + sezioni.put(SEZ_CODSEZ,codsez); + sezioni.put(SEZ_CODSOT,codsot); + if (sezioni.read() == NOERR) + { + TString80 den = sezioni.get(SEZ_DENSEZ); rigastampa << den; + den = sezioni.get(SEZ_DENSOT); + if (den.not_empty()) + { + rigastampa << "/"; + rigastampa << den; + } } - } + } } if ((codsez == "ZZ" && codsot == "ZZ" && _sezionistampate != 1) || (codsez != "ZZ")) { @@ -696,7 +707,6 @@ bool TStatDonGrRh::riepilogo() { if (filtro.not_empty()) filtro << " && "; - if (_sotfin.not_empty()) { filtro << "("; @@ -711,6 +721,13 @@ bool TStatDonGrRh::riepilogo() else filtro << format("(92->CODSEZ <= \"%s\")",(const char*)_sezfin); } + // filtro per gruppi aziendali + if (_pergruppo) + { + if (filtro.not_empty()) + filtro << " && "; + filtro << format("(90->GRUPPOAZIE != \"\")"); + } // filtro per tipo donazione TString256 filtrotd = ""; if (_tipodon1.not_empty()) @@ -746,9 +763,8 @@ bool TStatDonGrRh::riepilogo() filtro << '(' << filtrotd << ')'; } _cur->setfilter((const char*) filtro, TRUE); - TString16 codsez, codsot, tipodon, sesso; + TString16 codsez, codsot, tipodon, sesso, gruppoazie, gruppo, rh; TDate datadon; - TString16 gruppo, rh; long numero; bool esiste; TRectype& recdon = _cur->curr(); @@ -766,13 +782,22 @@ bool TStatDonGrRh::riepilogo() _asoggetti->add(codice); esiste = FALSE; } - codsez = recdon.get(DON_CODSEZ); - codsot = recdon.get(DON_CODSOT); - if (codsez.empty()) + if (_pergruppo) { - codsez = recsog.get(SOG_CODSEZ); - codsot = recsog.get(SOG_CODSOT); - } + gruppoazie = recsog.get(SOG_GRUPPOAZIE); + codsez = gruppoazie.sub(0,2); + codsot = gruppoazie.sub(2,4); + } + else + { + codsez = recdon.get(DON_CODSEZ); + codsot = recdon.get(DON_CODSOT); + if (codsez.empty()) + { + codsez = recsog.get(SOG_CODSEZ); + codsot = recsog.get(SOG_CODSOT); + } + } sesso = recsog.get(SOG_SESSO); gruppo = recsog.get(SOG_GRUPPOAB0); if (gruppo == "A1" || gruppo == "A2") diff --git a/at/at3600a.h b/at/at3600a.h index b28cbc0cb..62e32f67b 100755 --- a/at/at3600a.h +++ b/at/at3600a.h @@ -1,4 +1,4 @@ -// statistica donazioni per gruppo e rh +// statistica donazioni/donatori // definizione campi per maschera di selezione #define F_SEZINI 101 @@ -22,4 +22,5 @@ #define F_D_TIPODON3 310 #define F_D_TIPODON4 311 #define F_D_TIPODON5 312 -#define F_SOLOTOT 316 +#define F_SOLOTOT 313 +#define F_PERGRUPPO 314 diff --git a/at/at3600a.uml b/at/at3600a.uml index 8eb25af03..eaa66ae36 100755 --- a/at/at3600a.uml +++ b/at/at3600a.uml @@ -117,7 +117,7 @@ BEGIN HELP "Sottogruppo finale" END -GROUPBOX DLG_NULL 77 9 +GROUPBOX DLG_NULL 77 10 BEGIN PROMPT 1 5 "Opzioni per la statistica" END @@ -234,9 +234,16 @@ BEGIN FLAGS "D" END +BOOLEAN F_PERGRUPPO +BEGIN + PROMPT 2 12 "Statistica per gruppi aziendali" + MESSAGE TRUE RESET, F_SOLOTOT|DISABLE,F_SOLOTOT + MESSAGE FALSE ENABLE,F_SOLOTOT +END + BOOLEAN F_SOLOTOT BEGIN - PROMPT 2 12 "Stampa solo totale finale (non stampa il dettaglio per sezione)" + PROMPT 2 13 "Stampa solo totale finale (non stampa il dettaglio per sezione)" END BUTTON DLG_OK 9 2 diff --git a/at/at3700.cpp b/at/at3700.cpp index e35b1e1c3..9ec5c4486 100755 --- a/at/at3700.cpp +++ b/at/at3700.cpp @@ -88,10 +88,10 @@ class TStatisticaSog : public TApplication TLocalisamfile* _atstats; TAssoc_array* _colonne; TArray _righe; - TString16 _sezini, _sotini, _sezfin, _sotfin; + TString16 _sezini, _sotini, _sezfin, _sotfin, _gruppoazie; TString16 _catdon; TDate _data; - bool _solotot; + bool _solotot, _pergruppo; int _sezionistampate; protected: @@ -234,6 +234,8 @@ bool TStatisticaSog::menu(MENU_TAG m) _sotfin = _msk->get(F_SOTFIN); _catdon = _msk->get(F_CATDON); _data = _msk->get_date(F_DATA); + _pergruppo = _msk->get_bool(F_PERGRUPPO); + _gruppoazie = _msk->get(F_GRUPPOAZIE); _solotot = msk.get_bool(F_SOLOTOT); if (riepilogo()) stampa(); @@ -370,38 +372,48 @@ void TStatisticaSog::stampa_sezione(TString16 codsez, TString16 codsot) { if (_sezionistampate != 1) { - //rigastampa = "RIEPILOGO TOTALE PER TUTTE LE SEZIONI STAMPATE"; rigastampa = ""; rigastampa << "RIEPILOGO TOTALE SEZIONI DA " << _sezini << '/' << _sotini << " A " << _sezfin << '/' << _sotfin; + if (_pergruppo) + rigastampa << " - SOLO GRUPPI AZIENDALI"; } } else { _sezionistampate++; - rigastampa = "Sezione: "; - rigastampa << codsez; - if (codsot.not_empty()) + if (_pergruppo) { - rigastampa << "/"; + rigastampa = "Gruppo aziendale "; + rigastampa << codsez; rigastampa << codsot; - } - rigastampa << " "; - TLocalisamfile sezioni(LF_SEZIONI); - sezioni.setkey(1); - sezioni.zero(); - sezioni.put(SEZ_CODSEZ,codsez); - sezioni.put(SEZ_CODSOT,codsot); - if (sezioni.read() == NOERR) - { - TString80 den = sezioni.get(SEZ_DENSEZ); - rigastampa << den; - den = sezioni.get(SEZ_DENSOT); - if (den.not_empty()) + } + else + { + rigastampa = "Sezione: "; + rigastampa << codsez; + if (codsot.not_empty()) { rigastampa << "/"; + rigastampa << codsot; + } + rigastampa << " "; + TLocalisamfile sezioni(LF_SEZIONI); + sezioni.setkey(1); + sezioni.zero(); + sezioni.put(SEZ_CODSEZ,codsez); + sezioni.put(SEZ_CODSOT,codsot); + if (sezioni.read() == NOERR) + { + TString80 den = sezioni.get(SEZ_DENSEZ); rigastampa << den; + den = sezioni.get(SEZ_DENSOT); + if (den.not_empty()) + { + rigastampa << "/"; + rigastampa << den; + } } - } + } } if ((codsez == "ZZ" && codsot == "ZZ" && _sezionistampate != 1) || (codsez != "ZZ")) { @@ -538,8 +550,17 @@ bool TStatisticaSog::riepilogo() else filtro << format("(90->CODSEZ <= \"%s\")",(const char*)_sezfin); } + if (_pergruppo) + { + if (filtro.not_empty()) + filtro << " && "; + if (_gruppoazie.not_empty()) + filtro << format("(90->GRUPPOAZIE == \"%s\")",(const char*)_gruppoazie); + else + filtro << format("(90->GRUPPOAZIE != \"\")"); + } _cur->setfilter((const char*) filtro, TRUE); - TString16 codsez, codsot, catdon, catcoll; + TString16 codsez, codsot, catdon, catcoll, gruppoazie; long numero; TString16 gruppo, rh, sesso; TDate dataisc, datadim; @@ -601,8 +622,17 @@ bool TStatisticaSog::riepilogo() } if (ok) { - codsez = recsog.get(SOG_CODSEZ); - codsot = recsog.get(SOG_CODSOT); + if (_pergruppo) + { + gruppoazie = recsog.get(SOG_GRUPPOAZIE); + codsez = gruppoazie.sub(0,2); + codsot = gruppoazie.sub(2,4); + } + else + { + codsez = recsog.get(SOG_CODSEZ); + codsot = recsog.get(SOG_CODSOT); + } gruppo = recsog.get(SOG_GRUPPOAB0); rh = recsog.get(SOG_RHANTID); sesso = recsog.get(SOG_SESSO); diff --git a/at/at3700a.h b/at/at3700a.h index c9f880d38..a8c48edb1 100755 --- a/at/at3700a.h +++ b/at/at3700a.h @@ -13,4 +13,7 @@ #define F_CATDON 301 #define F_D_CATDON 302 #define F_DATA 303 -#define F_SOLOTOT 304 +#define F_PERGRUPPO 304 +#define F_GRUPPOAZIE 305 +#define F_D_GRUPPOAZIE 306 +#define F_SOLOTOT 307 diff --git a/at/at3700a.uml b/at/at3700a.uml index ce542b4d2..c80d60b21 100755 --- a/at/at3700a.uml +++ b/at/at3700a.uml @@ -1,5 +1,17 @@ #include "at3700a.h" +TOOLBAR "" 0 20 0 2 +BUTTON DLG_OK 9 2 +BEGIN + PROMPT -12 -1 "" +END + +BUTTON DLG_QUIT 9 2 +BEGIN + PROMPT -22 -1 "" +END +ENDPAGE + PAGE "Statistica donatori per sesso, gruppo e rh" -1 -1 78 12 GROUPBOX DLG_NULL 77 4 @@ -117,7 +129,7 @@ BEGIN HELP "Sottogruppo finale" END -GROUPBOX DLG_NULL 77 6 +GROUPBOX DLG_NULL 77 7 BEGIN PROMPT 1 5 "Opzioni per la statistica" END @@ -158,19 +170,45 @@ BEGIN PROMPT 2 8 "per tutte le categorie non di dimissione" END +BOOLEAN F_PERGRUPPO +BEGIN + PROMPT 2 9 "Stampa per gruppo aziendale" + MESSAGE TRUE ENABLE,F_GRUPPOAZIE|ENABLE,F_D_GRUPPOAZIE|RESET,F_SOLOTOT|DISABLE,F_SOLOTOT + MESSAGE FALSE RESET,F_GRUPPOAZIE|RESET,F_D_GRUPPOAZIE|DISABLE,F_GRUPPOAZIE|DISABLE,F_D_GRUPPOAZIE|ENABLE,F_SOLOTOT +END + +STRING F_GRUPPOAZIE 4 +BEGIN + PROMPT 35 9 "" + FLAGS "U" + USE GAZ + INPUT CODTAB F_GRUPPOAZIE + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@30" S0 + OUTPUT F_GRUPPOAZIE CODTAB + OUTPUT F_D_GRUPPOAZIE S0 + CHECKTYPE NORMAL + WARNING "Codice gruppo aziendale non presente" + HELP "Gruppo aziendale di appartenenza" +END + +STRING F_D_GRUPPOAZIE 30 +BEGIN + PROMPT 43 9 "" + FLAGS "U" + USE GAZ KEY 2 + INPUT S0 F_D_GRUPPOAZIE + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@30" S0 + COPY OUTPUT F_GRUPPOAZIE + CHECKTYPE NORMAL + WARNING "Gruppo aziendale non presente" + HELP "Gruppo aziendale di appartenenza" +END + BOOLEAN F_SOLOTOT BEGIN - PROMPT 2 9 "Stampa solo totale finale (non stampa il dettaglio per sezione)" -END - -BUTTON DLG_OK 9 2 -BEGIN - PROMPT -12 -1 "" -END - -BUTTON DLG_QUIT 9 2 -BEGIN - PROMPT -22 -1 "" + PROMPT 2 10 "Stampa solo totale finale (non stampa il dettaglio per sezione)" END ENDPAGE