From 7017b9be2fa1dd6a29256972c25a5d0663ee3212 Mon Sep 17 00:00:00 2001 From: cris Date: Mon, 25 May 1998 13:23:33 +0000 Subject: [PATCH] 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 --- at/at3100.cpp | 94 +++++++++++++++++++++++++++++++-------------- at/at3300.cpp | 2 +- at/at3700.cpp | 103 ++++++++++++++++++++++++++++++++++---------------- 3 files changed, 138 insertions(+), 61 deletions(-) diff --git a/at/at3100.cpp b/at/at3100.cpp index 34a85aeff..dd8b30ea1 100755 --- a/at/at3100.cpp +++ b/at/at3100.cpp @@ -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); } diff --git a/at/at3300.cpp b/at/at3300.cpp index e7dcf086e..1b10b6128 100755 --- a/at/at3300.cpp +++ b/at/at3300.cpp @@ -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 { diff --git a/at/at3700.cpp b/at/at3700.cpp index a630a56eb..dd937043a 100755 --- a/at/at3700.cpp +++ b/at/at3700.cpp @@ -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); }