diff --git a/at/at2100.cpp b/at/at2100.cpp index eeeb5704d..17a7c7717 100755 --- a/at/at2100.cpp +++ b/at/at2100.cpp @@ -52,7 +52,7 @@ class TStampaSospesi : public TPrintapp int _contatore, _totale; int _etlarghezza, _etcolonne, _etrighe, _etbordoini, _etbordofin, _netichette; int _caxpag, _cabordoini, _cabordofin, _ncartoline; - bool _motivi, _pergruppo; + bool _motivi, _pergruppo, _sosingole; TString16 _orario, _datacart; TString80 _invitoper, _data, _presso1, _presso2, _presso3, _presso4; TString80 _note, _intest1, _intest2, _intest3, _intest4; @@ -329,6 +329,7 @@ void TStampaSospesi::set_page(int file, int cnt) bool TStampaSospesi::filter_func_sospesi(const TRelation* rel) { bool filtrato = TRUE; + bool filtrocat = TRUE; TRectype recsog = rel->lfile().curr(); // filtro per categorie TAssoc_array& categorie = app()._categorie; @@ -336,6 +337,7 @@ bool TStampaSospesi::filter_func_sospesi(const TRelation* rel) { const TString16 cat = recsog.get(SOG_CATDON); filtrato = categorie.is_key((const char*) cat); + filtrocat = filtrato; } if ((filtrato) && (app()._sodataini.ok())) { @@ -344,7 +346,7 @@ bool TStampaSospesi::filter_func_sospesi(const TRelation* rel) } if ((filtrato) && (app()._sodatafin.ok())) { - const TDate datastato = recsog.get_date(SOG_DATASTATO); + TDate datastato = recsog.get_date(SOG_DATASTATO); filtrato = (datastato <= app()._sodatafin); } if ((filtrato) && (app()._dataini.ok())) @@ -375,6 +377,58 @@ bool TStampaSospesi::filter_func_sospesi(const TRelation* rel) else filtrato = FALSE; } + if (!filtrato && filtrocat && app()._sosingole) + { + // verifico se e' sospeso per una singola tipologia di donazione + // Sangue intero + filtrato = TRUE; + if ((filtrato) && (app()._sodataini.ok())) + { + const TDate datastato = recsog.get_date(SOG_DATASI); + filtrato = (datastato >= app()._sodataini); + } + if ((filtrato) && (app()._sodatafin.ok())) + { + TDate datastato = recsog.get_date(SOG_DATASI); + filtrato = (datastato <= app()._sodatafin); + } + if ((filtrato) && (app()._dataini.ok())) + { + const TDate datapross = recsog.get_date(SOG_FINESOSSI); + filtrato = (datapross >= app()._dataini); + } + if ((filtrato) && (app()._datafin.ok())) + { + const TDate datapross = recsog.get_date(SOG_FINESOSSI); + filtrato = (datapross <= app()._datafin); + } + } + if (!filtrato && filtrocat && app()._sosingole) + { + // verifico se e' sospeso per una singola tipologia di donazione + // Aferesi + filtrato = TRUE; + if ((filtrato) && (app()._sodataini.ok())) + { + const TDate datastato = recsog.get_date(SOG_DATAAF); + filtrato = (datastato >= app()._sodataini); + } + if ((filtrato) && (app()._sodatafin.ok())) + { + TDate datastato = recsog.get_date(SOG_DATAAF); + filtrato = (datastato <= app()._sodatafin); + } + if ((filtrato) && (app()._dataini.ok())) + { + const TDate datapross = recsog.get_date(SOG_FINESOSAF); + filtrato = (datapross >= app()._dataini); + } + if ((filtrato) && (app()._datafin.ok())) + { + const TDate datapross = recsog.get_date(SOG_FINESOSAF); + filtrato = (datapross <= app()._datafin); + } + } return filtrato; } @@ -585,6 +639,7 @@ bool TStampaSospesi::set_print(int m) _motivo5 = _msk->get(F_MOTIVO5); _motivi = (_motivo1.not_empty() || _motivo2.not_empty() || _motivo3.not_empty() || _motivo4.not_empty() || _motivo5.not_empty()); _pergruppo = _msk->get_bool(F_PERGRUPPO); + _sosingole = _msk->get_bool(F_SOSINGOLE); TString256 filtro = ""; // filtro per gruppo aziendale if (_pergruppo) @@ -598,10 +653,15 @@ bool TStampaSospesi::set_print(int m) } // filtro per tipo sospensione _tiposo = _msk->get(F_TIPO); + + if (_sosingole) + filtro << "((" << SOG_STATOSI << "== \"SO\") || (" << SOG_STATOAF << "== \"SO\") || " ; if (_tiposo.not_empty()) filtro << '(' << SOG_STATO << "== \"" << _tiposo << "\")"; else - filtro << "((TCS->S6 == \"S\") || (TCS->S6 == \"B\"))"; + filtro << "((TCS->S6 == \"S\") || (TCS->S6 == \"B\"))"; + if (_sosingole) + filtro << ')'; _prosstipo = _msk->get(F_PROSSTIPO); if (_prosstipo.not_empty()) filtro << " && (" << SOG_PROS_STATO << "== \"" << _prosstipo << "\")"; diff --git a/at/at2100a.h b/at/at2100a.h index 98293f14f..6eab4f276 100755 --- a/at/at2100a.h +++ b/at/at2100a.h @@ -41,6 +41,7 @@ #define F_D_MOTIVO4 316 #define F_MOTIVO5 317 #define F_D_MOTIVO5 318 +#define F_SOSINGOLE 319 #define F_PERGRUPPO 401 #define F_GRUPPOAZIE 402 diff --git a/at/at2100a.uml b/at/at2100a.uml index 11eb32d19..5fdcf329d 100755 --- a/at/at2100a.uml +++ b/at/at2100a.uml @@ -36,7 +36,7 @@ BEGIN END ENDPAGE -PAGE "Stampa soggetti sospesi" -1 -1 78 21 +PAGE "Stampa soggetti sospesi" -1 -1 78 22 GROUPBOX DLG_NULL 77 4 BEGIN @@ -280,7 +280,7 @@ BEGIN FLAGS "D" END -GROUPBOX DLG_NULL 77 12 +GROUPBOX DLG_NULL 77 13 BEGIN PROMPT 1 10 "Opzioni per la stampa" END @@ -452,16 +452,23 @@ BEGIN FLAGS "D" END +BOOLEAN F_SOSINGOLE +BEGIN + PROMPT 2 20 "Stampa anche sospesi su singola tipologia di donazione" +END + + + BOOLEAN F_PERGRUPPO BEGIN - PROMPT 2 20 "Stampa per gruppo aziendale" + PROMPT 2 21 "Stampa per gruppo aziendale" MESSAGE TRUE ENABLE,F_GRUPPOAZIE|ENABLE,F_D_GRUPPOAZIE MESSAGE FALSE RESET,F_GRUPPOAZIE|RESET,F_D_GRUPPOAZIE|DISABLE,F_GRUPPOAZIE|DISABLE,F_D_GRUPPOAZIE END STRING F_GRUPPOAZIE 4 BEGIN - PROMPT 35 20 "" + PROMPT 35 21 "" FLAGS "U" USE GAZ INPUT CODTAB F_GRUPPOAZIE @@ -476,7 +483,7 @@ END STRING F_D_GRUPPOAZIE 30 BEGIN - PROMPT 43 20 "" + PROMPT 43 21 "" FLAGS "U" USE GAZ KEY 2 INPUT S0 F_D_GRUPPOAZIE