Patch level :

Files correlati     :
Ricompilazione Demo : [ ]
Commento            : Statistica don. per gruppo e rh: stampa riepilogo finale a fine stampa + possibilita' di selezionare un tipo donazione


git-svn-id: svn://10.65.10.50/trunk@7712 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
cris 1999-01-26 14:34:58 +00:00
parent 7c63a7ad73
commit 89ac79a689
3 changed files with 154 additions and 108 deletions

View File

@ -91,7 +91,7 @@ class TMensileDonxGr : public TApplication
TDate _dataini, _datafin; TDate _dataini, _datafin;
TAssoc_array* _colonne; TAssoc_array* _colonne;
TArray _righe; // array per riepilogo donazioni TArray _righe; // array per riepilogo donazioni
TString16 _sezini, _sotini, _sezfin, _sotfin; TString16 _sezini, _sotini, _sezfin, _sotfin, _tipodon;
protected: protected:
virtual bool create(); virtual bool create();
@ -172,37 +172,37 @@ bool TMensileDonxGr::crea_colonne()
_colonne->destroy(); _colonne->destroy();
real contatore(ZERO); real contatore(ZERO);
real* oggetto = new real(contatore); real* oggetto = new real(contatore);
const char* indice = "0P"; const char* indice = "0P"; // 0 POS
_colonne->add(indice,(TObject*)oggetto); _colonne->add(indice,(TObject*)oggetto);
indice = "0N"; indice = "0N"; // 0 NEG
contatore = contatore+1; contatore = contatore+1;
real* oggetto2 = new real(contatore); real* oggetto2 = new real(contatore);
_colonne->add(indice,(TObject*)oggetto2); _colonne->add(indice,(TObject*)oggetto2);
indice = "AP"; indice = "AP"; // A POS
contatore = contatore+1; contatore = contatore+1;
real* oggetto3 = new real(contatore); real* oggetto3 = new real(contatore);
_colonne->add(indice,(TObject*)oggetto3); _colonne->add(indice,(TObject*)oggetto3);
indice = "AN"; indice = "AN"; // A NEG
contatore = contatore+1; contatore = contatore+1;
real* oggetto4 = new real(contatore); real* oggetto4 = new real(contatore);
_colonne->add(indice,(TObject*)oggetto4); _colonne->add(indice,(TObject*)oggetto4);
indice = "BP"; indice = "BP"; // B POS
contatore = contatore+1; contatore = contatore+1;
real* oggetto5 = new real(contatore); real* oggetto5 = new real(contatore);
_colonne->add(indice,(TObject*)oggetto5); _colonne->add(indice,(TObject*)oggetto5);
indice = "BN"; indice = "BN"; // B NEG
contatore = contatore+1; contatore = contatore+1;
real* oggetto6 = new real(contatore); real* oggetto6 = new real(contatore);
_colonne->add(indice,(TObject*)oggetto6); _colonne->add(indice,(TObject*)oggetto6);
indice = "CP"; indice = "CP"; // AB POS
contatore = contatore+1; contatore = contatore+1;
real* oggetto7 = new real(contatore); real* oggetto7 = new real(contatore);
_colonne->add(indice,(TObject*)oggetto7); _colonne->add(indice,(TObject*)oggetto7);
indice = "CN"; indice = "CN";
contatore = contatore+1; contatore = contatore+1; // AB NEG
real* oggetto8 = new real(contatore); real* oggetto8 = new real(contatore);
_colonne->add(indice,(TObject*)oggetto8); _colonne->add(indice,(TObject*)oggetto8);
indice = "NN"; indice = "NN"; // UNO DEI DUE VUOTI
contatore = contatore+1; contatore = contatore+1;
real* oggetto9 = new real(contatore); real* oggetto9 = new real(contatore);
_colonne->add(indice,(TObject*)oggetto9); _colonne->add(indice,(TObject*)oggetto9);
@ -211,7 +211,11 @@ bool TMensileDonxGr::crea_colonne()
TString16 TMensileDonxGr::gruppo2col(TString16 gruppo, TString16 rh) TString16 TMensileDonxGr::gruppo2col(TString16 gruppo, TString16 rh)
{ {
TString16 indice = "NN"; TString16 indice = "";
if (gruppo.blank() || rh.blank())
indice = "NN";
else
{
if (gruppo == "0") if (gruppo == "0")
indice = "0"; indice = "0";
if (gruppo == "A") if (gruppo == "A")
@ -228,12 +232,11 @@ TString16 TMensileDonxGr::gruppo2col(TString16 gruppo, TString16 rh)
indice = "C"; indice = "C";
if (gruppo == "B") if (gruppo == "B")
indice = "B"; indice = "B";
if (rh.empty())
indice = "NN";
if (rh == "POS") if (rh == "POS")
indice << "P";; indice << "P";
if (rh == "NEG") if (rh == "NEG")
indice << "N";; indice << "N";
}
return indice; return indice;
} }
bool TMensileDonxGr::crea_righe() bool TMensileDonxGr::crea_righe()
@ -297,6 +300,7 @@ bool TMensileDonxGr::menu(MENU_TAG m)
_sotini = _msk->get(F_SOTINI); _sotini = _msk->get(F_SOTINI);
_sezfin = _msk->get(F_SEZFIN); _sezfin = _msk->get(F_SEZFIN);
_sotfin = _msk->get(F_SOTFIN); _sotfin = _msk->get(F_SOTFIN);
_tipodon = _msk->get(F_TIPODON);
if (riepilogo()) if (riepilogo())
stampa(); stampa();
} }
@ -308,6 +312,8 @@ void TMensileDonxGr::crea_intestazione()
TPrintrow row; TPrintrow row;
TString256 sep; TString256 sep;
sep = "MENSILE DONAZIONI PER GRUPPO E RH"; sep = "MENSILE DONAZIONI PER GRUPPO E RH";
if (!_tipodon.blank())
sep << " - TIPO DONAZIONI " << _tipodon;
sep.center_just(80); sep.center_just(80);
row.put(sep); row.put(sep);
row.put("@>", 1); row.put("@>", 1);
@ -337,7 +343,7 @@ void TMensileDonxGr::crea_intestazione()
row.put(sep); row.put(sep);
printer().setheaderline(5, row); printer().setheaderline(5, row);
sep = ""; sep = "";
sep.fill('-'); sep.fill('-',80);
row.reset(); row.reset();
row.put(sep); row.put(sep);
printer().setheaderline(6, row); printer().setheaderline(6, row);
@ -353,7 +359,7 @@ bool TMensileDonxGr::stampa()
TString16 oldsez = "**"; TString16 oldsez = "**";
TString16 oldsot = "**"; TString16 oldsot = "**";
double numero; double numero;
TString16 actsez, actsot, gruppo, rh; TString16 actsez, actsot, gruppo, rh, tipo;
int anno, mese; int anno, mese;
long last = curstat->items(); long last = curstat->items();
for ( *curstat=0; curstat->pos() < last; ++(*curstat) ) for ( *curstat=0; curstat->pos() < last; ++(*curstat) )
@ -364,6 +370,7 @@ bool TMensileDonxGr::stampa()
mese = curstat->curr().get_int(ATS_MESE); mese = curstat->curr().get_int(ATS_MESE);
gruppo = curstat->curr().get(ATS_GRUPPO); gruppo = curstat->curr().get(ATS_GRUPPO);
rh = curstat->curr().get(ATS_RH); rh = curstat->curr().get(ATS_RH);
tipo = curstat->curr().get(ATS_TIPODON);
numero = (double)curstat->curr().get_int(ATS_NUMERO); numero = (double)curstat->curr().get_int(ATS_NUMERO);
if (actsez != oldsez || actsot != oldsot) if (actsez != oldsez || actsot != oldsot)
{ {
@ -419,6 +426,10 @@ void TMensileDonxGr::stampa_sezione(TString16 codsez, TString16 codsot)
{ {
TPrintrow row; TPrintrow row;
TString256 rigastampa; TString256 rigastampa;
if (codsez == "ZZ" && codsot == "ZZ")
rigastampa = "RIEPILOGO TOTALE PER TUTTE LE SEZIONI STAMPATE";
else
{
rigastampa = "Sezione: "; rigastampa = "Sezione: ";
rigastampa << codsez; rigastampa << codsez;
if (codsot.not_empty()) if (codsot.not_empty())
@ -443,6 +454,7 @@ void TMensileDonxGr::stampa_sezione(TString16 codsez, TString16 codsot)
rigastampa << den; rigastampa << den;
} }
} }
}
rigastampa.center_just(80); rigastampa.center_just(80);
row.put(rigastampa); row.put(rigastampa);
printer().setheaderline(1, row); printer().setheaderline(1, row);
@ -489,7 +501,7 @@ void TMensileDonxGr::stampa_sezione(TString16 codsez, TString16 codsot)
} }
// stampa totali per sezione // stampa totali per sezione
rigastampa = ""; rigastampa = "";
rigastampa.fill('-'); rigastampa.fill('-',80);
row.reset(); row.reset();
row.put(rigastampa); row.put(rigastampa);
printer().print(row); printer().print(row);
@ -532,46 +544,50 @@ bool TMensileDonxGr::riepilogo()
a.put(DON_DATADON, _datafin); a.put(DON_DATADON, _datafin);
_cur = new TCursor(_rel, "", 2, &da, &a); _cur = new TCursor(_rel, "", 2, &da, &a);
TString256 filtro = ""; TString256 filtro = "";
// filtro per sezione/sottogruppo // filtro per sezione/sottogruppo
if (_sezini.not_empty()) if (_sezini.not_empty())
{ {
if (filtro.empty())
filtro = format("(90->CODSEZ >= \"%s\")",(const char*)_sezini);
else
{
filtro << " && ";
filtro << format("(90->CODSEZ >= \"%s\")",(const char*)_sezini);
}
if (_sotini.not_empty()) if (_sotini.not_empty())
{ {
if (filtro.empty()) filtro << "(";
filtro = format("(90->CODSOT >= \"%s\")",(const char*)_sotini); filtro << format("(92->CODSEZ > \"%s\")",(const char*)_sezini);
else filtro << " || ";
{ filtro << "(" << format("(92->CODSEZ == \"%s\")",(const char*)_sezini);
filtro << " && "; filtro << " && ";
filtro << format("(90->CODSOT >= \"%s\")",(const char*)_sotini); filtro << format("(92->CODSOT >= \"%s\")",(const char*)_sotini);
} filtro << ")";
filtro << ")";
} }
else
filtro << format("(92->CODSEZ >= \"%s\")",(const char*)_sezini);
} }
if (_sezfin.not_empty()) if (_sezfin.not_empty())
{ {
if (filtro.empty()) if (filtro.not_empty())
filtro = format("(90->CODSEZ <= \"%s\")",(const char*)_sezfin);
else
{
filtro << " && "; filtro << " && ";
filtro << format("(90->CODSEZ <= \"%s\")",(const char*)_sezfin);
}
if (_sotfin.not_empty()) if (_sotfin.not_empty())
{
filtro << "(";
filtro << format("(92->CODSEZ < \"%s\")",(const char*)_sezfin);
filtro << " || ";
filtro << "(" << format("(92->CODSEZ == \"%s\")",(const char*)_sezfin);
filtro << " && ";
filtro << format("(92->CODSOT <= \"%s\")",(const char*)_sotfin);
filtro << ")";
filtro << ")";
}
else
filtro << format("(92->CODSEZ <= \"%s\")",(const char*)_sezfin);
}
if (_tipodon.not_empty())
{ {
if (filtro.empty()) if (filtro.empty())
filtro = format("(90->CODSOT <= \"%s\")",(const char*)_sotfin); filtro = format("(92->TIPODON <= \"%s\")",(const char*)_tipodon);
else else
{ {
filtro << " && "; filtro << " && ";
filtro << format("(90->CODSOT <= \"%s\")",(const char*)_sotfin); filtro << format("(92->TIPODON <= \"%s\")",(const char*)_tipodon);
}
} }
} }
_cur->setfilter((const char*) filtro, TRUE); _cur->setfilter((const char*) filtro, TRUE);
@ -627,6 +643,35 @@ bool TMensileDonxGr::riepilogo()
stat.put(ATS_NUMERO, numero); stat.put(ATS_NUMERO, numero);
stat.write(); stat.write();
} }
stat.zero();
stat.put(ATS_CODSEZ, "ZZ");
stat.put(ATS_CODSOT, "ZZ");
stat.put(ATS_ANNO, anno);
stat.put(ATS_MESE, mese);
stat.put(ATS_TIPODON, " ");
stat.put(ATS_GRUPPO, gruppo);
stat.put(ATS_RH, rh);
if (stat.read() == NOERR)
{
numero = stat.get_long(ATS_NUMERO);
numero++;
stat.put(ATS_NUMERO, numero);
stat.rewrite();
}
else
{
stat.zero();
stat.put(ATS_CODSEZ, "ZZ");
stat.put(ATS_CODSOT, "ZZ");
stat.put(ATS_ANNO, anno);
stat.put(ATS_MESE, mese);
stat.put(ATS_TIPODON, " ");
stat.put(ATS_GRUPPO, gruppo);
stat.put(ATS_RH, rh);
numero = 1;
stat.put(ATS_NUMERO, numero);
stat.write();
}
} }
return (stat.eod() > 0); return (stat.eod() > 0);
} }

View File

@ -12,5 +12,5 @@
#define F_DATAINI 301 #define F_DATAINI 301
#define F_DATAFIN 302 #define F_DATAFIN 302
//#define F_TIPODON 303 #define F_TIPODON 303
//#define F_D_TIPODON 304 #define F_D_TIPODON 304

View File

@ -134,25 +134,26 @@ BEGIN
HELP "Data finale" HELP "Data finale"
END END
//STRING F_TIPODON 2 STRING F_TIPODON 2
//BEGIN BEGIN
// PROMPT 2 7 "Tipo donazioni " PROMPT 2 7 "Tipo donazioni "
// FLAGS "U" FLAGS "U"
// USE TDN USE TDN
// INPUT CODTAB F_TIPODON INPUT CODTAB F_TIPODON
// DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
// DISPLAY "Descrizione@30" S0 DISPLAY "Descrizione@30" S0
// OUTPUT F_TIPODON CODTAB OUTPUT F_TIPODON CODTAB
// OUTPUT F_D_TIPODON S0 OUTPUT F_D_TIPODON S0
// CHECKTYPE NORMAL CHECKTYPE NORMAL
// WARNING "Codice non presente" WARNING "Codice non presente"
//END END
STRING F_D_TIPODON 30
BEGIN
PROMPT 26 7 ""
FLAGS "D"
END
//STRING F_D_TIPODON 30
//BEGIN
// PROMPT 23 7 ""
// FLAGS "D"
//END
BUTTON DLG_OK 9 2 BUTTON DLG_OK 9 2
BEGIN BEGIN