Patch level :
Files correlati : Ricompilazione Demo : [ ] Commento : Statistiche: corretto selezine da sez/sot a sez/sot + possibilita' di fare solo riepilogo finale git-svn-id: svn://10.65.10.50/trunk@7707 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
7f9719e130
commit
efb6a266af
181
at/at3800.cpp
181
at/at3800.cpp
@ -90,7 +90,8 @@ class TRiepilogoPunto : public TApplication
|
||||
TAssoc_array* _colonne;
|
||||
TAssoc_array* _punti;
|
||||
TArray _righe; // array per riepilogo donazioni
|
||||
TString16 _sezini, _sotini, _sezfin, _sotfin;
|
||||
TString16 _sezini, _sotini, _sezfin, _sotfin;
|
||||
bool _solotot;
|
||||
|
||||
protected:
|
||||
virtual bool create();
|
||||
@ -191,6 +192,7 @@ bool TRiepilogoPunto::menu(MENU_TAG m)
|
||||
{
|
||||
_dataini = msk.get(F_DATAINI);
|
||||
_datafin = msk.get(F_DATAFIN);
|
||||
_solotot = msk.get_bool(F_SOLOTOT);
|
||||
_sezini = _msk->get(F_SEZINI);
|
||||
_sotini = _msk->get(F_SOTINI);
|
||||
_sezfin = _msk->get(F_SEZFIN);
|
||||
@ -229,7 +231,8 @@ void TRiepilogoPunto::crea_intestazione()
|
||||
row.reset();
|
||||
sep = "Punto di prelievo ";
|
||||
TTable tdn("TDN");
|
||||
int pos = 27;
|
||||
//int pos = 37;
|
||||
int pos = 57;
|
||||
for (tdn.first(); !tdn.eof(); tdn.next())
|
||||
{
|
||||
sep.overwrite((const char*)tdn.get("CODTAB"),pos);
|
||||
@ -239,7 +242,8 @@ void TRiepilogoPunto::crea_intestazione()
|
||||
row.put(sep);
|
||||
printer().setheaderline(5, row);
|
||||
sep = "";
|
||||
sep.fill('-');
|
||||
sep.fill('-',80);
|
||||
sep.cut(pos+6);
|
||||
row.reset();
|
||||
row.put(sep);
|
||||
printer().setheaderline(6, row);
|
||||
@ -254,7 +258,7 @@ bool TRiepilogoPunto::stampa()
|
||||
TCursor* curstat = new TCursor(relstat, "", 1);
|
||||
TString16 oldsez = "**";
|
||||
TString16 oldsot = "**";
|
||||
double numero;
|
||||
long numero;
|
||||
TString16 actsez, actsot;
|
||||
TString16 tipodon, punto;
|
||||
long last = curstat->items();
|
||||
@ -264,7 +268,7 @@ bool TRiepilogoPunto::stampa()
|
||||
actsot = curstat->curr().get(ATS_CODSOT);
|
||||
tipodon = curstat->curr().get(ATS_TIPODON);
|
||||
punto = curstat->curr().get(ATS_PUNTO);
|
||||
numero = (double)curstat->curr().get_int(ATS_NUMERO);
|
||||
numero = curstat->curr().get_long(ATS_NUMERO);
|
||||
if (actsez != oldsez || actsot != oldsot)
|
||||
{
|
||||
if (oldsez != "**" && oldsot != "**")
|
||||
@ -313,30 +317,35 @@ void TRiepilogoPunto::stampa_sezione(TString16 codsez, TString16 codsot)
|
||||
{
|
||||
TPrintrow row;
|
||||
TString256 rigastampa;
|
||||
rigastampa = "Sezione: ";
|
||||
rigastampa << codsez;
|
||||
if (codsot.not_empty())
|
||||
if (codsez == "ZZ" && codsot == "ZZ")
|
||||
rigastampa = "RIEPILOGO TOTALE PER TUTTE LE SEZIONI SELEZIONATE";
|
||||
else
|
||||
{
|
||||
rigastampa << "/";
|
||||
rigastampa << codsot;
|
||||
}
|
||||
rigastampa << " ";
|
||||
TLocalisamfile sezioni(LF_SEZIONI);
|
||||
sezioni.setkey(1);
|
||||
sezioni.zero();
|
||||
sezioni.put(SEZ_CODSEZ,codsez);
|
||||
sezioni.put(SEZ_CODSOT,codsot);
|
||||
if (sezioni.read() == NOERR)
|
||||
{
|
||||
TString80 den = sezioni.get(SEZ_DENSEZ);
|
||||
rigastampa << den;
|
||||
den = sezioni.get(SEZ_DENSOT);
|
||||
if (den.not_empty())
|
||||
rigastampa = "Sezione: ";
|
||||
rigastampa << codsez;
|
||||
if (codsot.not_empty())
|
||||
{
|
||||
rigastampa << "/";
|
||||
rigastampa << codsot;
|
||||
}
|
||||
rigastampa << " ";
|
||||
TLocalisamfile sezioni(LF_SEZIONI);
|
||||
sezioni.setkey(1);
|
||||
sezioni.zero();
|
||||
sezioni.put(SEZ_CODSEZ,codsez);
|
||||
sezioni.put(SEZ_CODSOT,codsot);
|
||||
if (sezioni.read() == NOERR)
|
||||
{
|
||||
TString80 den = sezioni.get(SEZ_DENSEZ);
|
||||
rigastampa << den;
|
||||
den = sezioni.get(SEZ_DENSOT);
|
||||
if (den.not_empty())
|
||||
{
|
||||
rigastampa << "/";
|
||||
rigastampa << den;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
rigastampa.center_just(80);
|
||||
row.put(rigastampa);
|
||||
printer().setheaderline(1, row);
|
||||
@ -349,7 +358,8 @@ void TRiepilogoPunto::stampa_sezione(TString16 codsez, TString16 codsot)
|
||||
row.reset();
|
||||
rigastampa = "Senza punto";
|
||||
totalepunto = ZERO;
|
||||
int pos = 21;
|
||||
//int pos = 31;
|
||||
int pos = 51;
|
||||
for (int i=0;i<_colonne->items();i++)
|
||||
{
|
||||
rigatotali.aggiorna_valore(i,riga[i]);
|
||||
@ -376,10 +386,13 @@ void TRiepilogoPunto::stampa_sezione(TString16 codsez, TString16 codsot)
|
||||
row.reset();
|
||||
rigastampa = "";
|
||||
rigastampa << punto;
|
||||
rigastampa << " ";
|
||||
rigastampa << " ";
|
||||
rigastampa << ldn.get("S0");
|
||||
//rigastampa.cut(30);
|
||||
rigastampa.cut(55);
|
||||
totalepunto = ZERO;
|
||||
int pos = 21;
|
||||
//int pos = 31;
|
||||
int pos = 51;
|
||||
for (int i=0;i<_colonne->items();i++)
|
||||
{
|
||||
rigatotali.aggiorna_valore(i,riga[i]);
|
||||
@ -400,7 +413,8 @@ void TRiepilogoPunto::stampa_sezione(TString16 codsez, TString16 codsot)
|
||||
}
|
||||
// stampa totali per sezione
|
||||
rigastampa = "";
|
||||
rigastampa.fill('-');
|
||||
rigastampa.fill('-',80);
|
||||
rigastampa.cut(pos+4+8);
|
||||
row.reset();
|
||||
row.put(rigastampa);
|
||||
printer().print(row);
|
||||
@ -408,7 +422,8 @@ void TRiepilogoPunto::stampa_sezione(TString16 codsez, TString16 codsot)
|
||||
rigastampa = "";
|
||||
rigastampa = "Totale ";
|
||||
totalepunto = ZERO;
|
||||
pos = 21;
|
||||
//pos = 31;
|
||||
pos = 51;
|
||||
for (i=0;i<_colonne->items();i++)
|
||||
{
|
||||
totalepunto+=rigatotali[i];
|
||||
@ -444,47 +459,41 @@ bool TRiepilogoPunto::riepilogo()
|
||||
a.put(DON_DATADON, _datafin);
|
||||
_cur = new TCursor(_rel, "", 2, &da, &a);
|
||||
TString256 filtro = "";
|
||||
|
||||
// filtro per sezione/sottogruppo
|
||||
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 (filtro.empty())
|
||||
filtro = format("(90->CODSOT >= \"%s\")",(const char*)_sotini);
|
||||
else
|
||||
{
|
||||
filtro << " && ";
|
||||
filtro << format("(90->CODSOT >= \"%s\")",(const char*)_sotini);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (_sezfin.not_empty())
|
||||
{
|
||||
if (filtro.empty())
|
||||
filtro = format("(90->CODSEZ <= \"%s\")",(const char*)_sezfin);
|
||||
else
|
||||
{
|
||||
filtro << " && ";
|
||||
filtro << format("(90->CODSEZ <= \"%s\")",(const char*)_sezfin);
|
||||
}
|
||||
if (_sotfin.not_empty())
|
||||
{
|
||||
if (filtro.empty())
|
||||
filtro = format("(90->CODSOT <= \"%s\")",(const char*)_sotfin);
|
||||
else
|
||||
{
|
||||
filtro << " && ";
|
||||
filtro << format("(90->CODSOT <= \"%s\")",(const char*)_sotfin);
|
||||
}
|
||||
}
|
||||
if (_sezini.not_empty())
|
||||
{
|
||||
if (_sotini.not_empty())
|
||||
{
|
||||
filtro << "(";
|
||||
filtro << format("(92->CODSEZ > \"%s\")",(const char*)_sezini);
|
||||
filtro << " || ";
|
||||
filtro << "(" << format("(92->CODSEZ == \"%s\")",(const char*)_sezini);
|
||||
filtro << " && ";
|
||||
filtro << format("(92->CODSOT >= \"%s\")",(const char*)_sotini);
|
||||
filtro << ")";
|
||||
filtro << ")";
|
||||
}
|
||||
else
|
||||
filtro << format("(92->CODSEZ >= \"%s\")",(const char*)_sezini);
|
||||
}
|
||||
if (_sezfin.not_empty())
|
||||
{
|
||||
if (filtro.not_empty())
|
||||
filtro << " && ";
|
||||
|
||||
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);
|
||||
}
|
||||
_cur->setfilter((const char*) filtro, TRUE);
|
||||
TString16 codsez, codsot, tipodon, punto;
|
||||
@ -505,9 +514,35 @@ bool TRiepilogoPunto::riepilogo()
|
||||
}
|
||||
tipodon = recdon.get(DON_TIPODON);
|
||||
punto = recdon.get(DON_LUOGODON);
|
||||
if (!_solotot)
|
||||
{
|
||||
stat.zero();
|
||||
stat.put(ATS_CODSEZ, codsez);
|
||||
stat.put(ATS_CODSOT, codsot);
|
||||
stat.put(ATS_TIPODON, tipodon);
|
||||
stat.put(ATS_PUNTO, punto);
|
||||
if (stat.read() == NOERR)
|
||||
{
|
||||
numero = stat.get_long(ATS_NUMERO);
|
||||
numero++;
|
||||
stat.put(ATS_NUMERO, numero);
|
||||
int err = stat.rewrite();
|
||||
}
|
||||
else
|
||||
{
|
||||
stat.zero();
|
||||
stat.put(ATS_CODSEZ, codsez);
|
||||
stat.put(ATS_CODSOT, codsot);
|
||||
stat.put(ATS_TIPODON, tipodon);
|
||||
stat.put(ATS_PUNTO, punto);
|
||||
numero = 1;
|
||||
stat.put(ATS_NUMERO, numero);
|
||||
int err = stat.write();
|
||||
}
|
||||
}
|
||||
stat.zero();
|
||||
stat.put(ATS_CODSEZ, codsez);
|
||||
stat.put(ATS_CODSOT, codsot);
|
||||
stat.put(ATS_CODSEZ, "ZZ");
|
||||
stat.put(ATS_CODSOT, "ZZ");
|
||||
stat.put(ATS_TIPODON, tipodon);
|
||||
stat.put(ATS_PUNTO, punto);
|
||||
if (stat.read() == NOERR)
|
||||
@ -520,8 +555,8 @@ bool TRiepilogoPunto::riepilogo()
|
||||
else
|
||||
{
|
||||
stat.zero();
|
||||
stat.put(ATS_CODSEZ, codsez);
|
||||
stat.put(ATS_CODSOT, codsot);
|
||||
stat.put(ATS_CODSEZ, "ZZ");
|
||||
stat.put(ATS_CODSOT, "ZZ");
|
||||
stat.put(ATS_TIPODON, tipodon);
|
||||
stat.put(ATS_PUNTO, punto);
|
||||
numero = 1;
|
||||
|
@ -117,7 +117,7 @@ BEGIN
|
||||
HELP "Sottogruppo finale"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 77 3
|
||||
GROUPBOX DLG_NULL 77 4
|
||||
BEGIN
|
||||
PROMPT 1 5 "Opzioni per il riepilogo"
|
||||
END
|
||||
@ -134,6 +134,12 @@ BEGIN
|
||||
HELP "Data finale"
|
||||
END
|
||||
|
||||
BOOLEAN F_SOLOTOT
|
||||
BEGIN
|
||||
PROMPT 2 7 "Stampa solo totale finale (non stampa il dettaglio per sezione)"
|
||||
END
|
||||
|
||||
|
||||
BUTTON DLG_OK 9 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
|
Loading…
x
Reference in New Issue
Block a user