Patch level :

Files correlati     :
Ricompilazione Demo : [ ]
Commento            : Statistiche soggetti alla data: corretto calcolo in base alle date di iscrizione e dimissione


git-svn-id: svn://10.65.10.50/trunk@6692 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
cris 1998-05-25 13:23:33 +00:00
parent df3fa7cd21
commit 7017b9be2f
3 changed files with 138 additions and 61 deletions

View File

@ -479,6 +479,7 @@ bool TStatSogxEta::riepilogo()
TString256 filtro = ""; TString256 filtro = "";
// filtro per categoria // filtro per categoria
/*
if (_catdon.not_empty()) if (_catdon.not_empty())
{ {
if (filtro.empty()) if (filtro.empty())
@ -502,6 +503,7 @@ bool TStatSogxEta::riepilogo()
} }
} }
} }
*/
// filtro per sezione/sottogruppo // filtro per sezione/sottogruppo
if (_sezini.not_empty()) if (_sezini.not_empty())
{ {
@ -545,50 +547,86 @@ bool TStatSogxEta::riepilogo()
} }
_cur->setfilter((const char*) filtro, TRUE); _cur->setfilter((const char*) filtro, TRUE);
TString16 codsez, codsot; TString16 codsez, codsot, catdon, catcoll;
long numero; long numero;
TString16 sesso; TString16 sesso;
int eta, fascia; int eta, fascia;
TDate datanasc; TDate datanasc, dataisc, datadim;
bool catdim, ok;
const TDate oggi(TODAY); const TDate oggi(TODAY);
const int anno = oggi.year(); const int anno = oggi.year();
TTable ctd("CTD");
ctd.put("CODTAB", _catdon);
if (ctd.read() == NOERR)
catdim = ctd.get_bool("B0");
TRectype& recsog = _cur->curr(); TRectype& recsog = _cur->curr();
long last = _cur->items(); long last = _cur->items();
TProgind prg (last, "Elaborazione in corso... Prego attendere", FALSE, TRUE, 30); TProgind prg (last, "Elaborazione in corso... Prego attendere", FALSE, TRUE, 30);
for ( *_cur=0; _cur->pos() < last; ++(*_cur) ) for ( *_cur=0; _cur->pos() < last; ++(*_cur) )
{ {
prg.addstatus(1); prg.addstatus(1);
codsez = recsog.get(SOG_CODSEZ); catdon = recsog.get(SOG_CATDON);
codsot = recsog.get(SOG_CODSOT); catcoll = "";
datanasc = recsog.get_date(SOG_DATANASC); dataisc = NULLDATE;
eta = _data.year() - datanasc.year(); datadim = NULLDATE;
fascia = data2row(eta); ok = FALSE;
sesso = recsog.get(SOG_SESSO); if (catdon.not_empty())
if (sesso.empty())
sesso = "9";
stat.zero();
stat.put(ATSS_CODSEZ, codsez);
stat.put(ATSS_CODSOT, codsot);
stat.put(ATSS_SESSO, sesso);
stat.put(ATSS_FASCIA, fascia);
if (stat.read() == NOERR)
{ {
numero = stat.get_long(ATSS_NUMERO); if (catdim)
numero++; {
stat.put(ATSS_NUMERO, numero); datadim = recsog.get_date(SOG_DATADIM);
stat.rewrite(); ok = ((catdon == _catdon) && (datadim <= _data));
} }
else else
{
dataisc = recsog.get_date(SOG_DATAISC);
ok = ((catdon == _catdon) && (dataisc <= _data));
if (!ok)
{
ctd.put("CODTAB", catdon);
if (ctd.read() == NOERR)
{
catcoll = ctd.get("S6");
datadim = recsog.get_date(SOG_DATADIM);
ok = ((catcoll == _catdon) && (dataisc <= _data) && (datadim > _data));
}
// se la categoria collegata è vuota occorre esaminare lo storico
}
}
}
if (ok)
{ {
codsez = recsog.get(SOG_CODSEZ);
codsot = recsog.get(SOG_CODSOT);
datanasc = recsog.get_date(SOG_DATANASC);
eta = _data.year() - datanasc.year();
fascia = data2row(eta);
sesso = recsog.get(SOG_SESSO);
if (sesso.empty())
sesso = "9";
stat.zero();
stat.put(ATSS_CODSEZ, codsez); stat.put(ATSS_CODSEZ, codsez);
stat.put(ATSS_CODSOT, codsot); stat.put(ATSS_CODSOT, codsot);
stat.put(ATSS_SESSO, sesso); stat.put(ATSS_SESSO, sesso);
stat.put(ATSS_FASCIA, fascia); stat.put(ATSS_FASCIA, fascia);
numero = 1; if (stat.read() == NOERR)
stat.put(ATSS_NUMERO, numero); {
stat.write(); numero = stat.get_long(ATSS_NUMERO);
} numero++;
stat.put(ATSS_NUMERO, numero);
stat.rewrite();
}
else
{
stat.put(ATSS_CODSEZ, codsez);
stat.put(ATSS_CODSOT, codsot);
stat.put(ATSS_SESSO, sesso);
stat.put(ATSS_FASCIA, fascia);
numero = 1;
stat.put(ATSS_NUMERO, numero);
stat.write();
}
}
} }
return (stat.eod() > 0); return (stat.eod() > 0);
} }

View File

@ -477,7 +477,7 @@ bool TStatSogxCat::riepilogo()
cati = ctd.get("S6"); cati = ctd.get("S6");
dataisc = recsog.get_date(SOG_DATAISC); dataisc = recsog.get_date(SOG_DATAISC);
nuovoi = (dataisc >= _dataini && dataisc <= _datafin); nuovoi = (dataisc >= _dataini && dataisc <= _datafin);
totalei = (dataisc <= _datafin && datadim >= _datafin); totalei = (dataisc <= _datafin && datadim > _datafin);
} }
else else
{ {

View File

@ -474,7 +474,8 @@ bool TStatisticaSog::riepilogo()
stat.setkey(1); stat.setkey(1);
_cur = new TCursor(_rel, "", 1); _cur = new TCursor(_rel, "", 1);
TString256 filtro = ""; TString256 filtro = "";
/*
// filtro per categoria // filtro per categoria
if (_catdon.not_empty()) if (_catdon.not_empty())
{ {
@ -499,6 +500,7 @@ bool TStatisticaSog::riepilogo()
} }
} }
} }
*/
// filtro per sezione/sottogruppo // filtro per sezione/sottogruppo
if (_sezini.not_empty()) if (_sezini.not_empty())
{ {
@ -541,51 +543,88 @@ bool TStatisticaSog::riepilogo()
} }
} }
_cur->setfilter((const char*) filtro, TRUE); _cur->setfilter((const char*) filtro, TRUE);
TString16 codsez, codsot; TString16 codsez, codsot, catdon, catcoll;
long numero; long numero;
TString16 gruppo, rh, sesso; TString16 gruppo, rh, sesso;
TDate dataisc, datadim;
bool catdim, ok;
TTable ctd("CTD");
ctd.put("CODTAB", _catdon);
if (ctd.read() == NOERR)
catdim = ctd.get_bool("B0");
TRectype& recsog = _cur->curr(); TRectype& recsog = _cur->curr();
long last = _cur->items(); long last = _cur->items();
TProgind prg (last, "Elaborazione in corso... Prego attendere", FALSE, TRUE, 30); TProgind prg (last, "Elaborazione in corso... Prego attendere", FALSE, TRUE, 30);
for ( *_cur=0; _cur->pos() < last; ++(*_cur) ) for ( *_cur=0; _cur->pos() < last; ++(*_cur) )
{ {
prg.addstatus(1); prg.addstatus(1);
codsez = recsog.get(SOG_CODSEZ); catdon = recsog.get(SOG_CATDON);
codsot = recsog.get(SOG_CODSOT); catcoll = "";
gruppo = recsog.get(SOG_GRUPPOAB0); dataisc = NULLDATE;
rh = recsog.get(SOG_RHANTID); datadim = NULLDATE;
sesso = recsog.get(SOG_SESSO); ok = FALSE;
if (sesso.empty()) if (catdon.not_empty())
sesso = "9";
if (gruppo == "A1" || gruppo == "A2")
gruppo = "A";
if (gruppo == "A1B" || gruppo == "A2B")
gruppo = "AB";
stat.zero();
stat.put(ATSS_CODSEZ, codsez);
stat.put(ATSS_CODSOT, codsot);
stat.put(ATSS_SESSO, sesso);
stat.put(ATSS_GRUPPO, gruppo);
stat.put(ATSS_RH, rh);
if (stat.read() == NOERR)
{ {
numero = stat.get_long(ATSS_NUMERO); if (catdim)
numero++; {
stat.put(ATSS_NUMERO, numero); datadim = recsog.get_date(SOG_DATADIM);
stat.rewrite(); ok = ((catdon == _catdon) && (datadim <= _data));
} }
else else
{
dataisc = recsog.get_date(SOG_DATAISC);
ok = ((catdon == _catdon) && (dataisc <= _data));
if (!ok)
{
ctd.put("CODTAB", catdon);
if (ctd.read() == NOERR)
{
catcoll = ctd.get("S6");
datadim = recsog.get_date(SOG_DATADIM);
ok = ((catcoll == _catdon) && (dataisc <= _data) && (datadim > _data));
}
// se la categoria collegata è vuota occorre esaminare lo storico
}
}
}
if (ok)
{ {
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);
if (sesso.empty())
sesso = "9";
if (gruppo == "A1" || gruppo == "A2")
gruppo = "A";
if (gruppo == "A1B" || gruppo == "A2B")
gruppo = "AB";
stat.zero();
stat.put(ATSS_CODSEZ, codsez); stat.put(ATSS_CODSEZ, codsez);
stat.put(ATSS_CODSOT, codsot); stat.put(ATSS_CODSOT, codsot);
stat.put(ATSS_SESSO, sesso); stat.put(ATSS_SESSO, sesso);
stat.put(ATSS_GRUPPO, gruppo); stat.put(ATSS_GRUPPO, gruppo);
stat.put(ATSS_RH, rh); stat.put(ATSS_RH, rh);
numero = 1; if (stat.read() == NOERR)
stat.put(ATSS_NUMERO, numero); {
stat.write(); numero = stat.get_long(ATSS_NUMERO);
} numero++;
stat.put(ATSS_NUMERO, numero);
stat.rewrite();
}
else
{
stat.put(ATSS_CODSEZ, codsez);
stat.put(ATSS_CODSOT, codsot);
stat.put(ATSS_SESSO, sesso);
stat.put(ATSS_GRUPPO, gruppo);
stat.put(ATSS_RH, rh);
numero = 1;
stat.put(ATSS_NUMERO, numero);
stat.write();
}
}
} }
return (stat.eod() > 0); return (stat.eod() > 0);
} }