Patch level :
Files correlati : Ricompilazione Demo : [ ] Commento : Corretto suddivisione dei convocati sui giorni della convocazione git-svn-id: svn://10.65.10.50/trunk@6446 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
8238766232
commit
dbe1d0a78a
106
at/at0400.cpp
106
at/at0400.cpp
@ -30,8 +30,11 @@ class TGestioneConvocazioni: public TRelation_application
|
|||||||
|
|
||||||
TMask* _msk;
|
TMask* _msk;
|
||||||
TRelation* _rel;
|
TRelation* _rel;
|
||||||
|
TRelation* _tmprel;
|
||||||
TRelation* _relsog;
|
TRelation* _relsog;
|
||||||
TCursor* _cur; // cursore per selezione soggetti
|
TCursor* _cur; // cursore per selezione soggetti
|
||||||
|
TIsamtempfile* _tmpconv;
|
||||||
|
TIsamtempfile* _tmprconv;
|
||||||
TLocalisamfile* _rconvoc;
|
TLocalisamfile* _rconvoc;
|
||||||
TLocalisamfile* _soggetti;
|
TLocalisamfile* _soggetti;
|
||||||
TLocalisamfile* _sezioni;
|
TLocalisamfile* _sezioni;
|
||||||
@ -46,6 +49,7 @@ class TGestioneConvocazioni: public TRelation_application
|
|||||||
TDate _dataini;
|
TDate _dataini;
|
||||||
bool _ritarda;
|
bool _ritarda;
|
||||||
int _maxrit;
|
int _maxrit;
|
||||||
|
bool _inserimento;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual bool user_create();
|
virtual bool user_create();
|
||||||
@ -60,9 +64,9 @@ protected:
|
|||||||
virtual TMask* get_mask( int mode = 0) { return _msk; }
|
virtual TMask* get_mask( int mode = 0) { return _msk; }
|
||||||
virtual TRelation* get_relation() const { return _rel; }
|
virtual TRelation* get_relation() const { return _rel; }
|
||||||
virtual void init_query_insert_mode(TMask& m);
|
virtual void init_query_insert_mode(TMask& m);
|
||||||
virtual void init_query_mode(TMask& m) { init_query_insert_mode(m);};
|
virtual void init_query_mode(TMask& m) { _inserimento = FALSE; init_query_insert_mode(m);};
|
||||||
virtual void init_modify_mode(TMask& m);
|
virtual void init_modify_mode(TMask& m);
|
||||||
virtual void init_insert_mode(TMask& m) { init_modify_mode(m); }
|
virtual void init_insert_mode(TMask& m) { _inserimento = TRUE; init_modify_mode(m); }
|
||||||
|
|
||||||
static bool nome_handler(TMask_field& f, KEY k);
|
static bool nome_handler(TMask_field& f, KEY k);
|
||||||
static bool codice_handler(TMask_field& f, KEY k);
|
static bool codice_handler(TMask_field& f, KEY k);
|
||||||
@ -101,23 +105,27 @@ bool TGestioneConvocazioni::filter_func_convoc(const TRelation* rel)
|
|||||||
const TString16 cat = sog.get(SOG_CATDON);
|
const TString16 cat = sog.get(SOG_CATDON);
|
||||||
const char stato = modstato_tcs(sog.get(SOG_STATO));
|
const char stato = modstato_tcs(sog.get(SOG_STATO));
|
||||||
const TString16 escluso = sog.get(SOG_ESCLUSO);
|
const TString16 escluso = sog.get(SOG_ESCLUSO);
|
||||||
|
const TString16 modconv = sog.get(SOG_MODCONV);
|
||||||
const bool dimesso = rel->lfile(ALIAS_CTD).get_bool("B0");
|
const bool dimesso = rel->lfile(ALIAS_CTD).get_bool("B0");
|
||||||
filtrato = (cat.not_empty() && (stato == 'I' || stato == 'F') && !dimesso && escluso.empty());
|
filtrato = (cat.not_empty() && (stato == 'I' || stato == 'F') && !dimesso && escluso.empty());
|
||||||
|
if (filtrato)
|
||||||
|
filtrato = ((modconv.empty()) || (modconv == "PO") || (modconv == "IN"));
|
||||||
if (filtrato)
|
if (filtrato)
|
||||||
{
|
{
|
||||||
filtrato = FALSE;
|
filtrato = FALSE;
|
||||||
const TString16 punto = sog.get(SOG_PUNTORACC);
|
const TString16 punto = sog.get(SOG_PUNTORACC);
|
||||||
const TString16 codsez = sog.get(SOG_CODSEZ);
|
const TString16 codsez = sog.get(SOG_CODSEZ);
|
||||||
const TString16 codsot = sog.get(SOG_CODSOT);
|
const TString16 codsot = sog.get(SOG_CODSOT);
|
||||||
if (punto == app()._punto)
|
if (app()._codsez.not_empty())
|
||||||
filtrato = TRUE;
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
if (app()._codsez.not_empty() && app()._codsez == codsez)
|
filtrato = (codsez == app()._codsez);
|
||||||
filtrato = (punto.empty());
|
if ((filtrato) && (app()._codsot.not_empty()))
|
||||||
if ((app()._codsot.not_empty()) && (app()._codsot != codsot))
|
filtrato = (codsot == app()._codsot);
|
||||||
filtrato = FALSE;
|
if (filtrato)
|
||||||
}
|
filtrato = ((punto == app()._punto) || punto.empty());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
filtrato = (punto == app()._punto);
|
||||||
// filtro per data prossima donazione
|
// filtro per data prossima donazione
|
||||||
//const TDate dataprossi = sog.get(SOG_DATAPROSSI);
|
//const TDate dataprossi = sog.get(SOG_DATAPROSSI);
|
||||||
//filtrato = (dataprossi.ok()) && (dataprossi <= data) && filtrato;
|
//filtrato = (dataprossi.ok()) && (dataprossi <= data) && filtrato;
|
||||||
@ -125,8 +133,8 @@ bool TGestioneConvocazioni::filter_func_convoc(const TRelation* rel)
|
|||||||
if (filtrato)
|
if (filtrato)
|
||||||
{
|
{
|
||||||
filtrato = FALSE;
|
filtrato = FALSE;
|
||||||
//const TDate data = app()._data;
|
const TDate data = app()._data;
|
||||||
TDate data = app()._dataini;
|
//TDate data = app()._dataini; prima era cosi'
|
||||||
const int numconv = sog.get_int(SOG_NUMCONV);
|
const int numconv = sog.get_int(SOG_NUMCONV);
|
||||||
const TDate dataultconv = sog.get(SOG_DATACONV);
|
const TDate dataultconv = sog.get(SOG_DATACONV);
|
||||||
const TDate dataultsol = sog.get(SOG_DATAULTSOL);
|
const TDate dataultsol = sog.get(SOG_DATAULTSOL);
|
||||||
@ -281,7 +289,11 @@ bool TGestioneConvocazioni::esegui_handler(TMask_field& f, KEY k)
|
|||||||
// da.put(SOG_CODSOT, app()._codsot);
|
// da.put(SOG_CODSOT, app()._codsot);
|
||||||
//cur->setregion(da, da);
|
//cur->setregion(da, da);
|
||||||
|
|
||||||
//TString256 filtro;
|
//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
|
// filtro per categoria donatori non vuota e non dimessi
|
||||||
// e non escluso e idoneo
|
// e non escluso e idoneo
|
||||||
//filtro.format("(CATDON != \"\") && (%d->B0 == \"\") && (ESCLUSO == \"\") && ((%d->S6 == \"I\" ) || (%d->S6 == \"F\"))",ALIAS_CTD,ALIAS_TCS,ALIAS_TCS);
|
//filtro.format("(CATDON != \"\") && (%d->B0 == \"\") && (ESCLUSO == \"\") && ((%d->S6 == \"I\" ) || (%d->S6 == \"F\"))",ALIAS_CTD,ALIAS_TCS,ALIAS_TCS);
|
||||||
@ -320,7 +332,7 @@ bool TGestioneConvocazioni::esegui_handler(TMask_field& f, KEY k)
|
|||||||
const int giorni = (int)(data-dataini); // giorni su cui suddividere la chiamata -1
|
const int giorni = (int)(data-dataini); // giorni su cui suddividere la chiamata -1
|
||||||
const int dim = giorni+1;
|
const int dim = giorni+1;
|
||||||
int* numperdata = new int[dim];
|
int* numperdata = new int[dim];
|
||||||
int quanti = ((int)(cur->items())/(giorni+1)); // quanti donatori per giorno
|
int quanti = ((int)(cur->items())/(giorni+1))+1; // quanti donatori per giorno
|
||||||
if (quanti < 1)
|
if (quanti < 1)
|
||||||
quanti = 1;
|
quanti = 1;
|
||||||
for (int i=0; i<giorni+1; i++)
|
for (int i=0; i<giorni+1; i++)
|
||||||
@ -331,6 +343,7 @@ bool TGestioneConvocazioni::esegui_handler(TMask_field& f, KEY k)
|
|||||||
for ( *cur=0; cur->pos() < last; ++(*cur) )
|
for ( *cur=0; cur->pos() < last; ++(*cur) )
|
||||||
{
|
{
|
||||||
prg.addstatus(1);
|
prg.addstatus(1);
|
||||||
|
TDate datarif(NULLDATE);
|
||||||
const int numconv = rec.get_int(SOG_NUMCONV);
|
const int numconv = rec.get_int(SOG_NUMCONV);
|
||||||
const TDate dataultconv = rec.get(SOG_DATACONV);
|
const TDate dataultconv = rec.get(SOG_DATACONV);
|
||||||
const TDate dataultsol = rec.get(SOG_DATAULTSOL);
|
const TDate dataultsol = rec.get(SOG_DATAULTSOL);
|
||||||
@ -342,19 +355,42 @@ bool TGestioneConvocazioni::esegui_handler(TMask_field& f, KEY k)
|
|||||||
const int numsol = sez.get_int(SEZ_NUMMAXSOL);
|
const int numsol = sez.get_int(SEZ_NUMMAXSOL);
|
||||||
char chiamata = ' ';
|
char chiamata = ' ';
|
||||||
if (numconv == 0)
|
if (numconv == 0)
|
||||||
|
{
|
||||||
chiamata = 'C';
|
chiamata = 'C';
|
||||||
else
|
datarif = dataprossi;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
if ((numconv == 1) && (data-dataultconv>=giocarsol))
|
if ((numconv == 1) && (data-dataultconv>=giocarsol))
|
||||||
|
{
|
||||||
chiamata = 'S';
|
chiamata = 'S';
|
||||||
else
|
datarif = dataultconv+(long)giocarsol;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
if ((numconv >= 2 && numconv <= numsol-1) && (data-dataultconv >= giosolsol))
|
if ((numconv >= 2 && numconv <= numsol-1) && (data-dataultconv >= giosolsol))
|
||||||
|
{
|
||||||
chiamata = 'S';
|
chiamata = 'S';
|
||||||
|
datarif = dataultconv+(long)giosolsol;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
if ((numconv == numsol && numsol > 0) && (data-dataultconv >= gioultsol))
|
if ((numconv == numsol && numsol > 0) && (data-dataultconv >= gioultsol))
|
||||||
|
{
|
||||||
chiamata = 'S';
|
chiamata = 'S';
|
||||||
|
datarif = dataultconv+(long)gioultsol;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
if ((numconv > numsol && numsol > 0) && (app()._ritarda) && (data-dataultsol<=app()._maxrit) && (data-dataultconv>=giorit))
|
if ((numconv > numsol && numsol > 0) && (app()._ritarda) && (data-dataultsol<=app()._maxrit) && (data-dataultconv>=giorit))
|
||||||
|
{
|
||||||
chiamata = 'R';
|
chiamata = 'R';
|
||||||
|
datarif = dataultconv+(long)giorit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
switch (chiamata)
|
switch (chiamata)
|
||||||
{
|
{
|
||||||
case 'C':
|
case 'C':
|
||||||
@ -371,10 +407,11 @@ bool TGestioneConvocazioni::esegui_handler(TMask_field& f, KEY k)
|
|||||||
{
|
{
|
||||||
datasog = NULLDATE;
|
datasog = NULLDATE;
|
||||||
int partenza;
|
int partenza;
|
||||||
if (dataprossi <= dataini)
|
if (datarif <= dataini)
|
||||||
partenza = 0;
|
partenza = 0;
|
||||||
else
|
else
|
||||||
partenza = (int)(dataprossi-dataini);
|
partenza = (int)(datarif-dataini);
|
||||||
|
|
||||||
for (int r=partenza;r<=giorni;r++)
|
for (int r=partenza;r<=giorni;r++)
|
||||||
{
|
{
|
||||||
if ((numperdata[r]<quanti) && (!datasog.ok()))
|
if ((numperdata[r]<quanti) && (!datasog.ok()))
|
||||||
@ -402,6 +439,8 @@ bool TGestioneConvocazioni::esegui_handler(TMask_field& f, KEY k)
|
|||||||
row.add(rec.get(SOG_DATANASC));
|
row.add(rec.get(SOG_DATANASC));
|
||||||
row.add(rec.get(SOG_CATDON));
|
row.add(rec.get(SOG_CATDON));
|
||||||
row.add(rec.get(SOG_TESSAVIS));
|
row.add(rec.get(SOG_TESSAVIS));
|
||||||
|
row.add(rec.get(SOG_CODSEZ));
|
||||||
|
row.add(rec.get(SOG_CODSOT));
|
||||||
r++;
|
r++;
|
||||||
}
|
}
|
||||||
m.set(F_NUMCONV,nconv);
|
m.set(F_NUMCONV,nconv);
|
||||||
@ -459,6 +498,12 @@ bool TGestioneConvocazioni::codice_handler(TMask_field& f, KEY k)
|
|||||||
|
|
||||||
bool TGestioneConvocazioni::user_create()
|
bool TGestioneConvocazioni::user_create()
|
||||||
{
|
{
|
||||||
|
_tmpconv = new TIsamtempfile(LF_CONVOC,NULL,TRUE,TRUE);
|
||||||
|
_tmprconv = new TIsamtempfile(LF_RCONVOC,NULL,TRUE,TRUE);
|
||||||
|
|
||||||
|
_tmprel = new TRelation(LF_CONVOC);
|
||||||
|
_tmprel->add(LF_RCONVOC, "CODICE==CODICE");
|
||||||
|
|
||||||
_msk = new TMask("at0400a");
|
_msk = new TMask("at0400a");
|
||||||
_rel = new TRelation(LF_CONVOC);
|
_rel = new TRelation(LF_CONVOC);
|
||||||
_relsog = new TRelation(LF_SOGGETTI);
|
_relsog = new TRelation(LF_SOGGETTI);
|
||||||
@ -487,7 +532,10 @@ bool TGestioneConvocazioni::user_create()
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool TGestioneConvocazioni::user_destroy()
|
bool TGestioneConvocazioni::user_destroy()
|
||||||
{
|
{
|
||||||
|
delete _tmpconv;
|
||||||
|
delete _tmprconv;
|
||||||
|
delete _tmprel;
|
||||||
delete _rel;
|
delete _rel;
|
||||||
delete _relsog;
|
delete _relsog;
|
||||||
delete _msk;
|
delete _msk;
|
||||||
@ -581,6 +629,8 @@ int TGestioneConvocazioni::read(TMask& m)
|
|||||||
row.add(soggetti.get(SOG_DATANASC));
|
row.add(soggetti.get(SOG_DATANASC));
|
||||||
row.add(soggetti.get(SOG_CATDON));
|
row.add(soggetti.get(SOG_CATDON));
|
||||||
row.add(soggetti.get(SOG_TESSAVIS));
|
row.add(soggetti.get(SOG_TESSAVIS));
|
||||||
|
row.add(soggetti.get(SOG_CODSEZ));
|
||||||
|
row.add(soggetti.get(SOG_CODSOT));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -594,6 +644,7 @@ int TGestioneConvocazioni::write(const TMask& m)
|
|||||||
{
|
{
|
||||||
long curcod = m.get_long(F_NUMERO);
|
long curcod = m.get_long(F_NUMERO);
|
||||||
if (curcod > _lastcod) _lastcod = curcod;
|
if (curcod > _lastcod) _lastcod = curcod;
|
||||||
|
_inserimento = FALSE;
|
||||||
return TGestioneConvocazioni::scrivi(m, FALSE);
|
return TGestioneConvocazioni::scrivi(m, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -712,11 +763,18 @@ void TGestioneConvocazioni::print()
|
|||||||
{
|
{
|
||||||
TForm elenco("ATCONVOC");
|
TForm elenco("ATCONVOC");
|
||||||
TCursor& cur = *elenco.cursor();
|
TCursor& cur = *elenco.cursor();
|
||||||
TLocalisamfile& convoc = cur.file();
|
if (_inserimento)
|
||||||
const long numero = app()._msk->get_long(F_NUMERO);
|
{
|
||||||
convoc.put(COV_NUMERO, numero);
|
message_box("Convocazione non registrata; non è possibile la stampa");
|
||||||
cur.read();
|
}
|
||||||
elenco.print(-1);
|
else
|
||||||
|
{
|
||||||
|
TLocalisamfile& convoc = cur.file();
|
||||||
|
const long numero = app()._msk->get_long(F_NUMERO);
|
||||||
|
convoc.put(COV_NUMERO, numero);
|
||||||
|
cur.read();
|
||||||
|
elenco.print(-1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int at0400(int argc, char* argv[])
|
int at0400(int argc, char* argv[])
|
||||||
|
Loading…
x
Reference in New Issue
Block a user