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);
@ -466,29 +470,37 @@ 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");
dataisc = recsog.get_date(SOG_DATAISC);
nuovoi = (dataisc >= _dataini && dataisc <= _datafin);
totalei = (dataisc <= _datafin && datadim >= _datafin);
} }
else else
{ {
cati = catdon;
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);
} }
} }
} }
if (cati.not_empty())
{
stat.zero(); 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_CATDON, catdon); stat.put(ATSS_CATDON, cati);
if (stat.read() == NOERR) if (stat.read() == NOERR)
{ {
numero = stat.get_long(ATSS_NUMERO); numero = stat.get_long(ATSS_NUMERO);
numero2 = stat.get_long(ATSS_NUMERO2); numero2 = stat.get_long(ATSS_NUMERO2);
if (nuovo) if (nuovoi)
numero++; numero++;
if (totale) if (totalei)
numero2++; numero2++;
stat.put(ATSS_NUMERO, numero); stat.put(ATSS_NUMERO, numero);
stat.put(ATSS_NUMERO2, numero2); stat.put(ATSS_NUMERO2, numero2);
@ -498,12 +510,12 @@ bool TStatSogxCat::riepilogo()
{ {
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 (nuovoi)
numero = 1; numero = 1;
else else
numero = 0; numero = 0;
if (totale) if (totalei)
numero2 = 1; numero2 = 1;
else else
numero2 = 0; numero2 = 0;
@ -512,6 +524,44 @@ bool TStatSogxCat::riepilogo()
stat.write(); 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
{
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); return (stat.eod() > 0);
} }
else else