Patch level :

Files correlati     :
Ricompilazione Demo : [ ]
Commento            : Statistica soggetti per categoria: corretto nel caso di iscrizione e dimissione nel periodo scelto


git-svn-id: svn://10.65.10.50/trunk@6674 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
cris 1998-05-15 14:31:53 +00:00
parent 9f58f6898e
commit b5997b3a23

View File

@ -443,9 +443,9 @@ bool TStatSogxCat::riepilogo()
_cur->setfilter((const char*) filtro, TRUE);
TString16 codsez, codsot;
long numero,numero2;
TString16 catdon;
TString16 catdon, cati, catd;
TDate dataisc, datadim;
bool nuovo, totale;
bool nuovoi, totalei, nuovod, totaled;
TTable ctd("CTD");
TRectype& recsog = _cur->curr();
long last = _cur->items();
@ -453,11 +453,15 @@ bool TStatSogxCat::riepilogo()
for ( *_cur=0; _cur->pos() < last; ++(*_cur) )
{
prg.addstatus(1);
nuovo = FALSE;
totale = FALSE;
nuovoi = FALSE;
totalei = FALSE;
nuovod = FALSE;
totaled = FALSE;
codsez = recsog.get(SOG_CODSEZ);
codsot = recsog.get(SOG_CODSOT);
catdon = recsog.get(SOG_CATDON);
cati = "";
catd = "";
if (catdon.not_empty())
{
ctd.put("CODTAB",catdon);
@ -465,52 +469,98 @@ bool TStatSogxCat::riepilogo()
{
bool dimissione = ctd.get_bool("B0");
if (dimissione)
{
{
catd = catdon;
datadim = recsog.get_date(SOG_DATADIM);
nuovo = (datadim >= _dataini && datadim <= _datafin);
totale = (datadim <= _datafin);
}
else
{
nuovod = (datadim >= _dataini && datadim <= _datafin);
totaled = (datadim <= _datafin);
cati = ctd.get("S6");
dataisc = recsog.get_date(SOG_DATAISC);
nuovo = (dataisc >= _dataini && dataisc <= _datafin);
totale = (dataisc <= _datafin);
}
nuovoi = (dataisc >= _dataini && dataisc <= _datafin);
totalei = (dataisc <= _datafin && datadim >= _datafin);
}
else
{
cati = catdon;
dataisc = recsog.get_date(SOG_DATAISC);
nuovoi = (dataisc >= _dataini && dataisc <= _datafin);
totalei = (dataisc <= _datafin);
}
}
}
stat.zero();
stat.put(ATSS_CODSEZ, codsez);
stat.put(ATSS_CODSOT, codsot);
stat.put(ATSS_CATDON, catdon);
if (stat.read() == NOERR)
{
numero = stat.get_long(ATSS_NUMERO);
numero2 = stat.get_long(ATSS_NUMERO2);
if (nuovo)
numero++;
if (totale)
numero2++;
stat.put(ATSS_NUMERO, numero);
stat.put(ATSS_NUMERO2, numero2);
stat.rewrite();
}
else
{
}
if (cati.not_empty())
{
stat.zero();
stat.put(ATSS_CODSEZ, codsez);
stat.put(ATSS_CODSOT, codsot);
stat.put(ATSS_CATDON, catdon);
if (nuovo)
numero = 1;
stat.put(ATSS_CATDON, cati);
if (stat.read() == NOERR)
{
numero = stat.get_long(ATSS_NUMERO);
numero2 = stat.get_long(ATSS_NUMERO2);
if (nuovoi)
numero++;
if (totalei)
numero2++;
stat.put(ATSS_NUMERO, numero);
stat.put(ATSS_NUMERO2, numero2);
stat.rewrite();
}
else
numero = 0;
if (totale)
numero2 = 1;
{
stat.put(ATSS_CODSEZ, codsez);
stat.put(ATSS_CODSOT, codsot);
stat.put(ATSS_CATDON, cati);
if (nuovoi)
numero = 1;
else
numero = 0;
if (totalei)
numero2 = 1;
else
numero2 = 0;
stat.put(ATSS_NUMERO, numero);
stat.put(ATSS_NUMERO2, numero2);
stat.write();
}
}
if (catd.not_empty())
{
stat.zero();
stat.put(ATSS_CODSEZ, codsez);
stat.put(ATSS_CODSOT, codsot);
stat.put(ATSS_CATDON, catd);
if (stat.read() == NOERR)
{
numero = stat.get_long(ATSS_NUMERO);
numero2 = stat.get_long(ATSS_NUMERO2);
if (nuovod)
numero++;
if (totaled)
numero2++;
stat.put(ATSS_NUMERO, numero);
stat.put(ATSS_NUMERO2, numero2);
stat.rewrite();
}
else
numero2 = 0;
stat.put(ATSS_NUMERO, numero);
stat.put(ATSS_NUMERO2, numero2);
stat.write();
}
{
stat.put(ATSS_CODSEZ, codsez);
stat.put(ATSS_CODSOT, codsot);
stat.put(ATSS_CATDON, catd);
if (nuovod)
numero = 1;
else
numero = 0;
if (totaled)
numero2 = 1;
else
numero2 = 0;
stat.put(ATSS_NUMERO, numero);
stat.put(ATSS_NUMERO2, numero2);
stat.write();
}
}
}
return (stat.eod() > 0);
}