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:
parent
df3fa7cd21
commit
7017b9be2f
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
{
|
{
|
||||||
|
103
at/at3700.cpp
103
at/at3700.cpp
@ -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);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user