Patch level :
Files correlati : Ricompilazione Demo : [ ] Commento : Gestione convocazioni: possibilità di marcare tutto stampato o annullare la stampa di tutte le cartoline di una convocazione, visualizzo data prossima donazione nella riga soggetto git-svn-id: svn://10.65.10.50/trunk@8024 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
3b27bf3cf1
commit
20057b7dd2
@ -73,6 +73,8 @@ protected:
|
|||||||
static bool codice_handler(TMask_field& f, KEY k);
|
static bool codice_handler(TMask_field& f, KEY k);
|
||||||
static bool convocati_notify(TSheet_field& s, int r, KEY k);
|
static bool convocati_notify(TSheet_field& s, int r, KEY k);
|
||||||
static bool esegui_handler(TMask_field& f, KEY k);
|
static bool esegui_handler(TMask_field& f, KEY k);
|
||||||
|
static bool sistampa_handler(TMask_field& f, KEY k);
|
||||||
|
static bool nostampa_handler(TMask_field& f, KEY k);
|
||||||
static bool data_handler(TMask_field&f, KEY k);
|
static bool data_handler(TMask_field&f, KEY k);
|
||||||
static bool dataini_handler(TMask_field&f, KEY k);
|
static bool dataini_handler(TMask_field&f, KEY k);
|
||||||
static bool sezione_handler(TMask_field&f, KEY k);
|
static bool sezione_handler(TMask_field&f, KEY k);
|
||||||
@ -292,7 +294,6 @@ bool TGestioneConvocazioni::esegui_handler(TMask_field& f, KEY k)
|
|||||||
app()._data = m.get(F_DATA);
|
app()._data = m.get(F_DATA);
|
||||||
app()._punto = m.get(F_PUNTO);
|
app()._punto = m.get(F_PUNTO);
|
||||||
app()._tutti = m.get_bool(F_TUTTI);
|
app()._tutti = m.get_bool(F_TUTTI);
|
||||||
//app()._tutti = TRUE;
|
|
||||||
app()._tipo = m.get(F_TIPO);
|
app()._tipo = m.get(F_TIPO);
|
||||||
app()._codsez = m.get(F_CODSEZ);
|
app()._codsez = m.get(F_CODSEZ);
|
||||||
app()._codsot = m.get(F_CODSOT);
|
app()._codsot = m.get(F_CODSOT);
|
||||||
@ -304,35 +305,6 @@ bool TGestioneConvocazioni::esegui_handler(TMask_field& f, KEY k)
|
|||||||
app()._modconv = m.get(F_MODCONV);
|
app()._modconv = m.get(F_MODCONV);
|
||||||
if (app()._numero == 0 || !app()._data.ok() || app()._punto.empty() || app()._tipo.empty())
|
if (app()._numero == 0 || !app()._data.ok() || app()._punto.empty() || app()._tipo.empty())
|
||||||
return f.error_box("Mancano i dati fondamentali per la convocazione");
|
return f.error_box("Mancano i dati fondamentali per la convocazione");
|
||||||
// filtro per sezione
|
|
||||||
//TRectype da(LF_SOGGETTI);
|
|
||||||
//if (app()._codsez.not_empty())
|
|
||||||
// da.put(SOG_CODSEZ, app()._codsez);
|
|
||||||
//if (app()._codsot.not_empty())
|
|
||||||
// da.put(SOG_CODSOT, app()._codsot);
|
|
||||||
//cur->setregion(da, da);
|
|
||||||
|
|
||||||
//TString filtro;
|
|
||||||
// filtro per non esclusi e modalita di convocazione
|
|
||||||
//filtro << '(' << SOG_ESCLUSO << " == \"\")";
|
|
||||||
//filtro << " && (" << SOG_MODCONV << " == \"\" || " << SOG_MODCONV << " == \"PO\" || " << SOG_MODCONV << " == \"IN\")";
|
|
||||||
|
|
||||||
// filtro per categoria donatori non vuota e non dimessi
|
|
||||||
// e non escluso e idoneo
|
|
||||||
//filtro.format("(CATDON != \"\") && (%d->B0 == \"\") && (ESCLUSO == \"\") && ((%d->S6 == \"I\" ) || (%d->S6 == \"F\"))",ALIAS_CTD,ALIAS_TCS,ALIAS_TCS);
|
|
||||||
// filtro per punto di prelievo
|
|
||||||
//filtro << " && ";
|
|
||||||
//if (app()._codsez.empty())
|
|
||||||
// filtro << format("(PUNTORACC == \"%s\")",(const char*)app()._punto);
|
|
||||||
//else
|
|
||||||
// filtro << "(PUNTORACC == \"\")";
|
|
||||||
// filtro per data donazione non vuota
|
|
||||||
// e <= data inizio convocazione
|
|
||||||
// per ora subito SI
|
|
||||||
// lo facciamo con la set_filterfunction
|
|
||||||
|
|
||||||
//cur->setfilter((const char*) filtro, TRUE);
|
|
||||||
|
|
||||||
const TDate data = app()._data;
|
const TDate data = app()._data;
|
||||||
const TDate dataini = app()._dataini;
|
const TDate dataini = app()._dataini;
|
||||||
TDate datalimite = dataini;
|
TDate datalimite = dataini;
|
||||||
@ -467,6 +439,7 @@ bool TGestioneConvocazioni::esegui_handler(TMask_field& f, KEY k)
|
|||||||
row.add(rec.get(SOG_CODSEZ));
|
row.add(rec.get(SOG_CODSEZ));
|
||||||
row.add(rec.get(SOG_CODSOT));
|
row.add(rec.get(SOG_CODSOT));
|
||||||
row.add(rec.get(SOG_DATAULTDON));
|
row.add(rec.get(SOG_DATAULTDON));
|
||||||
|
row.add(rec.get(SOG_DATAPROSSI));
|
||||||
r++;
|
r++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -479,6 +452,36 @@ bool TGestioneConvocazioni::esegui_handler(TMask_field& f, KEY k)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TGestioneConvocazioni::sistampa_handler(TMask_field& f, KEY k)
|
||||||
|
{
|
||||||
|
if (k == K_SPACE)
|
||||||
|
{
|
||||||
|
TSheet_field& s = f.mask().sfield(F_CONVOCATI);
|
||||||
|
const int pos = s.cid2index(F_S_STAMPATO);
|
||||||
|
const int posann = s.cid2index(F_S_ANNULLATO);
|
||||||
|
FOR_EACH_SHEET_ROW(s,r,row)
|
||||||
|
if (row->get(posann)[0] != 'X')
|
||||||
|
row->add('X',pos);
|
||||||
|
s.force_update();
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TGestioneConvocazioni::nostampa_handler(TMask_field& f, KEY k)
|
||||||
|
{
|
||||||
|
if (k == K_SPACE)
|
||||||
|
{
|
||||||
|
TSheet_field& s = f.mask().sfield(F_CONVOCATI);
|
||||||
|
const int pos = s.cid2index(F_S_STAMPATO);
|
||||||
|
const int posann = s.cid2index(F_S_ANNULLATO);
|
||||||
|
FOR_EACH_SHEET_ROW(s,r,row)
|
||||||
|
if (row->get(posann)[0] != 'X')
|
||||||
|
row->add(' ',pos);
|
||||||
|
s.force_update();
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
bool TGestioneConvocazioni::nome_handler(TMask_field& f, KEY k)
|
bool TGestioneConvocazioni::nome_handler(TMask_field& f, KEY k)
|
||||||
{
|
{
|
||||||
bool ok = TRUE;
|
bool ok = TRUE;
|
||||||
@ -516,6 +519,7 @@ bool TGestioneConvocazioni::codice_handler(TMask_field& f, KEY k)
|
|||||||
m.set(F_S_CODSOT, sog.get(SOG_CODSOT));
|
m.set(F_S_CODSOT, sog.get(SOG_CODSOT));
|
||||||
m.set(F_S_CATDON, sog.get(SOG_CATDON));
|
m.set(F_S_CATDON, sog.get(SOG_CATDON));
|
||||||
m.set(F_S_DATAULTDON, sog.get(SOG_DATAULTDON));
|
m.set(F_S_DATAULTDON, sog.get(SOG_DATAULTDON));
|
||||||
|
m.set(F_S_DATAPROSSI, sog.get(SOG_DATAPROSSI));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
ok = FALSE; // codice non esistente
|
ok = FALSE; // codice non esistente
|
||||||
@ -543,6 +547,8 @@ bool TGestioneConvocazioni::user_create()
|
|||||||
_rconvoc = new TLocalisamfile(LF_RCONVOC);
|
_rconvoc = new TLocalisamfile(LF_RCONVOC);
|
||||||
_soggetti = new TLocalisamfile(LF_SOGGETTI);
|
_soggetti = new TLocalisamfile(LF_SOGGETTI);
|
||||||
_sconvocati = new TRecord_array(LF_RCONVOC,RCV_PROGCONV);
|
_sconvocati = new TRecord_array(LF_RCONVOC,RCV_PROGCONV);
|
||||||
|
_msk->set_handler(F_SISTAMPA,sistampa_handler);
|
||||||
|
_msk->set_handler(F_NOSTAMPA,nostampa_handler);
|
||||||
_msk->set_handler(F_ESEGUI,esegui_handler);
|
_msk->set_handler(F_ESEGUI,esegui_handler);
|
||||||
_msk->set_handler(F_DATA,data_handler);
|
_msk->set_handler(F_DATA,data_handler);
|
||||||
_msk->set_handler(F_DATAINI,dataini_handler);
|
_msk->set_handler(F_DATAINI,dataini_handler);
|
||||||
@ -601,6 +607,7 @@ bool TGestioneConvocazioni::remove()
|
|||||||
soggetti.put(SOG_CODICE,codice);
|
soggetti.put(SOG_CODICE,codice);
|
||||||
if (soggetti.read() == NOERR)
|
if (soggetti.read() == NOERR)
|
||||||
{
|
{
|
||||||
|
const TDate dataprossi = soggetti.get_date(SOG_DATAPROSSI);
|
||||||
int numconv = soggetti.get_int(SOG_NUMCONV);
|
int numconv = soggetti.get_int(SOG_NUMCONV);
|
||||||
if (numconv > 0)
|
if (numconv > 0)
|
||||||
{
|
{
|
||||||
@ -609,27 +616,48 @@ bool TGestioneConvocazioni::remove()
|
|||||||
rconvoc.put(RCV_CODICE,codice);
|
rconvoc.put(RCV_CODICE,codice);
|
||||||
rconvoc.put(RCV_DATACONV,dataconv);
|
rconvoc.put(RCV_DATACONV,dataconv);
|
||||||
if (rconvoc.read() == NOERR)
|
if (rconvoc.read() == NOERR)
|
||||||
|
{
|
||||||
|
bool ok = TRUE;
|
||||||
|
while (ok)
|
||||||
{
|
{
|
||||||
--rconvoc;
|
--rconvoc;
|
||||||
const long codprec = rconvoc.get_long(RCV_CODICE);
|
const long codprec = rconvoc.get_long(RCV_CODICE);
|
||||||
if (codprec == codice)
|
if (codprec == codice)
|
||||||
|
{
|
||||||
|
if (rconvoc.get(RCV_ANNULLATO)[0] != 'X')
|
||||||
|
{
|
||||||
|
ok = FALSE;
|
||||||
soggetti.put(SOG_DATACONV, rconvoc.get(RCV_DATACONV));
|
soggetti.put(SOG_DATACONV, rconvoc.get(RCV_DATACONV));
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
ok = FALSE;
|
||||||
|
soggetti.put(SOG_NUMCONV, 0);
|
||||||
soggetti.put(SOG_DATACONV, NULLDATE);
|
soggetti.put(SOG_DATACONV, NULLDATE);
|
||||||
soggetti.put(SOG_DATAULTSOL, NULLDATE);
|
soggetti.put(SOG_DATAULTSOL, NULLDATE);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (numconv == 1)
|
if (numconv == 1)
|
||||||
soggetti.put(SOG_DATAULTSOL, NULLDATE);
|
soggetti.put(SOG_DATAULTSOL, NULLDATE);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
soggetti.put(SOG_NUMCONV, 0);
|
||||||
soggetti.put(SOG_DATACONV, NULLDATE);
|
soggetti.put(SOG_DATACONV, NULLDATE);
|
||||||
soggetti.put(SOG_DATAULTSOL, NULLDATE);
|
soggetti.put(SOG_DATAULTSOL, NULLDATE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
soggetti.put(SOG_NUMCONV, 0);
|
||||||
|
soggetti.put(SOG_DATACONV, NULLDATE);
|
||||||
|
soggetti.put(SOG_DATAULTSOL, NULLDATE);
|
||||||
|
}
|
||||||
|
const TDate dataconvsog = soggetti.get_date(SOG_DATACONV);
|
||||||
|
if (dataconvsog < dataprossi)
|
||||||
|
{
|
||||||
|
soggetti.put(SOG_NUMCONV, 0);
|
||||||
soggetti.put(SOG_DATACONV, NULLDATE);
|
soggetti.put(SOG_DATACONV, NULLDATE);
|
||||||
soggetti.put(SOG_DATAULTSOL, NULLDATE);
|
soggetti.put(SOG_DATAULTSOL, NULLDATE);
|
||||||
}
|
}
|
||||||
@ -708,6 +736,7 @@ int TGestioneConvocazioni::read(TMask& m)
|
|||||||
row.add(soggetti.get(SOG_CODSEZ));
|
row.add(soggetti.get(SOG_CODSEZ));
|
||||||
row.add(soggetti.get(SOG_CODSOT));
|
row.add(soggetti.get(SOG_CODSOT));
|
||||||
row.add(soggetti.get(SOG_DATAULTDON));
|
row.add(soggetti.get(SOG_DATAULTDON));
|
||||||
|
row.add(soggetti.get(SOG_DATAPROSSI));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -27,6 +27,8 @@
|
|||||||
#define F_CODSOTH 152
|
#define F_CODSOTH 152
|
||||||
|
|
||||||
#define F_ESEGUI 140
|
#define F_ESEGUI 140
|
||||||
|
#define F_SISTAMPA 141
|
||||||
|
#define F_NOSTAMPA 142
|
||||||
|
|
||||||
// pagina soggetti
|
// pagina soggetti
|
||||||
#define F_S_CODICE 101
|
#define F_S_CODICE 101
|
||||||
@ -42,6 +44,7 @@
|
|||||||
#define F_S_CODSEZ 111
|
#define F_S_CODSEZ 111
|
||||||
#define F_S_CODSOT 112
|
#define F_S_CODSOT 112
|
||||||
#define F_S_DATAULTDON 113
|
#define F_S_DATAULTDON 113
|
||||||
|
#define F_S_DATAPROSSI 114
|
||||||
|
|
||||||
#define F_S_DENSEZ 151
|
#define F_S_DENSEZ 151
|
||||||
#define F_S_DENSOT 152
|
#define F_S_DENSOT 152
|
||||||
|
@ -327,10 +327,20 @@ END
|
|||||||
|
|
||||||
BUTTON F_ESEGUI 20 2
|
BUTTON F_ESEGUI 20 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT -11 -1 "Esegui convocazione"
|
PROMPT -13 -1 "Esegui convocazione"
|
||||||
GROUP 3
|
GROUP 3
|
||||||
END
|
END
|
||||||
|
|
||||||
|
BUTTON F_SISTAMPA 20 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -23 -1 "Tutto stampato"
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON F_NOSTAMPA 20 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -33 -1 "Annulla stampa"
|
||||||
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
PAGE "Soggetti" -1 -1 78 20
|
PAGE "Soggetti" -1 -1 78 20
|
||||||
@ -351,6 +361,7 @@ BEGIN
|
|||||||
ITEM "Se"
|
ITEM "Se"
|
||||||
ITEM "So"
|
ITEM "So"
|
||||||
ITEM "Data u.d."
|
ITEM "Data u.d."
|
||||||
|
ITEM "Data pr."
|
||||||
END
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
@ -507,6 +518,12 @@ BEGIN
|
|||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
DATE F_S_DATAPROSSI
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 50 ""
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
STRING F_S_DENSOT 25 23
|
STRING F_S_DENSOT 25 23
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 49 4 ""
|
PROMPT 49 4 ""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user