Modifiche di marco

git-svn-id: svn://10.65.10.50/trunk@8860 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
cris 2000-03-03 11:47:59 +00:00
parent 8d5786295a
commit 494bf8f132
66 changed files with 1225 additions and 501 deletions

View File

@ -1,6 +1,6 @@
#include "at0100a.h" #include "at0100a.h"
TOOLBAR "" 0 20 0 2 TOOLBAR "" 0 -2 0 2
#include <toolbar.h> #include <toolbar.h>
ENDPAGE ENDPAGE
@ -83,9 +83,9 @@ BEGIN
FIELD DATANASC FIELD DATANASC
KEY 2 KEY 2
MESSAGE COPY,4@ MESSAGE COPY,4@
CHECKTYPE REQUIRED //CHECKTYPE REQUIRED
VALIDATE NOT_EMPTY_CHECK_FIELD //VALIDATE NOT_EMPTY_CHECK_FIELD
HELP "Data di nascita" //HELP "Data di nascita"
END END
STRING F_TESSAVIS 6 STRING F_TESSAVIS 6

View File

@ -1,6 +1,6 @@
#include "at0100b.h" #include "at0100b.h"
TOOLBAR "" 0 20 0 2 TOOLBAR "" 0 -2 0 2
BUTTON DLG_OK 10 2 BUTTON DLG_OK 10 2

View File

@ -1,6 +1,6 @@
#include "at0100c.h" #include "at0100c.h"
TOOLBAR "" 0 20 0 2 TOOLBAR "" 0 -2 0 2
BUTTON DLG_OK 10 2 BUTTON DLG_OK 10 2
BEGIN BEGIN
@ -160,7 +160,7 @@ BEGIN
DISPLAY "C." CATDON DISPLAY "C." CATDON
DISPLAY "Tessera" TESSAVIS DISPLAY "Tessera" TESSAVIS
COPY OUTPUT F_F_CODICE COPY OUTPUT F_F_CODICE
CHECKTYPE SEARCH //CHECKTYPE SEARCH
HELP "Cognome del soggetto" HELP "Cognome del soggetto"
ADD RUN at0 -0 ADD RUN at0 -0
END END
@ -170,7 +170,7 @@ BEGIN
PROMPT 46 3 "" PROMPT 46 3 ""
COPY ALL F_F_COGNOME COPY ALL F_F_COGNOME
COPY OUTPUT F_F_CODICE COPY OUTPUT F_F_CODICE
CHECKTYPE SEARCH //CHECKTYPE SEARCH
HELP "Nome del soggetto" HELP "Nome del soggetto"
ADD RUN at0 -0 ADD RUN at0 -0
END END

View File

@ -122,6 +122,7 @@ bool TGiornalieroDC::create()
ss.sheet_mask().set_handler(F_S_CODICE,codice_handler); ss.sheet_mask().set_handler(F_S_CODICE,codice_handler);
ss.sheet_mask().set_handler(F_S_TIPODON,tipodon_handler); ss.sheet_mask().set_handler(F_S_TIPODON,tipodon_handler);
TConfig config(CONFIG_STUDIO); TConfig config(CONFIG_STUDIO);
_autoid = config.get_bool("AutoId");
_numdon1 = config.get_int("NumDon1"); _numdon1 = config.get_int("NumDon1");
_numdon2 = config.get_int("NumDon2"); _numdon2 = config.get_int("NumDon2");
_catini1 = config.get("CatIni1"); _catini1 = config.get("CatIni1");
@ -506,7 +507,7 @@ int TGiornalieroDC::write(TSheet_field& s)
sog.put(SOG_DATAULTAF,datadonazione); sog.put(SOG_DATAULTAF,datadonazione);
} }
dataultdon = sog.get_date(SOG_DATAULTDON); // data ultima donazione dataultdon = sog.get_date(SOG_DATAULTDON); // data ultima donazione
const TString16 tipoultdon(sog.get(SOG_TIPOULTDON)); // tipo ultima donazione const TString16 tipoultdon = (sog.get(SOG_TIPOULTDON)); // tipo ultima donazione
TDate datasi(NULLDATE); // data prossima si calcolata TDate datasi(NULLDATE); // data prossima si calcolata
TDate dataaf(NULLDATE); // data prossima af calcolata TDate dataaf(NULLDATE); // data prossima af calcolata
TDate dataultsi(NULLDATE); // data ultima donazione si TDate dataultsi(NULLDATE); // data ultima donazione si
@ -697,11 +698,12 @@ int TGiornalieroDC::write(TSheet_field& s)
} }
if ((catdon == _catini1 || _catini1.empty()) && (totdon+1>=_numdon1) && _catfin1.not_empty()) if ((catdon == _catini1 || _catini1.empty()) && (totdon+1>=_numdon1) && _catfin1.not_empty())
sog.put(SOG_CATDON, _catfin1); sog.put(SOG_CATDON, _catfin1);
if ((catdon == _catini2 || _catini2.empty()) && (totdon+1>=_numdon2) && _catfin2.not_empty() && (!_sttess2 || dimissione)) const bool tstampata = sog.get_bool(SOG_T_STAMPATA);
if ((catdon == _catini2 || _catini2.empty()) && (totdon+1>=_numdon2) && _catfin2.not_empty() && (!_sttess2 || tstampata))
sog.put(SOG_CATDON, _catfin2); sog.put(SOG_CATDON, _catfin2);
} }
TDate dataisc = sog.get_date(SOG_DATAISC); TDate dataisc = sog.get_date(SOG_DATAISC);
if (dataisc.ok() && _dataisc) if (!dataisc.ok() && _dataisc)
{ {
if (sog.get_date(SOG_DATAPRISI).ok()) if (sog.get_date(SOG_DATAPRISI).ok())
sog.put(SOG_DATAISC,sog.get(SOG_DATAPRISI)); sog.put(SOG_DATAISC,sog.get(SOG_DATAPRISI));

View File

@ -50,7 +50,8 @@ class TGestioneConvocazioni: public TRelation_application
TDate _dataini; TDate _dataini;
bool _tutti, _ritarda; bool _tutti, _ritarda;
int _maxrit; int _maxrit;
bool _inserimento; bool _inserimento;
TBit_array _modified;
protected: protected:
virtual bool user_create(); virtual bool user_create();
@ -80,7 +81,7 @@ protected:
static bool sezione_handler(TMask_field&f, KEY k); static bool sezione_handler(TMask_field&f, KEY k);
public: public:
virtual void print(); virtual void print();
TGestioneConvocazioni() {} TGestioneConvocazioni() {}
}; };
@ -316,6 +317,7 @@ bool TGestioneConvocazioni::esegui_handler(TMask_field& f, KEY k)
a.put(SOG_DATAPROSSI,data); a.put(SOG_DATAPROSSI,data);
cur->setregion(da, a); cur->setregion(da, a);
cur->set_filterfunction(filter_func_convoc, TRUE); cur->set_filterfunction(filter_func_convoc, TRUE);
app()._modified.reset();
TSheet_field& s = (TSheet_field&)m.field(F_CONVOCATI); TSheet_field& s = (TSheet_field&)m.field(F_CONVOCATI);
s.destroy(); s.destroy();
TRectype& rec = cur->curr(); TRectype& rec = cur->curr();
@ -419,10 +421,11 @@ bool TGestioneConvocazioni::esegui_handler(TMask_field& f, KEY k)
} }
if (!datasog.ok()) if (!datasog.ok())
{ {
if (dataprossi < dataini) //if (dataprossi < dataini)
datasog = dataini; // datasog = dataini;
else //else
datasog = dataprossi; // datasog = dataprossi;
datasog = datarif; //aggiunto da Marco in data 24/09/99 per sostituire le azioni commentate in quanto non rispettava gli intervalli fra cartoline
} }
} }
TToken_string& row = s.row(r); TToken_string& row = s.row(r);
@ -590,6 +593,8 @@ const char* TGestioneConvocazioni::get_next_key()
bool TGestioneConvocazioni::remove() bool TGestioneConvocazioni::remove()
{ {
TWait_cursor hourglass;
// cancella convocati // cancella convocati
// cancella testata convocazione // cancella testata convocazione
bool ok = TRUE; bool ok = TRUE;
@ -671,16 +676,18 @@ bool TGestioneConvocazioni::remove()
{ {
TLocalisamfile sez(LF_SEZIONI); TLocalisamfile sez(LF_SEZIONI);
sez.setkey(1); sez.setkey(1);
sez.zero(); sez.zero();
sez.put(SEZ_CODSEZ, app()._codsez);
sez.put(SEZ_CODSOT, app()._codsot); TMask& m = curr_mask();
sez.put(SEZ_CODSEZ, m.get(F_CODSEZ));
sez.put(SEZ_CODSOT, m.get(F_CODSOT));
if (sez.read() == NOERR) if (sez.read() == NOERR)
{ {
TLocalisamfile convoc(LF_CONVOC); TLocalisamfile convoc(LF_CONVOC);
convoc.setkey(3); convoc.setkey(3);
convoc.put(COV_CODSEZ, app()._codsez); convoc.put(COV_CODSEZ, m.get(F_CODSEZ));
convoc.put(COV_CODSOT, app()._codsot); convoc.put(COV_CODSOT, m.get(F_CODSOT));
convoc.put(COV_DATA, app()._data); convoc.put(COV_DATA, m.get(F_DATA));
convoc.read(); convoc.read();
--convoc; --convoc;
TDate dataini = convoc.get_date(COV_DATAINI); TDate dataini = convoc.get_date(COV_DATAINI);
@ -690,7 +697,7 @@ bool TGestioneConvocazioni::remove()
--convoc; --convoc;
dataini = convoc.get_date(COV_DATAINI); dataini = convoc.get_date(COV_DATAINI);
} }
if ((convoc.get(COV_CODSEZ) == app()._codsez) && (convoc.get(COV_CODSOT) == app()._codsot)) if ((convoc.get(COV_CODSEZ) == m.get(F_CODSEZ)) && (convoc.get(COV_CODSOT) == m.get(F_CODSOT)))
sez.put(SEZ_DATAULTCON, convoc.get_date(COV_DATA)); sez.put(SEZ_DATAULTCON, convoc.get_date(COV_DATA));
else else
sez.put(SEZ_DATAULTCON,NULLDATE); sez.put(SEZ_DATAULTCON,NULLDATE);
@ -706,14 +713,15 @@ int TGestioneConvocazioni::read(TMask& m)
{ {
int err = TRelation_application::read(m); int err = TRelation_application::read(m);
if (err == NOERR) if (err == NOERR)
{ {
TRectype* key = new TRectype(LF_RCONVOC); TRectype* key = new TRectype(LF_RCONVOC);
key->put(RCV_NUMERO, m.get(F_NUMERO)); key->put(RCV_NUMERO, m.get(F_NUMERO));
err = _sconvocati->read(key); err = _sconvocati->read(key);
if (err == NOERR) if (err == NOERR)
{ {
TLocalisamfile soggetti(LF_SOGGETTI); TLocalisamfile soggetti(LF_SOGGETTI);
TSheet_field& s = (TSheet_field&)m.field(F_CONVOCATI); TSheet_field& s = (TSheet_field&)m.field(F_CONVOCATI);
app()._modified.reset();
s.destroy(); s.destroy();
for (int r=1; r<=_sconvocati->rows(); r++) for (int r=1; r<=_sconvocati->rows(); r++)
{ {
@ -792,6 +800,7 @@ int TGestioneConvocazioni::scrivi(const TMask& m, bool ri)
const long codice = row.get_long(0); const long codice = row.get_long(0);
const TDate dataconv = row.get(3); const TDate dataconv = row.get(3);
const char chiamata = row.get_char(4); const char chiamata = row.get_char(4);
const bool annullato = (row.get(6)[0] == 'X');
rec.put(RCV_CODICE,codice); rec.put(RCV_CODICE,codice);
rec.put(RCV_DATACONV,dataconv); rec.put(RCV_DATACONV,dataconv);
rec.put(RCV_CHIAMATA,chiamata); rec.put(RCV_CHIAMATA,chiamata);
@ -799,16 +808,127 @@ int TGestioneConvocazioni::scrivi(const TMask& m, bool ri)
rec.put(RCV_ANNULLATO,row.get(6)); rec.put(RCV_ANNULLATO,row.get(6));
// aggiornamento archivio soggetti // aggiornamento archivio soggetti
soggetti.put(SOG_CODICE,codice); soggetti.put(SOG_CODICE,codice);
/* Messo il < invece del != nel primo if, spostato il controllo se sollecito
o meno all'interno del controllo sulla data da Marco in data 23/08/99
*/
if (soggetti.read() == NOERR) if (soggetti.read() == NOERR)
{ {
if (chiamata == 'S') if (soggetti.get_date(SOG_DATACONV) < dataconv) //Aggiungo 30/08/99 da qui
soggetti.put(SOG_DATAULTSOL,dataconv);
if (!(soggetti.get_date(SOG_DATACONV) == dataconv))
{ {
soggetti.put(SOG_DATACONV,dataconv); if (!_modified[r-1] && (!annullato))
int numconv = soggetti.get_int(SOG_NUMCONV); { //Fino a qui
soggetti.put(SOG_NUMCONV,numconv+1); if (chiamata == 'S')
} soggetti.put(SOG_DATAULTSOL,dataconv);
soggetti.put(SOG_DATACONV,dataconv);
int numconv = soggetti.get_int(SOG_NUMCONV);
soggetti.put(SOG_NUMCONV,numconv+1);
} //Aggiungo 30/08/99 da qui
else
{
if (_modified[r-1] && (!annullato))
{
if (chiamata == 'S')
soggetti.put(SOG_DATAULTSOL,dataconv);
soggetti.put(SOG_DATACONV,dataconv);
}
else
{
if (_modified[r-1] && (annullato))
{
const TDate dataprossi = soggetti.get_date(SOG_DATAPROSSI);
int numconv = soggetti.get_int(SOG_NUMCONV);
numconv--;
soggetti.put(SOG_NUMCONV,numconv);
TRectype da(LF_RCONVOC);
da.put(RCV_CODICE,codice);
TRectype a(LF_RCONVOC);
a.put(RCV_CODICE,codice);
TRelation rel(LF_RCONVOC);
TCursor cur(&rel,"",3,&da,&a);
const TRecnotype convocazioni = cur.items();
for (TRecnotype pos = convocazioni-2; pos>=0; pos--)
{
cur = pos;
TRectype& rec = cur.curr();
if (rec.get(RCV_ANNULLATO)[0] != 'X')
{
soggetti.put(SOG_DATACONV, rec.get(RCV_DATACONV));
break;
}
}
if (pos < 0)
{
soggetti.put(SOG_NUMCONV, 0);
soggetti.put(SOG_DATACONV, NULLDATE);
soggetti.put(SOG_DATAULTSOL, NULLDATE);
}
else
{
if (numconv > 1)
soggetti.put(SOG_DATAULTSOL, rec.get(RCV_DATACONV));
else
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_DATAULTSOL, NULLDATE);
}
}
}
}
}
else
{
if ((annullato) && (dataconv == soggetti.get_date(SOG_DATACONV)))
{
const TDate dataprossi = soggetti.get_date(SOG_DATAPROSSI);
int numconv = soggetti.get_int(SOG_NUMCONV);
numconv--;
soggetti.put(SOG_NUMCONV,numconv);
TLocalisamfile rconvoc(LF_RCONVOC);
rconvoc.setkey(3);
rconvoc.put(RCV_CODICE,codice);
rconvoc.put(RCV_DATACONV,dataconv);
if (rconvoc.read() == NOERR)
{
bool ok = TRUE;
while (ok)
{
--rconvoc;
const long codprec = rconvoc.get_long(RCV_CODICE);
if (codprec == codice)
{
if (rconvoc.get(RCV_ANNULLATO)[0] != 'X')
{
ok = FALSE;
soggetti.put(SOG_DATACONV, rconvoc.get(RCV_DATACONV));
}
}
else
{
ok = FALSE;
soggetti.put(SOG_NUMCONV, 0);
soggetti.put(SOG_DATACONV, NULLDATE);
soggetti.put(SOG_DATAULTSOL, NULLDATE);
}
}
if (numconv > 1)
soggetti.put(SOG_DATAULTSOL, rconvoc.get(RCV_DATACONV));
else
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_DATAULTSOL, NULLDATE);
}
}
} //Fino a qui
soggetti.rewrite(); soggetti.rewrite();
} }
} }
@ -819,15 +939,57 @@ int TGestioneConvocazioni::scrivi(const TMask& m, bool ri)
bool TGestioneConvocazioni::convocati_notify(TSheet_field& s, int r, KEY k) bool TGestioneConvocazioni::convocati_notify(TSheet_field& s, int r, KEY k)
{ {
static TToken_string oldrow;
bool result = TRUE; bool result = TRUE;
switch (k) switch (k)
{ {
case K_CTRL+K_DEL: // avvenuta cancellazione riga /* Tolto da Marco in data 26/08/99 in quanto si vuole impedire l'eliminazione di una singola riga
dello sheet dei convocati
case K_CTRL+K_DEL: // avvenuta cancellazione riga
{ {
int numconv = s.mask().get_int(F_NUMCONV); int numconv = s.mask().get_int(F_NUMCONV);
s.mask().set(F_NUMCONV,numconv-1); s.mask().set(F_NUMCONV,numconv-1);
} }
break; break;
Aggiunto da Marco in data 26/08/99 per impedire l'eliminazione di una singola riga dallo sheet
dei convocati
*/
case K_DEL: //richiesta cancellazione riga
{
message_box("Impossibile eliminare la convocazione di un singolo soggetto!/n Eventualmente annullarla.");
result = FALSE;
}
break;
// Aggiunto da Marco in data 26/08/99 per gestire la modifica di una singola convocazione
case K_SPACE:
{
oldrow = s.row(r);
TDate olddata = oldrow.get(s.cid2index(F_S_DATACONV)); // Le righe seguenti impostano un blocco per impedire di modificare una convocazione che non sia l'ultima per il soggetto
const long codice = oldrow.get_long(0);
TLocalisamfile soggetti(LF_SOGGETTI);
soggetti.put(SOG_CODICE,codice);
if (soggetti.read() == NOERR)
if (olddata != soggetti.get_date(SOG_DATACONV))
{
message_box("Impossibile modificare una convocazione che non sia l'ultima per il soggetto in questione.");
result = FALSE;
s.row(r) = oldrow;
s.force_update();
}
}
break;
case K_ENTER:
{
TToken_string& newrow = s.row(r);
TDate olddata = oldrow.get(s.cid2index(F_S_DATACONV));
TDate newdata = newrow.get(s.cid2index(F_S_DATACONV));
if (newdata != olddata)
{
app()._modified.set(r);
}
}
break;
case K_CTRL+K_TAB: case K_CTRL+K_TAB:
// uscita riga // uscita riga
{ {
@ -859,7 +1021,7 @@ bool TGestioneConvocazioni::convocati_notify(TSheet_field& s, int r, KEY k)
} }
break; break;
case K_INS: case K_INS:
//result = FALSE; result = FALSE;
break; break;
} }
return result; return result;

View File

@ -370,7 +370,7 @@ ENDMASK
PAGE "Soggetto " -1 -1 78 20 PAGE "Soggetto " -1 -1 78 20
GROUPBOX DLG_NULL 77 6 GROUPBOX DLG_NULL 77 7
BEGIN BEGIN
PROMPT 1 0 "Dati identificativi soggetto" PROMPT 1 0 "Dati identificativi soggetto"
FLAGS "R" FLAGS "R"
@ -379,67 +379,69 @@ END
NUMBER F_S_CODICE 8 NUMBER F_S_CODICE 8
BEGIN BEGIN
PROMPT 2 1 "Codice " PROMPT 2 1 "Codice "
FLAGS "RG" FLAGS "D"
USE LF_SOGGETTI KEY 1 //USE LF_SOGGETTI KEY 1
INPUT CODICE F_S_CODICE //INPUT CODICE F_S_CODICE
DISPLAY "Codice@8" CODICE //DISPLAY "Codice@8" CODICE
DISPLAY "Cognome@25" COGNOME //DISPLAY "Cognome@25" COGNOME
DISPLAY "Nome@25" NOME //DISPLAY "Nome@25" NOME
DISPLAY "Nato il@10" DATANASC //DISPLAY "Nato il@10" DATANASC
DISPLAY "Sez." CODSEZ //DISPLAY "Sez." CODSEZ
DISPLAY "Sot." CODSOT //DISPLAY "Sot." CODSOT
DISPLAY "C." CATDON //DISPLAY "C." CATDON
DISPLAY "Tessera" TESSAVIS //DISPLAY "Tessera" TESSAVIS
OUTPUT F_S_CODICE CODICE //OUTPUT F_S_CODICE CODICE
OUTPUT F_S_COGNOME COGNOME //OUTPUT F_S_COGNOME COGNOME
OUTPUT F_S_NOME NOME //OUTPUT F_S_NOME NOME
OUTPUT F_S_DATANASC DATANASC //OUTPUT F_S_DATANASC DATANASC
OUTPUT F_S_CATDON CATDON //OUTPUT F_S_CATDON CATDON
OUTPUT F_S_TESSAVIS TESSAVIS //OUTPUT F_S_TESSAVIS TESSAVIS
OUTPUT F_S_CODSEZ CODSEZ //OUTPUT F_S_CODSEZ CODSEZ
OUTPUT F_S_CODSOT CODSOT //OUTPUT F_S_CODSOT CODSOT
//CHECKTYPE NORMAL //CHECKTYPE NORMAL
ADD RUN at0 -0 //ADD RUN at0 -0
END END
STRING F_S_COGNOME 25 STRING F_S_COGNOME 25
BEGIN BEGIN
PROMPT 2 2 "Cognome e nome " PROMPT 2 2 "Cognome e nome "
USE LF_SOGGETTI KEY 2 FLAGS "D"
INPUT COGNOME F_S_COGNOME //USE LF_SOGGETTI KEY 2
INPUT NOME F_S_NOME //INPUT COGNOME F_S_COGNOME
DISPLAY "Cognome@25" COGNOME //INPUT NOME F_S_NOME
DISPLAY "Nome@25" NOME //DISPLAY "Cognome@25" COGNOME
DISPLAY "Nato il@10" DATANASC //DISPLAY "Nome@25" NOME
DISPLAY "Codice@8" CODICE //DISPLAY "Nato il@10" DATANASC
DISPLAY "Sez." CODSEZ //DISPLAY "Codice@8" CODICE
DISPLAY "Sot." CODSOT //DISPLAY "Sez." CODSEZ
DISPLAY "C." CATDON //DISPLAY "Sot." CODSOT
DISPLAY "Tessera" TESSAVIS //DISPLAY "C." CATDON
COPY OUTPUT F_S_CODICE //DISPLAY "Tessera" TESSAVIS
//COPY OUTPUT F_S_CODICE
//CHECKTYPE SEARCH //CHECKTYPE SEARCH
HELP "Cognome del soggetto" HELP "Cognome del soggetto"
ADD RUN at0 -0 //ADD RUN at0 -0
END END
STRING F_S_NOME 25 STRING F_S_NOME 25
BEGIN BEGIN
PROMPT 46 2 "" PROMPT 46 2 ""
USE LF_SOGGETTI KEY 2 FLAGS "D"
INPUT COGNOME F_S_COGNOME //USE LF_SOGGETTI KEY 2
INPUT NOME F_S_NOME //INPUT COGNOME F_S_COGNOME
DISPLAY "Cognome@25" COGNOME //INPUT NOME F_S_NOME
DISPLAY "Nome@25" NOME //DISPLAY "Cognome@25" COGNOME
DISPLAY "Nato il@10" DATANASC //DISPLAY "Nome@25" NOME
DISPLAY "Codice@8" CODICE //DISPLAY "Nato il@10" DATANASC
DISPLAY "Sez." CODSEZ //DISPLAY "Codice@8" CODICE
DISPLAY "Sot." CODSOT //DISPLAY "Sez." CODSEZ
DISPLAY "C." CATDON //DISPLAY "Sot." CODSOT
DISPLAY "Tessera" TESSAVIS //DISPLAY "C." CATDON
COPY OUTPUT F_S_CODICE //DISPLAY "Tessera" TESSAVIS
//COPY OUTPUT F_S_CODICE
HELP "Nome del soggetto" HELP "Nome del soggetto"
// CHECKTYPE NORMAL // CHECKTYPE NORMAL
ADD RUN at0 -0 //ADD RUN at0 -0
END END
GROUPBOX DLG_NULL 77 5 GROUPBOX DLG_NULL 77 5
@ -456,7 +458,7 @@ END
LISTBOX F_S_CHIAMATA 15 LISTBOX F_S_CHIAMATA 15
BEGIN BEGIN
PROMPT 30 8 "Tipo convocazione " PROMPT 30 8 "Tipo convocazione "
FLAGS "U" FLAGS "UD"
ITEM "C|Convocato" ITEM "C|Convocato"
ITEM "S|Sollecitato" ITEM "S|Sollecitato"
ITEM "R|Ritardatario" ITEM "R|Ritardatario"
@ -514,13 +516,13 @@ END
DATE F_S_DATAULTDON DATE F_S_DATAULTDON
BEGIN BEGIN
PROMPT 2 5 "" PROMPT 2 5 "Data ult. don."
FLAGS "D" FLAGS "D"
END END
DATE F_S_DATAPROSSI DATE F_S_DATAPROSSI
BEGIN BEGIN
PROMPT 2 50 "" PROMPT 35 5 "Data pross. don."
FLAGS "D" FLAGS "D"
END END
@ -544,19 +546,19 @@ END
BUTTON DLG_OK 9 2 BUTTON DLG_OK 9 2
BEGIN BEGIN
PROMPT -13 -1 "" PROMPT -12 -1 ""
END END
BUTTON DLG_CANCEL 9 2 BUTTON DLG_CANCEL 9 2
BEGIN BEGIN
PROMPT -23 -1 "" PROMPT -22 -1 ""
END END
BUTTON DLG_DELREC 9 2 //BUTTON DLG_DELREC 9 2
BEGIN //BEGIN
PROMPT -33 -1 "" // PROMPT -33 -1 ""
MESSAGE EXIT, K_DEL // MESSAGE EXIT, K_DEL
END //END
ENDPAGE ENDPAGE

View File

@ -23,6 +23,7 @@ class TSpostamentoConv : public TPrintapp
TString16 _punto,_tipo, _sezione, _sottog; TString16 _punto,_tipo, _sezione, _sottog;
int _quanti; // numero di convocazioni per giorni int _quanti; // numero di convocazioni per giorni
int _spostati; // contatore dei soggetti spostati per giorno int _spostati; // contatore dei soggetti spostati per giorno
int _nonspostati; // donatori di sezioni non selezianate che hanno la convocazione che corrisponde alle selezioni fatte
int _contatore; int _contatore;
TDate _data; // data a cui spostare TDate _data; // data a cui spostare
bool _stampa; bool _stampa;
@ -60,33 +61,45 @@ void TSpostamentoConv::set_page(int file, int cnt)
print_action TSpostamentoConv::postprocess_print(int file, int counter) print_action TSpostamentoConv::postprocess_print(int file, int counter)
{ {
if (_contatore > 0) //if (_contatore > 0)
_msk->set(F_SPOSTATI,_contatore); _msk->set(F_SPOSTATI,_contatore);
//if (_nonspostati > 0)
_msk->set(F_NONSPOSTATI,_nonspostati);
return NEXT_PAGE; return NEXT_PAGE;
} }
bool TSpostamentoConv::preprocess_page(int file, int counter) bool TSpostamentoConv::preprocess_page(int file, int counter)
{ {
TDate& data = app()._data; TString16 sez = current_cursor()->file(LF_SOGGETTI).get(SOG_CODSEZ);
app()._contatore++; TString16 sot = current_cursor()->file(LF_SOGGETTI).get(SOG_CODSOT);
app()._spostati++; if ((sez == app()._sezione || app()._sezione.blank()) && (sot == app()._sottog || app()._sottog.blank()))
if (app()._spostati > app()._quanti)
{ {
++data; TDate& data = app()._data;
if (data > app()._spostaal) app()._contatore++;
data = app()._spostaal; app()._spostati++;
app()._spostati = 1; if (app()._spostati > app()._quanti)
{
++data;
if (data > app()._spostaal)
data = app()._spostaal;
app()._spostati = 1;
}
current_cursor()->curr().put(RCV_DATACONV,data);
current_cursor()->file().setkey(1);
const int err = current_cursor()->file().rewrite();
current_cursor()->file().setkey(2);
current_cursor()->curr(LF_SOGGETTI).put(SOG_DATACONV,data);
TDate dataultsol = current_cursor()->curr(LF_SOGGETTI).get_date(SOG_DATAULTSOL);
if (dataultsol == data)
current_cursor()->curr(LF_SOGGETTI).put(SOG_DATAULTSOL,data);
current_cursor()->file(LF_SOGGETTI).rewrite();
return app()._stampa;
}
else
{
app()._nonspostati++;
return FALSE;
} }
current_cursor()->curr().put(RCV_DATACONV,data);
current_cursor()->file().setkey(1);
const int err = current_cursor()->file().rewrite();
current_cursor()->file().setkey(2);
current_cursor()->curr(LF_SOGGETTI).put(SOG_DATACONV,data);
TDate dataultsol = current_cursor()->curr(LF_SOGGETTI).get_date(SOG_DATAULTSOL);
if (dataultsol == data)
current_cursor()->curr(LF_SOGGETTI).put(SOG_DATAULTSOL,data);
current_cursor()->file(LF_SOGGETTI).rewrite();
return app()._stampa;
} }
bool TSpostamentoConv::set_print(int m) bool TSpostamentoConv::set_print(int m)
@ -112,6 +125,7 @@ bool TSpostamentoConv::set_print(int m)
_spostadal = _msk->get(F_SPOSTADAL); _spostadal = _msk->get(F_SPOSTADAL);
_spostaal = _msk->get(F_SPOSTAAL); _spostaal = _msk->get(F_SPOSTAAL);
_contatore = 0; _contatore = 0;
_nonspostati = 0;
TString256 filtro = "(116->STAMPATO != \"X\")"; TString256 filtro = "(116->STAMPATO != \"X\")";
// filtro per punto di prelievo // filtro per punto di prelievo
if (_punto.not_empty()) if (_punto.not_empty())
@ -128,6 +142,7 @@ bool TSpostamentoConv::set_print(int m)
filtro << format("(115->TIPO == \"%s\")",(const char*)_tipo); filtro << format("(115->TIPO == \"%s\")",(const char*)_tipo);
} }
// filtro per sezione/sottogruppo // filtro per sezione/sottogruppo
/*
if (_sezione.not_empty()) if (_sezione.not_empty())
{ {
if (filtro.not_empty()) if (filtro.not_empty())
@ -140,6 +155,7 @@ bool TSpostamentoConv::set_print(int m)
filtro << format("(90->CODSOT == \"%s\")",(const char*)_sottog); filtro << format("(90->CODSOT == \"%s\")",(const char*)_sottog);
} }
} }
*/
// filtro per data // filtro per data
TRectype da(LF_RCONVOC); TRectype da(LF_RCONVOC);
TRectype a (LF_RCONVOC); TRectype a (LF_RCONVOC);
@ -154,7 +170,7 @@ bool TSpostamentoConv::set_print(int m)
current_cursor()->setfilter((const char*) filtro, TRUE); current_cursor()->setfilter((const char*) filtro, TRUE);
current_cursor()->freeze(); current_cursor()->freeze();
const int giorni = (int)(_spostaal-_spostadal)+1; // giorni su cui suddividere la chiamata const int giorni = (int)(_spostaal-_spostadal)+1; // giorni su cui suddividere la chiamata
_quanti = ((int)(current_cursor()->items())/giorni); // quanti donatori per giorno _quanti = ((int)(current_cursor()->items())/giorni)+1; // quanti donatori per giorno
if (_quanti < 1) if (_quanti < 1)
_quanti = 1; _quanti = 1;
_spostati = 0; _spostati = 0;

View File

@ -14,5 +14,6 @@
#define F_SPOSTADAL 111 #define F_SPOSTADAL 111
#define F_SPOSTAAL 112 #define F_SPOSTAAL 112
#define F_SPOSTATI 113 #define F_SPOSTATI 113
#define F_NONSPOSTATI 114
#define F_STAMPA 201 #define F_STAMPA 201
#define F_AZZERA 202 #define F_AZZERA 202

View File

@ -37,11 +37,15 @@ END
DATE F_DATAINI DATE F_DATAINI
BEGIN BEGIN
PROMPT 2 2 "Data iniziale " PROMPT 2 2 "Data iniziale "
CHECKTYPE REQUIRED
END END
DATE F_DATAFIN DATE F_DATAFIN
BEGIN BEGIN
PROMPT 2 3 "Data finale " PROMPT 2 3 "Data finale "
CHECKTYPE REQUIRED
VALIDATE DATE_CMP_FUNC >= F_DATAINI
WARNING "La data finale non puo' essere inferiore alla iniziale"
END END
STRING F_PUNTO 4 STRING F_PUNTO 4
@ -149,11 +153,17 @@ END
DATE F_SPOSTADAL DATE F_SPOSTADAL
BEGIN BEGIN
PROMPT 2 11 "Data iniziale " PROMPT 2 11 "Data iniziale "
CHECKTYPE REQUIRED
VALIDATE DATE_CMP_FUNC > F_DATAFIN
WARNING "Non e' possibile effettuare spostamenti a date inferiori"
END END
DATE F_SPOSTAAL DATE F_SPOSTAAL
BEGIN BEGIN
PROMPT 2 12 "Data finale " PROMPT 2 12 "Data finale "
CHECKTYPE REQUIRED
VALIDATE DATE_CMP_FUNC >= F_SPOSTADAL
WARNING "La data finale dello spostamento non puo' essere inferiore all'iniziale"
END END
NUMBER F_SPOSTATI 4 NUMBER F_SPOSTATI 4
@ -162,5 +172,21 @@ BEGIN
FLAGS "D" FLAGS "D"
END END
NUMBER F_NONSPOSTATI 4
BEGIN
PROMPT 50 12 "Non spostati "
FLAGS "D"
END
TEXT DLG_NULL
BEGIN
PROMPT 2 14 "I soggetti non spostati sono quelli che hanno una convocazione corrispondente"
END
TEXT DLG_NULL
BEGIN
PROMPT 2 15 "alle selezioni fatte, ma che non appartengono alla sezione/sottogruppo scelta "
END
ENDPAGE ENDPAGE
ENDMASK ENDMASK

View File

@ -178,7 +178,7 @@ void TChiusuraPeriodica::header_sezione(const TString16 codsez, const TString16
{ {
const TString80 densez = current_cursor()->curr(LF_SEZIONI).get(SEZ_DENSEZ); const TString80 densez = current_cursor()->curr(LF_SEZIONI).get(SEZ_DENSEZ);
const TString80 densot = current_cursor()->curr(LF_SEZIONI).get(SEZ_DENSOT); const TString80 densot = current_cursor()->curr(LF_SEZIONI).get(SEZ_DENSOT);
TString intestazione(132); TString intestazione(116);
intestazione = "Sezione: "; intestazione = "Sezione: ";
intestazione << codsez; intestazione << codsez;
intestazione << "/"; intestazione << "/";
@ -201,9 +201,10 @@ void TChiusuraPeriodica::set_page(int file, int cnt)
set_row(1,"@9g@S", FLD(LF_SOGGETTI,SOG_CATDON)); set_row(1,"@9g@S", FLD(LF_SOGGETTI,SOG_CATDON));
set_row(1,"@12g@S", FLD(LF_SOGGETTI,SOG_COGNOME)); set_row(1,"@12g@S", FLD(LF_SOGGETTI,SOG_COGNOME));
set_row(1,"@38g@S", FLD(LF_SOGGETTI,SOG_NOME)); set_row(1,"@38g@S", FLD(LF_SOGGETTI,SOG_NOME));
set_row(1,"@65g@ld", FLD(LF_SOGGETTI,SOG_DATAULTDON)); set_row(1,"@64g@ld", FLD(LF_SOGGETTI,SOG_DATAULTDON));
set_row(1,"@76g@n", FLD(LF_SOGGETTI,SOG_TOTDON)); set_row(1,"@75g@pn", FLD(LF_SOGGETTI,SOG_TOTDON, "###"));
set_row(1,"@80g#a", &_operazione); set_row(1,"@79g@6,rs", FLD(LF_SOGGETTI,SOG_TESSAVIS));
set_row(1,"@86g#a", &_operazione);
} }
bool TChiusuraPeriodica::filter_func_chiusura(const TRelation* rel) bool TChiusuraPeriodica::filter_func_chiusura(const TRelation* rel)
@ -268,7 +269,7 @@ bool TChiusuraPeriodica::set_print(int)
void TChiusuraPeriodica::crea_intestazione() void TChiusuraPeriodica::crea_intestazione()
{ {
reset_header(); reset_header();
TString sep(132); TString sep(116);
sep = ""; sep = "";
if (_definitiva) if (_definitiva)
sep << "CHIUSURA - DEFINITIVA - ALLA DATA "; sep << "CHIUSURA - DEFINITIVA - ALLA DATA ";
@ -281,10 +282,12 @@ void TChiusuraPeriodica::crea_intestazione()
set_header(2,"@0g%10s", (const char*) data_stampa.string()); set_header(2,"@0g%10s", (const char*) data_stampa.string());
sep = ""; sep = "";
sep << "Pag. @#"; sep << "Pag. @#";
set_header(2, "@120g%s", (const char*) sep); set_header(2, "@100g%s", (const char*) sep);
sep = ""; sep = "";
sep.fill('-'); sep.fill('-');
set_header(3, (const char *) sep); set_header(3, (const char *) sep);
set_header(4,"@0gCodice@9gC.@12gCognome@38gNome@64gData u.d.@75gTot@79gTess.@86gOperazione");
set_header(5,"@0g--------@9g--@12g-------------------------@38g-------------------------@64g----------@75g---@79g------@86g------------------------------");
} }
bool TChiusuraPeriodica::user_create() bool TChiusuraPeriodica::user_create()

View File

@ -178,7 +178,26 @@ bool TSbloccoSospesi::preprocess_page(int file, int counter)
operazione << datafineaf.string(); operazione << datafineaf.string();
operazione << " "; operazione << " ";
operazione << "AF SO ID"; operazione << "AF SO ID";
} }
TDate datarif = app()._data_sblocco;
datarif.set_year(datarif.year()-2);
TDate dataultdon = recsog.get_date(SOG_DATAULTDON);
if (dataultdon.ok())
{
if (dataultdon < datarif)
operazione << " **";
}
else
{
TDate dataultido = recsog.get_date(SOG_DATAULTID);
TString16 idon1 = recsog.get(SOG_IDON1);
TString16 idon2 = recsog.get(SOG_IDON2);
TString16 idon3 = recsog.get(SOG_IDON3);
TString16 idon4 = recsog.get(SOG_IDON4);
if (dataultido.ok() && is_idon(idon1, idon2, idon3, idon4, IDON_SI))
if (dataultido < datarif)
operazione << " **";
}
_operazione = operazione; _operazione = operazione;
if (_definitiva) if (_definitiva)
{ {
@ -209,8 +228,14 @@ bool TSbloccoSospesi::preprocess_page(int file, int counter)
{ {
TRectype* key = new TRectype(LF_IDONEITA); TRectype* key = new TRectype(LF_IDONEITA);
long codice = recsog.get_long(SOG_CODICE); long codice = recsog.get_long(SOG_CODICE);
key->put(IDO_CODICE, codice); key->put(IDO_CODICE, codice);
int err = _sidoneita->read(key); int err = _sidoneita->read(key);
// Aggiunte le righe relative a key1 da Marco in data 20/12/99
// per gestire le sospensioni parziali in quanto per tali soggetti non veniva mai passato,
// alla funzione CON_REORD, lo spreadsheet dei controlli sanitari ma solo quello delle idoneita'.
TRectype* key1 = new TRectype(LF_CONTSAN);
key1->put(CON_CODICE, codice);
err = _scontrolli->read(key1);
if (statosi == "SO" && datafinesi.ok() && datafinesi <= app()._data_sblocco) if (statosi == "SO" && datafinesi.ok() && datafinesi <= app()._data_sblocco)
{ {
int progido = _sidoneita->rows()+1; int progido = _sidoneita->rows()+1;
@ -295,9 +320,6 @@ void TSbloccoSospesi::set_page(int file, int cnt)
set_row(1,"@49g@S", FLD(LF_SOGGETTI,SOG_TESSAVIS)); set_row(1,"@49g@S", FLD(LF_SOGGETTI,SOG_TESSAVIS));
set_row(1,"@56g@S", FLD(LF_SOGGETTI,SOG_CODSEZ)); set_row(1,"@56g@S", FLD(LF_SOGGETTI,SOG_CODSEZ));
set_row(1,"@59g@S", FLD(LF_SOGGETTI,SOG_CODSOT)); set_row(1,"@59g@S", FLD(LF_SOGGETTI,SOG_CODSOT));
//set_row(1,"@57g@ld", FLD(LF_SOGGETTI,SOG_DATASTATO));
//set_row(1,"@68g@ld", FLD(LF_SOGGETTI,SOG_DATA_PROS));
//set_row(1,"@79g#a", &_operazione);
set_row(1,"@62g#a", &_operazione); set_row(1,"@62g#a", &_operazione);
} }
@ -428,8 +450,8 @@ void TSbloccoSospesi::crea_intestazione()
sep = ""; sep = "";
sep.fill('-'); sep.fill('-');
set_header(3, (const char *) sep); set_header(3, (const char *) sep);
set_header(4,"@0gCod.@9gC.@12gCognome e nome@38gNato il@49gTessera@57gSe/So@62gData sosp.@73gScadenza@84gDo Da A Sogg."); set_header(4,"@0gCod.@9gC.@12gCognome e nome@38gNato il@49gTess.@56gSe/So@62gData sosp.@73gScadenza@84gDo Da A Sogg.");
set_header(5,"@0g------@9g--@12g-------------------------@38g----------@49g-------@57g-- --@62g----------@73g----------@84g---------------"); set_header(5,"@0g------@9g--@12g-------------------------@38g----------@49g------@56g-- --@62g----------@73g----------@84g---------------");
printer().footerlen(3); printer().footerlen(3);
} }

View File

@ -92,7 +92,8 @@ void TSbloccoEsclusi::set_page(int file, int cnt)
set_row(1,"@9g@S", FLD(LF_SOGGETTI,SOG_CATDON)); set_row(1,"@9g@S", FLD(LF_SOGGETTI,SOG_CATDON));
set_row(1,"@12g@S", FLD(LF_SOGGETTI,SOG_COGNOME)); set_row(1,"@12g@S", FLD(LF_SOGGETTI,SOG_COGNOME));
set_row(1,"@38g@S", FLD(LF_SOGGETTI,SOG_NOME)); set_row(1,"@38g@S", FLD(LF_SOGGETTI,SOG_NOME));
set_row(1,"@63g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); set_row(1,"@64g@ld", FLD(LF_SOGGETTI,SOG_DATANASC));
set_row(1,"@75g@6,rs", FLD(LF_SOGGETTI,SOG_TESSAVIS));
} }
bool TSbloccoEsclusi::filter_func_sbloccoesclusi(const TRelation* rel) bool TSbloccoEsclusi::filter_func_sbloccoesclusi(const TRelation* rel)
@ -106,7 +107,7 @@ void TSbloccoEsclusi::header_sezione(const TString16 codsez, const TString16 cod
{ {
const TString80 densez = current_cursor()->curr(LF_SEZIONI).get(SEZ_DENSEZ); const TString80 densez = current_cursor()->curr(LF_SEZIONI).get(SEZ_DENSEZ);
const TString80 densot = current_cursor()->curr(LF_SEZIONI).get(SEZ_DENSOT); const TString80 densot = current_cursor()->curr(LF_SEZIONI).get(SEZ_DENSOT);
TString intestazione(132); TString intestazione(80);
intestazione = "Sezione: "; intestazione = "Sezione: ";
intestazione << codsez; intestazione << codsez;
intestazione << "/"; intestazione << "/";
@ -150,12 +151,11 @@ void TSbloccoEsclusi::crea_intestazione()
{ {
reset_header(); reset_header();
TString sep(132); TString sep(80);
if (_definitiva) if (_definitiva)
sep = "SBLOCCO DEFINITIVO ESCLUSI "; sep = "SBLOCCO DEFINITIVO ESCLUSI AL ";
else else
sep = "STAMPA PROVVISORIA PER SBLOCCO ESCLUSI "; sep = "STAMPA PROVVISORIA PER SBLOCCO ESCLUSI AL ";
sep << " FINO ALLA DATA ";
TString16 data_stampa = _data_sblocco.string(); TString16 data_stampa = _data_sblocco.string();
sep << data_stampa; sep << data_stampa;
sep.center_just(); sep.center_just();
@ -164,13 +164,13 @@ void TSbloccoEsclusi::crea_intestazione()
set_header(2,"@0g%10s", (const char*) data_stampa); set_header(2,"@0g%10s", (const char*) data_stampa);
sep = ""; sep = "";
sep << "Pag. @#"; sep << "Pag. @#";
set_header(2, "@120g%s", (const char*) sep); set_header(2, "@70g%s", (const char*) sep);
sep = ""; sep = "";
sep.fill('-'); sep.fill('-');
set_header(3, (const char *) sep); set_header(3, (const char *) sep);
set_header(4,"@0gCod.@9gC.@12gCognome e nome@38gNato il"); set_header(4,"@0gCod.@9gC.@12gCognome@38gNome@64gNato il@75gTess.");
set_header(5,"@0g--------@9g--@12g-------------------------@38g----------"); set_header(5,"@0g--------@9g--@12g-------------------------@38g-------------------------@64g----------@75g------");
} }
bool TSbloccoEsclusi::user_create() bool TSbloccoEsclusi::user_create()

View File

@ -43,12 +43,14 @@ class TAttribuzioneBenemerenze : public TPrintapp
bool _definitiva; bool _definitiva;
TParagraph_string _cognome_nome; TParagraph_string _cognome_nome;
int _contatore; int _contatore;
int _progope;
protected: protected:
virtual bool user_create(); virtual bool user_create();
virtual bool user_destroy(); virtual bool user_destroy();
virtual bool set_print(int m); virtual bool set_print(int m);
virtual void set_page(int file, int cnt); virtual void set_page(int file, int cnt);
virtual bool preprocess_page(int file, int counter); virtual bool preprocess_page(int file, int counter);
virtual void postclose_print();
public: public:
void crea_intestazione(); void crea_intestazione();
@ -58,6 +60,29 @@ public:
HIDDEN inline TAttribuzioneBenemerenze& app() { return (TAttribuzioneBenemerenze&) main_app(); } HIDDEN inline TAttribuzioneBenemerenze& app() { return (TAttribuzioneBenemerenze&) main_app(); }
void TAttribuzioneBenemerenze::postclose_print()
{
TLocalisamfile atropera(LF_ATROPERA);
atropera.setkey(1);
atropera.zero();
atropera.put(ROP_PROGOPE, _progope);
TRectype r(atropera.curr());
for (atropera.read(); !atropera.eof(); atropera.next())
{
if (atropera.curr() != r) break;
atropera.remove();
}
if (!_definitiva)
{
TLocalisamfile atopera(LF_ATOPERA);
atopera.setkey(1);
atopera.zero();
atopera.put(OPE_PROGOPE, _progope);
if (atopera.read() == NOERR)
atopera.remove();
}
}
bool TAttribuzioneBenemerenze::preprocess_page(int file, int counter) bool TAttribuzioneBenemerenze::preprocess_page(int file, int counter)
{ {
if (file==LF_ATROPERA) if (file==LF_ATROPERA)
@ -210,10 +235,10 @@ bool TAttribuzioneBenemerenze::set_print(int)
TLocalisamfile atopera(LF_ATOPERA); TLocalisamfile atopera(LF_ATOPERA);
atopera.last(); atopera.last();
int progope = atopera.get_int(OPE_PROGOPE); _progope = atopera.get_int(OPE_PROGOPE);
progope++; _progope++;
atopera.zero(); atopera.zero();
atopera.put(OPE_PROGOPE, progope); atopera.put(OPE_PROGOPE, _progope);
atopera.put(OPE_CODSEZ,sezini); atopera.put(OPE_CODSEZ,sezini);
atopera.put(OPE_CODSOT,sotini); atopera.put(OPE_CODSOT,sotini);
atopera.put(OPE_GRUPPOAZIE,_gruppoazie); atopera.put(OPE_GRUPPOAZIE,_gruppoazie);
@ -222,11 +247,13 @@ bool TAttribuzioneBenemerenze::set_print(int)
atopera.put(OPE_FLAG1,_anchegruppi); atopera.put(OPE_FLAG1,_anchegruppi);
atopera.put(OPE_FLAG2,_attgruppi); atopera.put(OPE_FLAG2,_attgruppi);
atopera.put(OPE_UTENTE,user()); atopera.put(OPE_UTENTE,user());
atopera.put(OPE_TIPOOPE,'B');
atopera.write(); atopera.write();
TLocalisamfile atropera(LF_ATROPERA); TLocalisamfile atropera(LF_ATROPERA);
// cancelliamo l'elaborazione precedente // cancelliamo l'elaborazione precedente
for (atropera.first(); !atropera.eof(); atropera.next()) // NO! non la cancelliamo piu' cosi' perche ci possono essere le righe di altre elaborazioni (es. tessere!)
atropera.remove(); //for (atropera.first(); !atropera.eof(); atropera.next())
// atropera.remove();
TRectype& sog = _cur->curr(); TRectype& sog = _cur->curr();
long last = _cur->items(); long last = _cur->items();
_benem->setkey(3); _benem->setkey(3);
@ -304,7 +331,7 @@ bool TAttribuzioneBenemerenze::set_print(int)
if (_benem->bad()) if (_benem->bad())
{ {
atropera.zero(); atropera.zero();
atropera.put(ROP_PROGOPE, progope); atropera.put(ROP_PROGOPE, _progope);
atropera.put(ROP_CODICE, codice); atropera.put(ROP_CODICE, codice);
atropera.put(ROP_S0, tipoben); atropera.put(ROP_S0, tipoben);
atropera.write(); atropera.write();
@ -319,10 +346,9 @@ bool TAttribuzioneBenemerenze::set_print(int)
TRelation* relope = new TRelation(LF_ATROPERA); TRelation* relope = new TRelation(LF_ATROPERA);
relope->add(LF_SOGGETTI, "CODICE==CODICE"); relope->add(LF_SOGGETTI, "CODICE==CODICE");
TString80 chiave = "131->S0|UPPER(90->COGNOME)|UPPER(90->NOME)"; TString80 chiave = "131->S0|UPPER(90->COGNOME)|UPPER(90->NOME)";
TString80 filtroope = format("131->PROGOPE==%d", _progope);
int curope = add_cursor(new TSorted_cursor(relope, (const char*) chiave, "", 1)); int curope = add_cursor(new TSorted_cursor(relope, (const char*) chiave, "", 1));
filtro = ""; current_cursor()->setfilter((const char*) filtroope, TRUE);
current_cursor()->setfilter((const char*) filtro, TRUE);
add_file(LF_ATROPERA); add_file(LF_ATROPERA);
add_file(LF_SOGGETTI,LF_ATROPERA); add_file(LF_SOGGETTI,LF_ATROPERA);
reset_print(); reset_print();

View File

@ -27,5 +27,12 @@
#define F_ANCHEGRUPPI 314 #define F_ANCHEGRUPPI 314
#define F_DEFINITIVA 315 #define F_DEFINITIVA 315
#define F_O_CODSEZ 401 #define F_RCODSEZ 401
#define F_O_CODSOT 402 #define F_RCODSOT 402
#define F_RDATAELA 403
#define F_RDATAPRE 404
#define F_RATTGRUPPI 405
#define F_RGRUPPOAZIE 406
#define F_D_RGRUPPOAZIE 407
#define F_RANCHEGRUPPI 408
#define F_RUTENTE 409

View File

@ -272,15 +272,15 @@ END
ENDPAGE ENDPAGE
PAGE "Ricerca" -1 -1 78 18 PAGE "Visualizzazione attribuzioni fatte" -1 -1 78 18
STRING F_O_CODSEZ 2 STRING F_RCODSEZ 2
BEGIN BEGIN
PROMPT 2 1 "Sezione " PROMPT 2 1 "Sezione "
FLAGS "U" FLAGS "U"
USE LF_ATOPERA KEY 2 USE LF_ATOPERA KEY 2 SELECT TIPOOPE = 'B'
INPUT CODSEZ F_O_CODSEZ INPUT CODSEZ F_RCODSEZ
INPUT CODSOT F_O_CODSOT INPUT CODSOT F_RCODSOT
DISPLAY "Cod.sez" CODSEZ DISPLAY "Cod.sez" CODSEZ
DISPLAY "Cod.sot." CODSOT DISPLAY "Cod.sot." CODSOT
DISPLAY "Gr.az." GRUPPOAZIE DISPLAY "Gr.az." GRUPPOAZIE
@ -288,15 +288,81 @@ BEGIN
DISPLAY "Data pr.con.@10" DATA2 DISPLAY "Data pr.con.@10" DATA2
DISPLAY "Anche gruppi" FLAG1 DISPLAY "Anche gruppi" FLAG1
DISPLAY "Utente" UTENTE DISPLAY "Utente" UTENTE
CHECKTYPE NORMAL OUTPUT F_RCODSEZ CODSEZ
OUTPUT F_RCODSOT CODSOT
OUTPUT F_RDATAELA DATA1
OUTPUT F_RDATAPRE DATA2
OUTPUT F_RATTGRUPPI FLAG2
OUTPUT F_RGRUPPOAZIE GRUPPOAZIE
OUTPUT F_RANCHEGRUPPI FLAG1
OUTPUT F_RUTENTE UTENTE
CHECKTYPE SEARH
END END
STRING F_O_CODSOT 2 STRING F_RCODSOT 2
BEGIN BEGIN
PROMPT 2 2 "Sottogruppo " PROMPT 2 2 "Sottogruppo "
COPY ALL F_O_CODSEZ COPY ALL F_RCODSEZ
CHECKTYPE SEARCH CHECKTYPE SEARCH
HELP "Codice sottogruppo da stampare" END
GROUPBOX DLG_NULL 77 8
BEGIN
PROMPT 1 4 "Opzioni dell'attribuzione"
END
DATE F_RDATAELA
BEGIN
PROMPT 2 5 "Data elaborazione "
FLAGS "D"
HELP "Data di riferimento per l'attribuzione delle benemerenze"
END
DATE F_RDATAPRE
BEGIN
PROMPT 2 6 "Data prevista consegna "
FLAGS "D"
HELP "Data di prevista consegna"
END
BOOLEAN F_RATTGRUPPI
BEGIN
PROMPT 2 7 "Attribuzione fatta dai gruppi aziendali"
FLAGS "D"
END
STRING F_RGRUPPOAZIE 4
BEGIN
PROMPT 2 8 "Gruppo az. che attribuisce "
FLAGS "D"
USE GAZ
INPUT CODTAB F_RGRUPPOAZIE
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@30" S0
OUTPUT F_RGRUPPOAZIE CODTAB
OUTPUT F_D_RGRUPPOAZIE S0
CHECKTYPE NORMAL
WARNING "Codice gruppo aziendale non presente"
HELP "Gruppo aziendale di appartenenza"
END
STRING F_D_RGRUPPOAZIE 30
BEGIN
PROMPT 37 8 ""
FLAGS "D"
END
BOOLEAN F_RANCHEGRUPPI
BEGIN
PROMPT 2 9 "Includi soggetti appartenenti a gruppi aziendali"
FLAGS "D"
END
STRING F_RUTENTE 8
BEGIN
PROMPT 2 10 "Utente che ha attribuito "
FLAGS "D"
END END

View File

@ -160,8 +160,12 @@ void TStampaBenxGAz::set_page(int file, int cnt)
set_row(1,"@49g@S", FLD(LF_SOGGETTI,SOG_DOM_INDIR)); set_row(1,"@49g@S", FLD(LF_SOGGETTI,SOG_DOM_INDIR));
set_row(1,"@100g@S", FLD(LF_SOGGETTI,SOG_TELABI)); set_row(1,"@100g@S", FLD(LF_SOGGETTI,SOG_TELABI));
set_row(1,"@116g@S", FLD(LF_SOGGETTI,SOG_TELLAV)); set_row(1,"@116g@S", FLD(LF_SOGGETTI,SOG_TELLAV));
set_row(2,"@0g@S", FLD(LF_SOGGETTI,SOG_TESSAVIS));
set_row(2,"@49g#a", &_dencom); set_row(2,"@49g#a", &_dencom);
set_row(2,"@116g@S", FLD(LF_SOGGETTI,SOG_TELALT)); set_row(2,"@116g@S", FLD(LF_SOGGETTI,SOG_TELALT));
set_row(3,"@100g@pn", FLD(LF_SOGGETTI,SOG_TOTDON,"###"));
set_row(4,"");
} }
break; break;
case sintetico: case sintetico:
@ -342,9 +346,9 @@ void TStampaBenxGAz::crea_intestazione()
sep.fill('-'); sep.fill('-');
if (_tipostampa==completo) if (_tipostampa==completo)
{ {
set_header(3, (const char *) sep); set_header(3,"@0gCodice@9gC.@12gCognome e nome@38gNato il@49gIndirizzo@100gTelefono abit.@116gTelefono lavoro");
set_header(4,"@0gCodice@9gC.@12gCognome e nome@38gNato il@49gIndirizzo@100gTelefono abit.@116gTelefono lavoro"); set_header(4,"@0gTessera@49gCAP/Località/Comune/Prov.@116gTelefono altro");
set_header(5,"@49gCAP/Località/Comune/Prov.@116gTelefono altro"); set_header(5,"@100gTot.don.");
set_header(6,"@0g--------@9g--@12g-------------------------@38g----------@49g--------------------------------------------------@100g---------------@116g---------------"); set_header(6,"@0g--------@9g--@12g-------------------------@38g----------@49g--------------------------------------------------@100g---------------@116g---------------");
} }
printer().footerlen(3); printer().footerlen(3);

View File

@ -217,7 +217,7 @@ bool TControlloBenemerenze::preprocess_page(int file, int counter)
nome << " "; nome << " ";
nome << recsog.get(SOG_NOME); nome << recsog.get(SOG_NOME);
_cognome_nome = nome; _cognome_nome = nome;
TString80 benemerenza = ""; TString256 benemerenza = "";
const long codice = recsog.get_long(SOG_CODICE); const long codice = recsog.get_long(SOG_CODICE);
TRectype* key = new TRectype(LF_BENEM); TRectype* key = new TRectype(LF_BENEM);
key->put(BEN_CODICE,codice); key->put(BEN_CODICE,codice);

View File

@ -43,7 +43,7 @@ class TStampaSospesi : public TPrintapp
TDate _data_stampa; TDate _data_stampa;
TDate _dataini, _datafin, _sodataini, _sodatafin; TDate _dataini, _datafin, _sodataini, _sodatafin;
ts _tipostampa; ts _tipostampa;
TString16 _codsez, _codsot, _motivo1, _motivo2, _motivo3, _motivo4, _motivo5; TString16 _codsez, _codsot, _motivo1, _motivo2, _motivo3, _motivo4, _motivo5, _tiposo, _prosstipo;
int _etlarghezza, _etcolonne; int _etlarghezza, _etcolonne;
bool _motivi; bool _motivi;
@ -356,14 +356,14 @@ bool TStampaSospesi::set_print(int m)
_motivi = (_motivo1.not_empty() || _motivo2.not_empty() || _motivo3.not_empty() || _motivo4.not_empty() || _motivo5.not_empty()); _motivi = (_motivo1.not_empty() || _motivo2.not_empty() || _motivo3.not_empty() || _motivo4.not_empty() || _motivo5.not_empty());
TString filtro; TString filtro;
// filtro per tipo sospensione // filtro per tipo sospensione
const TString16 tiposo = _msk->get(F_TIPO); _tiposo = _msk->get(F_TIPO);
if (tiposo.not_empty()) if (_tiposo.not_empty())
filtro << '(' << SOG_STATO << "== \"" << tiposo << "\")"; filtro << '(' << SOG_STATO << "== \"" << _tiposo << "\")";
else else
filtro << "((TCS->S6 == \"S\") || (TCS->S6 == \"B\"))"; filtro << "((TCS->S6 == \"S\") || (TCS->S6 == \"B\"))";
const TString16 prosstipo = _msk->get(F_PROSSTIPO); _prosstipo = _msk->get(F_PROSSTIPO);
if (prosstipo.not_empty()) if (_prosstipo.not_empty())
filtro << " && (" << SOG_PROS_STATO << "== \"" << prosstipo << "\")"; filtro << " && (" << SOG_PROS_STATO << "== \"" << _prosstipo << "\")";
current_cursor()->setfilter(filtro, TRUE); current_cursor()->setfilter(filtro, TRUE);
// filtro per categorie // filtro per categorie
_categorie.destroy(); _categorie.destroy();
@ -404,15 +404,16 @@ void TStampaSospesi::crea_intestazione()
if (_tipostampa==sintetico || _tipostampa==completo) if (_tipostampa==sintetico || _tipostampa==completo)
{ {
TString sep(132); TString sep(132);
sep = "SOGGETTI SOSPESI"; if (_tipostampa==sintetico)
const TString16 tipo = _msk->get(F_TIPO); sep = "ELENCO SINTETICO SOSPESI ";
if (tipo.not_empty()) else
{ sep = "ELENCO COMPLETO SOSPESI ";
sep << ": tipo "; if (_tiposo.not_empty())
sep << tipo; sep << _tiposo;
sep << ' '; if (_sodataini.ok())
sep << _msk->get(F_D_TIPO); sep << " DAL " << _sodataini;
} if (_sodatafin.ok())
sep << " AL " << _sodatafin;
if (_tipostampa==sintetico) if (_tipostampa==sintetico)
sep.center_just(100); sep.center_just(100);
else else
@ -426,25 +427,40 @@ void TStampaSospesi::crea_intestazione()
set_header(2, "@90g%s", (const char*) sep); set_header(2, "@90g%s", (const char*) sep);
else else
set_header(2, "@120g%s", (const char*) sep); set_header(2, "@120g%s", (const char*) sep);
if (_prosstipo.not_empty() || _dataini.ok() || _datafin.ok())
{
sep = "CON PROSSIMO TIPO ";
if (_prosstipo.not_empty())
sep << _prosstipo;
if (_dataini.ok())
sep << " DAL " << _dataini;
if (_datafin.ok())
sep << " AL " << _datafin;
if (_tipostampa==sintetico)
sep.center_just(100);
else
sep.center_just();
set_header(3, "@0g%s", (const char*) sep);
}
sep = ""; sep = "";
if (_tipostampa==sintetico) if (_tipostampa==sintetico)
{ {
sep.fill('-',100); sep.fill('-',100);
set_header(3, (const char *) sep); set_header(4, (const char *) sep);
set_header(4,"@0gCodice@9gC.@12gCognome e nome@38gNato il@49gSospensione@63gUltima idon.@77gIntervalli@88gUltima donaz."); set_header(5,"@0gCodice@9gC.@12gCognome e nome@38gNato il@49gSospensione@63gUltima idon.@77gIntervalli@88gUltima donaz.");
set_header(5,"@0gTessera@38gGr.AB0 Rh@49gPr.tipo@78gSI AF"); set_header(6,"@0gTessera@38gGr.AB0 Rh@49gPr.tipo@78gSI AF");
set_header(6,"@0g--------@9g--@12g-------------------------@38g----------@49g-------------@63g-------------@77g----------@88g---------- --"); set_header(7,"@0g--------@9g--@12g-------------------------@38g----------@49g-------------@63g-------------@77g----------@88g---------- --");
} }
else else
{ {
sep.fill('-'); sep.fill('-');
set_header(3, (const char *) sep); set_header(4, (const char *) sep);
set_header(4,"@0gCodice@9gCognome@35gIndirizzo@66gTel.abitazione@82gTipiz@94gSospensione@105gUltima id.@116gUlt.donaz."); set_header(5,"@0gCodice@9gCognome@35gIndirizzo@66gTel.abitazione@82gTipiz@94gSospensione@105gUltima id.@116gUlt.donaz.");
set_header(5,"@0gTessera@9gNome@66gTel.lavoro@82gzazione@94gData@105gTipo@116gTipo"); set_header(6,"@0gTessera@9gNome@66gTel.lavoro@82gzazione@94gData@105gTipo@116gTipo");
set_header(6,"@0gCateg.@9gData nascita@66gTel.altro@94gPr.tipo"); set_header(7,"@0gCateg.@9gData nascita@66gTel.altro@94gPr.tipo");
set_header(7,"@94gData pros.@109gInt.SI@118gTot.don."); set_header(8,"@94gData pros.@109gInt.SI@118gTot.don.");
set_header(8,"@94gMotivo@109gInt.AF"); set_header(9,"@94gMotivo@109gInt.AF");
set_header(9,"@0g--------@9g-------------------------@35g------------------------------@66g--------------@82g------------@94g----------@105g----------@116g----------"); set_header(10,"@0g--------@9g-------------------------@35g------------------------------@66g--------------@82g------------@94g----------@105g----------@116g----------");
} }
} }
} }

View File

@ -140,6 +140,7 @@ void TStampaPerEta::set_page(int file, int cnt)
else else
{ {
set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########")); set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########"));
set_row(2,"@0g@8,rs", FLD(LF_SOGGETTI,SOG_TESSAVIS));
set_row(1,"@9g@S", FLD(LF_SOGGETTI,SOG_CATDON)); set_row(1,"@9g@S", FLD(LF_SOGGETTI,SOG_CATDON));
set_row(1,"@12g#a", &_cognome_nome); set_row(1,"@12g#a", &_cognome_nome);
set_row(1,"@38g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); set_row(1,"@38g@ld", FLD(LF_SOGGETTI,SOG_DATANASC));
@ -349,7 +350,7 @@ void TStampaPerEta::crea_intestazione()
{ {
_cognome_nome.set_width(25); _cognome_nome.set_width(25);
set_header(4,"@0gCodice@9gC.@12gCognome e nome@38gNato il@49gIndirizzo@100gTelefono abit.@116gTelefono lavoro"); set_header(4,"@0gCodice@9gC.@12gCognome e nome@38gNato il@49gIndirizzo@100gTelefono abit.@116gTelefono lavoro");
set_header(5,"@49gCAP/Località/Comune/Prov.@116gTelefono altro"); set_header(5,"@0gTessera@49gCAP/Località/Comune/Prov.@116gTelefono altro");
set_header(6,"@0g--------@9g--@12g-------------------------@38g----------@49g--------------------------------------------------@100g---------------@116g---------------"); set_header(6,"@0g--------@9g--@12g-------------------------@38g----------@49g--------------------------------------------------@100g---------------@116g---------------");
} }
} }

View File

@ -108,12 +108,13 @@ void TStampaEsclusi::set_page(int file, int cnt)
case elenco: case elenco:
{ {
set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########")); set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########"));
set_row(1,"@9g@S", FLD(LF_SOGGETTI,SOG_CATDON)); set_row(1,"@9g@6,rs", FLD(LF_SOGGETTI,SOG_TESSAVIS));
set_row(1,"@12g#a", &_cognome_nome); set_row(1,"@16g@S", FLD(LF_SOGGETTI,SOG_CATDON));
set_row(1,"@38g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); set_row(1,"@19g#a", &_cognome_nome);
set_row(1,"@49g@S", FLD(LF_SOGGETTI,SOG_ESCLUSO)); set_row(1,"@45g@ld", FLD(LF_SOGGETTI,SOG_DATANASC));
set_row(1,"@52g@ld", FLD(LF_SOGGETTI,SOG_TERMESCL)); set_row(1,"@56g@S", FLD(LF_SOGGETTI,SOG_ESCLUSO));
set_row(1,"@63g@S", FLD(LF_SOGGETTI,SOG_MOTESCL)); set_row(1,"@59g@ld", FLD(LF_SOGGETTI,SOG_TERMESCL));
set_row(1,"@70g@S", FLD(LF_SOGGETTI,SOG_MOTESCL));
} }
break; break;
} }
@ -176,7 +177,7 @@ void TStampaEsclusi::header_sezione(const TString16 codsez, const TString16 cods
{ {
const TString80 densez = current_cursor()->curr(LF_SEZIONI).get(SEZ_DENSEZ); const TString80 densez = current_cursor()->curr(LF_SEZIONI).get(SEZ_DENSEZ);
const TString80 densot = current_cursor()->curr(LF_SEZIONI).get(SEZ_DENSOT); const TString80 densot = current_cursor()->curr(LF_SEZIONI).get(SEZ_DENSOT);
TString intestazione(132); TString intestazione(100);
intestazione = "Sezione: "; intestazione = "Sezione: ";
intestazione << codsez; intestazione << codsez;
intestazione << "/"; intestazione << "/";
@ -260,7 +261,7 @@ void TStampaEsclusi::crea_intestazione()
reset_header(); reset_header();
if (_tipostampa == elenco) if (_tipostampa == elenco)
{ {
TString sep(90); TString sep(100);
sep = "ELENCO ESCLUSI"; sep = "ELENCO ESCLUSI";
if ((_tipoesc.ok()) && (_tipoesc.not_empty())) if ((_tipoesc.ok()) && (_tipoesc.not_empty()))
{ {

View File

@ -53,9 +53,9 @@ class TStampaModificati : public TPrintapp
TModificati_form* _form_sch; TModificati_form* _form_sch;
TAssoc_array _categorie; TAssoc_array _categorie;
TParagraph_string _cognome_nome, _dencom; TParagraph_string _cognome_nome, _dencom;
TDate _data_stampa, _dataini; TDate _data_stampa, _dataini, _datafin;
ts _tipostampa; ts _tipostampa;
TString16 _codsez, _codsot; TString16 _codsez, _codsot, _utente;
TString80 _eledon; TString80 _eledon;
TString80 _eleben1,_eleben2; TString80 _eleben1,_eleben2;
int _lenpage, _schxpag; int _lenpage, _schxpag;
@ -127,6 +127,7 @@ void TStampaModificati::set_page(int file, int cnt)
case elenco: case elenco:
{ {
set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########")); set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########"));
set_row(2,"@0g@8,rs", FLD(LF_SOGGETTI,SOG_TESSAVIS));
set_row(1,"@9g@S", FLD(LF_SOGGETTI,SOG_CATDON)); set_row(1,"@9g@S", FLD(LF_SOGGETTI,SOG_CATDON));
set_row(1,"@12g#a", &_cognome_nome); set_row(1,"@12g#a", &_cognome_nome);
set_row(1,"@38g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); set_row(1,"@38g@ld", FLD(LF_SOGGETTI,SOG_DATANASC));
@ -155,9 +156,20 @@ bool TStampaModificati::filter_func_modificati(const TRelation* rel)
// filtro per data aggiornamento // filtro per data aggiornamento
if (filtrato && app()._dataini.ok()) if (filtrato && app()._dataini.ok())
{ {
const TDate datamod = sog.get(SOG_DATAULTAGG); const TDate dataultagg = sog.get(SOG_DATAULTAGG);
filtrato = (datamod >= app()._dataini); filtrato = (dataultagg >= app()._dataini);
} }
if (filtrato && app()._datafin.ok())
{
const TDate dataultagg = sog.get(SOG_DATAULTAGG);
filtrato = (dataultagg <= app()._datafin);
}
if (filtrato && app()._utente.not_empty())
{
const TString16 utenultagg = sog.get(SOG_UTENULTAGG);
filtrato = (utenultagg == app()._utente);
}
return filtrato; return filtrato;
} }
@ -264,7 +276,9 @@ bool TStampaModificati::set_print(int)
{ {
reset_files(); reset_files();
add_file(LF_SOGGETTI); add_file(LF_SOGGETTI);
_dataini = _msk->get(F_DATAINI); _dataini = _msk->get_date(F_DATAINI);
_datafin = _msk->get_date(F_DATAFIN);
_utente = _msk->get(F_UTENTE);
filtra_sezioni(); filtra_sezioni();
// filtro per categorie // filtro per categorie
_categorie.destroy(); _categorie.destroy();
@ -302,12 +316,22 @@ void TStampaModificati::crea_intestazione()
{ {
TString sep(132); TString sep(132);
sep = "ELENCO MODIFICATI"; sep = "ELENCO MODIFICATI";
const TDate data = _msk->get(F_DATAINI); if (_dataini.ok())
if (data.ok())
{ {
sep << " dal "; sep << " DAL ";
sep << data.string(); sep << _dataini.string();
} }
if (_datafin.ok())
{
sep << " AL ";
sep << _datafin.string();
}
if (_utente.not_empty())
{
sep << " UTENTE ";
sep << _utente;
}
sep.center_just(); sep.center_just();
set_header(2, "@0g%s", (const char*) sep); set_header(2, "@0g%s", (const char*) sep);
TString16 data_stampa = _data_stampa.string(); TString16 data_stampa = _data_stampa.string();
@ -319,7 +343,7 @@ void TStampaModificati::crea_intestazione()
sep.fill('-'); sep.fill('-');
set_header(3, (const char *) sep); set_header(3, (const char *) sep);
set_header(4,"@0gCodice@9gC.@12gCognome e nome@38gNato il@49gIndirizzo@100gTelefono abit.@116gTelefono lavoro"); set_header(4,"@0gCodice@9gC.@12gCognome e nome@38gNato il@49gIndirizzo@100gTelefono abit.@116gTelefono lavoro");
set_header(5,"@49gCAP/Località/Comune/Prov.@116gTelefono altro"); set_header(5,"@0gTessera@49gCAP/Località/Comune/Prov.@116gTelefono altro");
set_header(6,"@0g--------@9g--@12g-------------------------@38g----------@49g--------------------------------------------------@100g---------------@116g---------------"); set_header(6,"@0g--------@9g--@12g-------------------------@38g----------@49g--------------------------------------------------@100g---------------@116g---------------");
} }
} }

View File

@ -24,7 +24,8 @@
#define F_D_CAT6 212 #define F_D_CAT6 212
#define F_DATAINI 301 #define F_DATAINI 301
//#define F_DATAFIN 302 #define F_DATAFIN 302
#define F_UTENTE 303
#define F_ELENCO 401 #define F_ELENCO 401
#define F_SCHEDE 402 #define F_SCHEDE 402

View File

@ -276,10 +276,23 @@ BEGIN
HELP "Data iniziale" HELP "Data iniziale"
END END
//DATE F_DATAFIN DATE F_DATAFIN
//BEGIN BEGIN
// PROMPT 20 11 "Al " PROMPT 38 11 "al "
// HELP "Data di nascita finale" HELP "Data finale"
//END END
STRING F_UTENTE 8
BEGIN
PROMPT 54 11 "dall'utente "
FLAGS "U"
USE LF_USER
INPUT USERNAME F_UTENTE
DISPLAY "Utente@8" USERNAME
DISPLAY "Descrizione@50" USERDESC
OUTPUT F_UTENTE USERNAME
CHECKTYPE SEARCH
END
ENDPAGE ENDPAGE
ENDMASK ENDMASK

View File

@ -128,6 +128,7 @@ void TStampaIscritti::set_page(int file, int cnt)
set_row(1,"@38g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); set_row(1,"@38g@ld", FLD(LF_SOGGETTI,SOG_DATANASC));
set_row(1,"@49g@ld", FLD(LF_SOGGETTI,SOG_DATAISC)); set_row(1,"@49g@ld", FLD(LF_SOGGETTI,SOG_DATAISC));
set_row(1,"@60g@ld", FLD(LF_SOGGETTI,SOG_DATADIM)); set_row(1,"@60g@ld", FLD(LF_SOGGETTI,SOG_DATADIM));
set_row(1,"@71g@8,rs", FLD(LF_SOGGETTI,SOG_TESSAVIS));
} }
break; break;
} }
@ -218,7 +219,7 @@ void TStampaIscritti::header_sezione(const TString16 codsez, const TString16 cod
{ {
const TString80 densez = current_cursor()->curr(LF_SEZIONI).get(SEZ_DENSEZ); const TString80 densez = current_cursor()->curr(LF_SEZIONI).get(SEZ_DENSEZ);
const TString80 densot = current_cursor()->curr(LF_SEZIONI).get(SEZ_DENSOT); const TString80 densot = current_cursor()->curr(LF_SEZIONI).get(SEZ_DENSOT);
TString intestazione(132); TString intestazione(80);
intestazione = "Sezione: "; intestazione = "Sezione: ";
intestazione << codsez; intestazione << codsez;
intestazione << "/"; intestazione << "/";
@ -301,20 +302,20 @@ void TStampaIscritti::crea_intestazione()
reset_header(); reset_header();
if (_tipostampa == elenco) if (_tipostampa == elenco)
{ {
TString sep(132); TString sep(80);
sep = "ELENCO "; sep = "";
if (_tipo_iscdim == ISCRITTI) if (_tipo_iscdim == ISCRITTI)
sep << "ISCRITTI"; sep << "ISCRITTI";
else else
sep << "DIMESSI"; sep << "DIMESSI";
if (_dataini.ok()) if (_dataini.ok())
{ {
sep << " dal "; sep << " DAL ";
sep << _dataini.string(); sep << _dataini.string();
} }
if (_datafin.ok()) if (_datafin.ok())
{ {
sep << " al "; sep << " AL ";
sep << _datafin.string(); sep << _datafin.string();
} }
sep.center_just(); sep.center_just();
@ -323,12 +324,12 @@ void TStampaIscritti::crea_intestazione()
set_header(2,"@0g%10s", (const char*) data_stampa); set_header(2,"@0g%10s", (const char*) data_stampa);
sep = ""; sep = "";
sep << "Pag. @#"; sep << "Pag. @#";
set_header(2, "@120g%s", (const char*) sep); set_header(2, "@70g%s", (const char*) sep);
sep = ""; sep = "";
sep.fill('-'); sep.fill('-');
set_header(3, (const char *) sep); set_header(3, (const char *) sep);
set_header(4,"@0gCodice@9gC.@12gCognome e nome@38gNato il@49gData isc.@60gData dim."); set_header(4,"@0gCodice@9gC.@12gCognome e nome@38gNato il@49gData isc.@60gData dim.@71gTessera");
set_header(5,"@0g--------@9g--@12g-------------------------@38g----------@49g----------@60g----------"); set_header(5,"@0g--------@9g--@12g-------------------------@38g----------@49g----------@60g----------@71g-------");
printer().footerlen(3); printer().footerlen(3);
} }
} }

View File

@ -1,6 +1,7 @@
#include <form.h> #include <form.h>
#include <mask.h> #include <mask.h>
#include <printapp.h> #include <printapp.h>
#include <progind.h>
#include <recarray.h> #include <recarray.h>
#include <tabutil.h> #include <tabutil.h>
#include <utility.h> #include <utility.h>
@ -36,7 +37,7 @@
#define ETI_COGNOME 3 // numero campo cognome e nome in etichetta (deve essere sempre cosi') per famiglie #define ETI_COGNOME 3 // numero campo cognome e nome in etichetta (deve essere sempre cosi') per famiglie
enum ts { undefined=0, sintetico=1, completo=2, schede=3, etichette=4, cartoline=5, personale=6, notiziario=7 }; enum ts { undefined=0, sintetico=1, completo=2, schede=3, etichette=4, cartoline=5, personale=6, notiziario=7, stampasufile=8 };
// definizione form per etichette // definizione form per etichette
class TEti_percat_form : public TForm class TEti_percat_form : public TForm
@ -63,6 +64,7 @@ class TStampaPerCategorie : public TPrintapp
TLocalisamfile* _benem; TLocalisamfile* _benem;
TLocalisamfile* _donaz; TLocalisamfile* _donaz;
TLocalisamfile* _famiglie; TLocalisamfile* _famiglie;
TExternisamfile* _file;
TRecord_array* _sbenemerenze; TRecord_array* _sbenemerenze;
TRecord_array* _sfamiglia; TRecord_array* _sfamiglia;
TEti_percat_form* _form_eti; TEti_percat_form* _form_eti;
@ -567,8 +569,8 @@ bool TStampaPerCategorie::filter_func_percat(const TRelation* rel)
TAssoc_array& categorie = app()._catdon; TAssoc_array& categorie = app()._catdon;
if (categorie.items() != 0) if (categorie.items() != 0)
{ {
const TString16 cat = sog.get(SOG_CATDON); const TString& cat = sog.get(SOG_CATDON);
filtrato = categorie.is_key((const char*) cat); filtrato = categorie.is_key(cat);
} }
if (!filtrato) if (!filtrato)
{ {
@ -823,6 +825,28 @@ bool TStampaPerCategorie::preprocess_page(int file, int counter)
cognome << recsog.get(SOG_NOME); cognome << recsog.get(SOG_NOME);
_cognome_nome = cognome; _cognome_nome = cognome;
} }
if (_tipostampa==stampasufile)
{
_file->zero();
_file->put("CODICE",recsog.get(SOG_CODICE));
_file->put("COGNOME",recsog.get(SOG_COGNOME));
_file->put("NOME",recsog.get(SOG_NOME));
_file->put("SPOSATA",recsog.get(SOG_COGNOME_SP));
_file->put("INDIRIZZO",recsog.get(SOG_DOM_INDIR));
_file->put("PRESSO",recsog.get(SOG_DOM_DISTRI));
TString80 localita = "";
localita << recsog.get(SOG_DOM_CAP);
localita << ' ';
if (recsog.get(SOG_DOM_CODLOC).not_empty())
localita << current_cursor()->curr(-ALIAS_LCPDOM).get("S0");
else
localita << current_cursor()->curr(LF_COMUNI).get(COM_DENCOM);
localita << ' ' << current_cursor()->curr(LF_COMUNI).get(COM_PROVCOM);
localita.trim();
_file->put("LOCALITA",localita);
_file->write();
do_events();
}
if (_tipostampa!=etichette && _tipostampa!=notiziario) if (_tipostampa!=etichette && _tipostampa!=notiziario)
_contatore++; _contatore++;
return TRUE; return TRUE;
@ -862,6 +886,13 @@ bool TStampaPerCategorie::set_print(int m)
case F_CARTOLINE: case F_CARTOLINE:
_tipostampa=cartoline; _tipostampa=cartoline;
break; break;
case F_FILE:
{
_tipostampa=stampasufile;
//operazione aggiunta da Marco il 04/11/99 per svuotare il contenuto del file prima di riempirlo nuovamente
_file->zap();
}
break;
} }
if (_tipostampa != undefined) if (_tipostampa != undefined)
{ {
@ -920,7 +951,7 @@ bool TStampaPerCategorie::set_print(int m)
filtro << " && "; filtro << " && ";
filtro << format("(90->DOM_CAP <= \"%s\")",(const char*)_capfin); filtro << format("(90->DOM_CAP <= \"%s\")",(const char*)_capfin);
} }
if (_tipostampa==notiziario) if ((_tipostampa==notiziario) || _msk->get_bool(F_NOTIZIARIO))
{ {
if (filtro.not_empty()) if (filtro.not_empty())
filtro << " && "; filtro << " && ";
@ -941,7 +972,7 @@ bool TStampaPerCategorie::set_print(int m)
if (sotfin.not_empty()) if (sotfin.not_empty())
a.put(SOG_CODSOT, sotfin); a.put(SOG_CODSOT, sotfin);
current_cursor()->setregion(da, a); current_cursor()->setregion(da, a);
current_cursor()->setfilter(filtro, TRUE); current_cursor()->setfilter(filtro, FALSE);
((TSorted_cursor*)current_cursor())->change_order(chiave); ((TSorted_cursor*)current_cursor())->change_order(chiave);
reset_files(); reset_files();
add_file(LF_SOGGETTI); add_file(LF_SOGGETTI);
@ -989,7 +1020,7 @@ bool TStampaPerCategorie::set_print(int m)
_catnondon.add((const char*) catnqui); _catnondon.add((const char*) catnqui);
if (catnses.not_empty()) if (catnses.not_empty())
_catnondon.add((const char*) catnses); _catnondon.add((const char*) catnses);
current_cursor()->set_filterfunction (filter_func_percat, TRUE); current_cursor()->set_filterfunction (filter_func_percat, FALSE);
reset_print(); reset_print();
printer().footerlen(0); printer().footerlen(0);
crea_intestazione(); crea_intestazione();
@ -1117,7 +1148,7 @@ bool TStampaPerCategorie::user_create()
_sfamiglia = new TRecord_array(LF_FAMIGLIE,FAM_PROGFAM); _sfamiglia = new TRecord_array(LF_FAMIGLIE,FAM_PROGFAM);
add_cursor(new TSorted_cursor(_rel,"SOG_CODSEZ|SOG_CODSOT","",3)); add_cursor(new TSorted_cursor(_rel,"SOG_CODSEZ|SOG_CODSOT","",3));
_msk = new TMask("at2700a"); _msk = new TMask("at2700a");
_file = new TExternisamfile("$file");
TConfig config(CONFIG_STUDIO); TConfig config(CONFIG_STUDIO);
TString16 etformato = config.get("EtFormato"); TString16 etformato = config.get("EtFormato");
_etlarghezza = config.get_int("EtLarghezza"); _etlarghezza = config.get_int("EtLarghezza");
@ -1146,6 +1177,7 @@ bool TStampaPerCategorie::user_destroy()
delete _form_car; delete _form_car;
delete _form_eti; delete _form_eti;
delete _msk; delete _msk;
delete _file;
delete _sfamiglia; delete _sfamiglia;
delete _sbenemerenze; delete _sbenemerenze;
delete _famiglie; delete _famiglie;

View File

@ -57,4 +57,5 @@
#define F_SCHEDE 504 #define F_SCHEDE 504
#define F_ETICHETTE 505 #define F_ETICHETTE 505
#define F_CARTOLINE 506 #define F_CARTOLINE 506
#define F_FILE 507

View File

@ -1,47 +1,53 @@
#include "at2700a.h" #include "at2700a.h"
TOOLBAR "" 0 20 0 2 TOOLBAR "" 0 -3 0 3
BUTTON F_SINTETICO 9 2 BUTTON F_SINTETICO 9 2
BEGIN BEGIN
PROMPT -17 -11 "~Sintetico" PROMPT -18 -11 "~Sintetico"
MESSAGE EXIT,F_SINTETICO MESSAGE EXIT,F_SINTETICO
END END
BUTTON F_COMPLETO 9 2 BUTTON F_COMPLETO 9 2
BEGIN BEGIN
PROMPT -27 -11 "~Completo" PROMPT -28 -11 "~Completo"
MESSAGE EXIT,F_COMPLETO MESSAGE EXIT,F_COMPLETO
END END
BUTTON F_PERSONALE 9 2 BUTTON F_PERSONALE 9 2
BEGIN BEGIN
PROMPT -37 -11 "~Personale" PROMPT -38 -11 "~Personale"
MESSAGE EXIT,F_PERSONALE MESSAGE EXIT,F_PERSONALE
END END
BUTTON F_SCHEDE 9 2 BUTTON F_SCHEDE 9 2
BEGIN BEGIN
PROMPT -47 -11 "Sc~hede" PROMPT -48 -11 "Sc~hede"
MESSAGE EXIT,F_SCHEDE MESSAGE EXIT,F_SCHEDE
END END
BUTTON F_ETICHETTE 9 2 BUTTON F_ETICHETTE 9 2
BEGIN BEGIN
PROMPT -57 -11 "~Etichette" PROMPT -58 -11 "~Etichette"
MESSAGE EXIT,F_ETICHETTE MESSAGE EXIT,F_ETICHETTE
END END
BUTTON F_CARTOLINE 9 2 BUTTON F_CARTOLINE 9 2
BEGIN BEGIN
PROMPT -67 -11 "C~artoline" PROMPT -68 -11 "C~artoline"
MESSAGE EXIT,F_CARTOLINE MESSAGE EXIT,F_CARTOLINE
END END
BUTTON F_FILE 9 2
BEGIN
PROMPT -78 -11 "~File"
MESSAGE EXIT,F_FILE
END
BUTTON DLG_QUIT 9 2 BUTTON DLG_QUIT 9 2
BEGIN BEGIN
PROMPT -77 -11 "" PROMPT -88 -11 ""
END END
ENDPAGE ENDPAGE

View File

@ -11,7 +11,8 @@
#include "atlib.h" #include "atlib.h"
#define ALIAS_LCP 100 #define ALIAS_LCP 100
#define ALIAS_TCS 200 #define ALIAS_TCS 200
#define ALIAS_TCS1 300
enum ts { undefined = 0, elenco = 1, etichette = 2 }; enum ts { undefined = 0, elenco = 1, etichette = 2 };
@ -41,7 +42,7 @@ class TStampaNonDon : public TPrintapp
int _contatore; int _contatore;
TParagraph_string _cognome_nome, _dencom; TParagraph_string _cognome_nome, _dencom;
TDate _data_stampa; TDate _data_stampa;
TDate _data; TDate _data,_data2;
ts _tipostampa; ts _tipostampa;
TString16 _codsez, _codsot; TString16 _codsez, _codsot;
int _etlarghezza, _etcolonne; int _etlarghezza, _etcolonne;
@ -137,27 +138,40 @@ void TStampaNonDon::set_page(int file, int cnt)
set_row(1,"@74g@pn", FLD(LF_SOGGETTI,SOG_TOTDON,"###")); set_row(1,"@74g@pn", FLD(LF_SOGGETTI,SOG_TOTDON,"###"));
set_row(2,"@60g@S", FLD(LF_SOGGETTI,SOG_STATO)); set_row(2,"@60g@S", FLD(LF_SOGGETTI,SOG_STATO));
set_row(2,"@63g@ld", FLD(LF_SOGGETTI,SOG_DATASTATO)); set_row(2,"@63g@ld", FLD(LF_SOGGETTI,SOG_DATASTATO));
set_row(2,"@74g@S", FLD(LF_SOGGETTI,SOG_GRUPPOAB0)); set_row(2,"@74g@S", FLD(LF_SOGGETTI,SOG_GRUPPOAB0));
set_row(3,"@60g@S", FLD(LF_SOGGETTI,SOG_PROS_STATO)); set_row(3,"@71g@S", FLD(LF_SOGGETTI,SOG_PROS_STATO));
set_row(3,"@63g@ld", FLD(LF_SOGGETTI,SOG_DATA_PROS)); set_row(3,"@63g@ld", FLD(LF_SOGGETTI,SOG_DATA_PROS));
set_row(3,"@74g@S", FLD(LF_SOGGETTI,SOG_RHANTID)); set_row(3,"@74g@S", FLD(LF_SOGGETTI,SOG_RHANTID));
set_row(4,"@9g@S", FLD(LF_SOGGETTI,SOG_DOM_INDIR)); set_row(4,"@66g@S", FLD(LF_SOGGETTI,SOG_STATOSI));
set_row(4,"@40g#a", &_dencom); set_row(4,"@71g@S", FLD(LF_SOGGETTI,SOG_STATOAF));
set_row(5,""); set_row(5,"@9g@S", FLD(LF_SOGGETTI,SOG_DOM_INDIR));
set_row(5,"@40g#a", &_dencom);
set_row(6,"");
} }
else else
{ {
set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########")); set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########"));
set_row(1,"@9g@S", FLD(LF_SOGGETTI,SOG_CATDON)); set_row(2,"@0g@8,rs", FLD(LF_SOGGETTI,SOG_TESSAVIS));
set_row(1,"@12g#a", &_cognome_nome); set_row(3,"@0g@S", FLD(LF_SOGGETTI,SOG_CATDON));
set_row(1,"@38g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); set_row(1,"@9g#a", &_cognome_nome);
set_row(1,"@49g@S", FLD(LF_SOGGETTI,SOG_DOM_INDIR)); set_row(1,"@35g@ld", FLD(LF_SOGGETTI,SOG_DATANASC));
set_row(1,"@100g@S", FLD(LF_SOGGETTI,SOG_TELABI)); set_row(1,"@46g@S", FLD(LF_SOGGETTI,SOG_DOM_INDIR));
set_row(1,"@116g@S", FLD(LF_SOGGETTI,SOG_TELLAV)); set_row(2,"@46g#a", &_dencom);
set_row(1,"@132g@ld", FLD(LF_SOGGETTI,SOG_DATAULTDON)); set_row(1,"@97g@S", FLD(LF_SOGGETTI,SOG_TELABI));
set_row(2,"@49g#a", &_dencom); set_row(2,"@97g@S", FLD(LF_SOGGETTI,SOG_TELLAV));
set_row(2,"@116g@S", FLD(LF_SOGGETTI,SOG_TELALT)); set_row(3,"@97g@S", FLD(LF_SOGGETTI,SOG_TELALT));
set_row(2,"@132g@S", FLD(LF_SOGGETTI,SOG_TIPOULTDON)); set_row(1,"@113g@ld", FLD(LF_SOGGETTI,SOG_DATAULTDON));
set_row(1,"@124g@S", FLD(LF_SOGGETTI,SOG_TIPOULTDON));
set_row(2,"@113g@ld", FLD(LF_SOGGETTI,SOG_DATASTATO));
set_row(2,"@124g@S", FLD(LF_SOGGETTI,SOG_STATO));
set_row(3,"@113g@ld", FLD(LF_SOGGETTI,SOG_DATA_PROS));
set_row(3,"@124g@S", FLD(LF_SOGGETTI,SOG_PROS_STATO));
set_row(1,"@127g@pn", FLD(LF_SOGGETTI,SOG_TOTDON,"###"));
set_row(2,"@129g@S", FLD(LF_SOGGETTI,SOG_GRUPPOAB0));
set_row(3,"@129g@S", FLD(LF_SOGGETTI,SOG_RHANTID));
set_row(4,"@119g@S", FLD(LF_SOGGETTI,SOG_STATOSI));
set_row(4,"@124g@S", FLD(LF_SOGGETTI,SOG_STATOAF));
set_row(5,"");
} }
} }
break; break;
@ -179,8 +193,12 @@ bool TStampaNonDon::filter_func_nondon(const TRelation* rel)
if (filtrato) if (filtrato)
{ {
const TDate dataultdon = sog.get(SOG_DATAULTDON); const TDate dataultdon = sog.get(SOG_DATAULTDON);
if (dataultdon.ok()) if (dataultdon.ok())
{
filtrato = (dataultdon <= app()._data); filtrato = (dataultdon <= app()._data);
if (filtrato && app()._data2.ok())
filtrato = (dataultdon >= app()._data2);
}
else else
filtrato = FALSE; filtrato = FALSE;
} }
@ -256,7 +274,10 @@ bool TStampaNonDon::preprocess_page(int file, int counter)
_contatore = 0; _contatore = 0;
header_sezione(codsez, codsot); header_sezione(codsez, codsot);
} }
if (printer().rows_left() < 4)
printer().formfeed();
} }
if (_tipostampa==etichette) if (_tipostampa==etichette)
if (printer().rows_left() < _form_eti->get_body().height()) if (printer().rows_left() < _form_eti->get_body().height())
printer().formfeed(); printer().formfeed();
@ -298,11 +319,12 @@ bool TStampaNonDon::set_print(int m)
add_file(LF_SOGGETTI); add_file(LF_SOGGETTI);
filtra_sezioni(); filtra_sezioni();
_data = _msk->get(F_DATA); _data = _msk->get(F_DATA);
_data2 = _msk->get(F_DATA2);
bool sospesi = _msk->get_bool(F_SOSPESI); bool sospesi = _msk->get_bool(F_SOSPESI);
if (sospesi) if (sospesi)
current_cursor()->setfilter(""); current_cursor()->setfilter("");
else else
current_cursor()->setfilter("(TCS->S6 == \"I\") || (TCS->S6 == \"F\")", TRUE); current_cursor()->setfilter("((TCS->S6 == \"I\") || (TCS->S6 == \"F\"))", TRUE);
_categorie.destroy(); _categorie.destroy();
const TString16 catpri = _msk->get(F_CAT1); const TString16 catpri = _msk->get(F_CAT1);
const TString16 catsec = _msk->get(F_CAT2); const TString16 catsec = _msk->get(F_CAT2);
@ -338,9 +360,11 @@ void TStampaNonDon::crea_intestazione()
{ {
printer().footerlen(5); printer().footerlen(5);
TString sep(132); TString sep(132);
sep = "ELENCO SOGGETTI CHE NON DONANO DAL "; sep = "SOGGETTI CHE NON DONANO DAL ";
if (app()._data.ok()) if (_data.ok())
sep << _data.string(); sep << _data.string();
if (_data2.ok())
sep << " MA CON ULT.DON. NON PRECEDENTE AL " << _data2.string();
if (_stampa80) if (_stampa80)
sep.center_just(80); sep.center_just(80);
else else
@ -358,17 +382,20 @@ void TStampaNonDon::crea_intestazione()
if (_stampa80) if (_stampa80)
{ {
set_header(4,"@0gCodice@9gCognome e nome@44gTelefono abit.@60gUltima donaz.@74gN.don."); set_header(4,"@0gCodice@9gCognome e nome@44gTelefono abit.@60gUltima donaz.@74gN.don.");
set_header(5,"@0gTessera@44gTelefono lavoro@60gStato attale@74gGr.AB0"); set_header(5,"@0gTessera@44gTelefono lavoro@60gStato attuale@74gGr.AB0");
set_header(6,"@0gCateg.@9gNato il@44gTelefono altro@60gStato pross.@74gRh"); set_header(6,"@0gCateg.@9gNato il@44gTelefono altro@60gStato pross.@74gRh");
set_header(7,"@0g--------@9g----------------------------------@44g--------------@60g-- ----------@74g-----"); set_header(7,"@60gStato SI - Aferesi");
set_header(8,"@0g--------@9g----------------------------------@44g--------------@60g-- ----------@74g-----");
_cognome_nome.set_width(35); _cognome_nome.set_width(35);
_dencom.set_width(40); _dencom.set_width(40);
} }
else else
{ {
set_header(4,"@0gCodice@9gC.@12gCognome e nome@38gNato il@49gIndirizzo@100gTelefono abit.@116gTelefono lavoro@132gData u.d."); set_header(4,"@0gCodice@9gCognome e nome@35gNato il@46gIndirizzo@97gTelefono abit.@113gUlt.don.@127gTotD");
set_header(5,"@49gCAP/Località/Comune/Prov.@116gTelefono altro@132gTipo u.d."); set_header(5,"@0gTessera@46gCAP/Località/Comune/Prov.@97gTelefono lavoro@113gStato attuale@129gGr.");
set_header(6,"@0g--------@9g--@12g-------------------------@38g----------@49g--------------------------------------------------@100g---------------@116g---------------@132g----------"); set_header(6,"@0gCat.@97gTelefono altro@113gStato pross.@129gRh");
set_header(7,"@113gStato SI - Aferesi");
set_header(8,"@0g--------@9g-------------------------@35g----------@46g--------------------------------------------------@97g---------------@113g---------- --@127g---");
_cognome_nome.set_width(25); _cognome_nome.set_width(25);
_dencom.set_width(50); _dencom.set_width(50);
} }
@ -379,6 +406,7 @@ bool TStampaNonDon::user_create()
{ {
_rel = new TRelation(LF_SOGGETTI); _rel = new TRelation(LF_SOGGETTI);
_rel->add("TCS", "CODTAB==STATO",1,0,ALIAS_TCS); _rel->add("TCS", "CODTAB==STATO",1,0,ALIAS_TCS);
_rel->add("TCS", "CODTAB==STATOSI",1,0,ALIAS_TCS1);
_rel->add("LCP", "CODTAB==DOM_CODLOC",1,0,ALIAS_LCP); _rel->add("LCP", "CODTAB==DOM_CODLOC",1,0,ALIAS_LCP);
_rel->add(LF_COMUNI, "COM==DOM_CODCOM"); _rel->add(LF_COMUNI, "COM==DOM_CODCOM");
_rel->add(LF_SEZIONI, "CODSEZ==CODSEZ|CODSOT==CODSOT"); _rel->add(LF_SEZIONI, "CODSEZ==CODSEZ|CODSOT==CODSOT");

View File

@ -24,7 +24,8 @@
#define F_D_CAT6 212 #define F_D_CAT6 212
#define F_DATA 301 #define F_DATA 301
#define F_SOSPESI 302 #define F_DATA2 302
#define F_SOSPESI 303
#define F_ELENCO 401 #define F_ELENCO 401
#define F_ETICHETTE 402 #define F_ETICHETTE 402

View File

@ -264,7 +264,7 @@ BEGIN
FLAGS "D" FLAGS "D"
END END
GROUPBOX DLG_NULL 77 3 GROUPBOX DLG_NULL 77 4
BEGIN BEGIN
PROMPT 1 10 "Opzioni di elaborazione" PROMPT 1 10 "Opzioni di elaborazione"
END END
@ -275,9 +275,15 @@ BEGIN
HELP "Data massima in cui il soggetto pu• aver fatto l'ultima donazione" HELP "Data massima in cui il soggetto pu• aver fatto l'ultima donazione"
END END
DATE F_DATA2
BEGIN
PROMPT 42 11 "ult.don. non prima del "
HELP "Data minima in cui il soggetto pu• aver fatto l'ultima donazione"
END
BOOLEAN F_SOSPESI BOOLEAN F_SOSPESI
BEGIN BEGIN
PROMPT 42 11 "Anche sospesi" PROMPT 2 12 "Anche sospesi"
END END
ENDPAGE ENDPAGE

View File

@ -146,16 +146,17 @@ void TFrequenza::set_page(int file, int cnt)
else else
{ {
set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########")); set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########"));
set_row(2,"@0g@8,rs", FLD(LF_SOGGETTI,SOG_TESSAVIS));
set_row(1,"@9g@S", FLD(LF_SOGGETTI,SOG_CATDON)); set_row(1,"@9g@S", FLD(LF_SOGGETTI,SOG_CATDON));
set_row(1,"@12g#a", &_cognome_nome); set_row(1,"@12g#a", &_cognome_nome);
set_row(1,"@38g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); set_row(1,"@38g@ld", FLD(LF_SOGGETTI,SOG_DATANASC));
set_row(1,"@49g@S", FLD(LF_SOGGETTI,SOG_DOM_INDIR)); set_row(1,"@49g@S", FLD(LF_SOGGETTI,SOG_DOM_INDIR));
set_row(1,"@100g@S", FLD(LF_SOGGETTI,SOG_TELABI));
set_row(1,"@116g@S", FLD(LF_SOGGETTI,SOG_TELLAV));
set_row(2,"@49g#a", &_dencom); set_row(2,"@49g#a", &_dencom);
set_row(2,"@116g@S", FLD(LF_SOGGETTI,SOG_TELALT)); set_row(1,"@100g@S", FLD(LF_SOGGETTI,SOG_TELABI));
set_row(1,"@132g#a", &_numdonsog); set_row(2,"@100g@S", FLD(LF_SOGGETTI,SOG_TELLAV));
set_row(2,"@132g#a", &_dataultdon); set_row(3,"@100g@S", FLD(LF_SOGGETTI,SOG_TELALT));
set_row(1,"@116g#a", &_numdonsog);
set_row(2,"@116g#a", &_dataultdon);
} }
} }
break; break;
@ -306,6 +307,8 @@ bool TFrequenza::preprocess_page(int file, int counter)
_codsot = codsot; _codsot = codsot;
header_sezione(codsez, codsot); header_sezione(codsez, codsot);
} }
if (printer().rows_left() < 4)
printer().formfeed();
} }
if (_tipostampa==etichette) if (_tipostampa==etichette)
if (printer().rows_left() < _form_eti->get_body().height()) if (printer().rows_left() < _form_eti->get_body().height())
@ -417,12 +420,12 @@ void TFrequenza::crea_intestazione()
} }
sep << _numdon; sep << _numdon;
sep << " DONAZIONI"; sep << " DONAZIONI";
if (_tipodon.not_empty())
sep << ' ' << _tipodon;
if (_dataini.ok()) if (_dataini.ok())
sep << " DAL " << _dataini.string(); sep << " DAL " << _dataini.string();
if (_datafin.ok()) if (_datafin.ok())
sep << "AL " << _datafin.string(); sep << " AL " << _datafin.string();
if (_tipodon.not_empty())
sep << " DI TIPO " << _tipodon;
if (_stampa80) if (_stampa80)
sep.center_just(80); sep.center_just(80);
else else
@ -447,9 +450,10 @@ void TFrequenza::crea_intestazione()
} }
else else
{ {
set_header(4,"@0gCodice@9gC.@12gCognome e nome@38gNato il@49gIndirizzo@100gTelefono abit.@116gTelefono lavoro@132gNum.don."); set_header(4,"@0gCodice@9gC.@12gCognome e nome@38gNato il@49gIndirizzo@100gTelefono abit.@116gNum.don.");
set_header(5,"@49gCAP/Località/Comune/Prov.@116gTelefono altro@132gUlt.don."); set_header(5,"@0gTessera@49gCAP/Località/Comune/Prov.@100gTelefono lavoro@116gUlt.don.");
set_header(6,"@0g--------@9g--@12g-------------------------@38g----------@49g--------------------------------------------------@100g---------------@116g---------------@132g----------"); set_header(6,"@100gTelefono altro");
set_header(7,"@0g--------@9g--@12g-------------------------@38g----------@49g--------------------------------------------------@100g---------------@116g----------");
_cognome_nome.set_width(25); _cognome_nome.set_width(25);
} }
printer().footerlen(3); printer().footerlen(3);

View File

@ -1,6 +1,6 @@
#define APPNAME AVIS #define APPNAME AVIS
#define QAPPNAME "AVIS" #define QAPPNAME "AVIS"
#define LIBDIR f:\xvt.403\win_x86\ptk\lib #define LIBDIR d:\xvt.458\w16_x86\lib
#define QFIRMNAME "AGA Informatica S.r.l." #define QFIRMNAME "AGA Informatica S.r.l."
#include <default.url> #include <default.url>

View File

@ -598,11 +598,11 @@ bool TMensileDonxGr::riepilogo()
if (_tipodon.not_empty()) if (_tipodon.not_empty())
{ {
if (filtro.empty()) if (filtro.empty())
filtro = format("(92->TIPODON <= \"%s\")",(const char*)_tipodon); filtro = format("(92->TIPODON == \"%s\")",(const char*)_tipodon);
else else
{ {
filtro << " && "; filtro << " && ";
filtro << format("(92->TIPODON <= \"%s\")",(const char*)_tipodon); filtro << format("(92->TIPODON == \"%s\")",(const char*)_tipodon);
} }
} }
_cur->setfilter((const char*) filtro, TRUE); _cur->setfilter((const char*) filtro, TRUE);

View File

@ -248,8 +248,8 @@ bool TStatSogxCat::stampa()
actsez = curstat->curr().get(ATSS_CODSEZ); actsez = curstat->curr().get(ATSS_CODSEZ);
actsot = curstat->curr().get(ATSS_CODSOT); actsot = curstat->curr().get(ATSS_CODSOT);
catdon = curstat->curr().get(ATSS_CATDON); catdon = curstat->curr().get(ATSS_CATDON);
numero = (double)curstat->curr().get_int(ATSS_NUMERO); numero = (double)curstat->curr().get_long(ATSS_NUMERO);
numero2 = (double)curstat->curr().get_int(ATSS_NUMERO2); numero2 = (double)curstat->curr().get_long(ATSS_NUMERO2);
if (actsez != oldsez || actsot != oldsot) if (actsez != oldsez || actsot != oldsot)
{ {
if (oldsez != "**" && oldsot != "**") if (oldsez != "**" && oldsot != "**")
@ -365,14 +365,15 @@ void TStatSogxCat::stampa_sezione(TString16 codsez, TString16 codsot)
real& colonnan = (real&)_colonne->find(indicen); real& colonnan = (real&)_colonne->find(indicen);
rigatotali.aggiorna_valore((int) colonnan.integer(),riga[(int) colonnan.integer()]); rigatotali.aggiorna_valore((int) colonnan.integer(),riga[(int) colonnan.integer()]);
valore = ""; valore = "";
valore.format("%8d",riga[(int) colonnan.integer()].integer()); valore.format("%8ld",riga[(int) colonnan.integer()].integer());
rigastampa.overwrite((const char*)valore, pos); rigastampa.overwrite((const char*)valore, pos);
pos = pos+8; pos = pos+8;
const char* indicet = "T"; const char* indicet = "T";
real& colonnat = (real&)_colonne->find(indicet); real& colonnat = (real&)_colonne->find(indicet);
rigatotali.aggiorna_valore((int) colonnat.integer(),riga[(int) colonnat.integer()]); rigatotali.aggiorna_valore((int) colonnat.integer(),riga[(int) colonnat.integer()]);
valore = ""; valore = "";
valore.format("%8d",riga[(int) colonnat.integer()].integer()); // valore.format("%8ld",riga[(int) colonnat.integer()].integer());
valore = riga[(int) colonnat.integer()].string("####.###");
rigastampa.overwrite((const char*)valore, pos); rigastampa.overwrite((const char*)valore, pos);
pos = pos+8; pos = pos+8;
row.put((const char*) rigastampa); row.put((const char*) rigastampa);
@ -392,13 +393,13 @@ void TStatSogxCat::stampa_sezione(TString16 codsez, TString16 codsot)
const char* indicen = "N"; const char* indicen = "N";
real& colonnan = (real&)_colonne->find(indicen); real& colonnan = (real&)_colonne->find(indicen);
valore = ""; valore = "";
valore.format("%8d",rigatotali[(int) colonnan.integer()].integer()); valore.format("%8ld",rigatotali[(int) colonnan.integer()].integer());
rigastampa.overwrite((const char*)valore, pos); rigastampa.overwrite((const char*)valore, pos);
pos = pos+8; pos = pos+8;
const char* indicet = "T"; const char* indicet = "T";
real& colonnat = (real&)_colonne->find(indicet); real& colonnat = (real&)_colonne->find(indicet);
valore = ""; valore = "";
valore.format("%8d",rigatotali[(int) colonnat.integer()].integer()); valore.format("%8ld",rigatotali[(int) colonnat.integer()].integer());
rigastampa.overwrite((const char*)valore, pos); rigastampa.overwrite((const char*)valore, pos);
pos = pos+8; pos = pos+8;
row.put((const char*) rigastampa); row.put((const char*) rigastampa);

View File

@ -293,6 +293,11 @@ bool TRiepilogoGiornaliero::stampa()
} }
TRigaG& riga = (TRigaG&)_righe[data2row(data)]; TRigaG& riga = (TRigaG&)_righe[data2row(data)];
real& colonna = (real&)_colonne->find((const char*)tipodon); real& colonna = (real&)_colonne->find((const char*)tipodon);
// real colonna;
// real * valore = (real *) _colonne->objptr((const char*)tipodon);
// if (valore != NULL)
// colonna = *valore;
real n = numero; real n = numero;
riga.aggiorna_valore((int) colonna.integer(),n); riga.aggiorna_valore((int) colonna.integer(),n);
if (_primedon) if (_primedon)

View File

@ -1,5 +1,4 @@
#include <xvt.h> #include <xvt.h>
#include <strings.h>
#include <checks.h> #include <checks.h>
#include "at4.h" #include "at4.h"

View File

@ -307,6 +307,7 @@ void TStampaScadenze::set_page(int file, int cnt)
set_row(1,"@105g@S", FLD(LF_SOGGETTI,SOG_TELABI)); set_row(1,"@105g@S", FLD(LF_SOGGETTI,SOG_TELABI));
set_row(1,"@120g#a", &_giopredon); set_row(1,"@120g#a", &_giopredon);
set_row(2,"@0g@8,rs", FLD(LF_SOGGETTI,SOG_TESSAVIS));
set_row(2,"@13g@S", FLD(LF_SOGGETTI,SOG_NOME)); set_row(2,"@13g@S", FLD(LF_SOGGETTI,SOG_NOME));
set_row(2,"@53g@pn", FLD(LF_SOGGETTI,SOG_INTSI,"###")); set_row(2,"@53g@pn", FLD(LF_SOGGETTI,SOG_INTSI,"###"));
set_row(2,"@64g@pn", FLD(LF_SOGGETTI,SOG_INTAF,"###")); set_row(2,"@64g@pn", FLD(LF_SOGGETTI,SOG_INTAF,"###"));
@ -323,6 +324,8 @@ void TStampaScadenze::set_page(int file, int cnt)
case completo: case completo:
{ {
set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"#########")); set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"#########"));
set_row(2,"@0g@8,rs", FLD(LF_SOGGETTI,SOG_TESSAVIS));
set_row(1,"@10g#a", &_cognome_nome); set_row(1,"@10g#a", &_cognome_nome);
set_row(3,"@10g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); set_row(3,"@10g@ld", FLD(LF_SOGGETTI,SOG_DATANASC));
@ -745,15 +748,15 @@ void TStampaScadenze::crea_intestazione()
set_header(3, (const char *) sep); set_header(3, (const char *) sep);
if (_tipostampa == elenco) if (_tipostampa == elenco)
{ {
set_header(5,"@0gCod.@10gC.@13gCognome@39gNato il@50gData pr.SI@61gData pr.AF@72gData/Tipo@83gData/Tipo@94gIdon.@100gAB0@105gTel. abitaz.@120gGio.pre."); set_header(5,"@0gCodice@10gC.@13gCognome@39gNato il@50gData pr.SI@61gData pr.AF@72gData/Tipo@83gData/Tipo@94gIdon.@100gAB0@105gTel. abitaz.@120gGio.pre.");
set_header(6,"@13gNome@50gInterv. SI@61gInterv. AF@72gult. don.@83gult. idon.@94gper@100gRh@105gTel. lavoro"); set_header(6,"@0gTessera@13gNome@50gInterv. SI@61gInterv. AF@72gult. don.@83gult. idon.@94gper@100gRh@105gTel. lavoro");
set_header(7,"@105gTel. altro"); set_header(7,"@105gTel. altro");
set_header(8,"@0g---------@10g--@13g-------------------------@39g----------@50g----------@61g----------@72g----------@83g----------@94g-----@100g----@105g--------------@120g--------"); set_header(8,"@0g---------@10g--@13g-------------------------@39g----------@50g----------@61g----------@72g----------@83g----------@94g-----@100g----@105g--------------@120g--------");
} }
if (_tipostampa == completo) if (_tipostampa == completo)
{ {
set_header(5,"@0gCod.@10gCognome e Nome@36gIndirizzo@62gTelefoni@77gData pr.SI@88gData ult.SI@99g Ult.idon."); set_header(5,"@0gCodice@10gCognome e Nome@36gIndirizzo@62gTelefoni@77gData pr.SI@88gData ult.SI@99g Ult.idon.");
set_header(6,"@10gData nasc.@77gData pr.AF@88gData ult.AF@99g Gio.pre."); set_header(6,"@0gTessera@10gData nasc.@77gData pr.AF@88gData ult.AF@99g Gio.pre.");
set_header(7,"@77gGr. Rh. Fen. Kell Du A CMV"); set_header(7,"@77gGr. Rh. Fen. Kell Du A CMV");
set_header(8,""); set_header(8,"");
} }

View File

@ -1,6 +1,6 @@
#include "at4100a.h" #include "at4100a.h"
TOOLBAR "" 0 20 0 2 TOOLBAR "" 0 -2 0 -2
BUTTON F_ELENCO 9 2 BUTTON F_ELENCO 9 2
BEGIN BEGIN

View File

@ -122,11 +122,15 @@ void TStampaUrgenze::set_page(int file, int cnt)
case elenco: case elenco:
{ {
set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########")); set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########"));
set_row(2,"@0g@S", FLD(LF_SOGGETTI,SOG_CODSEZ)); set_row(2,"@0g@8,rs", FLD(LF_SOGGETTI,SOG_TESSAVIS));
set_row(2,"@3g@S", FLD(LF_SOGGETTI,SOG_CODSOT));
set_row(1,"@9g@S", FLD(LF_SOGGETTI,SOG_CATDON)); set_row(1,"@9g@S", FLD(LF_SOGGETTI,SOG_CATDON));
set_row(1,"@12g#a", &_cognome_nome); set_row(1,"@12g#a", &_cognome_nome);
set_row(1,"@38g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); set_row(1,"@38g@ld", FLD(LF_SOGGETTI,SOG_DATANASC));
set_row(2,"@38g@S", FLD(LF_SOGGETTI,SOG_CODSEZ));
set_row(2,"@41g@S", FLD(LF_SOGGETTI,SOG_CODSOT));
set_row(1,"@49g@S", FLD(LF_SOGGETTI,SOG_GRUPPOAB0)); set_row(1,"@49g@S", FLD(LF_SOGGETTI,SOG_GRUPPOAB0));
set_row(1,"@53g@S", FLD(LF_SOGGETTI,SOG_RHANTID)); set_row(1,"@53g@S", FLD(LF_SOGGETTI,SOG_RHANTID));
set_row(1,"@57g@S", FLD(LF_SOGGETTI,SOG_FENOTIPORH)); set_row(1,"@57g@S", FLD(LF_SOGGETTI,SOG_FENOTIPORH));
@ -377,7 +381,7 @@ void TStampaUrgenze::crea_intestazione()
sep.fill('-'); sep.fill('-');
set_header(3, (const char *) sep); set_header(3, (const char *) sep);
set_header(4,"@0gCodice@9gC.@12gCognome e nome@38gNato il@49gGr.@53gRh@57gFen.Rh@64gKellDu@72gUlt.donaz.@86gTelefono abit.@101gTelefono altro@116gUlt.idon."); set_header(4,"@0gCodice@9gC.@12gCognome e nome@38gNato il@49gGr.@53gRh@57gFen.Rh@64gKellDu@72gUlt.donaz.@86gTelefono abit.@101gTelefono altro@116gUlt.idon.");
set_header(5,"@0gSe/So@75gTipo@86gTelefono lav.@116gInt.SI AF"); set_header(5,"@0gTessera@38gSe/So@75gTipo@86gTelefono lav.@116gInt.SI AF");
set_header(6,"@0g--------@9g--@12g-------------------------@38g----------@49g--- --- ------ --- ---@72g----------@86g--------------@101g--------------@116g----------"); set_header(6,"@0g--------@9g--@12g-------------------------@38g----------@49g--- --- ------ --- ---@72g----------@86g--------------@101g--------------@116g----------");
} }
} }

View File

@ -227,6 +227,7 @@ void TConvocazioniPerPunto::set_page(int file, int cnt)
case completo: case completo:
{ {
set_row(1,"@0g#a", &_cognome_nome); set_row(1,"@0g#a", &_cognome_nome);
set_row(3,"@0g@ld", FLD(LF_SOGGETTI,SOG_DATANASC));
set_row(1,"@36g@S", FLD(LF_SOGGETTI,SOG_CATDON)); set_row(1,"@36g@S", FLD(LF_SOGGETTI,SOG_CATDON));
set_row(1,"@40g@S", FLD(LF_SOGGETTI,SOG_TESSAVIS)); set_row(1,"@40g@S", FLD(LF_SOGGETTI,SOG_TESSAVIS));
set_row(2,"@40g@S", FLD(LF_SOGGETTI,SOG_CODSEZ)); set_row(2,"@40g@S", FLD(LF_SOGGETTI,SOG_CODSEZ));
@ -235,12 +236,15 @@ void TConvocazioniPerPunto::set_page(int file, int cnt)
set_row(2,"@48g#a", &_dencom); set_row(2,"@48g#a", &_dencom);
set_row(1,"@79g@ld", FLD(LF_SOGGETTI,SOG_DATAULTDON)); set_row(1,"@79g@ld", FLD(LF_SOGGETTI,SOG_DATAULTDON));
set_row(2,"@83g@S", FLD(LF_SOGGETTI,SOG_TIPOULTDON)); set_row(2,"@83g@S", FLD(LF_SOGGETTI,SOG_TIPOULTDON));
set_row(3,"@79g@S", FLD(LF_SOGGETTI,SOG_DATAPROSSI));
set_row(1,"@90g@ld", FLD(LF_RCONVOC,RCV_DATACONV)); set_row(1,"@90g@ld", FLD(LF_RCONVOC,RCV_DATACONV));
set_row(2,"@94g@S", FLD(LF_RCONVOC,RCV_CHIAMATA)); set_row(2,"@94g@S", FLD(LF_RCONVOC,RCV_CHIAMATA));
set_row(1,"@101g@S", FLD(LF_SOGGETTI,SOG_TELABI)); set_row(1,"@101g@S", FLD(LF_SOGGETTI,SOG_TELABI));
set_row(1,"@116g@S", FLD(LF_SOGGETTI,SOG_TELLAV)); set_row(2,"@101g@S", FLD(LF_SOGGETTI,SOG_TELLAV));
set_row(2,"@116g@S", FLD(LF_SOGGETTI,SOG_TELALT)); set_row(3,"@101g@S", FLD(LF_SOGGETTI,SOG_TELALT));
set_row(3,""); set_row(1,"@117g@S", FLD(LF_SOGGETTI,SOG_GRUPPOAB0));
set_row(2,"@117g@S", FLD(LF_SOGGETTI,SOG_RHANTID));
set_row(4,"");
} }
break; break;
} }
@ -552,9 +556,10 @@ void TConvocazioniPerPunto::crea_intestazione()
} }
else else
{ {
set_header(5,"@0gCognome e nome@36gCat.@40gTessera@48gIndirizzo@79gUltima donaz.@90gData cart.@101gTel.abitazione@116gTel.lavoro"); set_header(5,"@0gCognome e nome@36gCat.@40gTessera@48gIndirizzo@79gUltima donaz.@90gData cart.@101gTel.abitazione@117gGr.AB0");
set_header(6,"@40gSe/So@79gTipo u.d.@90gTipo cart.@116gTel.altro"); set_header(6,"@40gSe/So@79gTipo u.d.@90gTipo cart.@101gTel.lavoro@117gRh/Antid");
set_header(7,"@0g-----------------------------------@36g---@40g-------@48g------------------------------@79g----------@90g----------@101g--------------@116g--------------"); set_header(7,"@0gData nascita@101gTel.altro");
set_header(8,"@0g-----------------------------------@36g---@40g-------@48g------------------------------@79g----------@90g----------@101g--------------@117g--------");
} }
printer().footerlen(3); printer().footerlen(3);
} }

View File

@ -6,6 +6,8 @@
#include "soggetti.h" #include "soggetti.h"
#include "sezioni.h" #include "sezioni.h"
#include "atopera.h"
#include "atropera.h"
#include <comuni.h> #include <comuni.h>
#include "at4.h" #include "at4.h"
@ -45,7 +47,7 @@ class TStampaTessere : public TPrintapp
TString _riepilogodon; TString _riepilogodon;
ts _tipostampa; ts _tipostampa;
TString16 _codsez, _codsot; TString16 _codsez, _codsot;
int _contatore, _totfinestampa; int _contatore, _totfinestampa, _progope;
bool _sttess2; bool _sttess2;
int _numdon2; int _numdon2;
TString16 _catini2, _catfin2; TString16 _catini2, _catfin2;
@ -266,6 +268,14 @@ bool TStampaTessere::preprocess_page(int file, int counter)
sogg.rewrite(); sogg.rewrite();
} }
} }
if (_aggiorna)
{
TLocalisamfile atropera(LF_ATROPERA);
atropera.zero();
atropera.put(ROP_PROGOPE, _progope);
atropera.put(ROP_CODICE, sogg.get(SOG_CODICE));
atropera.write();
}
return TRUE; return TRUE;
} }
@ -328,6 +338,25 @@ bool TStampaTessere::set_print(int m)
current_cursor()->set_filterfunction (filter_func_auto, TRUE); current_cursor()->set_filterfunction (filter_func_auto, TRUE);
_contatore = 0; _contatore = 0;
_totfinestampa = 0; _totfinestampa = 0;
if (_aggiorna)
{
TLocalisamfile atopera(LF_ATOPERA);
atopera.last();
_progope = atopera.get_int(OPE_PROGOPE);
_progope++;
atopera.zero();
atopera.put(OPE_PROGOPE, _progope);
atopera.put(OPE_CODSEZ,_msk->get(F_SEZINI));
atopera.put(OPE_CODSOT,_msk->get(F_SOTINI));
atopera.put(OPE_CODSEZ2,_msk->get(F_SEZFIN));
atopera.put(OPE_CODSOT2,_msk->get(F_SOTFIN));
atopera.put(OPE_DATA1,_data_stampa);
atopera.put(OPE_DATA2,_datault);
atopera.put(OPE_NUMERO1,_numdon);
atopera.put(OPE_UTENTE,user());
atopera.put(OPE_TIPOOPE,'T');
atopera.write();
}
reset_print(); reset_print();
printer().footerlen(0); printer().footerlen(0);
crea_intestazione(); crea_intestazione();
@ -393,6 +422,6 @@ bool TStampaTessere::user_destroy()
int at4500(int argc, char* argv[]) int at4500(int argc, char* argv[])
{ {
TStampaTessere a; TStampaTessere a;
a.run(argc, argv, "Stampa tessere associative"); a.run(argc, argv, "Stampa tessere associative complessive");
return 0; return 0;
} }

View File

@ -379,8 +379,9 @@ bool TStampeSingole::user_create()
_sbenemerenze = new TRecord_array(LF_BENEM,BEN_PROGBEN); _sbenemerenze = new TRecord_array(LF_BENEM,BEN_PROGBEN);
_cur = add_cursor(new TCursor(_rel, "", 1)); _cur = add_cursor(new TCursor(_rel, "", 1));
_msk = new TMask("at4700a"); _msk = new TMask("at4700a");
_form_car = new TSingole_form("ATCARTO1"); //Modificato il form per le cartoline in ATCARTO2 da ATCARTO1 da Marco il 14/09/99
_form_car = new TSingole_form("ATCARTO2");
_form_don = new TSingole_form("ATDDONAZ"); _form_don = new TSingole_form("ATDDONAZ");
TConfig config(CONFIG_STUDIO); TConfig config(CONFIG_STUDIO);
TString16 etformato = config.get("EtFormato"); TString16 etformato = config.get("EtFormato");

View File

@ -332,8 +332,9 @@ bool TStampePerCodice::user_create()
_sbenemerenze = new TRecord_array(LF_BENEM,BEN_PROGBEN); _sbenemerenze = new TRecord_array(LF_BENEM,BEN_PROGBEN);
_cur = add_cursor(new TCursor(_rel, "", 1)); _cur = add_cursor(new TCursor(_rel, "", 1));
_msk = new TMask("at4800a"); _msk = new TMask("at4800a");
_form_car = new TPerCodice_form("ATCARTO1"); //Modificato il form per le cartoline in ATCARTO2 da ATCARTO1 da Marco il 14/09/99
_form_car = new TPerCodice_form("ATCARTO2");
_form_don = new TPerCodice_form("ATDDONAZ"); _form_don = new TPerCodice_form("ATDDONAZ");
TConfig config(CONFIG_STUDIO); TConfig config(CONFIG_STUDIO);
TString16 etformato = config.get("EtFormato"); TString16 etformato = config.get("EtFormato");

View File

@ -230,10 +230,10 @@ void TControlloDonazioni::footer_stampa()
if (_riepfinale) if (_riepfinale)
{ {
TString16 valore; TString16 valore;
TString256 rigastampa = "TOTALI 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31"; TString256 rigastampa = "GIO. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31";
set_footer(3,rigastampa); set_footer(3,rigastampa);
rigastampa = "GIORNO"; rigastampa = "TOT.";
int pos = 7; int pos = 5;
for (int i=0;i<31;i++) for (int i=0;i<31;i++)
{ {
valore = ""; valore = "";
@ -244,9 +244,9 @@ void TControlloDonazioni::footer_stampa()
pos=pos+4; pos=pos+4;
} }
set_footer(4,rigastampa); set_footer(4,rigastampa);
rigastampa = "TOTALI GEN. FEB. MAR. APR. MAG. GIU. LUG. AGO. SET. OTT. NOV. DIC. TOTALE"; rigastampa = "MESE GEN. FEB. MAR. APR. MAG. GIU. LUG. AGO. SET. OTT. NOV. DIC. TOTALE";
set_footer(6,rigastampa); set_footer(6,rigastampa);
rigastampa = "MESE "; rigastampa = "TOT.";
pos = 8; pos = 8;
real totale = ZERO; real totale = ZERO;
for (int j=0;j<12;j++) for (int j=0;j<12;j++)
@ -290,10 +290,10 @@ void TControlloDonazioni::fine_stampa()
if (_riepfinale) if (_riepfinale)
{ {
TString16 valore; TString16 valore;
TString256 rigastampa = "TOTALI 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31"; TString256 rigastampa = "GIO. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31";
set_footer(3,rigastampa); set_footer(3,rigastampa);
rigastampa = "GIORNO"; rigastampa = "TOT.";
int pos = 7; int pos = 5;
for (int i=0;i<31;i++) for (int i=0;i<31;i++)
{ {
valore = ""; valore = "";
@ -513,13 +513,14 @@ bool TControlloDonazioni::set_print(int m)
TRectype a (LF_DONAZ); TRectype a (LF_DONAZ);
if (_riepfinale) if (_riepfinale)
{ {
TDate inizio = _dataini; TDate inizio (_dataini);
TDate fine = _datafin; TDate fine (_datafin);
inizio.set_day(1); inizio.set_day(1);
inizio.set_month(1); inizio.set_month(1);
fine.set_end_month(); fine.set_end_month();
da.put(DON_DATADON, inizio); da.put(DON_DATADON, inizio);
a.put(DON_DATADON, fine); a.put(DON_DATADON, fine);
_giorni.destroy(); _giorni.destroy();
_mesi.destroy(); _mesi.destroy();
_giornifinale.destroy(); _giornifinale.destroy();

View File

@ -22,9 +22,10 @@ class TStampaIncompleti : public TPrintapp
TAssoc_array _catnondon; TAssoc_array _catnondon;
TParagraph_string _cognome_nome, _dencom; TParagraph_string _cognome_nome, _dencom;
TDate _data_stampa; TDate _data_stampa;
TString16 _codsez, _codsot; TString16 _codsez, _codsot, _altridati;
bool _indirizzo, _datanasc, _categoria, _sezione, _gruppoab0; bool _indirizzo, _datanasc, _categoria, _sezione, _gruppoab0;
bool _rhantid, _tessera, _telabi, _cf; bool _rhantid, _tessera, _telabi, _cf, _incompleto, _comune;
bool _sottog, _sesso;
protected: protected:
virtual bool user_create(); virtual bool user_create();
@ -66,15 +67,18 @@ void TStampaIncompleti::filtra_sezioni()
void TStampaIncompleti::set_page(int file, int cnt) void TStampaIncompleti::set_page(int file, int cnt)
{ {
set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########")); set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########"));
set_row(2,"@0g@8,rs", FLD(LF_SOGGETTI,SOG_TESSAVIS));
set_row(1,"@9g@S", FLD(LF_SOGGETTI,SOG_CATDON)); set_row(1,"@9g@S", FLD(LF_SOGGETTI,SOG_CATDON));
set_row(1,"@12g#a", &_cognome_nome); set_row(1,"@12g#a", &_cognome_nome);
set_row(1,"@38g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); set_row(1,"@38g@ld", FLD(LF_SOGGETTI,SOG_DATANASC));
set_row(1,"@49g@S", FLD(LF_SOGGETTI,SOG_DOM_INDIR)); set_row(1,"@49g@S", FLD(LF_SOGGETTI,SOG_DOM_INDIR));
set_row(1,"@100g@S", FLD(LF_SOGGETTI,SOG_TELABI));
set_row(1,"@116g@S", FLD(LF_SOGGETTI,SOG_TELLAV));
set_row(2,"@49g#a", &_dencom); set_row(2,"@49g#a", &_dencom);
set_row(2,"@116g@S", FLD(LF_SOGGETTI,SOG_TELALT)); set_row(1,"@100g@S", FLD(LF_SOGGETTI,SOG_TELABI));
set_row(3,""); set_row(2,"@100g@S", FLD(LF_SOGGETTI,SOG_TELLAV));
set_row(3,"@100g@S", FLD(LF_SOGGETTI,SOG_TELALT));
set_row(1,"@116g@ld", FLD(LF_SOGGETTI,SOG_DATAISC));
set_row(2,"@116g@ld", FLD(LF_SOGGETTI,SOG_DATAULTDON));
set_row(4,"");
} }
bool TStampaIncompleti::filter_func_incompleti(const TRelation* rel) bool TStampaIncompleti::filter_func_incompleti(const TRelation* rel)
@ -102,15 +106,18 @@ bool TStampaIncompleti::filter_func_incompleti(const TRelation* rel)
} }
if (app()._catdon.items() == 0 && app()._catnondon.items() == 0) if (app()._catdon.items() == 0 && app()._catnondon.items() == 0)
filtrato = TRUE; filtrato = TRUE;
incompleto = !(app()._indirizzo || app()._datanasc || app()._categoria incompleto = app()._incompleto;
|| app()._sezione || app()._gruppoab0 || app()._rhantid
|| app()._tessera || app()._telabi || app()._cf);
if (filtrato && app()._indirizzo && !incompleto) if (filtrato && app()._indirizzo && !incompleto)
{ {
TString80 indirizzo = sog.get(SOG_DOM_INDIR); TString80 indirizzo = sog.get(SOG_DOM_INDIR);
//TString16 codcom = sog.get(SOG_DOM_CODCOM);
//incompleto = (indirizzo.empty() || codcom.empty());
incompleto = indirizzo.empty();
}
if (filtrato && app()._comune && !incompleto)
{
TString16 codcom = sog.get(SOG_DOM_CODCOM); TString16 codcom = sog.get(SOG_DOM_CODCOM);
incompleto = (indirizzo.empty() || codcom.empty()); incompleto = codcom.empty();
} }
if (filtrato && app()._datanasc && !incompleto) if (filtrato && app()._datanasc && !incompleto)
{ {
@ -129,6 +136,11 @@ bool TStampaIncompleti::filter_func_incompleti(const TRelation* rel)
TString16 codsez = sog.get(SOG_CODSEZ); TString16 codsez = sog.get(SOG_CODSEZ);
incompleto = codsez.empty(); incompleto = codsez.empty();
} }
if (filtrato && app()._sottog && !incompleto)
{
TString16 codsot = sog.get(SOG_CODSOT);
incompleto = codsot.empty();
}
if (filtrato && app()._gruppoab0 && !incompleto) if (filtrato && app()._gruppoab0 && !incompleto)
{ {
TString16 gruppoab0 = sog.get(SOG_GRUPPOAB0); TString16 gruppoab0 = sog.get(SOG_GRUPPOAB0);
@ -152,8 +164,19 @@ bool TStampaIncompleti::filter_func_incompleti(const TRelation* rel)
if (filtrato && app()._cf && !incompleto) if (filtrato && app()._cf && !incompleto)
{ {
TString16 cf = sog.get(SOG_CF); TString16 cf = sog.get(SOG_CF);
incompleto = cf.empty(); incompleto = cf.empty();
} }
if (filtrato && app()._sesso && !incompleto)
{
TString16 sesso = sog.get(SOG_SESSO);
incompleto = (sesso.empty()) || (sesso[0] == '0');
}
if ((filtrato) && (app()._altridati.not_empty()) && (!incompleto))
{
TString80 str = sog.get(app()._altridati);
incompleto = str.empty();
}
filtrato = (filtrato && incompleto); filtrato = (filtrato && incompleto);
return filtrato; return filtrato;
} }
@ -208,7 +231,7 @@ bool TStampaIncompleti::preprocess_page(int file, int counter)
_codsot = codsot; _codsot = codsot;
header_sezione(codsez, codsot); header_sezione(codsez, codsot);
} }
if (printer().rows_left()<3) if (printer().rows_left()<4)
printer().formfeed(); printer().formfeed();
return TRUE; return TRUE;
} }
@ -263,15 +286,23 @@ bool TStampaIncompleti::set_print(int m)
if (catnses.not_empty() && catnses.ok()) if (catnses.not_empty() && catnses.ok())
_catnondon.add((const char*) catnses); _catnondon.add((const char*) catnses);
_indirizzo = _msk->get_bool(F_INDIRIZZO); _indirizzo = _msk->get_bool(F_INDIRIZZO);
_comune = _msk->get_bool(F_COMUNE);
_datanasc = _msk->get_bool(F_DATANASC); _datanasc = _msk->get_bool(F_DATANASC);
_categoria = _msk->get_bool(F_CATEGORIA); _categoria = _msk->get_bool(F_CATEGORIA);
_sezione = _msk->get_bool(F_SEZIONE); _sezione = _msk->get_bool(F_SEZIONE);
_sottog = _msk->get_bool(F_SOTTOG);
_gruppoab0 = _msk->get_bool(F_GRUPPOAB0); _gruppoab0 = _msk->get_bool(F_GRUPPOAB0);
_rhantid = _msk->get_bool(F_RHANTID); _rhantid = _msk->get_bool(F_RHANTID);
_tessera = _msk->get_bool(F_TESSERA); _tessera = _msk->get_bool(F_TESSERA);
_telabi = _msk->get_bool(F_TELABI); _telabi = _msk->get_bool(F_TELABI);
_cf = _msk->get_bool(F_CF); _cf = _msk->get_bool(F_CF);
//current_cursor()->setfilter("DOM_CODCOM == \"\""); _sesso = _msk->get_bool(F_SESSO);
_altridati = _msk->get(F_ALTRIDATI);
_incompleto = !(_incompleto || app()._indirizzo || app()._datanasc ||
app()._categoria || app()._sezione || app()._gruppoab0 ||
app()._rhantid || app()._tessera || app()._telabi ||
app()._cf || app()._comune || app()._sottog || app()._sesso
|| app()._altridati.not_empty());
current_cursor()->set_filterfunction (filter_func_incompleti); current_cursor()->set_filterfunction (filter_func_incompleti);
reset_print(); reset_print();
crea_intestazione(); crea_intestazione();
@ -295,31 +326,43 @@ void TStampaIncompleti::crea_intestazione()
set_header(2, "@120g%s", (const char*) sep); set_header(2, "@120g%s", (const char*) sep);
sep = "DATI MANCANTI: "; sep = "DATI MANCANTI: ";
if (_indirizzo) if (_indirizzo)
sep << "INDIRIZZO - "; sep << "Indirizzo dom.- ";
if (_datanasc) if (_datanasc)
sep << "DATA NASCITA - "; sep << "Data nascita - ";
if (_gruppoab0) if (_gruppoab0)
sep << "GRUPPO AB0 - "; sep << "Gruppo AB0 - ";
if (_rhantid) if (_rhantid)
sep << "RH/ANTID - "; sep << "Rh/AntiD - ";
if (_sezione) if (_sezione)
sep << "SEZIONE - "; sep << "Sesione - ";
if (_categoria) if (_categoria)
sep << "CATEGORIA - "; sep << "Categoria - ";
if (_tessera) if (_tessera)
sep << "TESSERA - "; sep << "Tess.AVIS - ";
if (_telabi) if (_telabi)
sep << "TEL. ABIT. - "; sep << "Tel.abit. - ";
if (_cf) if (_cf)
sep << "COD. FISCALE - "; sep << "Cod.fiscale - ";
if (_comune)
sep << "Comune dom. - ";
if (_sottog)
sep << "Sottog. - ";
if (_sesso)
sep << "Sesso - ";
if (_altridati.not_empty())
{
TList_field& list = (TList_field&)app_mask().field(F_ALTRIDATI);
sep << list.raw2win(list.get());
}
sep.center_just(); sep.center_just();
set_header(3, (const char *) sep); set_header(3, (const char *) sep);
sep = ""; sep = "";
sep.fill('-'); sep.fill('-');
set_header(4, (const char *) sep); set_header(4, (const char *) sep);
set_header(5,"@0gCodice@9gC.@12gCognome e nome@38gNato il@49gIndirizzo@100gTelefono abit.@116gTelefono lavoro"); set_header(5,"@0gCodice@9gC.@12gCognome e nome@38gNato il@49gIndirizzo@100gTelefono abit.@116gData iscr.");
set_header(6,"@49gCAP/Località/Comune/Prov.@116gTelefono altro"); set_header(6,"@0gTessera@49gCAP/Località/Comune/Prov.@100gTelefono lavoro@116gUlt. don.");
set_header(7,"@0g--------@9g--@12g-------------------------@38g----------@49g--------------------------------------------------@100g---------------@116g---------------"); set_header(7,"@100gTelefono altro");
set_header(8,"@0g--------@9g--@12g-------------------------@38g----------@49g--------------------------------------------------@100g---------------@116g----------");
} }
bool TStampaIncompleti::user_create() bool TStampaIncompleti::user_create()

View File

@ -45,3 +45,7 @@
#define F_TESSERA 407 #define F_TESSERA 407
#define F_TELABI 408 #define F_TELABI 408
#define F_CF 409 #define F_CF 409
#define F_COMUNE 410
#define F_SOTTOG 411
#define F_SESSO 412
#define F_ALTRIDATI 413

View File

@ -383,7 +383,7 @@ BEGIN
FLAGS "D" FLAGS "D"
END END
GROUPBOX DLG_NULL 77 5 GROUPBOX DLG_NULL 77 7
BEGIN BEGIN
PROMPT 1 14 "Soggetti con i seguenti dati mancanti" PROMPT 1 14 "Soggetti con i seguenti dati mancanti"
END END
@ -393,14 +393,19 @@ BEGIN
PROMPT 2 15 "Indirizzo domicilio" PROMPT 2 15 "Indirizzo domicilio"
END END
BOOLEAN F_COMUNE
BEGIN
PROMPT 2 16 "Comune domicilio"
END
BOOLEAN F_DATANASC BOOLEAN F_DATANASC
BEGIN BEGIN
PROMPT 2 16 "Data di nascita" PROMPT 2 17 "Data di nascita"
END END
BOOLEAN F_CATEGORIA BOOLEAN F_CATEGORIA
BEGIN BEGIN
PROMPT 2 17 "Categoria" PROMPT 2 18 "Categoria"
END END
BOOLEAN F_SEZIONE BOOLEAN F_SEZIONE
@ -408,14 +413,19 @@ BEGIN
PROMPT 27 15 "Sezione di appartenenza" PROMPT 27 15 "Sezione di appartenenza"
END END
BOOLEAN F_SOTTOG
BEGIN
PROMPT 27 16 "Sottogruppo"
END
BOOLEAN F_GRUPPOAB0 BOOLEAN F_GRUPPOAB0
BEGIN BEGIN
PROMPT 27 16 "Gruppo AB0" PROMPT 27 17 "Gruppo AB0"
END END
BOOLEAN F_RHANTID BOOLEAN F_RHANTID
BEGIN BEGIN
PROMPT 27 17 "Rh/AntiD" PROMPT 27 18 "Rh/AntiD"
END END
BOOLEAN F_TESSERA BOOLEAN F_TESSERA
@ -433,5 +443,27 @@ BEGIN
PROMPT 57 17 "Codice fiscale" PROMPT 57 17 "Codice fiscale"
END END
BOOLEAN F_SESSO
BEGIN
PROMPT 57 18 "Sesso"
END
LISTBOX F_ALTRIDATI 30
BEGIN
PROMPT 2 19 "Altri dati "
FLAGS "U"
ITEM " | "
ITEM "DATAISC|Data Iscrizione"
ITEM "DATADIM|Data dimissione"
ITEM "COMNASC|Luogo di nascita"
ITEM "DOCID|Documento di identita'"
ITEM "CODCL|Cartella clinica"
ITEM "CODCT|Codice CT"
ITEM "TESSSSN|Tessera SSN"
ITEM "CODMED|Medico"
ITEM "MODCONV|Modalita' di convocazione"
ITEM "PUNTORACC|Punto di prelievo"
END
ENDPAGE ENDPAGE
ENDMASK ENDMASK

View File

@ -33,7 +33,7 @@ protected:
public: public:
void crea_intestazione(); void crea_intestazione();
void header_data(const TDate data, const TString16 luogo, const TString16 sezione); void header_stampa(const TDate data, const TString16 sezione, const TString16 sottog);
TMask& app_mask() { return *_msk; } TMask& app_mask() { return *_msk; }
TControlloControlli() : _cognome_nome("",35) {} TControlloControlli() : _cognome_nome("",35) {}
}; };
@ -51,6 +51,16 @@ void TControlloControlli::set_page(int file, int cnt)
set_row(1,"@74g@S" , FLD(LF_SOGGETTI,SOG_CODSOT)); set_row(1,"@74g@S" , FLD(LF_SOGGETTI,SOG_CODSOT));
set_row(1,"@77g@ld" , FLD(LF_CONTSAN,CON_DATACON)); set_row(1,"@77g@ld" , FLD(LF_CONTSAN,CON_DATACON));
set_row(1,"@88g@S" , FLD(LF_CONTSAN,CON_TIPOCON)); set_row(1,"@88g@S" , FLD(LF_CONTSAN,CON_TIPOCON));
set_row(1,"@91g@S" , FLD(LF_CONTSAN,CON_IDON1));
set_row(1,"@94g@S" , FLD(LF_CONTSAN,CON_IDON2));
set_row(1,"@97g@S" , FLD(LF_CONTSAN,CON_IDON3));
set_row(1,"@100g@S" , FLD(LF_CONTSAN,CON_IDON4));
set_row(1,"@103g@pn" , FLD(LF_CONTSAN,CON_INTSI,"###"));
set_row(1,"@107g@pn" , FLD(LF_CONTSAN,CON_INTAF,"###"));
set_row(1,"@111g@S" , FLD(LF_CONTSAN,CON_PROSSTIPO));
set_row(1,"@114g@ld" , FLD(LF_CONTSAN,CON_PROSSDATA));
set_row(1,"@125g@S" , FLD(LF_CONTSAN,CON_MOTIVO));
set_row(2,"@60g@S" , FLD(LF_CONTSAN,CON_RESPONSAB));
} }
bool TControlloControlli::preprocess_page(int file, int counter) bool TControlloControlli::preprocess_page(int file, int counter)
@ -73,22 +83,25 @@ bool TControlloControlli::preprocess_page(int file, int counter)
if (_dataold.ok()) if (_dataold.ok())
printer().formfeed(); printer().formfeed();
_dataold = datanew; _dataold = datanew;
header_data(datanew,"",""); header_stampa(datanew,"","");
_counter = 0; _counter = 0;
} }
} }
break; break;
case 'S': case 'S':
{ {
TString16 seznew = current_cursor()->curr(LF_SOGGETTI).get(SOG_CODSEZ); TString16 sezione = current_cursor()->curr(LF_SOGGETTI).get(SOG_CODSEZ);
seznew << "/"; TString16 sottog = current_cursor()->curr(LF_SOGGETTI).get(SOG_CODSOT);
seznew << current_cursor()->curr(LF_SOGGETTI).get(SOG_CODSOT); TString16 seznew = "";
seznew << sezione;
seznew << '/';
seznew << sottog;
if (seznew != _sezold ) if (seznew != _sezold )
{ {
if (_sezold != "****") if (_sezold != "****")
printer().formfeed(); printer().formfeed();
_sezold = seznew; _sezold = seznew;
header_data(NULLDATE,"",seznew); header_stampa(NULLDATE,sezione,sottog);
_counter = 0; _counter = 0;
} }
} }
@ -98,10 +111,10 @@ bool TControlloControlli::preprocess_page(int file, int counter)
return TRUE; return TRUE;
} }
void TControlloControlli::header_data(const TDate data, const TString16 luogo, const TString16 sezione) void TControlloControlli::header_stampa(const TDate data, const TString16 sezione, const TString16 sottog)
{ {
TString intestazione(132); TString intestazione(132);
intestazione = "STAMPA DI CONTROLLO CONTROLLI SANITARI "; intestazione = "STAMPA CONTROLLI SANITARI ";
switch (_tipostampa[0]) switch (_tipostampa[0])
{ {
case 'D': case 'D':
@ -111,16 +124,38 @@ void TControlloControlli::header_data(const TDate data, const TString16 luogo, c
} }
break; break;
case 'S': case 'S':
{ {
intestazione << "PER SEZIONE "; intestazione << "PER SEZIONE ";
intestazione << sezione; intestazione << sezione;
} if (sottog.not_empty())
{
intestazione << "/";
intestazione << sottog;
}
TLocalisamfile sez(LF_SEZIONI);
sez.setkey(1);
TRectype& recsez = sez.curr();
recsez.zero();
recsez.put(SEZ_CODSEZ, sezione);
recsez.put(SEZ_CODSOT, sottog);
if (sez.read() == NOERR)
{
intestazione << " ";
intestazione << recsez.get(SEZ_DENSEZ);
TString80 densot = recsez.get(SEZ_DENSOT);
if (densot.not_empty())
{
intestazione << "/";
intestazione << densot;
}
}
}
break; break;
} }
intestazione.center_just(); intestazione.center_just();
set_header(1,"@0g%s", (const char*) intestazione); set_header(1,"@0g%s", (const char*) intestazione);
intestazione = "Pag. @#"; intestazione = "Pag. @#";
set_header(1, "@110g%s", (const char*) intestazione); set_header(1, "@120g%s", (const char*) intestazione);
return; return;
} }
@ -205,7 +240,7 @@ void TControlloControlli::crea_intestazione()
{ {
reset_header(); reset_header();
TString sep(132); TString sep(132);
sep = "Selezioni della stampa: "; sep = "Selezioni stampa: ";
if (_sezini.not_empty()) if (_sezini.not_empty())
{ {
sep << "Sez. "; sep << "Sez. ";
@ -237,8 +272,9 @@ void TControlloControlli::crea_intestazione()
} }
sep.center_just(); sep.center_just();
set_header(2,"@0g%s", (const char*) sep); set_header(2,"@0g%s", (const char*) sep);
set_header(3,"@0gProg.@7gCodice@16gTessera@24gCognome e nome@60gNato il@71gSe/So@77gData con.@88gTipo"); set_header(3,"@0gProg.@7gCodice@16gTessera@24gCognome e nome@60gNato il@71gSe/So@77gData con/tipo@91gIdoneita'@103g SI AF@111gPross.tipo@125gMot.");
set_header(4,"@0g------@7g--------@16g-------@24g-----------------------------------@60g----------@71g-----@77g----------@88g----"); set_header(4,"@60gResponsabile");
set_header(5,"@0g------@7g--------@16g-------@24g-----------------------------------@60g----------@71g-----@77g----------@88g--@91g-- -- -- --@103g--- ---@111g-- ----------@125g----");
} }
bool TControlloControlli::user_create() bool TControlloControlli::user_create()

View File

@ -68,11 +68,12 @@ void TStampaNonDom::filtra_sezioni()
void TStampaNonDom::set_page(int file, int cnt) void TStampaNonDom::set_page(int file, int cnt)
{ {
set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########")); set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########"));
set_row(2,"@0g@S", FLD(LF_SOGGETTI,SOG_CODSEZ)); set_row(2,"@0g@8,rs", FLD(LF_SOGGETTI,SOG_TESSAVIS));
set_row(2,"@3g@S", FLD(LF_SOGGETTI,SOG_CODSOT));
set_row(1,"@9g@S", FLD(LF_SOGGETTI,SOG_CATDON)); set_row(1,"@9g@S", FLD(LF_SOGGETTI,SOG_CATDON));
set_row(1,"@12g#a", &_cognome_nome); set_row(1,"@12g#a", &_cognome_nome);
set_row(1,"@38g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); set_row(1,"@38g@ld", FLD(LF_SOGGETTI,SOG_DATANASC));
set_row(2,"@38g@S", FLD(LF_SOGGETTI,SOG_CODSEZ));
set_row(2,"@41g@S", FLD(LF_SOGGETTI,SOG_CODSOT));
set_row(1,"@49g@S", FLD(LF_SOGGETTI,SOG_DOM_INDIR)); set_row(1,"@49g@S", FLD(LF_SOGGETTI,SOG_DOM_INDIR));
set_row(1,"@100g@S", FLD(LF_SOGGETTI,SOG_TELABI)); set_row(1,"@100g@S", FLD(LF_SOGGETTI,SOG_TELABI));
set_row(1,"@116g@S", FLD(LF_SOGGETTI,SOG_TELLAV)); set_row(1,"@116g@S", FLD(LF_SOGGETTI,SOG_TELLAV));
@ -310,7 +311,7 @@ void TStampaNonDom::crea_intestazione()
sep.fill('-'); sep.fill('-');
set_header(4, (const char *) sep); set_header(4, (const char *) sep);
set_header(5,"@0gCodice@9gC.@12gCognome e nome@38gNato il@49gIndirizzo@100gTelefono abit.@116gTelefono lavoro"); set_header(5,"@0gCodice@9gC.@12gCognome e nome@38gNato il@49gIndirizzo@100gTelefono abit.@116gTelefono lavoro");
set_header(6,"@49gCAP/Località/Comune/Prov.@116gTelefono altro"); set_header(6,"@0gTessera@38gSe/So@49gCAP/Località/Comune/Prov.@116gTelefono altro");
set_header(7,"@0g--------@9g--@12g-------------------------@38g----------@49g--------------------------------------------------@100g---------------@116g---------------"); set_header(7,"@0g--------@9g--@12g-------------------------@38g----------@49g--------------------------------------------------@100g---------------@116g---------------");
printer().footerlen(3); printer().footerlen(3);
} }

View File

@ -121,23 +121,14 @@ void TStampaConsenso::set_page(int file, int cnt)
case sintetico: case sintetico:
{ {
set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########")); set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########"));
set_row(2,"@0g@8,rs", FLD(LF_SOGGETTI,SOG_TESSAVIS));
set_row(1,"@9g@S", FLD(LF_SOGGETTI,SOG_CATDON)); set_row(1,"@9g@S", FLD(LF_SOGGETTI,SOG_CATDON));
set_row(1,"@12g#a", &_cognome_nome); set_row(1,"@12g#a", &_cognome_nome);
set_row(1,"@38g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); set_row(1,"@38g@ld", FLD(LF_SOGGETTI,SOG_DATANASC));
set_row(2,"@38g@S", FLD(LF_SOGGETTI,SOG_GRUPPOAB0)); set_row(1,"@49g@6,rs", FLD(LF_SOGGETTI,SOG_TESSAVIS));
set_row(2,"@45g@S", FLD(LF_SOGGETTI,SOG_RHANTID)); set_row(1,"@56g@ld", FLD(LF_SOGGETTI,SOG_DATAULTDON));
set_row(1,"@49g@ld", FLD(LF_SOGGETTI,SOG_DATASTATO)); set_row(1,"@67g@S", FLD(LF_SOGGETTI,SOG_TIPOULTDON));
set_row(1,"@60g@S", FLD(LF_SOGGETTI,SOG_STATO)); set_row(1,"@70g@S", FLD(LF_SOGGETTI,SOG_CONSENSO));
set_row(2,"@49g@ld", FLD(LF_SOGGETTI,SOG_DATA_PROS)); set_row(2,"");
set_row(2,"@60g@S", FLD(LF_SOGGETTI,SOG_PROS_STATO));
set_row(1,"@63g@ld", FLD(LF_SOGGETTI,SOG_DATAULTID));
set_row(1,"@74g@S", FLD(LF_SOGGETTI,SOG_TIPOULTID));
set_row(1,"@77g@pn", FLD(LF_SOGGETTI,SOG_INTSI,"###"));
set_row(1,"@81g@pn", FLD(LF_SOGGETTI,SOG_INTAF,"###"));
set_row(1,"@88g@ld", FLD(LF_SOGGETTI,SOG_DATAULTDON));
set_row(1,"@99g@S", FLD(LF_SOGGETTI,SOG_TIPOULTDON));
set_row(3,"");
} }
break; break;
case completo: case completo:
@ -163,18 +154,12 @@ void TStampaConsenso::set_page(int file, int cnt)
set_row(4,"@82gKe @S", FLD(LF_SOGGETTI,SOG_KELL)); set_row(4,"@82gKe @S", FLD(LF_SOGGETTI,SOG_KELL));
set_row(5,"@82gDu @S", FLD(LF_SOGGETTI,SOG_DU)); set_row(5,"@82gDu @S", FLD(LF_SOGGETTI,SOG_DU));
set_row(1,"@94g@S", FLD(LF_SOGGETTI,SOG_STATO)); set_row(1,"@94g@ld", FLD(LF_SOGGETTI,SOG_DATAULTDON));
set_row(2,"@94g@ld", FLD(LF_SOGGETTI,SOG_DATASTATO)); set_row(2,"@94g@S", FLD(LF_SOGGETTI,SOG_TIPOULTDON));
set_row(3,"@94g@S", FLD(LF_SOGGETTI,SOG_PROS_STATO)); set_row(4,"@94g@pn", FLD(LF_SOGGETTI,SOG_TOTDON));
set_row(4,"@94g@ld", FLD(LF_SOGGETTI,SOG_DATA_PROS));
set_row(1,"@105g@S", FLD(LF_SOGGETTI,SOG_CONSENSO));
set_row(1,"@105g@ld", FLD(LF_SOGGETTI,SOG_DATAULTID));
set_row(2,"@105g@S", FLD(LF_SOGGETTI,SOG_TIPOULTID));
set_row(3,"@105g@pn", FLD(LF_SOGGETTI,SOG_INTSI,"###"));
set_row(4,"@105g@pn", FLD(LF_SOGGETTI,SOG_INTAF,"###"));
set_row(1,"@116g@ld", FLD(LF_SOGGETTI,SOG_DATAULTDON));
set_row(2,"@116g@S", FLD(LF_SOGGETTI,SOG_TIPOULTDON));
set_row(2,"@116g@pn", FLD(LF_SOGGETTI,SOG_TOTDON));
set_row(6,""); set_row(6,"");
} }
break; break;
@ -357,9 +342,23 @@ void TStampaConsenso::crea_intestazione()
sep = ""; sep = "";
sep.fill('-'); sep.fill('-');
set_header(3, (const char *) sep); set_header(3, (const char *) sep);
set_header(4,"@0gCodice@9gC.@12gCognome e nome@38gNato il@49gSospensione@63gUltima idon.@77gIntervalli@88gUltima donaz."); if (_tipostampa==sintetico)
set_header(5,"@0gTessera@38gGr.AB0 Rh@49gPr.tipo@78gSI AF"); {
set_header(6,"@0g--------@9g--@12g-------------------------@38g----------@49g-------------@63g-------------@77g----------@88g---------- --"); sep.fill('-',100);
set_header(4, (const char *) sep);
set_header(5,"@0gCodice@9gC.@12gCognome e nome@38gNato il@49gTess.@56gData/Tipo u.d.@70Consenso");
set_header(6,"@0g--------@9g--@12g-------------------------@38g----------@49g------@56g---------- --@70g--------");
}
else
{
sep.fill('-');
set_header(4, (const char *) sep);
set_header(5,"@0gCodice@9gCognome@35gIndirizzo@66gTel.abitazione@82gTipiz@94gUlt.donaz.@105gConsenso");
set_header(6,"@0gTessera@9gNome@66gTel.lavoro@82gzazione@94gTipo");
set_header(7,"@0gCateg.@9gData nascita@66gTel.altro");
set_header(8,"@94gTot.don.");
set_header(10,"@0g--------@9g-------------------------@35g------------------------------@66g--------------@82g------------@94g----------@105g--------");
}
} }
} }

View File

@ -10,6 +10,7 @@
// nomi dei campi // nomi dei campi
#include "soggetti.h" #include "soggetti.h"
#include "donaz.h" #include "donaz.h"
#include "storico.h"
class TPrimaDon : public TPrintapp class TPrimaDon : public TPrintapp
{ {
@ -18,6 +19,8 @@ class TPrimaDon : public TPrintapp
int _cur; int _cur;
TLocalisamfile* _donaz; TLocalisamfile* _donaz;
TRecord_array* _sdonazioni; TRecord_array* _sdonazioni;
TLocalisamfile* _storico;
TRecord_array* _sstorico;
protected: protected:
virtual bool user_create(); virtual bool user_create();
@ -36,15 +39,55 @@ bool TPrimaDon::preprocess_page(int file, int counter)
{ {
bool rewrite = FALSE; bool rewrite = FALSE;
TRectype& recsog = current_cursor()->curr(); TRectype& recsog = current_cursor()->curr();
const TString sezsog = recsog.get(SOG_CODSEZ);
const TString sotsog = recsog.get(SOG_CODSOT);
const TDate dataisc = recsog.get_date(SOG_DATAISC);
const long codice = recsog.get_long(SOG_CODICE); const long codice = recsog.get_long(SOG_CODICE);
TRectype* keys = new TRectype(LF_STORICO);
keys->put(STO_CODICE, codice);
int errs = _sstorico->read(keys);
TRectype* keyd = new TRectype(LF_DONAZ); TRectype* keyd = new TRectype(LF_DONAZ);
keyd->put(DON_CODICE, codice); keyd->put(DON_CODICE, codice);
int errd = _sdonazioni->read(keyd); int errd = _sdonazioni->read(keyd);
if ((errd == NOERR) && (_sdonazioni->rows()>0)) if ((errd == NOERR) && (_sdonazioni->rows()>0))
{ {
for (int d=1; d<=_sdonazioni->rows(); d++)
{
TRectype& riga = _sdonazioni->row(d, TRUE);
TString16 codsez = riga.get(DON_CODSEZ);
TString16 codsot = riga.get(DON_CODSOT);
TDate datadon = riga.get_date(DON_DATADON);
if (codsez.empty() && codsot.empty())
{
if (_sstorico->rows()>0)
{
for (int s=1; s<=_sstorico->rows(); s++)
{
TRectype& rigas = _sstorico->row(s, TRUE);
TDate dataisc = rigas.get_date(STO_DATAISC);
TDate datadim = rigas.get_date(STO_DATADIM);
if ((datadon >= dataisc) && ( (datadon <= datadim) || (datadim.empty()) ))
{
riga.put(DON_CODSEZ,rigas.get(STO_CODSEZ));
riga.put(DON_CODSOT,rigas.get(STO_CODSOT));
s = _sstorico->rows()+1;
rewrite = TRUE;
}
}
}
else
{
if (datadon >= dataisc)
{
riga.put(DON_CODSEZ, sezsog);
riga.put(DON_CODSOT, sotsog);
}
}
}
}
/*
TDate dataprisi = recsog.get(SOG_DATAPRISI); TDate dataprisi = recsog.get(SOG_DATAPRISI);
TDate datapriaf = recsog.get(SOG_DATAPRIAF); TDate datapriaf = recsog.get(SOG_DATAPRIAF);
TRectype& riga = _sdonazioni->row(1, TRUE); TRectype& riga = _sdonazioni->row(1, TRUE);
TDate datadon = riga.get(DON_DATADON); TDate datadon = riga.get(DON_DATADON);
if (datadon==dataprisi || datadon==datapriaf) if (datadon==dataprisi || datadon==datapriaf)
@ -58,6 +101,7 @@ bool TPrimaDon::preprocess_page(int file, int counter)
rewrite = TRUE; rewrite = TRUE;
riga.put(DON_PRIMADON, TRUE); riga.put(DON_PRIMADON, TRUE);
} }
*/
if (rewrite) if (rewrite)
_sdonazioni->rewrite(); _sdonazioni->rewrite();
} }
@ -86,17 +130,21 @@ bool TPrimaDon::set_print(int)
bool TPrimaDon::user_create() bool TPrimaDon::user_create()
{ {
_msk = new TMask("at7200a"); _msk = new TMask("at7200a");
_rel = new TRelation(LF_SOGGETTI); _rel = new TRelation(LF_SOGGETTI);
_donaz = new TLocalisamfile(LF_DONAZ); _donaz = new TLocalisamfile(LF_DONAZ);
_sdonazioni = new TRecord_array(LF_DONAZ,DON_PROGDON); _storico = new TLocalisamfile(LF_STORICO);
_cur = add_cursor(new TCursor(_rel, "", 1)); _sdonazioni = new TRecord_array(LF_DONAZ,DON_PROGDON);
_sstorico = new TRecord_array(LF_STORICO,STO_PROGSTO);
_cur = add_cursor(new TCursor(_rel, "", 1));
return TRUE; return TRUE;
} }
bool TPrimaDon::user_destroy() bool TPrimaDon::user_destroy()
{ {
delete _sstorico;
delete _sdonazioni; delete _sdonazioni;
delete _storico;
delete _donaz; delete _donaz;
delete _rel; delete _rel;
delete _msk; delete _msk;

View File

@ -13,6 +13,7 @@
#include "soggetti.h" #include "soggetti.h"
#include "contsan.h" #include "contsan.h"
#include "idoneita.h" #include "idoneita.h"
#include "donaz.h"
#include "sezioni.h" #include "sezioni.h"
class TRiordinaControlli : public TPrintapp class TRiordinaControlli : public TPrintapp
@ -24,6 +25,8 @@ class TRiordinaControlli : public TPrintapp
TRecord_array* _scontrolli; TRecord_array* _scontrolli;
TLocalisamfile* _idoneita; TLocalisamfile* _idoneita;
TRecord_array* _sidoneita; TRecord_array* _sidoneita;
TLocalisamfile* _donaz;
TRecord_array* _sdonazioni;
protected: protected:
virtual bool user_create(); virtual bool user_create();
@ -70,11 +73,14 @@ bool TRiordinaControlli::preprocess_page(int file, int counter)
TRectype* keyi = new TRectype(LF_IDONEITA); TRectype* keyi = new TRectype(LF_IDONEITA);
keyi->put(IDO_CODICE, codice); keyi->put(IDO_CODICE, codice);
int erri = _sidoneita->read(keyi); int erri = _sidoneita->read(keyi);
TRectype* keyd = new TRectype(LF_DONAZ);
keyd->put(DON_CODICE, codice);
int errd = _sdonazioni->read(keyd);
//if ((err == NOERR || erri == NOERR) && (_scontrolli->rows() > 0 || _sidoneita->rows() > 0)) //if ((err == NOERR || erri == NOERR) && (_scontrolli->rows() > 0 || _sidoneita->rows() > 0))
if (err == NOERR || erri == NOERR) if (err == NOERR || erri == NOERR || errd == NOERR)
{ {
con_reord(recsog,_scontrolli, _sidoneita); calcola_donazioni_lib(recsog, _sdonazioni);
rewrite = TRUE; rewrite = TRUE;
} }
if (rewrite) if (rewrite)
@ -114,7 +120,8 @@ bool TRiordinaControlli::set_print(int)
} }
TString256 filtro = ""; TString256 filtro = "";
//filtro = "(90->STATO==\"ID\") && ((90->STATOSI==\"SO\") || (90->STATOAF==\"SO\"))"; //filtro = "(90->STATO==\"ID\") && ((90->STATOSI==\"SO\") || (90->STATOAF==\"SO\"))";
filtro = "(90->CATDON==\"01\") || (90->CATDON==\"04\") || (90->CATDON==\"07\")"; //filtro = "(90->CATDON==\"01\") || (90->CATDON==\"04\") || (90->CATDON==\"07\")";
filtro = "(90->TIPOULTDON!=\"SI\") && (90->TIPOULTDON!=\"SN\") && (90->TIPOULTDON!=\"PL\") && (90->TIPOULTDON!=\"PN\") && (90->TIPOULTDON!=\"PP\") && (90->TIPOULTDON!=\"PI\")";
current_cursor()->setfilter((const char*) filtro, TRUE); current_cursor()->setfilter((const char*) filtro, TRUE);
reset_files(); reset_files();
@ -134,12 +141,16 @@ bool TRiordinaControlli::user_create()
_scontrolli = new TRecord_array(LF_CONTSAN,CON_PROGCON); _scontrolli = new TRecord_array(LF_CONTSAN,CON_PROGCON);
_idoneita = new TLocalisamfile(LF_IDONEITA); _idoneita = new TLocalisamfile(LF_IDONEITA);
_sidoneita = new TRecord_array(LF_IDONEITA,IDO_PROGIDO); _sidoneita = new TRecord_array(LF_IDONEITA,IDO_PROGIDO);
_donaz = new TLocalisamfile(LF_DONAZ);
_sdonazioni = new TRecord_array(LF_DONAZ,DON_PROGDON);
long items = _rel->lfile().items(); long items = _rel->lfile().items();
return TRUE; return TRUE;
} }
bool TRiordinaControlli::user_destroy() bool TRiordinaControlli::user_destroy()
{ {
delete _sdonazioni;
delete _donaz;
delete _sidoneita; delete _sidoneita;
delete _idoneita; delete _idoneita;
delete _scontrolli; delete _scontrolli;

View File

@ -1,17 +1,11 @@
#include <applicat.h> #include <applicat.h>
#include <execp.h>
#include <mask.h> #include <mask.h>
#include <msksheet.h>
#include <mailbox.h>
#include <printer.h> #include <printer.h>
#include <prefix.h>
#include <progind.h> #include <progind.h>
#include <recarray.h> #include <recarray.h>
#include <relation.h> #include <relation.h>
#include <tabutil.h> #include <tabutil.h>
#include <urldefid.h> #include <urldefid.h>
#include <validate.h>
#include <lffiles.h>
#include "at8.h" #include "at8.h"
#include "at8200a.h" #include "at8200a.h"
@ -105,15 +99,20 @@ bool TAggConSan::destroy()
bool TAggConSan::menu(MENU_TAG m) bool TAggConSan::menu(MENU_TAG m)
{ {
KEY tasto = _msk->run(); KEY tasto = _msk->run();
TPrinter& pr = printer();
if (tasto == K_ENTER) if (tasto == K_ENTER)
{ {
if (!pr.open())
return error_box("Errore in apertura stampante.");
bool anagrafe = _msk->get_bool(F_ANAGRAFE); bool anagrafe = _msk->get_bool(F_ANAGRAFE);
_rel->lfile().setkey(2); _rel->lfile().setkey(2);
bool modificato = FALSE; bool modificato = FALSE;
TDate oggi(TODAY); TDate oggi(TODAY);
TPrintrow row; TPrintrow row;
TString256 rigastampa; TString256 rigastampa;
rigastampa = "SOGGETTI NON TROVATI SU ARCHIVIO PROVINCIALE"; rigastampa = "SOGGETTI NON TROVATI SU ARCHIVIO PROVINCIALE ";
rigastampa << oggi.string(); rigastampa << oggi.string();
rigastampa.center_just(120); rigastampa.center_just(120);
row.put(rigastampa); row.put(rigastampa);
@ -186,6 +185,15 @@ bool TAggConSan::menu(MENU_TAG m)
key->put(IDO_CODICE, recsog.get(SOG_CODICE)); key->put(IDO_CODICE, recsog.get(SOG_CODICE));
_sidoneita->read(key); _sidoneita->read(key);
con_reord(recsog,_scontrolli,_sidoneita); con_reord(recsog,_scontrolli,_sidoneita);
//Verifico se la categoria del donatore è aggiornata al numero di donazioni dello stesso
//se non lo è eseguo tutti i controlli per il salto automatico di categoria
TString16 catdon = recsog.get(SOG_CATDON);
const int totdon = recsog.get_int(SOG_TOTDON);
if ((catdon == _catini1 || _catini1.empty()) && (totdon>=_numdon1) && _catfin1.not_empty())
recsog.put(SOG_CATDON, _catfin1);
const bool tstampata = recsog.get_bool(SOG_T_STAMPATA);
if ((catdon == _catini2 || _catini2.empty()) && (totdon>=_numdon2) && _catfin2.not_empty() && (!_sttess2 || tstampata))
recsog.put(SOG_CATDON, _catfin2);
recsog.put(SOG_DATAULTAGG, oggi); recsog.put(SOG_DATAULTAGG, oggi);
recsog.put(SOG_UTENULTAGG, "PORT."); recsog.put(SOG_UTENULTAGG, "PORT.");
recsog.rewrite(_rel->lfile()); recsog.rewrite(_rel->lfile());
@ -198,7 +206,7 @@ bool TAggConSan::menu(MENU_TAG m)
rigastampa << " " << nome; rigastampa << " " << nome;
rigastampa << " " << datanasc.string(); rigastampa << " " << datanasc.string();
row.reset(); row.reset();
row.put((const char*) rigastampa); row.put(rigastampa);
printer().print(row); printer().print(row);
} }
} }
@ -259,6 +267,15 @@ bool TAggConSan::menu(MENU_TAG m)
key->put(CON_CODICE, recsog.get(SOG_CODICE)); key->put(CON_CODICE, recsog.get(SOG_CODICE));
_scontrolli->read(key); _scontrolli->read(key);
con_reord(recsog,_scontrolli,_sidoneita); con_reord(recsog,_scontrolli,_sidoneita);
//Verifico se la categoria del donatore è aggiornata al numero di donazioni dello stesso
//se non lo è eseguo tutti i controlli per il salto automatico di categoria
TString16 catdon = recsog.get(SOG_CATDON);
const int totdon = recsog.get_int(SOG_TOTDON);
if ((catdon == _catini1 || _catini1.empty()) && (totdon>=_numdon1) && _catfin1.not_empty())
recsog.put(SOG_CATDON, _catfin1);
const bool tstampata = recsog.get_bool(SOG_T_STAMPATA);
if ((catdon == _catini2 || _catini2.empty()) && (totdon>=_numdon2) && _catfin2.not_empty() && (!_sttess2 || tstampata))
recsog.put(SOG_CATDON, _catfin2);
recsog.put(SOG_DATAULTAGG, oggi); recsog.put(SOG_DATAULTAGG, oggi);
recsog.put(SOG_UTENULTAGG, "PORT."); recsog.put(SOG_UTENULTAGG, "PORT.");
recsog.rewrite(_rel->lfile()); recsog.rewrite(_rel->lfile());
@ -271,7 +288,7 @@ bool TAggConSan::menu(MENU_TAG m)
rigastampa << " " << nome; rigastampa << " " << nome;
rigastampa << " " << datanasc.string(); rigastampa << " " << datanasc.string();
row.reset(); row.reset();
row.put((const char*) rigastampa); row.put(rigastampa);
printer().print(row); printer().print(row);
} }
} }
@ -350,6 +367,8 @@ bool TAggConSan::menu(MENU_TAG m)
delete pi2; delete pi2;
delete fs; delete fs;
} }
pr.formfeed();
pr.close();
} }
return FALSE; return FALSE;
} }

View File

@ -144,9 +144,10 @@ bool TCTDon2AT::menu(MENU_TAG m)
if (ctd.get("S6").not_empty()) if (ctd.get("S6").not_empty())
catdon = ctd.get("S6"); catdon = ctd.get("S6");
} }
if ((catdon == _catini1 || _catini1.empty()) && (totdon==_numdon1) && _catfin1.not_empty()) if ((catdon == _catini1 || _catini1.empty()) && (totdon>=_numdon1) && _catfin1.not_empty())
recsog.put(SOG_CATDON, _catfin1); recsog.put(SOG_CATDON, _catfin1);
if ((catdon == _catini2 || _catini2.empty()) && (totdon>=_numdon2) && _catfin2.not_empty() && (!_sttess2 || dimissione)) const bool tstampata = recsog.get_bool(SOG_T_STAMPATA);
if ((catdon == _catini2 || _catini2.empty()) && (totdon>=_numdon2) && _catfin2.not_empty() && (!_sttess2 || tstampata))
recsog.put(SOG_CATDON, _catfin2); recsog.put(SOG_CATDON, _catfin2);
} }
TDate dataiscsog = recsog.get_date(SOG_DATAISC); TDate dataiscsog = recsog.get_date(SOG_DATAISC);
@ -174,7 +175,7 @@ bool TCTDon2AT::menu(MENU_TAG m)
if (rconvoc.read() == NOERR) if (rconvoc.read() == NOERR)
{ {
rconvoc.put(RCV_ANNULLATO, TRUE); rconvoc.put(RCV_ANNULLATO, TRUE);
int err = rconvoc.write(); int err = rconvoc.rewrite();
} }
const TDate datanulla(NULLDATE); const TDate datanulla(NULLDATE);
recsog.put(SOG_DATACONV, datanulla); recsog.put(SOG_DATACONV, datanulla);

View File

@ -155,7 +155,7 @@ bool TReconstruction::menu(MENU_TAG m)
if (ctd.get("S6").not_empty()) if (ctd.get("S6").not_empty())
catdon = ctd.get("S6"); catdon = ctd.get("S6");
} }
if ((catdon == _catini1 || _catini1.empty()) && (totdon==_numdon1) && _catfin1.not_empty()) if ((catdon == _catini1 || _catini1.empty()) && (totdon>=_numdon1) && _catfin1.not_empty())
recsog.put(SOG_CATDON, _catfin1); recsog.put(SOG_CATDON, _catfin1);
if ((catdon == _catini2 || _catini2.empty()) && (totdon>=_numdon2) && _catfin2.not_empty() && (!_sttess2 || dimissione)) if ((catdon == _catini2 || _catini2.empty()) && (totdon>=_numdon2) && _catfin2.not_empty() && (!_sttess2 || dimissione))
recsog.put(SOG_CATDON, _catfin2); recsog.put(SOG_CATDON, _catfin2);

View File

@ -243,6 +243,7 @@ bool TCorreggiDC::modifica(TSheet_field& s)
s.destroy(); s.destroy();
TLocalisamfile donaz(LF_DONAZ); TLocalisamfile donaz(LF_DONAZ);
TLocalisamfile soggetti(LF_SOGGETTI); TLocalisamfile soggetti(LF_SOGGETTI);
TRectype r = donaz.curr();
soggetti.setkey(1); soggetti.setkey(1);
donaz.setkey(4); donaz.setkey(4);
donaz.zero(); donaz.zero();
@ -253,18 +254,19 @@ bool TCorreggiDC::modifica(TSheet_field& s)
if (_luogodon.not_empty()) if (_luogodon.not_empty())
donaz.put(DON_LUOGODON, _luogodon); donaz.put(DON_LUOGODON, _luogodon);
} }
TString16 luogodon; TString16 luogodon, tipodon;
TDate datadon;
bool leggi = TRUE; bool leggi = TRUE;
TRectype r(donaz.curr());
TRectype rc(donaz.curr());
int items = 0; int items = 0;
for(donaz.read(); !donaz.eof(); donaz.next()) for(donaz.read(); !donaz.eof(); donaz.next())
{ {
//if (donaz.curr() != r) break; luogodon = donaz.get(DON_LUOGODON);
if (rc != r) break; tipodon = donaz.get(DON_TIPODON);
if (_tipodon.empty() && _luogodon.not_empty()) datadon = donaz.get(DON_DATADON);
if ((luogodon!=_luogodon) || (tipodon!=_tipodon) || (datadon!=_datadon))
break;
if (_tipodon.empty())
{ {
luogodon = donaz.get(DON_LUOGODON);
if (luogodon == _luogodon) if (luogodon == _luogodon)
leggi = TRUE; leggi = TRUE;
else else
@ -274,13 +276,21 @@ bool TCorreggiDC::modifica(TSheet_field& s)
leggi = TRUE; leggi = TRUE;
if (leggi) if (leggi)
{ {
rc = donaz.curr();
if (!_nluogodon.blank()) if (!_nluogodon.blank())
{ {
donaz.put(DON_LUOGODON, _nluogodon); donaz.put(DON_LUOGODON, _nluogodon);
donaz.rewrite(); donaz.rewrite();
} }
} }
donaz.zero();
donaz.put(DON_DATADON, _datadon);
if (_tipodon.not_empty())
{
donaz.put(DON_TIPODON, _tipodon);
if (_luogodon.not_empty())
donaz.put(DON_LUOGODON, _luogodon);
}
} }
return TRUE; return TRUE;
} }
@ -302,12 +312,13 @@ int TCorreggiDC::read(TSheet_field& s)
} }
TString16 luogodon; TString16 luogodon;
bool leggi = TRUE; bool leggi = TRUE;
TRectype r(donaz.curr()); const TRectype r(donaz.curr());
int items = 0; int items = 0;
for(donaz.read(); !donaz.eof(); donaz.next()) for(donaz.read(_isgteq); !donaz.eof(); donaz.next())
{ {
if (donaz.curr() != r) break; if (donaz.curr() != r) break;
if (_tipodon.empty() && _luogodon.not_empty()) //if (_tipodon.empty() && _luogodon.not_empty())
if (_tipodon.empty())
{ {
luogodon = donaz.get(DON_LUOGODON); luogodon = donaz.get(DON_LUOGODON);
if (luogodon == _luogodon) if (luogodon == _luogodon)
@ -449,60 +460,49 @@ int TCorreggiDC::modifica(TSheet_field& s)
} }
TRectype* rec = new TRectype(LF_DONAZ); TRectype* rec = new TRectype(LF_DONAZ);
rec->put(DON_CODICE, row.get(0)); rec->put(DON_CODICE, row.get(0));
rec->put(DON_DATADON, datadonazione);
TString16 tipodon = row.get(4);
if (tipodon.blank())
tipodon = _tipodon;
rec->put(DON_TIPODON, tipodon);
rec->put(DON_LUOGODON, _luogodon);
rec->put(DON_ETICHETTA, row.get(6)); rec->put(DON_ETICHETTA, row.get(6));
rec->put(DON_PRIMADON, row.get(7)); rec->put(DON_PRIMADON, row.get(7));
rec->put(DON_CODSEZ,sog.get(SOG_CODSEZ)); rec->put(DON_CODSEZ,sog.get(SOG_CODSEZ));
rec->put(DON_CODSOT,sog.get(SOG_CODSOT)); rec->put(DON_CODSOT,sog.get(SOG_CODSOT));
bool insert = FALSE; bool modified = FALSE;
bool exist = FALSE; bool found = FALSE;
TString16 tipodon = row.get(4);
if (tipodon.blank())
tipodon = _tipodon;
TRectype* key = new TRectype(LF_DONAZ); TRectype* key = new TRectype(LF_DONAZ);
key->put(DON_CODICE, row.get(0)); key->put(DON_CODICE, row.get(0));
err = _sdonazioni->read(key); err = _sdonazioni->read(key);
if (err == NOERR) if (err == NOERR)
{ {
int r=_sdonazioni->rows(); int r = _sdonazioni->rows();
while (r>=1 && !insert && !exist) while (r>0 && !found)
{ {
const TRectype& riga = _sdonazioni->row(r); const TRectype& riga = _sdonazioni->row(r);
const TDate d = riga.get(DON_DATADON); const TDate d = riga.get(DON_DATADON);
if (datadonazione==d) // esiste gia' una donazione in questa data if ((datadonazione==d) && (riga.get(DON_TIPODON)== tipodon) && (riga.get(DON_LUOGODON)==_luogodon)) // ho trovato la donazione da modificare
{ {
exist=TRUE; found=TRUE;
r=0;
} }
else
if (datadonazione > d)
{
rec->put(DON_PROGDON,r+1);
_sdonazioni->insert_row(rec);
insert=TRUE;
}
r--; r--;
} }
if (!exist && !insert)
{
rec->put(DON_PROGDON,1);
_sdonazioni->insert_row(rec);
}
} }
else if (found)
if (err == _iseof || err == _isemptyfile) {
{ r++;
rec->put(DON_PROGDON,1); TRectype& riga = _sdonazioni->row(r);
_sdonazioni->insert_row(rec); if (riga.get(DON_DATADON).blank())
} datadonazione = _ndatadon;
if (!exist) if (riga.get(DON_TIPODON).blank())
{ tipodon=_ntipodon;
err = _sdonazioni->write(TRUE); if (riga.get(DON_LUOGODON).blank())
luogodon=_nluogodon;
riga.put(DON_DATADON, datadonazione);
riga.put(DON_LUOGODON, luogodon);
riga.put(DON_TIPODON, tipodon);
err= _sdonazioni.rewrite();
// controllo se è idoneo // controllo se è idoneo
bool ctrlsi = FALSE; //devo controllare se è idoneo SI bool ctrlsi = FALSE; //devo controllare se è idoneo SI
bool ctrlaf = FALSE; //devo controllare se è idoneo AF bool ctrlaf = FALSE; //devo controllare se è idoneo AF

View File

@ -389,7 +389,6 @@ END
NUMBER F_S_INTSI 3 0 NUMBER F_S_INTSI 3 0
BEGIN BEGIN
PROMPT 40 12 "Sangue intero " PROMPT 40 12 "Sangue intero "
FLAGS "D"
END END
STRING F_S_DESC_TIPOCON 25 STRING F_S_DESC_TIPOCON 25
@ -505,6 +504,7 @@ END
DATE F_S_PROSSDATA DATE F_S_PROSSDATA
BEGIN BEGIN
PROMPT 55 13 "Data " PROMPT 55 13 "Data "
FLAGS "D"
HELP "Data controllo" HELP "Data controllo"
END END
@ -535,7 +535,6 @@ END
STRING F_S_DESC_PROSSTIPO 25 STRING F_S_DESC_PROSSTIPO 25
BEGIN BEGIN
PROMPT 23 13 "" PROMPT 23 13 ""
FLAGS "D"
END END
BUTTON DLG_OK 9 2 BUTTON DLG_OK 9 2

View File

@ -439,13 +439,14 @@ BEGIN
KEY "Modalita' di convocazione" KEY "Modalita' di convocazione"
PROMPT 67 19 "" PROMPT 67 19 ""
FIELD 90->MODCONV FIELD 90->MODCONV
ITEM " | " #include "modalita.h"
ITEM "PO|Postale" //ITEM " | "
ITEM "T1|Tel. abitaz." //ITEM "PO|Postale"
ITEM "T2|Tel. lavoro" //ITEM "T1|Tel. abitaz."
ITEM "T3|Tel. altro" //ITEM "T2|Tel. lavoro"
ITEM "TE|Telefonica" //ITEM "T3|Tel. altro"
ITEM "IN|Indifferente" //ITEM "TE|Telefonica"
//ITEM "IN|Indifferente"
END END
STRINGA 52 19 STRINGA 52 19

View File

@ -8,4 +8,8 @@
#define OPE_DATA2 "DATA2" #define OPE_DATA2 "DATA2"
#define OPE_FLAG1 "FLAG1" #define OPE_FLAG1 "FLAG1"
#define OPE_FLAG2 "FLAG2" #define OPE_FLAG2 "FLAG2"
#define OPE_NUMERO1 "NUMERO1"
#define OPE_CODSEZ2 "CODSEZ2"
#define OPE_CODSOT2 "CODSOT2"
#define OPE_UTENTE "UTENTE" #define OPE_UTENTE "UTENTE"
#define OPE_TIPOOPE "TIPOOPE"

View File

@ -305,9 +305,9 @@ BEGIN
GROUP 4 GROUP 4
END END
GROUPBOX DLG_NULL 35 7 GROUPBOX DLG_NULL 35 6
BEGIN BEGIN
PROMPT 1 4 "Parametri convocazione" PROMPT 1 4 "Parametri convoc. per sezione"
END END
NUMBER F_INTMINCONV 4 NUMBER F_INTMINCONV 4
@ -337,56 +337,56 @@ BEGIN
ITEM "G|dal Giorno" ITEM "G|dal Giorno"
END END
DATE F_DATAULTCON
BEGIN
PROMPT 2 9 "Data ultima conv. "
FIELD DATAULTCON
//FLAGS "D"
END
GROUPBOX DLG_NULL 35 7 GROUPBOX DLG_NULL 35 7
BEGIN BEGIN
PROMPT 1 11 "Parametri convocazione BO" PROMPT 1 10 "Parametri convoc. su punto prelievo"
END END
NUMBER F_GIOCARSOL 3 NUMBER F_GIOCARSOL 3
BEGIN BEGIN
PROMPT 2 12 "Gio. tra cart. e soll. " PROMPT 2 11 "Gio. tra cart. e soll. "
FIELD GIOCARSOL FIELD GIOCARSOL
HELP "Intervallo in giorni tra cartolina e primo sollecito" HELP "Intervallo in giorni tra cartolina e primo sollecito"
END END
NUMBER F_GIOSOLSOL 3 NUMBER F_GIOSOLSOL 3
BEGIN BEGIN
PROMPT 2 13 "Gio. tra soll. e soll. " PROMPT 2 12 "Gio. tra soll. e soll. "
FIELD GIOSOLSOL FIELD GIOSOLSOL
HELP "Intervallo in giorni tra solleciti" HELP "Intervallo in giorni tra solleciti"
END END
NUMBER F_GIOULTSOL 3 NUMBER F_GIOULTSOL 3
BEGIN BEGIN
PROMPT 2 14 "Gio. tra penult. e ult. soll. " PROMPT 2 13 "Gio. tra penult. e ult. soll. "
FIELD GIOULTSOL FIELD GIOULTSOL
HELP "Intervallo tra penultimo e ultimo sollecito" HELP "Intervallo tra penultimo e ultimo sollecito"
END END
NUMBER F_GIOPERRIT 3 NUMBER F_GIOPERRIT 3
BEGIN BEGIN
PROMPT 2 15 "Gio. tra chiamate per ritard. " PROMPT 2 14 "Gio. tra chiamate per ritard. "
FIELD GIOPERRIT FIELD GIOPERRIT
HELP "Giorni tra le chiamate per ritardatari" HELP "Giorni tra le chiamate per ritardatari"
END END
NUMBER F_NUMMAXSOL 2 NUMBER F_NUMMAXSOL 2
BEGIN BEGIN
PROMPT 2 16 "Num. max di solleciti " PROMPT 2 15 "Num. max di solleciti "
FIELD NUMMAXSOL FIELD NUMMAXSOL
HELP "Numero massimo di solleciti inviabili per soggetto" HELP "Numero massimo di solleciti inviabili per soggetto"
END END
DATE F_DATAULTCON
BEGIN
PROMPT 2 17 "Data ultima conv. "
FIELD DATAULTCON
//FLAGS "D"
END
GROUPBOX DLG_NULL 41 8 GROUPBOX DLG_NULL 41 8
BEGIN BEGIN
PROMPT 37 4 "Parametri per chiusura fine anno" PROMPT 37 4 "Parametri per chiusura periodica"
END END
NUMBER F_DONEMER 3 NUMBER F_DONEMER 3

View File

@ -1,3 +1,3 @@
115 115
0 0
$convoc|0|0|151|17|Convocazioni AVIS||| $convoc|1178|1178|151|17|Convocazioni AVIS|||

View File

@ -1,3 +1,3 @@
121 121
0 0
$atstatd|0|0|53|17|Statistiche donazioni AVIS||| $atstatd|204|204|53|17|Statistiche donazioni AVIS|||

View File

@ -1,3 +1,3 @@
129 129
0 0
$atstats|0|0|30|17|Statistiche soggetti AVIS||| $atstats|72|72|30|17|Statistiche soggetti AVIS|||

View File

@ -1,3 +1,3 @@
130 130
0 0
$atopera|0|0|40|17|Operazioni AVIS||| $atopera|53|53|48|17|Operazioni AVIS|||

View File

@ -1,14 +1,19 @@
130 130
9 13
PROGOPE|3|5|0|Progressivo operazione PROGOPE|3|5|0|Progressivo operazione
CODSEZ|1|2|0|Sezione CODSEZ|1|2|0|Sezione
CODSOT|1|2|0|Sottogruppo CODSOT|1|2|0|Sottogruppo
GRUPPOAZIE|1|4|0|Gruppo aziendale GRUPPOAZIE|1|4|0|Gruppo aziendale
DATA1|5|8|0|Data 1 (per benemerenze: data elaborazione) DATA1|5|8|0|Data 1 (per B: data elaborazione, per T/S: data del giorno)
DATA2|5|8|0|Data 2 (per benemerenze: data prevista consegna) DATA2|5|8|0|Data 2 (per B: data prevista consegna, per T: ult.don. successiva al)
FLAG1|8|1|0|Flag 1 (per benemerenze: includi sogg. appartenti a gruppi az.) FLAG1|8|1|0|Flag 1 (per B: includi sogg. appartenti a gruppi az.)
FLAG2|8|1|0|Flag 2 (per benemerenze: attribuzione fatta dai gruppi az.) FLAG2|8|1|0|Flag 2 (per B: attribuzione fatta dai gruppi az.)
CODSEZ2|1|2|0|Sezione finale
CODSOT2|1|2|0|Sottogruppo finale
NUMERO1|2|3|0|Numero 1 (per T: numero minimo don.)
UTENTE|1|8|0|Utente che ha registrato l'operazione UTENTE|1|8|0|Utente che ha registrato l'operazione
2 TIPOOPE|1|1|0|Tipo operazione (B=benemerenze, T=tessere complessive, S=tessere singole)
3
PROGOPE| PROGOPE|
CODSEZ+CODSOT+DATA1|X CODSEZ+CODSOT+DATA1|X
DATA1+CODSEZ+CODSOT|X

View File

@ -1,3 +1,3 @@
90 90
0 0
$soggetti|0|0|676|17|Soggetti AVIS||| $soggetti|0|16342|676|17|Soggetti AVIS|||