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