Patch level :

Files correlati     :
Ricompilazione Demo : [ ]
Commento            : Possibilitá di fare queste statistiche per gruppo aziendale + toolbar nella maschera


git-svn-id: svn://10.65.10.50/trunk@8976 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
cris 2000-05-04 14:51:39 +00:00
parent 91d912e13b
commit 867a668a77
12 changed files with 393 additions and 144 deletions

View File

@ -89,11 +89,11 @@ class TStatSogxEta : public TApplication
TLocalisamfile* _atstats; TLocalisamfile* _atstats;
TAssoc_array* _colonne; TAssoc_array* _colonne;
TArray _righe; TArray _righe;
TString16 _sezini, _sotini, _sezfin, _sotfin; TString16 _sezini, _sotini, _sezfin, _sotfin, _gruppoazie;
TString16 _catdon; TString16 _catdon;
TDate _data; TDate _data;
TArray _etaini, _etafin; TArray _etaini, _etafin;
bool _solotot; bool _solotot, _pergruppo;
int _sezionistampate; int _sezionistampate;
protected: protected:
@ -210,7 +210,9 @@ bool TStatSogxEta::menu(MENU_TAG m)
_sotfin = _msk->get(F_SOTFIN); _sotfin = _msk->get(F_SOTFIN);
_catdon = _msk->get(F_CATDON); _catdon = _msk->get(F_CATDON);
_data = _msk->get_date(F_DATA); _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); TSheet_field& s = (TSheet_field&)_msk->field(F_FASCIE);
for (int r=0; r<s.items(); r++) for (int r=0; r<s.items(); r++)
{ {
@ -341,38 +343,48 @@ void TStatSogxEta::stampa_sezione(TString16 codsez, TString16 codsot)
{ {
if (_sezionistampate != 1) if (_sezionistampate != 1)
{ {
//rigastampa = "RIEPILOGO TOTALE PER TUTTE LE SEZIONI STAMPATE";
rigastampa = ""; rigastampa = "";
rigastampa << "RIEPILOGO TOTALE SEZIONI DA " << _sezini << '/' << _sotini << " A " << _sezfin << '/' << _sotfin; rigastampa << "RIEPILOGO TOTALE SEZIONI DA " << _sezini << '/' << _sotini << " A " << _sezfin << '/' << _sotfin;
if (_pergruppo)
rigastampa << " - SOLO GRUPPI AZIENDALI";
} }
} }
else else
{ {
_sezionistampate++; _sezionistampate++;
rigastampa = "Sezione: "; if (_pergruppo)
rigastampa << codsez;
if (codsot.not_empty())
{ {
rigastampa << "/"; rigastampa = "Gruppo aziendale ";
rigastampa << codsez;
rigastampa << codsot; rigastampa << codsot;
} }
rigastampa << " "; else
TLocalisamfile sezioni(LF_SEZIONI); {
sezioni.setkey(1); rigastampa = "Sezione: ";
sezioni.zero(); rigastampa << codsez;
sezioni.put(SEZ_CODSEZ,codsez); if (codsot.not_empty())
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 << "/";
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; rigastampa << den;
den = sezioni.get(SEZ_DENSOT);
if (den.not_empty())
{
rigastampa << "/";
rigastampa << den;
}
} }
} }
} }
if ((codsez == "ZZ" && codsot == "ZZ" && _sezionistampate != 1) || (codsez != "ZZ")) if ((codsez == "ZZ" && codsot == "ZZ" && _sezionistampate != 1) || (codsez != "ZZ"))
{ {
@ -536,8 +548,17 @@ bool TStatSogxEta::riepilogo()
else else
filtro << format("(90->CODSEZ <= \"%s\")",(const char*)_sezfin); filtro << format("(90->CODSEZ <= \"%s\")",(const char*)_sezfin);
} }
_cur->setfilter((const char*) filtro, TRUE); if (_pergruppo)
TString16 codsez, codsot, catdon, catcoll; {
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; long numero;
TString16 sesso; TString16 sesso;
int eta, fascia; int eta, fascia;
@ -602,8 +623,17 @@ bool TStatSogxEta::riepilogo()
} }
if (ok) if (ok)
{ {
codsez = recsog.get(SOG_CODSEZ); if (_pergruppo)
codsot = recsog.get(SOG_CODSOT); {
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); datanasc = recsog.get_date(SOG_DATANASC);
eta = _data.year() - datanasc.year(); eta = _data.year() - datanasc.year();
fascia = data2row(eta); fascia = data2row(eta);

View File

@ -13,8 +13,11 @@
#define F_CATDON 301 #define F_CATDON 301
#define F_D_CATDON 302 #define F_D_CATDON 302
#define F_DATA 303 #define F_DATA 303
#define F_SOLOTOT 304 #define F_PERGRUPPO 304
#define F_FASCIE 305 #define F_GRUPPOAZIE 305
#define F_D_GRUPPOAZIE 306
#define F_SOLOTOT 307
#define F_FASCIE 308
#define F_ETAINI 101 #define F_ETAINI 101
#define F_ETAFIN 102 #define F_ETAFIN 102

View File

@ -1,5 +1,17 @@
#include "at3100a.h" #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 PAGE "Statistica donatori per sesso e fascie di eta'" -1 -1 78 20
GROUPBOX DLG_NULL 77 4 GROUPBOX DLG_NULL 77 4
@ -117,7 +129,7 @@ BEGIN
HELP "Sottogruppo finale" HELP "Sottogruppo finale"
END END
GROUPBOX DLG_NULL 77 14 GROUPBOX DLG_NULL 77 15
BEGIN BEGIN
PROMPT 1 5 "Opzioni per la statistica" PROMPT 1 5 "Opzioni per la statistica"
END END
@ -149,43 +161,70 @@ BEGIN
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
END 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 TEXT DLG_NULL
BEGIN BEGIN
PROMPT 25 8 "Se la categoria e' vuota, la statistica vale" PROMPT 25 10 "Se la categoria e' vuota, la statistica vale"
END END
TEXT DLG_NULL TEXT DLG_NULL
BEGIN BEGIN
PROMPT 25 9 "per tutte le categorie non di dimissione" PROMPT 25 11 "per tutte le categorie non di dimissione"
END END
BOOLEAN F_SOLOTOT BOOLEAN F_SOLOTOT
BEGIN 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 END
TEXT DLG_NULL TEXT DLG_NULL
BEGIN BEGIN
PROMPT 2 8 "Fascie di eta'" PROMPT 2 9 "Fascie di eta'"
END END
SPREADSHEET F_FASCIE 15 9 SPREADSHEET F_FASCIE 15 9
BEGIN BEGIN
PROMPT 3 9 "" PROMPT 3 10 ""
ITEM "Da " ITEM "Da "
ITEM "A " ITEM "A "
END END
BUTTON DLG_OK 9 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_QUIT 9 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE ENDPAGE
ENDMASK ENDMASK
@ -198,7 +237,7 @@ END
NUMBER F_ETAFIN 3 NUMBER F_ETAFIN 3
BEGIN BEGIN
PROMPT 3 2 "Eta' finale " PROMPT 2 3 "Eta' finale "
END END
BUTTON DLG_OK 9 2 BUTTON DLG_OK 9 2

View File

@ -87,9 +87,9 @@ class TStatSogxCat : public TApplication
TAssoc_array* _colonne; TAssoc_array* _colonne;
TAssoc_array* _categorie; TAssoc_array* _categorie;
TArray _righe; TArray _righe;
TString16 _sezini, _sotini, _sezfin, _sotfin; TString16 _sezini, _sotini, _sezfin, _sotfin, _gruppoazie;
TDate _dataini, _datafin; TDate _dataini, _datafin;
bool _solotot; bool _solotot, _pergruppo;
int _sezionistampate; int _sezionistampate;
protected: protected:
@ -192,6 +192,8 @@ bool TStatSogxCat::menu(MENU_TAG m)
_sotfin = _msk->get(F_SOTFIN); _sotfin = _msk->get(F_SOTFIN);
_dataini = _msk->get_date(F_DATAINI); _dataini = _msk->get_date(F_DATAINI);
_datafin = _msk->get_date(F_DATAFIN); _datafin = _msk->get_date(F_DATAFIN);
_pergruppo = _msk->get_bool(F_PERGRUPPO);
_gruppoazie = _msk->get(F_GRUPPOAZIE);
_solotot = msk.get_bool(F_SOLOTOT); _solotot = msk.get_bool(F_SOLOTOT);
if (riepilogo()) if (riepilogo())
stampa(); stampa();
@ -307,38 +309,48 @@ void TStatSogxCat::stampa_sezione(TString16 codsez, TString16 codsot)
{ {
if (_sezionistampate != 1) if (_sezionistampate != 1)
{ {
//rigastampa = "RIEPILOGO TOTALE PER TUTTE LE SEZIONI STAMPATE";
rigastampa = ""; rigastampa = "";
rigastampa << "RIEPILOGO TOTALE SEZIONI DA " << _sezini << '/' << _sotini << " A " << _sezfin << '/' << _sotfin; rigastampa << "RIEPILOGO TOTALE SEZIONI DA " << _sezini << '/' << _sotini << " A " << _sezfin << '/' << _sotfin;
if (_pergruppo)
rigastampa << " - SOLO GRUPPI AZIENDALI";
} }
} }
else else
{ {
_sezionistampate++; _sezionistampate++;
rigastampa = "Sezione: "; if (_pergruppo)
rigastampa << codsez;
if (codsot.not_empty())
{ {
rigastampa << "/"; rigastampa = "Gruppo aziendale ";
rigastampa << codsez;
rigastampa << codsot; rigastampa << codsot;
} }
rigastampa << " "; else
TLocalisamfile sezioni(LF_SEZIONI); {
sezioni.setkey(1); rigastampa = "Sezione: ";
sezioni.zero(); rigastampa << codsez;
sezioni.put(SEZ_CODSEZ,codsez); if (codsot.not_empty())
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 << "/";
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; rigastampa << den;
den = sezioni.get(SEZ_DENSOT);
if (den.not_empty())
{
rigastampa << "/";
rigastampa << den;
}
} }
} }
} }
if ((codsez == "ZZ" && codsot == "ZZ" && _sezionistampate != 1) || (codsez != "ZZ")) if ((codsez == "ZZ" && codsot == "ZZ" && _sezionistampate != 1) || (codsez != "ZZ"))
{ {
@ -455,8 +467,17 @@ bool TStatSogxCat::riepilogo()
else else
filtro << format("(90->CODSEZ <= \"%s\")",(const char*)_sezfin); 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); _cur->setfilter((const char*) filtro, TRUE);
TString16 codsez, codsot; TString16 codsez, codsot, gruppoazie;
long numero,numero2; long numero,numero2;
TString16 catdon, cati, catd; TString16 catdon, cati, catd;
TDate dataisc, datadim; TDate dataisc, datadim;
@ -472,8 +493,17 @@ bool TStatSogxCat::riepilogo()
totalei = FALSE; totalei = FALSE;
nuovod = FALSE; nuovod = FALSE;
totaled = FALSE; totaled = FALSE;
codsez = recsog.get(SOG_CODSEZ); if (_pergruppo)
codsot = recsog.get(SOG_CODSOT); {
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); catdon = recsog.get(SOG_CATDON);
cati = ""; cati = "";
catd = ""; catd = "";

View File

@ -10,6 +10,9 @@
#define F_SOTFIN 107 #define F_SOTFIN 107
#define F_D_SOTFIN 108 #define F_D_SOTFIN 108
#define F_DATAINI 301 #define F_DATAINI 301
#define F_DATAFIN 302 #define F_DATAFIN 302
#define F_SOLOTOT 303 #define F_PERGRUPPO 303
#define F_GRUPPOAZIE 304
#define F_D_GRUPPOAZIE 305
#define F_SOLOTOT 306

View File

@ -117,7 +117,7 @@ BEGIN
HELP "Sottogruppo finale" HELP "Sottogruppo finale"
END END
GROUPBOX DLG_NULL 77 4 GROUPBOX DLG_NULL 77 5
BEGIN BEGIN
PROMPT 1 5 "Opzioni per la statistica" PROMPT 1 5 "Opzioni per la statistica"
END END
@ -125,16 +125,56 @@ END
DATE F_DATAINI DATE F_DATAINI
BEGIN BEGIN
PROMPT 2 6 "Segnala i cambi di categoria dal " PROMPT 2 6 "Segnala i cambi di categoria dal "
CHECKTYPE REQUIRED
HELP "Data iniziale per elaborazione"
END END
DATE F_DATAFIN DATE F_DATAFIN
BEGIN BEGIN
PROMPT 50 6 "al " 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 END
BOOLEAN F_SOLOTOT BOOLEAN F_SOLOTOT
BEGIN 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 END
BUTTON DLG_OK 9 2 BUTTON DLG_OK 9 2

View File

@ -94,7 +94,7 @@ class TStatDonGrRh : public TApplication
TArray _righe; // array per riepilogo donazioni TArray _righe; // array per riepilogo donazioni
TString16 _sezini, _sotini, _sezfin, _sotfin; TString16 _sezini, _sotini, _sezfin, _sotfin;
TAssoc_array* _asoggetti; TAssoc_array* _asoggetti;
bool _solotot; bool _solotot, _pergruppo;
int _sezionistampate; int _sezionistampate;
protected: protected:
@ -241,6 +241,7 @@ bool TStatDonGrRh::menu(MENU_TAG m)
_tipodon3 = msk.get(F_TIPODON3); _tipodon3 = msk.get(F_TIPODON3);
_tipodon4 = msk.get(F_TIPODON4); _tipodon4 = msk.get(F_TIPODON4);
_tipodon5 = msk.get(F_TIPODON5); _tipodon5 = msk.get(F_TIPODON5);
_pergruppo = msk.get_bool(F_PERGRUPPO);
_solotot = msk.get_bool(F_SOLOTOT); _solotot = msk.get_bool(F_SOLOTOT);
_sezini = msk.get(F_SEZINI); _sezini = msk.get(F_SEZINI);
_sotini = msk.get(F_SOTINI); _sotini = msk.get(F_SOTINI);
@ -414,38 +415,48 @@ void TStatDonGrRh::stampa_sezione(TString16 codsez, TString16 codsot)
{ {
if (_sezionistampate != 1) if (_sezionistampate != 1)
{ {
//rigastampa = "RIEPILOGO TOTALE PER TUTTE LE SEZIONI STAMPATE";
rigastampa = ""; rigastampa = "";
rigastampa << "RIEPILOGO TOTALE SEZIONI DA " << _sezini << '/' << _sotini << " A " << _sezfin << '/' << _sotfin; rigastampa << "RIEPILOGO TOTALE SEZIONI DA " << _sezini << '/' << _sotini << " A " << _sezfin << '/' << _sotfin;
if (_pergruppo)
rigastampa << " - SOLO GRUPPI AZIENDALI";
} }
} }
else else
{ {
_sezionistampate++; _sezionistampate++;
rigastampa = "Sezione: "; if (_pergruppo)
rigastampa << codsez;
if (codsot.not_empty())
{ {
rigastampa << "/"; rigastampa = "Gruppo aziendale ";
rigastampa << codsez;
rigastampa << codsot; rigastampa << codsot;
} }
rigastampa << " "; else
TLocalisamfile sezioni(LF_SEZIONI); {
sezioni.setkey(1); rigastampa = "Sezione: ";
sezioni.zero(); rigastampa << codsez;
sezioni.put(SEZ_CODSEZ,codsez); if (codsot.not_empty())
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 << "/";
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; rigastampa << den;
den = sezioni.get(SEZ_DENSOT);
if (den.not_empty())
{
rigastampa << "/";
rigastampa << den;
}
} }
} }
} }
if ((codsez == "ZZ" && codsot == "ZZ" && _sezionistampate != 1) || (codsez != "ZZ")) if ((codsez == "ZZ" && codsot == "ZZ" && _sezionistampate != 1) || (codsez != "ZZ"))
{ {
@ -696,7 +707,6 @@ bool TStatDonGrRh::riepilogo()
{ {
if (filtro.not_empty()) if (filtro.not_empty())
filtro << " && "; filtro << " && ";
if (_sotfin.not_empty()) if (_sotfin.not_empty())
{ {
filtro << "("; filtro << "(";
@ -711,6 +721,13 @@ bool TStatDonGrRh::riepilogo()
else else
filtro << format("(92->CODSEZ <= \"%s\")",(const char*)_sezfin); 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 // filtro per tipo donazione
TString256 filtrotd = ""; TString256 filtrotd = "";
if (_tipodon1.not_empty()) if (_tipodon1.not_empty())
@ -746,9 +763,8 @@ bool TStatDonGrRh::riepilogo()
filtro << '(' << filtrotd << ')'; filtro << '(' << filtrotd << ')';
} }
_cur->setfilter((const char*) filtro, TRUE); _cur->setfilter((const char*) filtro, TRUE);
TString16 codsez, codsot, tipodon, sesso; TString16 codsez, codsot, tipodon, sesso, gruppoazie, gruppo, rh;
TDate datadon; TDate datadon;
TString16 gruppo, rh;
long numero; long numero;
bool esiste; bool esiste;
TRectype& recdon = _cur->curr(); TRectype& recdon = _cur->curr();
@ -766,13 +782,22 @@ bool TStatDonGrRh::riepilogo()
_asoggetti->add(codice); _asoggetti->add(codice);
esiste = FALSE; esiste = FALSE;
} }
codsez = recdon.get(DON_CODSEZ); if (_pergruppo)
codsot = recdon.get(DON_CODSOT);
if (codsez.empty())
{ {
codsez = recsog.get(SOG_CODSEZ); gruppoazie = recsog.get(SOG_GRUPPOAZIE);
codsot = recsog.get(SOG_CODSOT); 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); sesso = recsog.get(SOG_SESSO);
gruppo = recsog.get(SOG_GRUPPOAB0); gruppo = recsog.get(SOG_GRUPPOAB0);
if (gruppo == "A1" || gruppo == "A2") if (gruppo == "A1" || gruppo == "A2")

View File

@ -1,4 +1,4 @@
// statistica donazioni per gruppo e rh // statistica donazioni/donatori
// definizione campi per maschera di selezione // definizione campi per maschera di selezione
#define F_SEZINI 101 #define F_SEZINI 101
@ -22,4 +22,5 @@
#define F_D_TIPODON3 310 #define F_D_TIPODON3 310
#define F_D_TIPODON4 311 #define F_D_TIPODON4 311
#define F_D_TIPODON5 312 #define F_D_TIPODON5 312
#define F_SOLOTOT 316 #define F_SOLOTOT 313
#define F_PERGRUPPO 314

View File

@ -117,7 +117,7 @@ BEGIN
HELP "Sottogruppo finale" HELP "Sottogruppo finale"
END END
GROUPBOX DLG_NULL 77 9 GROUPBOX DLG_NULL 77 10
BEGIN BEGIN
PROMPT 1 5 "Opzioni per la statistica" PROMPT 1 5 "Opzioni per la statistica"
END END
@ -234,9 +234,16 @@ BEGIN
FLAGS "D" FLAGS "D"
END 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 BOOLEAN F_SOLOTOT
BEGIN 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 END
BUTTON DLG_OK 9 2 BUTTON DLG_OK 9 2

View File

@ -88,10 +88,10 @@ class TStatisticaSog : public TApplication
TLocalisamfile* _atstats; TLocalisamfile* _atstats;
TAssoc_array* _colonne; TAssoc_array* _colonne;
TArray _righe; TArray _righe;
TString16 _sezini, _sotini, _sezfin, _sotfin; TString16 _sezini, _sotini, _sezfin, _sotfin, _gruppoazie;
TString16 _catdon; TString16 _catdon;
TDate _data; TDate _data;
bool _solotot; bool _solotot, _pergruppo;
int _sezionistampate; int _sezionistampate;
protected: protected:
@ -234,6 +234,8 @@ bool TStatisticaSog::menu(MENU_TAG m)
_sotfin = _msk->get(F_SOTFIN); _sotfin = _msk->get(F_SOTFIN);
_catdon = _msk->get(F_CATDON); _catdon = _msk->get(F_CATDON);
_data = _msk->get_date(F_DATA); _data = _msk->get_date(F_DATA);
_pergruppo = _msk->get_bool(F_PERGRUPPO);
_gruppoazie = _msk->get(F_GRUPPOAZIE);
_solotot = msk.get_bool(F_SOLOTOT); _solotot = msk.get_bool(F_SOLOTOT);
if (riepilogo()) if (riepilogo())
stampa(); stampa();
@ -370,38 +372,48 @@ void TStatisticaSog::stampa_sezione(TString16 codsez, TString16 codsot)
{ {
if (_sezionistampate != 1) if (_sezionistampate != 1)
{ {
//rigastampa = "RIEPILOGO TOTALE PER TUTTE LE SEZIONI STAMPATE";
rigastampa = ""; rigastampa = "";
rigastampa << "RIEPILOGO TOTALE SEZIONI DA " << _sezini << '/' << _sotini << " A " << _sezfin << '/' << _sotfin; rigastampa << "RIEPILOGO TOTALE SEZIONI DA " << _sezini << '/' << _sotini << " A " << _sezfin << '/' << _sotfin;
if (_pergruppo)
rigastampa << " - SOLO GRUPPI AZIENDALI";
} }
} }
else else
{ {
_sezionistampate++; _sezionistampate++;
rigastampa = "Sezione: "; if (_pergruppo)
rigastampa << codsez;
if (codsot.not_empty())
{ {
rigastampa << "/"; rigastampa = "Gruppo aziendale ";
rigastampa << codsez;
rigastampa << codsot; rigastampa << codsot;
} }
rigastampa << " "; else
TLocalisamfile sezioni(LF_SEZIONI); {
sezioni.setkey(1); rigastampa = "Sezione: ";
sezioni.zero(); rigastampa << codsez;
sezioni.put(SEZ_CODSEZ,codsez); if (codsot.not_empty())
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 << "/";
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; rigastampa << den;
den = sezioni.get(SEZ_DENSOT);
if (den.not_empty())
{
rigastampa << "/";
rigastampa << den;
}
} }
} }
} }
if ((codsez == "ZZ" && codsot == "ZZ" && _sezionistampate != 1) || (codsez != "ZZ")) if ((codsez == "ZZ" && codsot == "ZZ" && _sezionistampate != 1) || (codsez != "ZZ"))
{ {
@ -538,8 +550,17 @@ bool TStatisticaSog::riepilogo()
else else
filtro << format("(90->CODSEZ <= \"%s\")",(const char*)_sezfin); 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); _cur->setfilter((const char*) filtro, TRUE);
TString16 codsez, codsot, catdon, catcoll; TString16 codsez, codsot, catdon, catcoll, gruppoazie;
long numero; long numero;
TString16 gruppo, rh, sesso; TString16 gruppo, rh, sesso;
TDate dataisc, datadim; TDate dataisc, datadim;
@ -601,8 +622,17 @@ bool TStatisticaSog::riepilogo()
} }
if (ok) if (ok)
{ {
codsez = recsog.get(SOG_CODSEZ); if (_pergruppo)
codsot = recsog.get(SOG_CODSOT); {
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); gruppo = recsog.get(SOG_GRUPPOAB0);
rh = recsog.get(SOG_RHANTID); rh = recsog.get(SOG_RHANTID);
sesso = recsog.get(SOG_SESSO); sesso = recsog.get(SOG_SESSO);

View File

@ -13,4 +13,7 @@
#define F_CATDON 301 #define F_CATDON 301
#define F_D_CATDON 302 #define F_D_CATDON 302
#define F_DATA 303 #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

View File

@ -1,5 +1,17 @@
#include "at3700a.h" #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 PAGE "Statistica donatori per sesso, gruppo e rh" -1 -1 78 12
GROUPBOX DLG_NULL 77 4 GROUPBOX DLG_NULL 77 4
@ -117,7 +129,7 @@ BEGIN
HELP "Sottogruppo finale" HELP "Sottogruppo finale"
END END
GROUPBOX DLG_NULL 77 6 GROUPBOX DLG_NULL 77 7
BEGIN BEGIN
PROMPT 1 5 "Opzioni per la statistica" PROMPT 1 5 "Opzioni per la statistica"
END END
@ -158,19 +170,45 @@ BEGIN
PROMPT 2 8 "per tutte le categorie non di dimissione" PROMPT 2 8 "per tutte le categorie non di dimissione"
END 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 BOOLEAN F_SOLOTOT
BEGIN BEGIN
PROMPT 2 9 "Stampa solo totale finale (non stampa il dettaglio per sezione)" PROMPT 2 10 "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 ""
END END
ENDPAGE ENDPAGE