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:
parent
7c63a7ad73
commit
89ac79a689
127
at/at3200.cpp
127
at/at3200.cpp
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user