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 = "";
// filtro per categoria
/*
if (_catdon.not_empty())
{
if (filtro.empty())
@ -502,6 +503,7 @@ bool TStatSogxEta::riepilogo()
}
}
}
*/
// filtro per sezione/sottogruppo
if (_sezini.not_empty())
{
@ -545,50 +547,86 @@ bool TStatSogxEta::riepilogo()
}
_cur->setfilter((const char*) filtro, TRUE);
TString16 codsez, codsot;
TString16 codsez, codsot, catdon, catcoll;
long numero;
TString16 sesso;
int eta, fascia;
TDate datanasc;
TDate datanasc, dataisc, datadim;
bool catdim, ok;
const TDate oggi(TODAY);
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();
long last = _cur->items();
TProgind prg (last, "Elaborazione in corso... Prego attendere", FALSE, TRUE, 30);
for ( *_cur=0; _cur->pos() < last; ++(*_cur) )
{
prg.addstatus(1);
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_CODSOT, codsot);
stat.put(ATSS_SESSO, sesso);
stat.put(ATSS_FASCIA, fascia);
if (stat.read() == NOERR)
catdon = recsog.get(SOG_CATDON);
catcoll = "";
dataisc = NULLDATE;
datadim = NULLDATE;
ok = FALSE;
if (catdon.not_empty())
{
numero = stat.get_long(ATSS_NUMERO);
numero++;
stat.put(ATSS_NUMERO, numero);
stat.rewrite();
}
else
if (catdim)
{
datadim = recsog.get_date(SOG_DATADIM);
ok = ((catdon == _catdon) && (datadim <= _data));
}
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_CODSOT, codsot);
stat.put(ATSS_SESSO, sesso);
stat.put(ATSS_SESSO, sesso);
stat.put(ATSS_FASCIA, fascia);
numero = 1;
stat.put(ATSS_NUMERO, numero);
stat.write();
}
if (stat.read() == NOERR)
{
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);
}

View File

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

View File

@ -474,7 +474,8 @@ bool TStatisticaSog::riepilogo()
stat.setkey(1);
_cur = new TCursor(_rel, "", 1);
TString256 filtro = "";
/*
// filtro per categoria
if (_catdon.not_empty())
{
@ -499,6 +500,7 @@ bool TStatisticaSog::riepilogo()
}
}
}
*/
// filtro per sezione/sottogruppo
if (_sezini.not_empty())
{
@ -541,51 +543,88 @@ bool TStatisticaSog::riepilogo()
}
}
_cur->setfilter((const char*) filtro, TRUE);
TString16 codsez, codsot;
TString16 codsez, codsot, catdon, catcoll;
long numero;
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();
long last = _cur->items();
TProgind prg (last, "Elaborazione in corso... Prego attendere", FALSE, TRUE, 30);
for ( *_cur=0; _cur->pos() < last; ++(*_cur) )
{
prg.addstatus(1);
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_CODSOT, codsot);
stat.put(ATSS_SESSO, sesso);
stat.put(ATSS_GRUPPO, gruppo);
stat.put(ATSS_RH, rh);
if (stat.read() == NOERR)
catdon = recsog.get(SOG_CATDON);
catcoll = "";
dataisc = NULLDATE;
datadim = NULLDATE;
ok = FALSE;
if (catdon.not_empty())
{
numero = stat.get_long(ATSS_NUMERO);
numero++;
stat.put(ATSS_NUMERO, numero);
stat.rewrite();
}
else
if (catdim)
{
datadim = recsog.get_date(SOG_DATADIM);
ok = ((catdon == _catdon) && (datadim <= _data));
}
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_CODSOT, codsot);
stat.put(ATSS_SESSO, sesso);
stat.put(ATSS_SESSO, sesso);
stat.put(ATSS_GRUPPO, gruppo);
stat.put(ATSS_RH, rh);
numero = 1;
stat.put(ATSS_NUMERO, numero);
stat.write();
}
if (stat.read() == NOERR)
{
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);
}