Patch level :

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :


git-svn-id: svn://10.65.10.50/trunk@20268 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2010-03-24 09:20:28 +00:00
parent f29c1b50d5
commit 5b35dc21d2
67 changed files with 4448 additions and 0 deletions

159
at/at4900.cpp Executable file
View File

@ -0,0 +1,159 @@
#include <mask.h>
#include <printapp.h>
#include "at4.h"
#include "atlib.h"
// nomi dei campi
#include "soggetti.h"
#include "contsan.h"
#include "idoneita.h"
class TIntSI : public TPrintapp
{
TMask* _msk;
TRelation* _rel;
int _cur;
TLocalisamfile* _contsan;
TRecord_array* _scontrolli;
TLocalisamfile* _idoneita;
TRecord_array* _sidoneita;
protected:
virtual bool user_create();
virtual bool user_destroy();
virtual bool set_print(int m);
virtual void set_page(int file, int cnt);
virtual bool preprocess_page(int file, int counter);
public:
TIntSI() {}
};
HIDDEN inline TIntSI& app() { return (TIntSI&) main_app(); }
bool TIntSI::preprocess_page(int file, int counter)
{
TDate oggi(TODAY);
bool rewrite = FALSE;
TRectype& recsog = current_cursor()->curr();
const int intsi = recsog.get_int(SOG_INTSI);
if (intsi == 110 || intsi == 120 || intsi == 180 || intsi == 320 || intsi == 360)
{
if (intsi == 110 || intsi == 120)
recsog.put(SOG_INTSI, 100);
if (intsi == 180)
recsog.put(SOG_INTSI, 160);
if (intsi == 320 || intsi == 360)
recsog.put(SOG_INTSI, 330);
const long codice = recsog.get_long(SOG_CODICE);
TRectype* keyc = new TRectype(LF_CONTSAN);
keyc->put(CON_CODICE, codice);
int err = _scontrolli->read(keyc);
TRectype* keyi = new TRectype(LF_IDONEITA);
keyi->put(IDO_CODICE, codice);
int erri = _sidoneita->read(keyi);
if ((err == NOERR || erri == NOERR) && (_scontrolli->rows() > 0 || _sidoneita->rows() > 0))
{
for (int c=1; c<=_scontrolli->rows(); c++)
{
TRectype& riga = _scontrolli->row(c, TRUE);
int intsi = riga.get_int(CON_INTSI);
if (intsi == 110 || intsi == 120)
riga.put(CON_INTSI, 100);
if (intsi == 180)
riga.put(CON_INTSI, 160);
if (intsi == 320)
riga.put(CON_INTSI, 330);
if (intsi == 360)
riga.put(CON_INTSI, 330);
}
/*
for (int r=1; r<=_sidoneita->rows(); r++)
{
TRectype& riga = _sidoneita->row(r, TRUE);
const TString16 tipoido = riga.get(IDO_TIPOIDO);
if (tipoido == "SI")
{
int intsi = riga.get_int(IDO_INTERVALLO);
if (intsi == 110 || intsi == 120)
riga.put(IDO_INTERVALLO, 100);
}
}
*/
_scontrolli->rewrite();
//_sidoneita->rewrite();
con_reord(recsog,_scontrolli, _sidoneita);
rewrite = TRUE;
}
}
if (rewrite)
{
recsog.put(SOG_UTENULTAGG, "PRASSI");
recsog.put(SOG_DATAULTAGG, oggi);
current_cursor()->file().rewrite();
}
return rewrite;
}
void TIntSI::set_page(int file, int cnt)
{
set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########"));
//set_row(1,"@10g@S", FLD(LF_SOGGETTI,SOG_COGNOME));
//set_row(1,"@36g@S", FLD(LF_SOGGETTI,SOG_NOME));
}
bool TIntSI::set_print(int)
{
KEY tasto;
tasto = _msk->run();
if (tasto == K_ENTER)
{
TRectype da(LF_SOGGETTI);
TRectype a(LF_SOGGETTI);
da.zero();
a.zero();
TString16 codsez = "10";
da.put(SOG_CODSEZ, codsez);
a.put(SOG_CODSEZ, codsez);
current_cursor()->setregion(da,a);
//current_cursor()->setfilter(format("SESSO == '1'"));
reset_files();
add_file(LF_SOGGETTI);
reset_print();
return TRUE;
}
else
return FALSE;
}
bool TIntSI::user_create()
{
_msk = new TMask("at0900a");
_rel = new TRelation(LF_SOGGETTI);
_contsan = new TLocalisamfile(LF_CONTSAN);
_scontrolli = new TRecord_array(LF_CONTSAN,CON_PROGCON);
_idoneita = new TLocalisamfile(LF_IDONEITA);
_sidoneita = new TRecord_array(LF_IDONEITA,IDO_PROGIDO);
_cur = add_cursor(new TCursor(_rel, "", 3));
long items = _rel->lfile().items();
return TRUE;
}
bool TIntSI::user_destroy()
{
delete _sidoneita;
delete _idoneita;
delete _scontrolli;
delete _contsan;
delete _rel;
delete _msk;
return TRUE;
}
int at4900(int argc, char* argv[])
{
TIntSI a;
a.run(argc, argv, "Cambio intervalli donazioni SI");
return 0;
}

14
at/at4900a.uml Executable file
View File

@ -0,0 +1,14 @@
PAGE "Cambio intervalli donazioni SI" -1 -1 78 20
TEXT -1
BEGIN
PROMPT 2 2 "Cambio intervalli donazioni SI"
END
ENDPAGE
TOOLBAR "" 0 0 0 2
#include <printbar.h>
ENDPAGE
ENDMASK

214
at/at8300.cpp Executable file
View File

@ -0,0 +1,214 @@
#include <applicat.h>
#include <mask.h>
#include <progind.h>
#include <relation.h>
#include <tabutil.h>
#include <urldefid.h>
#include "at8.h"
#include "atlib.h"
// nomi dei campi
#include "soggetti.h"
#include "donaz.h"
#include "contsan.h"
#include "idoneita.h"
#include "rconvoc.h"
class TCTDon2AT : public TApplication
{
TMask* _msk;
TRelation* _rel;
TLocalisamfile* _soggetti;
TLocalisamfile* _donaz;
TLocalisamfile* _contsan;
TLocalisamfile* _idoneita;
TRecord_array* _sdonazioni;
TRecord_array* _scontrolli;
TRecord_array* _sidoneita;
// parametri di sezione
int _intsi_f1, _intsi_f2, _intsi_m, _intaf_m, _etadonne;
int _numdon1, _numdon2;
TString16 _catini1, _catfin1, _catini2, _catfin2, _motivoid;
bool _sttess2, _dataisc, _nomessage, _autoid;
protected:
virtual bool create();
virtual bool destroy();
virtual bool menu(MENU_TAG m);
virtual TMask& get_mask() { return *_msk; }
virtual TRelation* get_relation() const { return _rel; }
int write(TSheet_field& s);
public:
TCTDon2AT() {}
};
HIDDEN inline TCTDon2AT& app() { return (TCTDon2AT&) main_app(); }
bool TCTDon2AT::create()
{
TApplication::create();
_msk = new TMask("at8300a");
_rel = new TRelation(LF_SOGGETTI);
//_rel->add("CTD", "CODTAB==CATDON",1,0,ALIAS_CTD);
_donaz = new TLocalisamfile(LF_DONAZ);
_contsan = new TLocalisamfile(LF_CONTSAN);
_idoneita = new TLocalisamfile(LF_IDONEITA);
_sdonazioni = new TRecord_array(LF_DONAZ,DON_PROGDON);
_scontrolli = new TRecord_array(LF_CONTSAN,CON_PROGCON);
_sidoneita = new TRecord_array(LF_IDONEITA,IDO_PROGIDO);
TConfig config(CONFIG_STUDIO);
_numdon1 = config.get_int("NumDon1");
_numdon2 = config.get_int("NumDon2");
_catini1 = config.get("CatIni1");
_catfin1 = config.get("CatFin1");
_catini2 = config.get("CatIni2");
_catfin2 = config.get("CatFin2");
_sttess2 = config.get_bool("StTess2");
_dataisc = config.get_bool("DataIsc");
_nomessage = config.get_bool("NoMessage");
_etadonne = config.get_int("EtaDonne");
_intsi_f1 = config.get_int("IntSI_F1");
_intsi_f2 = config.get_int("IntSI_F2");
_intsi_m = config.get_int("IntSI_M");
_intaf_m = config.get_int("IntAF_M");
dispatch_e_menu(BAR_ITEM(1));
return TRUE;
}
bool TCTDon2AT::destroy()
{
delete _sidoneita;
delete _scontrolli;
delete _sdonazioni;
delete _idoneita;
delete _contsan;
delete _donaz;
delete _rel;
delete _msk;
return TApplication::destroy();
}
bool TCTDon2AT::menu(MENU_TAG m)
{
KEY tasto = _msk->run();
if (tasto == K_ENTER)
{
_rel->lfile().setkey(1);
bool modificato = FALSE;
TDate oggi(TODAY);
TRectype recsog = _rel->curr();
TExternisamfile* f = new TExternisamfile("$appoggio");
TProgind *pi;
pi = new TProgind(f->eod(),"Acquisizione dati da CT", FALSE, TRUE, 10);
pi->setstatus(1);
for(f->first(); !f->eof(); f->next())
{
pi->addstatus(1);
const long codsog = f->get_long("CODICE");
recsog.zero();
recsog.put(SOG_CODICE, codsog);
if (recsog.read(_rel->lfile())==NOERR)
{
TRectype* key = new TRectype(LF_DONAZ);
key->put(DON_CODICE, codsog);
int err = _sdonazioni->read(key);
if (err == NOERR)
{
calcola_donazioni_lib(recsog, _sdonazioni);
_sdonazioni->rewrite();
recsog.rewrite(_rel->lfile());
TRectype* keyc = new TRectype(LF_CONTSAN);
keyc->put(CON_CODICE, codsog);
int err = _scontrolli->read(keyc);
TRectype* keyi = new TRectype(LF_IDONEITA);
keyi->put(IDO_CODICE, codsog);
err = _sidoneita->read(keyi);
con_reord(recsog,_scontrolli,_sidoneita);
recsog.rewrite(_rel->lfile());
}
TTable ctd("CTD");
TString16 catdon = recsog.get(SOG_CATDON);
const int totdon = recsog.get_int(SOG_TOTDON);
ctd.put("CODTAB",catdon);
if (ctd.read() == NOERR)
{
bool dimissione = ctd.get_bool("B0");
if (dimissione)
{
recsog.put(SOG_CATDON,ctd.get("S6"));
if (ctd.get("S6").not_empty())
catdon = ctd.get("S6");
}
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);
}
TDate dataiscsog = recsog.get_date(SOG_DATAISC);
if (!dataiscsog.ok() && _dataisc)
{
if (!recsog.get_date(SOG_DATAPRISI) == NULLDATE)
recsog.put(SOG_DATAISC,recsog.get(SOG_DATAPRISI));
else
{
const TRectype& riga = _sdonazioni->row(1);
recsog.put(SOG_DATAISC,riga.get(DON_DATADON));
}
}
const TDate dataprossi = recsog.get_date(SOG_DATAPROSSI);
const TDate dataconv = recsog.get_date(SOG_DATACONV);
const char stato = modstato_tcs(recsog.get(SOG_STATO));
const TString16 statosi = recsog.get(SOG_STATOSI);
if ((stato == 'S') || (statosi == SOSPENSIONE) || (dataprossi > dataconv) || !dataprossi.ok())
{
TLocalisamfile rconvoc(LF_RCONVOC);
rconvoc.setkey(3);
rconvoc.zero();
rconvoc.put(RCV_CODICE, recsog.get(SOG_CODICE));
rconvoc.put(RCV_DATACONV, recsog.get(SOG_DATACONV));
if (rconvoc.read() == NOERR)
{
rconvoc.put(RCV_ANNULLATO, TRUE);
int err = rconvoc.rewrite();
}
const TDate datanulla(NULLDATE);
recsog.put(SOG_DATACONV, datanulla);
recsog.put(SOG_DATAULTSOL, datanulla);
const int numzero = 0;
recsog.put(SOG_NUMCONV,numzero);
}
recsog.put(SOG_DATAULTAGG, oggi);
recsog.put(SOG_UTENULTAGG, "CT");
recsog.rewrite(_rel->lfile());
}
}
delete pi;
delete f;
}
return FALSE;
}
int TCTDon2AT::write(TSheet_field& s)
{
return NOERR;
}
int at8300(int argc, char* argv[])
{
TCTDon2AT a;
a.run(argc, argv, "Acquisizione dati da CT");
return 0;
}

13
at/at8300a.uml Executable file
View File

@ -0,0 +1,13 @@
PAGE "Acquisizione dati da CT" -1 -1 78 20
BUTTON DLG_OK 9 2
BEGIN
PROMPT -12 14 ""
END
BUTTON DLG_QUIT 9 2
BEGIN
PROMPT -22 14 ""
END
ENDPAGE
ENDMASK

147
at/at9700.cpp Executable file
View File

@ -0,0 +1,147 @@
#include "at9.h"
#include "at9600a.h"
#include <applicat.h>
#include <automask.h>
#include <progind.h>
#include <recarray.h>
#include <recset.h>
#include <relation.h>
#include "benem.h"
#include "soggetti.h"
#include "sezioni.h"
///////////////////////////////////////////////////////////
// Maschera
///////////////////////////////////////////////////////////
class TSort_benem_mask : public TAutomask
{
public:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
TSort_benem_mask();
~TSort_benem_mask();
};
bool TSort_benem_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
return true;
}
TSort_benem_mask::TSort_benem_mask() : TAutomask("at9700a")
{
}
TSort_benem_mask::~TSort_benem_mask()
{
}
///////////////////////////////////////////////////////////
// Applicazione
///////////////////////////////////////////////////////////
class TSort_benem_app : public TSkeleton_application
{
protected:
virtual void main_loop();
public:
void riordina_benemerenze(const TMask& msk) const;
};
static int compare_benem(const TObject** o1, const TObject** o2)
{
TRectype* r1 = (TRectype*)*o1;
TRectype* r2 = (TRectype*)*o2;
const TString b1(r1->get(BEN_TIPOBEN));
const TString b2(r2->get(BEN_TIPOBEN));
int b=0;
if (b1>b2) b=+1;
else
if (b1<b2) b=-1;
return b;
}
void TSort_benem_app::riordina_benemerenze(const TMask& msk) const
{
//seleziona i soggetti delle sezioni/sottosezioni selezionate
TString query;
query << "USE SOGGETTI KEY 3\n";
query << "FROM CODSEZ=#DACODSEZ CODSOT=#DACODSOT\n";
query << "TO CODSEZ=#ACODSEZ CODSOT=#ACODSOT";
TISAM_recordset soggetti(query);
const TString4 dacodsez = msk.get(F_SEZINI);
const TString4 dacodsot = msk.get(F_SOTINI);
const TString4 acodsez = msk.get(F_SEZFIN);
const TString4 acodsot = msk.get(F_SOTFIN);
soggetti.set_var("#DACODSEZ", dacodsez);
soggetti.set_var("#ACODSEZ", acodsez);
soggetti.set_var("#DACODSOT", dacodsot);
soggetti.set_var("#ACODSOT", acodsot);
//giro sui soggetti selezionati
const long items = soggetti.items();
TProgind pi(items, "Riordinamento benemerenze...", true, true);
const TRectype& rec_sog = soggetti.cursor()->curr();
for (bool ok = soggetti.move_first(); ok; ok = soggetti.move_next())
{
if (!pi.addstatus(1))
break;
//per ogni soggetto deve trovare le benemerenze, di norma ordinate alla cazzo
const long codice = rec_sog.get_long(SOG_CODICE);
TString query_benem;
query_benem << "USE BENEM\nFROM CODICE=#CODICE\nTO CODICE=#CODICE";
TISAM_recordset benemerenze(query_benem);
benemerenze.set_var("#CODICE", codice);
const long ben_items = benemerenze.items();
if (ben_items > 0)
{
//aggiunge le benemerenze ad un record_array
TRecord_array sogg_benem(LF_BENEM, BEN_PROGBEN);
TRectype rec_ben(LF_BENEM);
rec_ben.put(BEN_CODICE, codice);
/*const TRectype& rec_ben = benemerenze.cursor()->curr();
for (bool ok = benemerenze.move_first(); ok; ok = benemerenze.move_next())
{
sogg_benem.add_row(rec_ben);
}*/
sogg_benem.read(rec_ben);
//magicamente sorta il record_array!
sogg_benem.sort(compare_benem);
for (int i = 1; i <= sogg_benem.rows(); i++)
sogg_benem[i].put(BEN_PROGBEN, i);
//ancora più magicamente riscrive le benemerenze in modo ordinato!
sogg_benem.rewrite();
}
}
}
void TSort_benem_app::main_loop()
{
TSort_benem_mask m;
while (m.run() == K_ENTER)
riordina_benemerenze(m);
}
int at9700(int argc, char* argv[])
{
TSort_benem_app app;
app.run(argc, argv, TR("Riordinamento straordinario benemerenze"));
return 0;
}

11
at/at9700a.h Executable file
View File

@ -0,0 +1,11 @@
// riordinamento straordinario benemerenze
#define F_SEZINI 101
#define F_D_SEZINI 102
#define F_SOTINI 103
#define F_D_SOTINI 104
#define F_SEZFIN 105
#define F_D_SEZFIN 106
#define F_SOTFIN 107
#define F_D_SOTFIN 108

136
at/at9700a.uml Executable file
View File

@ -0,0 +1,136 @@
#include "at9700a.h"
TOOLBAR "" 0 -2 0 2
BUTTON DLG_OK 10 2
BEGIN
PROMPT -12 -11 ""
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -22 -11 ""
END
ENDPAGE
PAGE "Riordinamento straordinario benemerenze" -1 -1 78 20
GROUPBOX DLG_NULL 77 4
BEGIN
PROMPT 1 0 "Scelta sezioni"
END
STRING F_SEZINI 2
BEGIN
PROMPT 2 1 "Da "
FLAGS "U"
USE LF_SEZIONI
INPUT CODSEZ F_SEZINI
INPUT CODSOT F_SOTINI
DISPLAY "Cod.sez" CODSEZ
DISPLAY "Cod.sot." CODSOT
DISPLAY "Sezione@25" DENSEZ
DISPLAY "Sottogruppo@25" DENSOT
OUTPUT F_SEZINI CODSEZ
OUTPUT F_D_SEZINI DENSEZ
OUTPUT F_SOTINI CODSOT
OUTPUT F_D_SOTINI DENSOT
CHECKTYPE SEARCH
HELP "Codice sezione da cui partire"
END
STRING F_D_SEZINI 25
BEGIN
PROMPT 11 1 ""
FLAGS "U"
USE LF_SEZIONI KEY 2
INPUT DENSEZ F_D_SEZINI
DISPLAY "Sezione@25" DENSEZ
DISPLAY "Cod.sez" CODSEZ
DISPLAY "Sottogruppo@25" DENSOT
DISPLAY "Cod.sot." CODSOT
COPY OUTPUT F_SEZINI
CHECKTYPE NORMAL
HELP "Sezione da cui partire"
END
STRING F_SOTINI 2
BEGIN
PROMPT 2 2 " "
COPY ALL F_SEZINI
CHECKTYPE SEARCH
HELP "Codice sottogruppo da cui partire"
END
STRING F_D_SOTINI 25
BEGIN
PROMPT 11 2 ""
FLAGS "U"
COPY USE F_D_SEZINI
INPUT DENSEZ F_D_SEZINI
INPUT DENSOT F_D_SOTINI
COPY DISPLAY F_D_SEZINI
COPY OUTPUT F_D_SEZINI
CHECKTYPE NORMAL
HELP "Sottogruppo da cui partire"
END
STRING F_SEZFIN 2
BEGIN
PROMPT 41 1 "A "
FLAGS "U"
USE LF_SEZIONI
INPUT CODSEZ F_SEZFIN
INPUT CODSOT F_SOTFIN
DISPLAY "Cod.sez" CODSEZ
DISPLAY "Cod.sot." CODSOT
DISPLAY "Sezione@25" DENSEZ
DISPLAY "Sottogruppo@25" DENSOT
OUTPUT F_SEZFIN CODSEZ
OUTPUT F_D_SEZFIN DENSEZ
OUTPUT F_SOTFIN CODSOT
OUTPUT F_D_SOTFIN DENSOT
CHECKTYPE SEARCH
HELP "Codice sezione finale"
END
STRING F_D_SEZFIN 25
BEGIN
PROMPT 49 1 ""
FLAGS "U"
USE LF_SEZIONI KEY 2
INPUT DENSEZ F_D_SEZFIN
DISPLAY "Sezione@25" DENSEZ
DISPLAY "Sottogruppo@25" DENSOT
DISPLAY "Cod.sez" CODSEZ
DISPLAY "Cod.sot." CODSOT
COPY OUTPUT F_SEZFIN
CHECKTYPE NORMAL
HELP "Sezione finale"
END
STRING F_SOTFIN 2
BEGIN
PROMPT 41 2 " "
COPY ALL F_SEZFIN
CHECKTYPE SEARCH
HELP "Codice sottogruppo finale"
END
STRING F_D_SOTFIN 25
BEGIN
PROMPT 49 2 ""
FLAGS "U"
COPY USE F_D_SEZFIN
INPUT DENSEZ F_D_SEZFIN
INPUT DENSOT F_D_SOTFIN
COPY DISPLAY F_D_SEZFIN
COPY OUTPUT F_D_SEZFIN
CHECKTYPE NORMAL
HELP "Sottogruppo finale"
END
ENDPAGE
ENDMASK

842
at/at9800.cpp Executable file
View File

@ -0,0 +1,842 @@
#include <applicat.h>
#include <automask.h>
#include <progind.h>
#include <recarray.h>
#include <reprint.h>
#include <reputils.h>
#include <tabmod.h>
#include <textset.h>
#include <utility.h>
#include "contsan.h"
#include "donaz.h"
#include "idoneita.h"
#include "rconvoc.h"
#include "soggetti.h"
#include "atlib.h"
#include "at9800a.h"
////////////////////////////
// Maschera
////////////////////////////
class TImporta_ct_rn_mask : public TAutomask
{
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
TImporta_ct_rn_mask();
};
TImporta_ct_rn_mask::TImporta_ct_rn_mask() : TAutomask("at9800a")
{
}
bool TImporta_ct_rn_mask::on_field_event(TOperable_field& f, TField_event e, long jolly)
{
switch (f.dlg())
{
case F_NAME:
if (e == fe_button)
{
TArray_sheet as(-1, -1, 72, 20, TR("Selezione file"), "File@32");
TFilename path = get(F_PATH);
path.add("*.txt");
list_files(path, as.rows_array());
TFilename name;
FOR_EACH_ARRAY_ROW(as.rows_array(), i, row)
{
name = *row;
*row = name.name();
}
if (as.run() == K_ENTER)
{
f.set(as.row(as.selected()));
}
}
break;
default:
break;
}
return true;
}
////////////////////////////
// Recordset
////////////////////////////
class TImporta_ct_rn_recordset : public TAS400_recordset
{
protected:
long trova_riga(const TString& key);
public:
TDate get_date(const char* field_name) const;
TImporta_ct_rn_recordset(const TFilename& name);
};
//in base al campo decide come ricavare la data; questo perchè quei geni dell'avis producono..
//..un file con le date scritte in formato fritto misto!
TDate TImporta_ct_rn_recordset::get_date(const char* field_name) const
{
/*l'unica data scritta in modo civile è la datadon: come non detto! hanno porcato anche questa!
if (xvt_str_compare_ignoring_case(field_name, "DATADON") == 0)
return get(field_name).as_date();*/
//le altre sono scritte in modo incivile e vanno girate
const TString& str_date = get(field_name).as_string();
TDate output_date(atoi(str_date.left(2)), atoi(str_date.mid(2,2)), atoi(str_date.mid(4,4)));
return output_date;
}
TImporta_ct_rn_recordset::TImporta_ct_rn_recordset(const TFilename& name)
: TAS400_recordset(TString("AS400(180)\nSELECT * FROM ") << name)
{
create_field("COGNOME", -1, 20, _alfafld, true);
create_field("NOME", -1, 20, _alfafld, true);
create_field("DATANASC", -1, 8, _alfafld, true);
create_field("SESSO", -1, 1, _alfafld, true);
create_field("STATO", -1, 8, _alfafld, true);
create_field("DATAULTEC", -1, 8, _alfafld, false);
create_field("DATADON", -1, 8, _alfafld, true); //unica data scritta a rovescio (cioè corretta!)
create_field("TIPOPRE", -1, 8, _alfafld, true);
create_field("ANNOUNITA", -1, 4, _intfld, true);
create_field("NROUNITA", -1, 6, _intfld, true);
create_field("MOTIVOSOSP", -1, 8, _alfafld, false);
create_field("SOSPESODAL", -1, 8, _alfafld, false);
create_field("SOSPESOAL", -1, 8, _alfafld, false);
create_field("LUOGO1", -1, 8, _alfafld, false);
create_field("LUOGO2", -1, 8, _alfafld, false);
create_field("LUOGO3", -1, 8, _alfafld, true);
create_field("LUOGO4", -1, 8, _alfafld, true);
create_field("IDONEO_SI", -1, 1, _alfafld, true);
create_field("IDONEO_PL", -1, 1, _alfafld, true);
create_field("IDONEO_PI", -1, 1, _alfafld, true);
create_field("TIPO_ESAME", -1, 8, _alfafld, false);
create_field("RISULTATO", -1, 20, _alfafld, false);
}
///////////////////////////////////////
// Decodificatore
///////////////////////////////////////
//classe per la trascodifica lampo dei codici CT in quelli AT..
//..(secondo la tabella &C2A)
class TDecode_c2a : public TCache
{
protected:
virtual TObject* key2obj(const char* key);
public:
const TString& decode(const char* code, const char* prefix);
};
TObject* TDecode_c2a::key2obj(const char* key)
{
TString* str = new TString;
TModule_table tabmod("AT548C2A");
tabmod.put("CODTAB", key);
if (tabmod.read() == NOERR)
*str = tabmod.get("S6");
return str;
}
const TString& TDecode_c2a::decode(const char* code, const char* prefix)
{
TString16 key;
key << prefix << code;
key.trim();
return *(const TString*)objptr(key);
}
////////////////////////////
// Applicazione
////////////////////////////
class TImporta_ct_rn : public TSkeleton_application
{
TImporta_ct_rn_mask* _mask;
TLog_report* _log;
TDecode_c2a _c2a;
TAssoc_array _nocontrol_sezioni;
private:
virtual bool create();
virtual void main_loop();
protected:
void msg_no_sog_error(const TImporta_ct_rn_recordset& recset) const;
void msg_esame_error(const TImporta_ct_rn_recordset& recset, const TString& tipo, const bool manca) const;
void msg_stato_error(const TImporta_ct_rn_recordset& recset, const int tipo,
const TString& stato_avis = "", const TString& stato_ct = "") const;
void msg_aggiunge_qualcosa(const TRectype& curr_rec) const;
const TString& decode(const char* code, const char* prefix);
long trova_prossimo(TLocalisamfile& file, const long sog_codice) const;
public:
const TString& decode_stato(const char* code) { return decode(code, "14"); }
const TString& decode_prelievo(const char* code) { return decode(code, "19"); }
const TString& decode_esame(const char* code) { return decode(code, "32"); }
const TString& decode_luogo(const char* code) { return decode(code, "PU"); }
void aggiunge_contsan(const TImporta_ct_rn_recordset& recset, const long sog_codice);
void aggiunge_donazione(const TImporta_ct_rn_recordset& recset, const long sog_codice);
bool importa_dati(const TFilename& name);
bool controlla_stato_ct_avis(const TImporta_ct_rn_recordset& recset, const long codsog);
bool aggiorna_soggetto(const long codsog);
};
void TImporta_ct_rn::msg_no_sog_error(const TImporta_ct_rn_recordset& recset) const
{
TString error_msg;
_log->log(2, "DONATORE NON PRESENTE NEGLI ARCHIVI !");
error_msg << "Cognome: " << recset.get("COGNOME").as_string() << "\n";
error_msg << "Nome: " << recset.get("NOME").as_string() << "\n";
_log->log(0, error_msg);
error_msg.cut(0);
error_msg << "Data nascita: " << recset.get_date("DATANASC") << "\n";
error_msg << "Sesso: " << recset.get("SESSO").as_string() << "\n";
error_msg << "Stato donatore: " << recset.get("STATO").as_string() << "\n";
error_msg << "Data donazione: " << recset.get_date("DATADON") << "\n";
_log->log(0, error_msg);
error_msg.cut(0);
error_msg << "Tipo prelievo: " << recset.get("TIPOPRE").as_string() << "\n";
error_msg << "Data ultimi esami controllo: " << recset.get_date("DATAULTEC") << "\n";
_log->log(0, error_msg);
error_msg.cut(0);
error_msg << "Sospeso dal: " << recset.get_date("SOSPESODAL") << " al: " << recset.get_date("SOSPESOAL") << "\n";
error_msg << "Motivo sospensione: " << recset.get("MOTIVOSOSP").as_string() << "\n";
_log->log(0, error_msg);
error_msg.cut(0);
error_msg << " \n";
_log->log(0, error_msg);
error_msg.cut(0);
}
void TImporta_ct_rn::msg_esame_error(const TImporta_ct_rn_recordset& recset, const TString& tipo, bool manca) const
{
TString error_msg;
error_msg << tipo << " NON INSERIBILE !";
_log->log(2, error_msg);
error_msg.cut(0);
error_msg << "Data: " << recset.get_date("DATADON") << "\n";
error_msg << "Tipo: " << recset.get("TIPO_ESAME").as_string() << "\n";
if (manca)
error_msg << "Manca il codice " << tipo << " corrispondente" << "\n";
else
error_msg << tipo << " già presente !" << "\n";
_log->log(0, error_msg);
error_msg.cut(0);
error_msg << "Cognome: " << recset.get("COGNOME").as_string() << "\n";
error_msg << "Nome: " << recset.get("NOME").as_string() << "\n";
error_msg << "Data nascita: " << recset.get_date("DATANASC") << "\n";
_log->log(0, error_msg);
error_msg.cut(0);
error_msg << " \n";
_log->log(0, error_msg);
}
void TImporta_ct_rn::msg_stato_error(const TImporta_ct_rn_recordset& recset, const int tipo,
const TString& stato_avis, const TString& stato_ct) const
{
TString error_msg;
switch (tipo)
{
case 0:
error_msg << "STATO DONATORE NON PRESENTE IN TABELLA" << "\n";
error_msg << "Stato: " << recset.get("STATO").as_string() << "\n";
break;
case 1:
error_msg << "STATO DONATORE AVIS DIVERSO DA CT - VERIFICARE" << "\n";
error_msg << "- AVIS: " << stato_avis << "\n";
error_msg << "- CT: " << stato_ct << "\n";
break;
case 2:
error_msg << "SOGGETTO DICHIARATO IDONEO DAL CT SENZA TIPI DI DONAZIONE" << "\n";
break;
case 3:
error_msg << "SOGGETTO DICHIARATO DECEDUTO DA CT - VERIFICARE" << "\n";
break;
default:
break;
}
_log->log(2, error_msg);
error_msg.cut(0);
error_msg << "Cognome: " << recset.get("COGNOME").as_string() << "\n";
error_msg << "Nome: " << recset.get("NOME").as_string() << "\n";
error_msg << "Data nascita: " << recset.get_date("DATANASC") << "\n";
_log->log(0, error_msg);
error_msg.cut(0);
error_msg << " \n";
_log->log(0, error_msg);
}
//metodo per scrivere sul log le avvenute registrazioni di donazioni e controlli
void TImporta_ct_rn::msg_aggiunge_qualcosa(const TRectype& curr_rec) const
{
const bool is_donaz = curr_rec.num() == LF_DONAZ;
const char* tipo = is_donaz ? "DONAZIONE" : "ESAME";
TString msg;
msg << "INSERIMENTO " << tipo << "\n";
_log->log(2, msg);
msg.cut(0);
//data
const TDate data = is_donaz ? curr_rec.get_date(DON_DATADON) : curr_rec.get_date(CON_DATACON);
msg << "Data: " << data.string() << "\n";
//tipo
const TString& tipodon = is_donaz ? curr_rec.get(DON_TIPODON) : curr_rec.get(CON_TIPOCON);
msg << "Tipo: " << tipodon << "\n";
//luogo
if (is_donaz)
{
const TString& cod_luogo = curr_rec.get(DON_LUOGODON);
const TString& descr_luogo = cache().get("LDN", cod_luogo, "S0");
msg << "Luogo: " << cod_luogo << " - " << descr_luogo << "\n";
}
_log->log(0, msg);
msg.cut(0);
//progressivo
const int progressivo = is_donaz ? curr_rec.get_int(DON_PROGDON) : curr_rec.get_int(CON_PROGCON);
msg << "Prog. don.: " << progressivo << "\n";
//soggetto
const long codsog = is_donaz ? curr_rec.get_long(DON_CODICE) : curr_rec.get_long(CON_CODICE);
const TRectype& recsog = cache().get(LF_SOGGETTI, codsog);
msg << "Cognome: " << recsog.get(SOG_COGNOME) << "\n";
msg << "Nome: " << recsog.get(SOG_NOME) << "\n";
msg << "Data nascita: " << recsog.get_date(SOG_DATANASC) << "\n";
_log->log(0, msg);
msg.cut(0);
msg << " \n";
_log->log(0, msg);
}
//decodifica sulla tabella C2A (utilizza la classe apposita creata in precedenza)
const TString& TImporta_ct_rn::decode(const char* code, const char* prefix)
{
return _c2a.decode(code, prefix);
}
static int compare_date(const TObject** o1, const TObject** o2)
{
const TRectype& s1 = *((TRectype*)*o1);
const TRectype& s2 = *((TRectype*)*o2);
const TDate d1(s1.get(IDO_DATAIDO));
const TDate d2(s2.get(IDO_DATAIDO));
int d = d1 - d2;
return d;
}
//metodo per cercare l'ultimo record di un soggetto in un file tipo donaz e contsan
long TImporta_ct_rn::trova_prossimo(TLocalisamfile& file, const long sog_codice) const
{
long next = 1;
file.put("CODICE", sog_codice + 1); //Guy mi perdoni se non uso la macro!
int err = file.read(_isgteq);
if (err == NOERR)
err = file.read(_isprev);
else
{
if (err == _iseof)
err = file.read(_islast);
}
if (err == NOERR && file.get_long("CODICE") == sog_codice) //Mi riperdoni!
{
const int filenum = file.num(); //Qui si rischia il linciaggio...
if (filenum == LF_CONTSAN)
next += file.get_long(CON_PROGCON);
if (filenum == LF_DONAZ)
next += file.get_long(DON_PROGDON);
}
return next;
}
//confronto stato donatore avis con quello ct
bool TImporta_ct_rn::controlla_stato_ct_avis(const TImporta_ct_rn_recordset& recset, const long codsog)
{
//stato_ct = stato preso da file da importare
//stato_at = stato_ct decodificato per avis in base alla tabella di trascodifica
//stato_attuale = stato sul record del soggetto nel file dei soggetti
const TString& stato_ct = recset.get("STATO").as_string();
if (stato_ct.full())
{
const TString& stato_at = decode_stato(stato_ct);
//se non riesce a decodificare lo stato avverte ed esce
if (stato_at.blank())
msg_stato_error(recset, 0);
else
{
TLocalisamfile soggetti(LF_SOGGETTI);
soggetti.put(SOG_CODICE, codsog);
int err = soggetti.read();
if (err == NOERR) //e non possiamo aspettarci altro che NOERR, visto che il controllo lo ha già fatto prima
{
const TString& stato_attuale = soggetti.get(SOG_STATO);
//se lo stato sul record del soggetto risulta != dallo stato sul file adesso decodificato..
//..procede al casino infernale dell'allineamento stati
//Questo casino può però farlo solo nel caso la sezione ammetta controlli;in caso contrario..
//..deve semplicemente abbandonare la questione dando segnalazione dell'incongruenza tra gli..
//..stati avis e ct (incongruenza che non può essere corretta causa la proprietà della sezione).
if (stato_at != stato_attuale)
{
const TString& sog_sez = soggetti.get(SOG_CODSEZ);
const bool sez_no_controlli = _nocontrol_sezioni.is_key(sog_sez);
//controlla se la sezione ammette i controlli
if (!sez_no_controlli)
{
//verifica se deve veramente elaborare il tutto o no
//Per prima cosa verifica se lo stato comporta una idoneità/sospensione/donazionabilità
//Deve controllare sulla tabella di trascodifica il campo S7
TModule_table tabmod("AT548C2A");
TString key;
key << "14" << stato_ct;
key.trim();
tabmod.put("CODTAB", key);
TString4 i_s_d; //non è una droga, ma idoneità_sospensione_donatoreabile
if (tabmod.read() == NOERR)
i_s_d = tabmod.get("S7");
//controlla se sono state passate via file da importare una o più idoneità
const TString& ido_si = recset.get("IDONEO_SI").as_string();
const TString& ido_pl = recset.get("IDONEO_PL").as_string();
const TString& ido_pi = recset.get("IDONEO_PI").as_string();
//nessuno stato con idoneità -> salta
if (i_s_d[0] == 'I' && ido_si[0] != 'S' && ido_pl[0] != 'S' && ido_pi[0] != 'S')
msg_stato_error(recset, 2);
else
{
//giro sui contsan del soggetto
//per prima cosa cerca se già esiste un contsan in data letta dal recset
TDate datacon = recset.get_date("DATADON");
TLocalisamfile contsan(LF_CONTSAN);
contsan.setkey(2);
contsan.put(CON_DATACON, datacon);
contsan.put(CON_CODICE, codsog);
int err = contsan.read();
//se esiste deve spostare di un giorno in avanti la data del controllo da inserire
if (err == NOERR)
++datacon;
const long next_contsan = trova_prossimo(contsan, codsog);
//dopo essersi posizionato correttamente, agiunge il contsan
contsan.zero();
contsan.put(CON_CODICE, codsog);
contsan.put(CON_PROGCON, next_contsan);
contsan.put(CON_DATACON, datacon);
contsan.put(CON_TIPOCON, stato_at);
contsan.put(CON_RESPONSAB, "AGGIORNAMENTO DA CENTRO TRASF.");
//campi speciali in base a parametri allucinanti
//se il soggetto è dichiarato idoneo...
if (i_s_d[0] == 'I')
{
int ido_num = 0; //questa è da seguire perchè esempio di mentalità contorta!
TString8 nome_campo_ido;
//idoneità SI
if (ido_si[0] == 'S')
{
ido_num++;
nome_campo_ido.format("IDON%d", ido_num);
contsan.put(nome_campo_ido, "SI");
if (soggetti.get_int(SOG_INTSI) == 0)
{
if (soggetti.get_int(SOG_SESSO) == 1)
contsan.put(CON_INTSI, 94);
else
contsan.put(CON_INTSI, 180);
}
}
//idoneità PL-AF
if (ido_pl[0] == 'S')
{
ido_num++;
nome_campo_ido.format("IDON%d", ido_num);
contsan.put(nome_campo_ido, "PL");
const int intaf = soggetti.get_int(SOG_INTAF);
if (intaf == 0)
contsan.put(CON_INTAF, 30);
else
contsan.put(CON_INTAF, intaf);
}
//idoneità PI
if (ido_pi[0] == 'S')
{
ido_num++;
nome_campo_ido.format("IDON%d", ido_num);
contsan.put(nome_campo_ido, "PI");
if (contsan.get_int(CON_INTAF) == 0)
{
const int intaf = soggetti.get_int(SOG_INTAF);
if (intaf == 0)
contsan.put(CON_INTAF, 30);
else
contsan.put(CON_INTAF, intaf);
}
}
} //if (i_s_d[0] == 'I' &&...
//e alla fine della storia scrive il record!
err = contsan.write();
//comunque sia, effettua il controllo della morte del soggetto
//Ebbene si, anche se lo ha aggiornato, non si sa mai che risorga...
const bool sog_kaputt = tabmod.get_bool("B1");
if (sog_kaputt)
msg_stato_error(recset, 3);
}
}
else //if (!sez_no_controlli)...
{
msg_stato_error(recset, 1, stato_at, stato_attuale);
} ////if (!sez_no_controlli)...
} //if (stato_at != stato_attuale)...
} //if (err == NOERR)...
} //if (stato_at.blank())..
} //if (stato_ct.full())...
return true;
}
//aggiorna i files di atwin (donazioni,idoneità,controlli,soggetti) del..
//..soggetto di cui ha importato donazione o contsan
bool TImporta_ct_rn::aggiorna_soggetto(const long codsog)
{
TLocalisamfile soggetti(LF_SOGGETTI);
TRectype& recsog = soggetti.curr();
recsog.put(SOG_CODICE, codsog);
int err = soggetti.read();
//se non trova il soggetto c'è qualcosa che non quadra ed esce (impossibile)
if (err != NOERR)
return false;
//codice del soggetto in formato alfanumerico per i TRecord_array
const TString8 sog_codice = recsog.get(SOG_CODICE);
//riordino delle donazioni
TRecord_array sdonazioni(sog_codice, LF_DONAZ);
calcola_donazioni_lib(recsog, &sdonazioni);
sdonazioni.rewrite();
//riordino delle idoneità
TRecord_array sidoneita(sog_codice, LF_IDONEITA);
sidoneita.sort(compare_date);
sidoneita.rewrite();
//riordino dei controlli
TRecord_array scontrolli(sog_codice, LF_CONTSAN);
if (scontrolli.rows() > 0 || sidoneita.rows() > 0)
con_reord(recsog, &scontrolli, &sidoneita);
//riordino del soggetto
TConfig config(CONFIG_STUDIO);
const bool dataisc = config.get_bool("DataIsc");
TDate dataiscsog = recsog.get_date(SOG_DATAISC);
if (!dataiscsog.ok() && dataisc)
{
if (!recsog.get_date(SOG_DATAPRISI) == NULLDATE)
recsog.put(SOG_DATAISC, recsog.get(SOG_DATAPRISI));
else
{
const TRectype& riga = sdonazioni.row(1);
recsog.put(SOG_DATAISC, riga.get(DON_DATADON));
}
} //if (!dataiscsog.ok()...
//riordino convocazioni
const TDate dataprossi = recsog.get_date(SOG_DATAPROSSI);
const TDate dataconv = recsog.get_date(SOG_DATACONV);
const char stato = modstato_tcs(recsog.get(SOG_STATO));
const TString& statosi = recsog.get(SOG_STATOSI);
if ((stato == 'S') || (statosi == SOSPENSIONE) || (dataprossi > dataconv) || !dataprossi.ok())
{
TLocalisamfile rconvoc(LF_RCONVOC);
rconvoc.setkey(3);
rconvoc.zero();
rconvoc.put(RCV_CODICE, recsog.get(SOG_CODICE));
rconvoc.put(RCV_DATACONV, recsog.get(SOG_DATACONV));
if (rconvoc.read() == NOERR)
{
rconvoc.put(RCV_ANNULLATO, TRUE);
rconvoc.write();
}
recsog.zero(SOG_DATACONV);
recsog.zero(SOG_DATAULTSOL);
recsog.zero(SOG_NUMCONV);
} //if(stato=='S'...
recsog.put(SOG_DATAULTAGG, TDate(TODAY));
recsog.put(SOG_UTENULTAGG, "CONVE");
//e alla fine riscrive il file dei soggetti
soggetti.rewrite();
return true;
}
void TImporta_ct_rn::aggiunge_contsan(const TImporta_ct_rn_recordset& recset, const long sog_codice)
{
//cerca, per il soggetto in questione, quale è l'ultimo controllo sanitario e aggiunge quello nuovo
TLocalisamfile contsan(LF_CONTSAN);
const long next_contsan = trova_prossimo(contsan, sog_codice);
//dopo essersi posizionato correttamente, agiunge il contsan
contsan.zero();
contsan.put(CON_CODICE, sog_codice);
contsan.put(CON_PROGCON, next_contsan);
const TDate& dataesame = recset.get_date("DATADON");
contsan.put(CON_DATACON, dataesame);
const TString& tipopre = decode_prelievo(recset.get("TIPOPRE").as_string());
contsan.put(CON_TIPOCON, tipopre);
contsan.put(CON_RESPONSAB, "AGGIORNAMENTO DA CENTRO TRASF.");
int err = contsan.write();
//se riesce a scrivere il nuovo contsan, aggiorna il log ed il soggetto
if (err == NOERR)
msg_aggiunge_qualcosa(contsan.curr());
}
void TImporta_ct_rn::aggiunge_donazione(const TImporta_ct_rn_recordset& recset, const long sog_codice)
{
//cerca, per il soggetto in questione, quale è l'ultima donazione e aggiunge quella nuova
TLocalisamfile donaz(LF_DONAZ);
const long next_donaz = trova_prossimo(donaz, sog_codice);
//dopo essersi posizionato correttamente, agiunge la donazione
donaz.zero();
donaz.put(DON_CODICE, sog_codice);
donaz.put(DON_PROGDON, next_donaz);
const TDate& dataesame = recset.get_date("DATADON");
donaz.put(DON_DATADON, dataesame);
const TString& tipopre = decode_prelievo(recset.get("TIPOPRE").as_string());
donaz.put(DON_TIPODON, tipopre);
const int unita = recset.get("NROUNITA").as_int();
donaz.put(DON_ETICHETTA, unita);
//controllo soggetto-sezione-sottosezione
TLocalisamfile soggetti(LF_SOGGETTI);
soggetti.put(SOG_CODICE, sog_codice);
int err = soggetti.read();
if (err == NOERR) //dovrebbe esserlo sempre, perchè il controllo è stato fatto all'inizio di elabora
{
const TString& codsez = soggetti.get(SOG_CODSEZ);
donaz.put(DON_CODSEZ, codsez);
const TString& codsot = soggetti.get(SOG_CODSOT);
donaz.put(DON_CODSOT, codsot);
}
//caso della prima donazione (donatore vergine e martire)
if (next_donaz == 1 && soggetti.get_int(SOG_DONPRECSI) == 0 && soggetti.get_int(SOG_DONPRECAF) == 0)
donaz.put(DON_PRIMADON, 'X');
//controllo del luogo donazione
const TString& luogodon2 = decode_luogo(recset.get("LUOGO2").as_string());
if (luogodon2.full())
donaz.put(DON_LUOGODON, luogodon2);
else
{
const TString& luogodon4 = decode_luogo(recset.get("LUOGO4").as_string());
if (luogodon4.full())
donaz.put(DON_LUOGODON, luogodon4);
else
donaz.put(DON_LUOGODON, "1A");
}
err = donaz.write();
//se riesce a scrivere la nuova donazione, aggiorna il log ed il soggetto
if (err == NOERR)
msg_aggiunge_qualcosa(donaz.curr());
}
bool TImporta_ct_rn::importa_dati(const TFilename& name)
{
//lista sezioni senza controlli (viene riempita una volta per tutte all'inizio)
//è qui e non nella create perchè dopo una esecuzione del programma si potrebbe modificare..
//..la lista delle sezioni (non capita da 15 anni, però non si sa mai...)
TSheet_field& sf_nocontrol_sez = _mask->sfield(F_SEZIONI);
const int righe_sheet = sf_nocontrol_sez.items();
FOR_EACH_SHEET_ROW(sf_nocontrol_sez, i, row)
{
TString4 sh_sezione = row->get(0);
_nocontrol_sezioni.add(sh_sezione, sh_sezione);
}
//recordset di importazione
TImporta_ct_rn_recordset recset(name);
TLocalisamfile soggetti(LF_SOGGETTI);
soggetti.setkey(2);
TProgind pi(recset.items(), TR("Importazione dati da file..."), true, true);
for (bool ok = recset.move_first(); ok; ok = recset.move_next())
{
if (!pi.addstatus(1))
break;
//ciclo di importazione e controllo dati
//va ricavato dalla procedura foxprow dacentro.prg
//CONTROLLO ESISTENZA DEL SOGGETTO
//--------------------------------
TString80 sog_cognome = recset.get("COGNOME").as_string();
sog_cognome.trim();
TString80 sog_nome = recset.get("NOME").as_string();
sog_nome.trim();
TDate sog_datanasc = recset.get_date("DATANASC");
//cerca il soggetto nel file dei soggetti
soggetti.put(SOG_COGNOME, sog_cognome);
soggetti.put(SOG_NOME, sog_nome);
soggetti.put(SOG_DATANASC, sog_datanasc);
int err = soggetti.read();
//se trova il soggetto in anagrafica parte con l'elaborazione...
if (err == NOERR)
{
const long sog_codice = soggetti.get_long(SOG_CODICE);
//controllo il tipo di prelievo nella tabella di modulo avis C2A
//il tipoprelievo è nella subtabella 19
const TString& at_tipopre = decode_prelievo(recset.get("TIPOPRE").as_string());
//ESAMI E CONTROLLI SANITARI
//--------------------------
//se il tipoprelievo è in realtà un esame..
if (at_tipopre == "****")
{
//controlla se la sez del soggetto rifiuta i controlli (lista sezioni sullo sheet)
const TString& sog_sez = soggetti.get(SOG_CODSEZ);
const bool sez_no_controlli = _nocontrol_sezioni.is_key(sog_sez);
//se la sezione ammette i controlli
if (!sez_no_controlli)
{
const TString& at_tipoesame = decode_esame(recset.get("TIPO_ESAME").as_string());
//se non c'è una decodifica dell'esame avverte sul log
if (at_tipoesame.blank())
msg_esame_error(recset, "CONTROLLO", true);
else
//controlla se l'esame (detto controllo sanitario in gergo vampiresco) è già stato..
//..inserito oppure lo aggiunge al file dei controlli sanitari
{
const TDate& datadon = recset.get_date("DATADON");
TLocalisamfile contsan(LF_CONTSAN);
contsan.setkey(2);
contsan.put(CON_DATACON, datadon);
contsan.put(CON_CODICE, sog_codice);
err = contsan.read();
//se trova il controllo nella lista segnala che esiste già..
if (err == NOERR)
msg_esame_error(recset, "CONTROLLO", false);
else //sennò aggiunge il controllo sanitario..olè!
{
aggiunge_contsan(recset, sog_codice);
}
}
} //if(!sez_no_controlli...
} //if(at_tipopre=="**..
//DONAZIONI
//---------
else
{
//se non c'è una decodifica della donazione avverte sul log
if (at_tipopre.blank())
msg_esame_error(recset, "DONAZIONE", true);
else
{
const TDate& datadon = recset.get_date("DATADON");
const long sog_codice = soggetti.get_long(SOG_CODICE);
TLocalisamfile donaz(LF_DONAZ);
donaz.setkey(2);
donaz.put(DON_DATADON, datadon);
donaz.put(DON_CODICE, sog_codice);
err = donaz.read();
//se trova la donazione nella lista segnala che esiste già..
if (err == NOERR)
msg_esame_error(recset, "DONAZIONE", false);
else //sennò aggiunge la donazione..olè!
{
aggiunge_donazione(recset, sog_codice);
}
} //else di if (at_tipopre.blank())
} //else di if(at_tipopre=="**
//indipendentemente da ogni cosa controlla contsan avis/ct per lo stato donatore
controlla_stato_ct_avis(recset, sog_codice);
//aggiorna tutti i files legati al soggetto
aggiorna_soggetto(sog_codice);
}
else //if(err==NOERR)...se non trova il soggetto lo deve aggiungere? Per adesso si incazza e avverte l'operatore
msg_no_sog_error(recset);
} //for (bool ok = recset.move_first...
return true;
}
void TImporta_ct_rn::main_loop()
{
_mask = new TImporta_ct_rn_mask;
if (_mask->run() == K_ENTER)
{
//ricava il nome del file da importare
TFilename name = _mask->get(F_PATH);
name.add(_mask->get(F_NAME));
//crea il log di importazione
_log = new TLog_report("SEGNALAZIONI IMPORTAZIONE");
//importazione dati ed elaborazione soggetti
if (importa_dati(name))
{
const int items = _log->recordset()->items();
if (items > 0)
_log->preview();
message_box(TR("Importazione file completata"));
}
delete _log;
_log = NULL;
}
delete _mask;
_mask = NULL;
}
bool TImporta_ct_rn::create()
{
return TSkeleton_application::create();
}
int at9800(int argc, char* argv[])
{
TImporta_ct_rn app;
app.run(argc, argv, "Importazione da CT Rimini");
return 0;
}

8
at/at9800a.h Executable file
View File

@ -0,0 +1,8 @@
//campi maschera at9800a.uml
#define F_PATH 201
#define F_NAME 202
#define F_SEZIONI 203
#define SF_CODSEZ 101
#define SF_DESCR 102

98
at/at9800a.uml Executable file
View File

@ -0,0 +1,98 @@
#include "at9800a.h"
PAGE "Importazione da CT - Rimini" -1 -1 80 13
GROUPBOX DLG_NULL 76 4
BEGIN
PROMPT 1 1 "@bfile da importare"
END
STRING F_PATH 256 60
BEGIN
PROMPT 2 2 "Cartella "
DSELECT
FLAGS "M"
CHECKTYPE REQUIRED
END
STRING F_NAME 12
BEGIN
PROMPT 2 3 "File (*.txt)"
FLAGS "B"
CHECKTYPE REQUIRED
END
TEXT DLG_NULL
BEGIN
PROMPT 2 5 "@bSezioni che non importano i controlli"
END
SPREADSHEET F_SEZIONI -1 5
BEGIN
PROMPT 2 6 "@bSezioni"
ITEM "Codice"
ITEM "Descrizione@50"
END
STRING DLG_PROFILE 256 60
BEGIN
PROMPT 2 -1 "Profilo "
PSELECT
END
ENDPAGE
TOOLBAR "" 0 0 0 2
#include <stdbar.h>
ENDPAGE
ENDMASK
//maschera di riga
PAGE "Sezione" -1 -1 78 8
STRING SF_CODSEZ 2
BEGIN
PROMPT 1 1 "Codice "
USE LF_SEZIONI
CHECKTYPE REQUIRED
INPUT CODSEZ SF_CODSEZ
DISPLAY "Codice" CODSEZ
DISPLAY "Descrizione@25" DENSEZ
OUTPUT SF_CODSEZ CODSEZ
OUTPUT SF_DESCR DENSEZ
FLAGS "UZ"
END
STRING SF_DESCR 50
BEGIN
PROMPT 1 3 "Descrizione "
USE LF_SEZIONI KEY 2
INPUT S0 SF_DESCR
DISPLAY "Descrizione@50" DENSEZ
DISPLAY "Codice" CODSEZ
COPY OUTPUT SF_CODSEZ
END
ENDPAGE
TOOLBAR "topbar" 0 0 0 2
BUTTON DLG_OK 10 2
BEGIN
PROMPT -13 -1 ""
END
BUTTON DLG_DELREC 10 2
BEGIN
PROMPT -23 -1 ""
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -33 -1 ""
END
ENDPAGE
ENDMASK

47
at/atstctd.rep Executable file
View File

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8" ?>
<report libraries="atstctd" name="atstctd" lpi="6">
<font face="Courier New" size="10" />
<section type="Head">
<field type="Testo" valign="center" align="center" width="96" height="2" text="Tabella categorie donatori">
<font face="Courier New" bold="1" size="14" />
</field>
<field border="2" x="1" y="2.5" type="Linea" width="93" height="0" />
<field x="2" y="3" type="Testo" width="10" text="Codice">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="16" y="3" type="Testo" width="12" text="Descrizione">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="68" y="3" type="Testo" width="12" text="Dimissione">
<font face="Courier New" bold="1" size="10" />
</field>
<field border="2" x="1" y="4.5" type="Linea" width="93" height="0" />
</section>
<section type="Head" level="1" />
<section type="Body" />
<section type="Body" level="1">
<field x="2" type="Stringa" link="CTD.CODTAB" width="13">
<source>CODTAB</source>
</field>
<field x="16" type="Stringa" width="50">
<source>S0</source>
</field>
<field x="69" type="Stringa" align="right" width="2">
<source>B0</source>
</field>
</section>
<section type="Foot" height="3">
<field border="2" x="1" y="0.5" type="Linea" width="93" height="0" />
<field x="2" y="1" type="Data" width="10">
<source>#SYSTEM.DATE</source>
</field>
<field x="90" y="1" type="Numero" align="right" width="3">
<source>#PAGE</source>
</field>
<field border="2" x="1" y="2.5" type="Linea" width="93" height="0" />
</section>
<section type="Foot" level="1" />
<sql>USE CTD
FROM CODTAB=#FROM
TO CODTAB=#TO</sql>
</report>

36
at/atstctd.uml Executable file
View File

@ -0,0 +1,36 @@
#include "ba3200.h"
TOOLBAR "topbar" 0 0 0 2
#include <printbar.h>
ENDPAGE
PAGE "Stampa tabella categorie donatori" 0 2 0 0
STRING F_INIZIO1 3
BEGIN
PROMPT 2 1 "Da codice "
FLAGS "UZ"
FIELD FROM
USE CTD
INPUT CODTAB F_INIZIO1
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_INIZIO1 CODTAB
GROUP 1
END
STRING F_FINE1 3
BEGIN
PROMPT 20 1 "A codice "
FLAGS "UZ"
FIELD TO
COPY USE F_INIZIO1
INPUT CODTAB F_FINE1
COPY DISPLAY F_INIZIO1
OUTPUT F_FINE1 CODTAB
GROUP 2
END
ENDPAGE
ENDMASK

41
at/atstctn.rep Executable file
View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8" ?>
<report libraries="atstctn" name="atstctn" lpi="6">
<font face="Courier New" size="10" />
<section type="Head">
<field type="Testo" valign="center" align="center" width="96" height="2" text="Tabella categorie NON donatori">
<font face="Courier New" bold="1" size="14" />
</field>
<field border="2" x="1" y="2.5" type="Linea" width="93" height="0" />
<field x="2" y="3" type="Testo" width="10" text="Codice">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="16" y="3" type="Testo" width="12" text="Descrizione">
<font face="Courier New" bold="1" size="10" />
</field>
<field border="2" x="1" y="4.5" type="Linea" width="93" height="0" />
</section>
<section type="Head" level="1" />
<section type="Body" />
<section type="Body" level="1">
<field x="2" type="Stringa" link="CTN.CODTAB" width="13">
<source>CODTAB</source>
</field>
<field x="16" type="Stringa" width="50">
<source>S0</source>
</field>
</section>
<section type="Foot" height="3">
<field border="2" x="1" y="0.5" type="Linea" width="93" height="0" />
<field x="2" y="1" type="Data" width="10">
<source>#SYSTEM.DATE</source>
</field>
<field x="90" y="1" type="Numero" align="right" width="3">
<source>#PAGE</source>
</field>
<field border="2" x="1" y="2.5" type="Linea" width="93" height="0" />
</section>
<section type="Foot" level="1" />
<sql>USE CTN
FROM CODTAB=#FROM
TO CODTAB=#TO</sql>
</report>

36
at/atstctn.uml Executable file
View File

@ -0,0 +1,36 @@
#include "ba3200.h"
TOOLBAR "topbar" 0 0 0 2
#include <printbar.h>
ENDPAGE
PAGE "Stampa tabella categorie NON donatori" 0 2 0 0
STRING F_INIZIO1 3
BEGIN
PROMPT 2 1 "Da codice "
FLAGS "UZ"
FIELD FROM
USE CTN
INPUT CODTAB F_INIZIO1
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_INIZIO1 CODTAB
GROUP 1
END
STRING F_FINE1 3
BEGIN
PROMPT 20 1 "A codice "
FLAGS "UZ"
FIELD TO
COPY USE F_INIZIO1
INPUT CODTAB F_FINE1
COPY DISPLAY F_INIZIO1
OUTPUT F_FINE1 CODTAB
GROUP 2
END
ENDPAGE
ENDMASK

41
at/atstgaz.rep Executable file
View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8" ?>
<report libraries="atstgaz" name="atstgaz" lpi="6">
<font face="Courier New" size="10" />
<section type="Head">
<field type="Testo" valign="center" align="center" width="96" height="2" text="Tabella gruppi aziendali">
<font face="Courier New" bold="1" size="14" />
</field>
<field border="2" x="1" y="2.5" type="Linea" width="93" height="0" />
<field x="2" y="3" type="Testo" width="10" text="Codice">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="16" y="3" type="Testo" width="12" text="Descrizione">
<font face="Courier New" bold="1" size="10" />
</field>
<field border="2" x="1" y="4.5" type="Linea" width="93" height="0" />
</section>
<section type="Head" level="1" />
<section type="Body" />
<section type="Body" level="1">
<field x="2" type="Stringa" link="GAZ.CODTAB" width="13">
<source>CODTAB</source>
</field>
<field x="16" type="Stringa" width="50">
<source>S0</source>
</field>
</section>
<section type="Foot" height="3">
<field border="2" x="1" y="0.5" type="Linea" width="93" height="0" />
<field x="2" y="1" type="Data" width="10">
<source>#SYSTEM.DATE</source>
</field>
<field x="90" y="1" type="Numero" align="right" width="3">
<source>#PAGE</source>
</field>
<field border="2" x="1" y="2.5" type="Linea" width="93" height="0" />
</section>
<section type="Foot" level="1" />
<sql>USE GAZ
FROM CODTAB=#FROM
TO CODTAB=#TO</sql>
</report>

36
at/atstgaz.uml Executable file
View File

@ -0,0 +1,36 @@
#include "ba3200.h"
TOOLBAR "topbar" 0 0 0 2
#include <printbar.h>
ENDPAGE
PAGE "Stampa tabella gruppi aziendali" 0 2 0 0
STRING F_INIZIO1 3
BEGIN
PROMPT 2 1 "Da codice "
FLAGS "UZ"
FIELD FROM
USE GAZ
INPUT CODTAB F_INIZIO1
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_INIZIO1 CODTAB
GROUP 1
END
STRING F_FINE1 3
BEGIN
PROMPT 20 1 "A codice "
FLAGS "UZ"
FIELD TO
COPY USE F_INIZIO1
INPUT CODTAB F_FINE1
COPY DISPLAY F_INIZIO1
OUTPUT F_FINE1 CODTAB
GROUP 2
END
ENDPAGE
ENDMASK

60
at/atstlcp.rep Executable file
View File

@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8" ?>
<report libraries="atstlcp" name="atstlcp" lpi="6">
<font face="Courier New" size="10" />
<section type="Head">
<field type="Testo" valign="center" align="center" width="96" height="2" text="Tabella localit&#E0; postali">
<font face="Courier New" bold="1" size="14" />
</field>
<field border="2" x="1" y="2.5" type="Linea" width="93" height="0" />
<field x="2" y="3" type="Testo" width="10" text="Codice">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="16" y="3" type="Testo" width="25" text="Denominazione localit&#E0;">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="67" y="3" type="Testo" align="right" width="5" text="CAP">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="16" y="4" type="Testo" width="8" text="Comune">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="67" y="4" type="Testo" width="10" text="Provincia">
<font face="Courier New" bold="1" size="10" />
</field>
<field border="2" x="1" y="5.5" type="Linea" width="93" height="0" />
</section>
<section type="Head" level="1" />
<section type="Body" />
<section type="Body" level="1">
<field x="2" type="Stringa" link="LCP.CODTAB" width="13">
<source>CODTAB</source>
</field>
<field x="16" type="Stringa" width="50">
<source>S0</source>
</field>
<field x="67" type="Numero" align="right" width="5">
<source>S6</source>
</field>
<field x="16" y="1" type="Stringa" width="50">
<source>COMUNI.DENCOM</source>
</field>
<field x="67" y="1" type="Stringa" width="5" pattern="1">
<source>COMUNI.PROVCOM</source>
</field>
</section>
<section type="Foot" height="3">
<field border="2" x="1" y="0.5" type="Linea" width="93" height="0" />
<field x="2" y="1" type="Data" width="10">
<source>#SYSTEM.DATE</source>
</field>
<field x="90" y="1" type="Numero" align="right" width="3">
<source>#PAGE</source>
</field>
<field border="2" x="1" y="2.5" type="Linea" width="93" height="0" />
</section>
<section type="Foot" level="1" />
<sql>USE LCP
JOIN COMUNI INTO COM=S7
FROM CODTAB=#FROM
TO CODTAB=#TO</sql>
</report>

36
at/atstlcp.uml Executable file
View File

@ -0,0 +1,36 @@
#include "ba3200.h"
TOOLBAR "topbar" 0 0 0 2
#include <printbar.h>
ENDPAGE
PAGE "Stampa tabella localita' postali" 0 2 0 0
STRING F_INIZIO1 3
BEGIN
PROMPT 2 1 "Da codice "
FLAGS "UZ"
FIELD FROM
USE LCP
INPUT CODTAB F_INIZIO1
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_INIZIO1 CODTAB
GROUP 1
END
STRING F_FINE1 3
BEGIN
PROMPT 20 1 "A codice "
FLAGS "UZ"
FIELD TO
COPY USE F_INIZIO1
INPUT CODTAB F_FINE1
COPY DISPLAY F_INIZIO1
OUTPUT F_FINE1 CODTAB
GROUP 2
END
ENDPAGE
ENDMASK

41
at/atstldl.rep Executable file
View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8" ?>
<report libraries="atstldl" name="atstldl" lpi="6">
<font face="Courier New" size="10" />
<section type="Head">
<field type="Testo" valign="center" align="center" width="96" height="2" text="Tabella luoghi di lavoro">
<font face="Courier New" bold="1" size="14" />
</field>
<field border="2" x="1" y="2.5" type="Linea" width="93" height="0" />
<field x="2" y="3" type="Testo" width="10" text="Codice">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="16" y="3" type="Testo" width="12" text="Descrizione">
<font face="Courier New" bold="1" size="10" />
</field>
<field border="2" x="1" y="4.5" type="Linea" width="93" height="0" />
</section>
<section type="Head" level="1" />
<section type="Body" />
<section type="Body" level="1">
<field x="2" type="Stringa" link="LDL.CODTAB" width="13">
<source>CODTAB</source>
</field>
<field x="16" type="Stringa" width="50">
<source>S0</source>
</field>
</section>
<section type="Foot" height="3">
<field border="2" x="1" y="0.5" type="Linea" width="93" height="0" />
<field x="2" y="1" type="Data" width="10">
<source>#SYSTEM.DATE</source>
</field>
<field x="90" y="1" type="Numero" align="right" width="3">
<source>#PAGE</source>
</field>
<field border="2" x="1" y="2.5" type="Linea" width="93" height="0" />
</section>
<section type="Foot" level="1" />
<sql>USE LDL
FROM CODTAB=#FROM
TO CODTAB=#TO</sql>
</report>

36
at/atstldl.uml Executable file
View File

@ -0,0 +1,36 @@
#include "ba3200.h"
TOOLBAR "topbar" 0 0 0 2
#include <printbar.h>
ENDPAGE
PAGE "Stampa tabella luoghi di lavoro" 0 2 0 0
STRING F_INIZIO1 3
BEGIN
PROMPT 2 1 "Da codice "
FLAGS "UZ"
FIELD FROM
USE LDL
INPUT CODTAB F_INIZIO1
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_INIZIO1 CODTAB
GROUP 1
END
STRING F_FINE1 3
BEGIN
PROMPT 20 1 "A codice "
FLAGS "UZ"
FIELD TO
COPY USE F_INIZIO1
INPUT CODTAB F_FINE1
COPY DISPLAY F_INIZIO1
OUTPUT F_FINE1 CODTAB
GROUP 2
END
ENDPAGE
ENDMASK

41
at/atstldn.rep Executable file
View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8" ?>
<report libraries="atstldn" name="atstldn" lpi="6">
<font face="Courier New" size="10" />
<section type="Head">
<field type="Testo" valign="center" align="center" width="96" height="2" text="Tabella punti di prelievo">
<font face="Courier New" bold="1" size="14" />
</field>
<field border="2" x="1" y="2.5" type="Linea" width="93" height="0" />
<field x="2" y="3" type="Testo" width="10" text="Codice">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="16" y="3" type="Testo" width="12" text="Descrizione">
<font face="Courier New" bold="1" size="10" />
</field>
<field border="2" x="1" y="4.5" type="Linea" width="93" height="0" />
</section>
<section type="Head" level="1" />
<section type="Body" />
<section type="Body" level="1">
<field x="2" type="Stringa" link="LDN.CODTAB" width="13">
<source>CODTAB</source>
</field>
<field x="16" type="Stringa" width="50">
<source>S0</source>
</field>
</section>
<section type="Foot" height="3">
<field border="2" x="1" y="0.5" type="Linea" width="93" height="0" />
<field x="2" y="1" type="Data" width="10">
<source>#SYSTEM.DATE</source>
</field>
<field x="90" y="1" type="Numero" align="right" width="3">
<source>#PAGE</source>
</field>
<field border="2" x="1" y="2.5" type="Linea" width="93" height="0" />
</section>
<section type="Foot" level="1" />
<sql>USE LDN
FROM CODTAB=#FROM
TO CODTAB=#TO</sql>
</report>

36
at/atstldn.uml Executable file
View File

@ -0,0 +1,36 @@
#include "ba3200.h"
TOOLBAR "topbar" 0 0 0 2
#include <printbar.h>
ENDPAGE
PAGE "Stampa tabella punti di prelievo" 0 2 0 0
STRING F_INIZIO1 3
BEGIN
PROMPT 2 1 "Da codice "
FLAGS "UZ"
FIELD FROM
USE LDN
INPUT CODTAB F_INIZIO1
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_INIZIO1 CODTAB
GROUP 1
END
STRING F_FINE1 3
BEGIN
PROMPT 20 1 "A codice "
FLAGS "UZ"
FIELD TO
COPY USE F_INIZIO1
INPUT CODTAB F_FINE1
COPY DISPLAY F_INIZIO1
OUTPUT F_FINE1 CODTAB
GROUP 2
END
ENDPAGE
ENDMASK

41
at/atstmtc.rep Executable file
View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8" ?>
<report libraries="atstmtc" name="atstmtc" lpi="6">
<font face="Courier New" size="10" />
<section type="Head">
<field type="Testo" valign="center" align="center" width="96" height="2" text="Tabella motivi per controlli">
<font face="Courier New" bold="1" size="14" />
</field>
<field border="2" x="1" y="2.5" type="Linea" width="93" height="0" />
<field x="2" y="3" type="Testo" width="10" text="Codice">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="16" y="3" type="Testo" width="12" text="Descrizione">
<font face="Courier New" bold="1" size="10" />
</field>
<field border="2" x="1" y="4.5" type="Linea" width="93" height="0" />
</section>
<section type="Head" level="1" />
<section type="Body" />
<section type="Body" level="1">
<field x="2" type="Stringa" link="MTC.CODTAB" width="13">
<source>CODTAB</source>
</field>
<field x="16" type="Stringa" width="50">
<source>S0</source>
</field>
</section>
<section type="Foot" height="3">
<field border="2" x="1" y="0.5" type="Linea" width="93" height="0" />
<field x="2" y="1" type="Data" width="10">
<source>#SYSTEM.DATE</source>
</field>
<field x="90" y="1" type="Numero" align="right" width="3">
<source>#PAGE</source>
</field>
<field border="2" x="1" y="2.5" type="Linea" width="93" height="0" />
</section>
<section type="Foot" level="1" />
<sql>USE MTC
FROM CODTAB=#FROM
TO CODTAB=#TO</sql>
</report>

36
at/atstmtc.uml Executable file
View File

@ -0,0 +1,36 @@
#include "ba3200.h"
TOOLBAR "topbar" 0 0 0 2
#include <printbar.h>
ENDPAGE
PAGE "Stampa tabella motivi per controlli" 0 2 0 0
STRING F_INIZIO1 3
BEGIN
PROMPT 2 1 "Da codice "
FLAGS "UZ"
FIELD FROM
USE MTC
INPUT CODTAB F_INIZIO1
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_INIZIO1 CODTAB
GROUP 1
END
STRING F_FINE1 3
BEGIN
PROMPT 20 1 "A codice "
FLAGS "UZ"
FIELD TO
COPY USE F_INIZIO1
INPUT CODTAB F_FINE1
COPY DISPLAY F_INIZIO1
OUTPUT F_FINE1 CODTAB
GROUP 2
END
ENDPAGE
ENDMASK

41
at/atstprf.rep Executable file
View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8" ?>
<report libraries="atstprf" name="atstprf" lpi="6">
<font face="Courier New" size="10" />
<section type="Head">
<field type="Testo" valign="center" align="center" width="96" height="2" text="Tabella professioni">
<font face="Courier New" bold="1" size="14" />
</field>
<field border="2" x="1" y="2.5" type="Linea" width="93" height="0" />
<field x="2" y="3" type="Testo" width="10" text="Codice">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="16" y="3" type="Testo" width="12" text="Descrizione">
<font face="Courier New" bold="1" size="10" />
</field>
<field border="2" x="1" y="4.5" type="Linea" width="93" height="0" />
</section>
<section type="Head" level="1" />
<section type="Body" />
<section type="Body" level="1">
<field x="2" type="Stringa" link="PRF.CODTAB" width="13">
<source>CODTAB</source>
</field>
<field x="16" type="Stringa" width="50">
<source>S0</source>
</field>
</section>
<section type="Foot" height="3">
<field border="2" x="1" y="0.5" type="Linea" width="93" height="0" />
<field x="2" y="1" type="Data" width="10">
<source>#SYSTEM.DATE</source>
</field>
<field x="90" y="1" type="Numero" align="right" width="3">
<source>#PAGE</source>
</field>
<field border="2" x="1" y="2.5" type="Linea" width="93" height="0" />
</section>
<section type="Foot" level="1" />
<sql>USE PRF
FROM CODTAB=#FROM
TO CODTAB=#TO</sql>
</report>

36
at/atstprf.uml Executable file
View File

@ -0,0 +1,36 @@
#include "ba3200.h"
TOOLBAR "topbar" 0 0 0 2
#include <printbar.h>
ENDPAGE
PAGE "Stampa tabella professioni" 0 2 0 0
STRING F_INIZIO1 3
BEGIN
PROMPT 2 1 "Da codice "
FLAGS "UZ"
FIELD FROM
USE PRF
INPUT CODTAB F_INIZIO1
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_INIZIO1 CODTAB
GROUP 1
END
STRING F_FINE1 3
BEGIN
PROMPT 20 1 "A codice "
FLAGS "UZ"
FIELD TO
COPY USE F_INIZIO1
INPUT CODTAB F_FINE1
COPY DISPLAY F_INIZIO1
OUTPUT F_FINE1 CODTAB
GROUP 2
END
ENDPAGE
ENDMASK

41
at/atstscs.rep Executable file
View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8" ?>
<report libraries="atstscs" name="atstscs" lpi="6">
<font face="Courier New" size="10" />
<section type="Head">
<field type="Testo" valign="center" align="center" width="96" height="2" text="Tabella singoli controlli sanitari">
<font face="Courier New" bold="1" size="14" />
</field>
<field border="2" x="1" y="2.5" type="Linea" width="93" height="0" />
<field x="2" y="3" type="Testo" width="10" text="Codice">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="16" y="3" type="Testo" width="12" text="Descrizione">
<font face="Courier New" bold="1" size="10" />
</field>
<field border="2" x="1" y="4.5" type="Linea" width="93" height="0" />
</section>
<section type="Head" level="1" />
<section type="Body" />
<section type="Body" level="1">
<field x="2" type="Stringa" link="SCS.CODTAB" width="13">
<source>CODTAB</source>
</field>
<field x="16" type="Stringa" width="50">
<source>S0</source>
</field>
</section>
<section type="Foot" height="3">
<field border="2" x="1" y="0.5" type="Linea" width="93" height="0" />
<field x="2" y="1" type="Data" width="10">
<source>#SYSTEM.DATE</source>
</field>
<field x="90" y="1" type="Numero" align="right" width="3">
<source>#PAGE</source>
</field>
<field border="2" x="1" y="2.5" type="Linea" width="93" height="0" />
</section>
<section type="Foot" level="1" />
<sql>USE SCS
FROM CODTAB=#FROM
TO CODTAB=#TO</sql>
</report>

36
at/atstscs.uml Executable file
View File

@ -0,0 +1,36 @@
#include "ba3200.h"
TOOLBAR "topbar" 0 0 0 2
#include <printbar.h>
ENDPAGE
PAGE "Stampa tabella singoli controlli sanitari" 0 2 0 0
STRING F_INIZIO1 3
BEGIN
PROMPT 2 1 "Da codice "
FLAGS "UZ"
FIELD FROM
USE SCS
INPUT CODTAB F_INIZIO1
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_INIZIO1 CODTAB
GROUP 1
END
STRING F_FINE1 3
BEGIN
PROMPT 20 1 "A codice "
FLAGS "UZ"
FIELD TO
COPY USE F_INIZIO1
INPUT CODTAB F_FINE1
COPY DISPLAY F_INIZIO1
OUTPUT F_FINE1 CODTAB
GROUP 2
END
ENDPAGE
ENDMASK

66
at/atsttcs.rep Executable file
View File

@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8" ?>
<report libraries="atsttcs" name="atsttcs" lpi="6">
<font face="Courier New" size="10" />
<section type="Head">
<field x="1" type="Testo" valign="center" align="center" width="93" height="2" text="Tabella tipi\esiti dei controlli sanitari">
<font face="Courier New" bold="1" size="14" />
</field>
<field border="2" x="1" y="2.5" type="Linea" width="93" height="0" />
<field x="2" y="3" type="Testo" width="10" text="Codice">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="16" y="3" type="Testo" width="12" text="Descrizione">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="62" y="3" type="Testo" width="4" text="Cat.
">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="68" y="3" type="Testo" width="4" text="Mod.">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="74" y="3" type="Testo" width="6" text="Stato">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="62" y="4" type="Testo" width="5" text="coll.">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="68" y="4" type="Testo" width="5" text="stato">
<font face="Courier New" bold="1" size="10" />
</field>
<field border="2" x="1" y="5.5" type="Linea" width="93" height="0" />
</section>
<section type="Head" level="1" />
<section type="Body" />
<section type="Body" level="1">
<field x="2" type="Stringa" link="TCS.CODTAB" width="13">
<source>CODTAB</source>
</field>
<field x="16" type="Stringa" width="45">
<source>S0</source>
</field>
<field x="62.5" type="Stringa" align="right" width="3">
<source>S7</source>
</field>
<field x="68.5" type="Stringa" align="right" width="2">
<source>S6</source>
</field>
<field x="74" type="Stringa" width="20">
<source>S3</source>
</field>
</section>
<section type="Foot" height="3">
<field border="2" x="1" y="0.5" type="Linea" width="93" height="0" />
<field x="2" y="1" type="Data" width="10">
<source>#SYSTEM.DATE</source>
</field>
<field x="90" y="1" type="Numero" align="right" width="3">
<source>#PAGE</source>
</field>
<field border="2" x="1" y="2.5" type="Linea" width="93" height="0" />
</section>
<section type="Foot" level="1" />
<sql>USE TCS
FROM CODTAB=#FROM
TO CODTAB=#TO</sql>
</report>

36
at/atsttcs.uml Executable file
View File

@ -0,0 +1,36 @@
#include "ba3200.h"
TOOLBAR "topbar" 0 0 0 2
#include <printbar.h>
ENDPAGE
PAGE "Stampa tabella tipi\esiti dei controlli sanitari" 0 2 0 0
STRING F_INIZIO1 3
BEGIN
PROMPT 2 1 "Da codice "
FLAGS "UZ"
FIELD FROM
USE TCS
INPUT CODTAB F_INIZIO1
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_INIZIO1 CODTAB
GROUP 1
END
STRING F_FINE1 3
BEGIN
PROMPT 20 1 "A codice "
FLAGS "UZ"
FIELD TO
COPY USE F_INIZIO1
INPUT CODTAB F_FINE1
COPY DISPLAY F_INIZIO1
OUTPUT F_FINE1 CODTAB
GROUP 2
END
ENDPAGE
ENDMASK

21
at/attab.txt Executable file
View File

@ -0,0 +1,21 @@
[Header]
Version=199519
File=5
Fields=COD,3|CODTAB,25|S0,70|S1,70|S2,70|S3,70|S4,25|S5,25|S6,5|S7,5
Fields=S8,5|S9,5|S10,5|S11,5|I0,7|I1,7|I2,7|I3,7|I4,7|I5,7
Fields=I6,7|I7,7|I8,7|I9,7|I10,7|I11,7|I12,7|I13,7|I14,7|R0,18
Fields=R1,18|R2,18|R3,18|R4,18|R5,18|R6,18|R7,18|R8,18|R9,18|R10,18
Fields=R11,18|R12,18|R13,18|R14,18|R15,18|R16,18|R17,18|R18,18|R19,18|R20,18
Fields=R21,18|R22,18|R23,18|R24,18|R25,18|R26,18|R27,18|R28,18|R29,18|R30,18
Fields=R31,18|R32,18|R33,18|R34,18|D0,10|D1,10|D2,10|D3,10|D4,10|B0,1
Fields=B1,1|B2,1|B3,1|B4,1|B5,1|B6,1|B7,1|B8,1|B9,1|B10,1
Fields=B11,1|B12,1|B13,1|B14,1|B15,1|FPC,1
[Data]
IDO|PI|Piastrinoaferesi||||||AF|||||||||||||||||||||0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000||||||||||||||| | | | | | | | | | | | | | | | |
IDO|PL|Plasmaferesi||||||AF|||||||||||||||||||||0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000||||||||||||||| | | | | | | | | | | | | | | | |
IDO|SI|Sangue intero||||||SI|||||||||||||||||||||0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000||||||||||||||| | | | | | | | | | | | | | | | |
TDN|PI|Piastrinoaferesi||||||AF|PI||||||||||||||||||||0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000||||||||||||||| | | | | | | | | | | | | | | | |
TDN|PL|Plasmaferesi||||||AF|PL||||||||||||||||||||0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000||||||||||||||| | | | | | | | | | | | | | | | |
TDN|PP|Plasma-piastrinoaferesi||||||AF|PL|PI|||||||||||||||||||0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000||||||||||||||| | | | | | | | | | | | | | | | |
TDN|SI|Sangue intero||||||SI|SI||||||||||||||||||||0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000||||||||||||||| | | | | | | | | | | | | | | | |

66
at/attabmod.txt Executable file
View File

@ -0,0 +1,66 @@
[Header]
Version=199519
File=163
Fields=MOD,2|CUST,6|COD,3|CODTAB,20|S0,70|S1,50|S2,50|S3,50|S4,20|S5,20
Fields=S6,5|S7,5|I0,8|I1,8|I2,8|R0,18|R1,18|R2,18|D0,10|D1,10
Fields=D2,10|B0,1|B1,1|B2,1|B3,1|B4,1|B5,1|B6,1|B7,1|B8,1
Fields=B9,1|B10,1|FPC,1
[Data]
AT|548|C2A|1401|IDONEO||||||PI I||||||||||| | | | | | | | | | | |
AT|548|C2A|1402|SOSP. TEMPORANEAMENTE||||||SO S||||||||||| | | | | | | | | | | |
AT|548|C2A|1403|Sospeso Def. (dimesso)||||||DE D||||||||||| | | | | | | | | | | |
AT|548|C2A|1404|DIMESSO||||||DE D||||||||||| | | | | | | | | | | |
AT|548|C2A|1405|Deceduto||||||DE*D||||||||||| | | | | | | | | | | |
AT|548|C2A|1406|PAZIENTE||||||||||||||||| | | | | | | | | | | |
AT|548|C2A|1407|AUTOCONVOCAZIONE||||||||||||||||| | | | | | | | | | | |
AT|548|C2A|1411|Autoconvocazione||||||*||||||||||| | | | | | | | | | | |
AT|548|C2A|1412|ASPIRANTE||||||*||||||||||| | | | | | | | | | | |
AT|548|C2A|1413|Tolto asterisco||||||*||||||||||| | | | | | | | | | | |
AT|548|C2A|1416|SOSPESO DEF. ASP (DIMESSO)||||||DE D||||||||||| | | | | | | | | | | |
AT|548|C2A|1417|SOSPESO TEMP. ASP||||||SO S||||||||||| | | | | | | | | | | |
AT|548|C2A|1901|Prelievi di sangue intero||||||SI||||||||||| | | | | | | | | | | |
AT|548|C2A|1902|Plasmaferesi||||||PL||||||||||| | | | | | | | | | | |
AT|548|C2A|1903|Piastrinoaferesi||||||PI||||||||||| | | | | | | | | | | |
AT|548|C2A|1904|PlasmaPiastrinoaferesi||||||PP||||||||||| | | | | | | | | | | |
AT|548|C2A|1905|Aferesi terapeutica||||||||||||||||| | | | | | | | | | | |
AT|548|C2A|1906|Autodonazione||||||||||||||||| | | | | | | | | | | |
AT|548|C2A|1907|Esami di controllo||||||****|||||0.000|0.000|0.000||||X| | | | | | | | | | |
AT|548|C2A|1908|Salasso Terapeutico||||||||||||||||| | | | | | | | | | | |
AT|548|C2A|1909|Plasma Autoaferesi||||||||||||||||| | | | | | | | | | | |
AT|548|C2A|1910|Piastrino Autoaferesi||||||||||||||||| | | | | | | | | | | |
AT|548|C2A|1914|Non idonei||||||||||||||||| | | | | | | | | | | |
AT|548|C2A|1915|Aferesi Staminali||||||||||||||||| | | | | | | | | | | |
AT|548|C2A|1916|Recupero Intraoperatorio||||||||||||||||| | | | | | | | | | | |
AT|548|C2A|1920|Piastrinoaferesi filtrata||||||PH||||||||||| | | | | | | | | | | |
AT|548|C2A|1921|Eritroplasmaferesi||||||EA||||||||||| | | | | | | | | | | |
AT|548|C2A|1922|Eritropiastrinoaferesi||||||ER||||||||||| | | | | | | | | | | |
AT|548|C2A|3250|Elettrocardiogramma||||||EL||||||||||| | | | | | | | | | | |
AT|548|C2A|3251|Rx Torace||||||RX||||||||||| | | | | | | | | | | |
AT|548|C2A|3271|Esito esami 1||||||AE||||||||||| | | | | | | | | | | |
AT|548|C2A|3272|Esito esami 2||||||2||||||||||| | | | | | | | | | | |
AT|548|C2A|3273|Esito esami 3||||||R1||||||||||| | | | | | | | | | | |
AT|548|C2A|3274|Esito esami 4||||||4||||||||||| | | | | | | | | | | |
AT|548|C2A|3275|Esito esami 5||||||5||||||||||| | | | | | | | | | | |
AT|548|C2A|3276|Esito esami 6||||||6||||||||||| | | | | | | | | | | |
AT|548|C2A|32111|Esami di controllo||||||R1||||||||||| | | | | | | | | | | |
AT|548|C2A|32112|Visita||||||V1||||||||||| | | | | | | | | | | |
AT|548|C2A|PU01|RIMINI||||||1D||||||||||| | | | | | | | | | | |
AT|548|C2A|PU02|BELLARIA-IGEA MARINA||||||2A||||||||||| | | | | | | | | | | |
AT|548|C2A|PU03|CATTOLICA||||||3A||||||||||| | | | | | | | | | | |
AT|548|C2A|PU04|CORIANO||||||4A||||||||||| | | | | | | | | | | |
AT|548|C2A|PU05|MISANO ADRIATICO||||||5A||||||||||| | | | | | | | | | | |
AT|548|C2A|PU06|MORCIANO DI ROMAGNA||||||6A||||||||||| | | | | | | | | | | |
AT|548|C2A|PU07|NOVAFELTRIA||||||SCO||||||||||| | | | | | | | | | | |
AT|548|C2A|PU08|RICCIONE||||||8A||||||||||| | | | | | | | | | | |
AT|548|C2A|PU09|SAN GIOVANNI IN MARIGNANO||||||9A||||||||||| | | | | | | | | | | |
AT|548|C2A|PU10|SANTARCANGELO DI ROMAGNA||||||10A||||||||||| | | | | | | | | | | |
AT|548|C2A|PU11|VERUCCHIO||||||11A||||||||||| | | | | | | | | | | |
AT|548|C2A|PU12|FUORI PROVINCIA||||||SCO||||||||||| | | | | | | | | | | |
AT|548|C2A|PU13|AVIS SCUOLE||||||1D||||||||||| | | | | | | | | | | |
AT|548|C2A|PU14|CASERMA RN||||||1C||||||||||| | | | | | | | | | | |
AT|548|C2A|PU15|MISANO SCUOLE||||||5B||||||||||| | | | | | | | | | | |
AT|548|C2A|PU16|MORCIANO SCUOLE||||||6B||||||||||| | | | | | | | | | | |
AT|548|C2A|PU17|RICCIONE SCUOLE||||||8B||||||||||| | | | | | | | | | | |
AT|548|C2A|PU18|SANTARCANGELO SCUOLE||||||10B||||||||||| | | | | | | | | | | |
AT|548|C2A|PU19|SCONOSCIUTO||||||SCO||||||||||| | | | | | | | | | | |

8
at/attbbnz.h Executable file
View File

@ -0,0 +1,8 @@
#define F_TABBNZ_CODTAB 100
#define F_TABBNZ_DESCR 101
#define F_TABBNZ_NDON 102
#define F_TABBNZ_STATUTO 103
#define F_TABBNZ_M_NDON 104
#define F_TABBNZ_M_ANNI 105
#define F_TABBNZ_CATDON 106
#define DLG_DEL 108

84
at/attbbnz.uml Executable file
View File

@ -0,0 +1,84 @@
#include "attbbnz.h"
TOOLBAR "" 0 0 0 2
#include <relapbar.h>
ENDPAGE
PAGE "Benemerenze" -1 -1 78 7
STRING F_TABBNZ_CODTAB 2
BEGIN
PROMPT 2 1 "Codice "
FIELD CODTAB
HELP "Inserire il codice della benemerenza"
USE BNZ
CHECKTYPE REQUIRED
INPUT CODTAB F_TABBNZ_CODTAB
DISPLAY "Codice " CODTAB
DISPLAY "Descrizione@30" S0
OUTPUT F_TABBNZ_CODTAB CODTAB
OUTPUT F_TABBNZ_DESCR S0
KEY 1
FLAGS "U"
END
STRING F_TABBNZ_DESCR 30
BEGIN
PROMPT 2 3 "Descrizione "
FIELD S0
HELP "Inserire la descrizione della benemerenza"
USE BNZ KEY 2
CHECKTYPE REQUIRED
INPUT S0 F_TABBNZ_DESCR
DISPLAY "Descrizione@30" S0
DISPLAY "Codice " CODTAB
COPY OUTPUT F_TABBNZ_CODTAB
KEY 2
END
NUMBER F_TABBNZ_NDON 3
BEGIN
PROMPT 2 5 "Num. donazioni "
FIELD I0
HELP "Inserire il numero di donazioni necessarie per ottenere la benemerenza"
CHECKTYPE REQUIRED
FLAGS "U"
END
BOOLEAN F_TABBNZ_STATUTO
BEGIN
PROMPT 30 5 "Da statuto "
FIELD B0
HELP "La benemerenza Š prevista nello statuto AVIS?"
END
GROUPBOX DLG_NULL 77 4
BEGIN
PROMPT 1 7 "Nuovi criteri per benemerenza"
END
NUMBER F_TABBNZ_M_NDON 3
BEGIN
PROMPT 2 8 "Numero donazioni "
FIELD I1
HELP "Inserire il numero di donazioni necessarie per ottenere la benemerenza"
FLAGS "U"
END
NUMBER F_TABBNZ_M_ANNI 2
BEGIN
PROMPT 2 9 "Anni di iscrizione "
FIELD I2
HELP "Inserire il numero di anni di iscrizione necessari"
FLAGS "U"
END
BOOLEAN F_TABBNZ_CATDON
BEGIN
PROMPT 50 9 "Attribuisci solo ai dimessi"
FIELD B0
HELP "Inserire se la benemerenza va attribuita solo ai dimessi"
END
ENDPAGE
ENDMASK

6
at/attbctd.h Executable file
View File

@ -0,0 +1,6 @@
#define F_TABCTD_CODTAB 100
#define F_TABCTD_DESCR 101
#define F_TABCTD_DIMESSI 102
#define F_TABCTD_CATCOLL 103
#define F_DESCR_CATCOLL 104
#define DLG_DEL 105

68
at/attbctd.uml Executable file
View File

@ -0,0 +1,68 @@
#include "attbctd.h"
TOOLBAR "" 0 0 0 2
#include <relapbar.h>
ENDPAGE
PAGE "Categorie donatori" -1 -1 78 7
STRING F_TABCTD_CODTAB 2
BEGIN
PROMPT 2 1 "Codice "
FIELD CODTAB
HELP "Inserire il codice della categoria"
USE CTD
CHECKTYPE REQUIRED
INPUT CODTAB F_TABCTD_CODTAB
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@30" S0
OUTPUT F_TABCTD_CODTAB CODTAB
OUTPUT F_TABCTD_DESCR S0
KEY 1
FLAGS "U"
END
STRING F_TABCTD_DESCR 30
BEGIN
PROMPT 2 3 "Descrizione "
FIELD S0
HELP "Inserire la descrizione della categoria"
USE CTD KEY 2
CHECKTYPE REQUIRED
INPUT S0 F_TABCTD_DESCR
DISPLAY "Descrizione@30" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TABCTD_CODTAB
KEY 2
END
BOOLEAN F_TABCTD_DIMESSI
BEGIN
PROMPT 2 5 "Categoria di dimissione"
FIELD B0
HELP "Indicare se la categoria è di dimissione"
END
STRING F_TABCTD_CATCOLL 2
BEGIN
PROMPT 2 7 "Cat. collegata "
FIELD S6
FLAGS "U"
USE CTD SELECT B0!=#F_TABCTD_DIMESSI
INPUT CODTAB F_TABCTD_CATCOLL
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@30" S0
OUTPUT F_TABCTD_CATCOLL CODTAB
OUTPUT F_DESCR_CATCOLL S0
CHECKTYPE NORMAL
WARNING "Codice non presente"
END
STRING F_DESCR_CATCOLL 30
BEGIN
PROMPT 23 7 ""
FLAGS "D"
END
ENDPAGE
ENDMASK

3
at/attbctn.h Executable file
View File

@ -0,0 +1,3 @@
#define F_TABCTN_CODTAB 100
#define F_TABCTN_DESCR 101
#define DLG_DEL 105

40
at/attbctn.uml Executable file
View File

@ -0,0 +1,40 @@
#include "attbctn.h"
TOOLBAR "" 0 0 0 2
#include <relapbar.h>
ENDPAGE
PAGE "Categorie non donatori" -1 -1 78 7
STRING F_TABCTN_CODTAB 2
BEGIN
PROMPT 2 1 "Codice "
FIELD CODTAB
HELP "Inserire il codice della categoria"
USE CTN
CHECKTYPE REQUIRED
INPUT CODTAB F_TABCTN_CODTAB
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@30" S0
OUTPUT F_TABCTN_CODTAB CODTAB
OUTPUT F_TABCTN_DESCR S0
KEY 1
FLAGS "U"
END
STRING F_TABCTN_DESCR 30
BEGIN
PROMPT 2 3 "Descrizione "
FIELD S0
HELP "Inserire la descrizione della categoria"
USE CTN KEY 2
CHECKTYPE REQUIRED
INPUT S0 F_TABCTN_DESCR
DISPLAY "Descrizione@30" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TABCTN_CODTAB
KEY 2
END
ENDPAGE
ENDMASK

3
at/attbgaz.h Executable file
View File

@ -0,0 +1,3 @@
#define F_TABGAZ_CODTAB 100
#define F_TABGAZ_DESCR 101
#define DLG_DEL 105

40
at/attbgaz.uml Executable file
View File

@ -0,0 +1,40 @@
#include "attbgaz.h"
TOOLBAR "" 0 0 0 2
#include <relapbar.h>
ENDPAGE
PAGE "Gruppi Aziendali" -1 -1 78 7
STRING F_TABGAZ_CODTAB 4
BEGIN
PROMPT 2 1 "Codice "
FIELD CODTAB
HELP "Inserire il codice del gruppo aziendale"
USE GAZ
CHECKTYPE REQUIRED
INPUT CODTAB F_TABGAZ_CODTAB
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@30" S0
OUTPUT F_TABGAZ_CODTAB CODTAB
OUTPUT F_TABGAZ_DESCR S0
KEY 1
FLAGS "U"
END
STRING F_TABGAZ_DESCR 30
BEGIN
PROMPT 2 3 "Denominazione "
FIELD S0
HELP "Inserire la denominazione del gruppo aziendale"
USE GAZ KEY 2
CHECKTYPE REQUIRED
INPUT S0 F_TABGAZ_DESCR
DISPLAY "Descrizione@30" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TABGAZ_CODTAB
KEY 2
END
ENDPAGE
ENDMASK

4
at/attbido.h Executable file
View File

@ -0,0 +1,4 @@
#define F_TABIDO_CODTAB 100
#define F_TABIDO_DESCR 101
#define F_TABIDO_PROCDON 102
#define DLG_DEL 105

48
at/attbido.uml Executable file
View File

@ -0,0 +1,48 @@
#include "attbido.h"
TOOLBAR "" 0 0 0 2
#include <relapbar.h>
ENDPAGE
PAGE "Idoneita' alla donazione" -1 -1 78 7
STRING F_TABIDO_CODTAB 2
BEGIN
PROMPT 2 1 "Codice "
FIELD CODTAB
HELP "Inserire il codice della idoneità"
USE IDO
CHECKTYPE REQUIRED
INPUT CODTAB F_TABIDO_CODTAB
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@30" S0
OUTPUT F_TABIDO_CODTAB CODTAB
OUTPUT F_TABIDO_DESCR S0
KEY 1
FLAGS "U"
END
STRING F_TABIDO_DESCR 30
BEGIN
PROMPT 2 3 "Descrizione "
FIELD S0
HELP "Inserire la descrizione della idoneita'"
USE IDO KEY 2
CHECKTYPE REQUIRED
INPUT S0 F_TABIDO_DESCR
DISPLAY "Descrizione@30" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TABIDO_CODTAB
KEY 2
END
LISTBOX F_TABIDO_PROCDON 17
BEGIN
PROMPT 2 5 "Procedura di don. "
FIELD S6
#include "procdon.h"
HELP "Indicare la procedura di donazione collegata alla idoneita'"
END
ENDPAGE
ENDMASK

7
at/attblcp.h Executable file
View File

@ -0,0 +1,7 @@
#define F_TABLCP_CODTAB 100
#define F_TABLCP_LOCALITA 101
#define F_TABLCP_CAP 102
#define F_TABLCP_COM 103
#define F_DENCOM 104
#define F_PROVCOM 105
#define DLG_DEL 106

83
at/attblcp.uml Executable file
View File

@ -0,0 +1,83 @@
#include "attblcp.h"
TOOLBAR "" 0 0 0 2
#include <relapbar.h>
ENDPAGE
PAGE "Localita' postali" -1 -1 78 7
STRING F_TABLCP_CODTAB 4
BEGIN
PROMPT 2 1 "Codice "
FIELD CODTAB
HELP "Inserire il codice della localita'"
USE LCP
CHECKTYPE REQUIRED
INPUT CODTAB F_TABLCP_CODTAB
DISPLAY "Codice" CODTAB
DISPLAY "Denominazione@30" S0
DISPLAY "CAP@5" S6
OUTPUT F_TABLCP_CODTAB CODTAB
OUTPUT F_TABLCP_LOCALITA S0
KEY 1
FLAGS "U"
END
STRING F_TABLCP_LOCALITA 30
BEGIN
PROMPT 2 3 "Localita' "
FIELD S0
HELP "Inserire la denominazione della localita'"
USE LCP KEY 2
CHECKTYPE REQUIRED
INPUT S0 F_TABLCP_LOCALITA
DISPLAY "Denominazione@30" S0
DISPLAY "CAP@5" S6
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TABLCP_CODTAB
KEY 2
END
STRING F_TABLCP_CAP 5
BEGIN
PROMPT 2 5 "CAP "
FIELD S6
HELP "Inserire il CAP della località"
CHECKTYPE REQUIRED
FLAGS "U"
END
STRING F_TABLCP_COM 4
BEGIN
PROMPT 2 7 "Comune "
FIELD S7
FLAGS "U"
USE LF_COMUNI
INPUT STATO ""
INPUT COM F_TABLCP_COM
#include <comdcod.h>
OUTPUT F_TABLCP_COM COM
OUTPUT F_DENCOM DENCOM
OUTPUT F_PROVCOM PROVCOM
CHECKTYPE NORMAL
WARNING "Comune assente"
END
STRING F_DENCOM 50
BEGIN
PROMPT 19 7 ""
USE LF_COMUNI KEY 2
INPUT DENCOM F_DENCOM
#include <comdden.h>
COPY OUTPUT F_TABLCP_COM
CHECKTYPE NORMAL
END
STRING F_PROVCOM 5
BEGIN
PROMPT 73 7 ""
FLAGS "D"
END
ENDPAGE
ENDMASK

3
at/attbldl.h Executable file
View File

@ -0,0 +1,3 @@
#define F_TABLDL_CODTAB 100
#define F_TABLDL_DESCR 101
#define DLG_DEL 105

40
at/attbldl.uml Executable file
View File

@ -0,0 +1,40 @@
#include "attbldl.h"
TOOLBAR "" 0 0 0 2
#include <relapbar.h>
ENDPAGE
PAGE "Luoghi di lavoro" -1 -1 78 7
STRING F_TABLDL_CODTAB 4
BEGIN
PROMPT 2 1 "Codice "
FIELD CODTAB
HELP "Inserire il codice del luogo di lavoro"
USE LDL
CHECKTYPE REQUIRED
INPUT CODTAB F_TABLDL_CODTAB
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@40" S0
OUTPUT F_TABLDL_CODTAB CODTAB
OUTPUT F_TABLDL_DESCR S0
KEY 1
FLAGS "U"
END
STRING F_TABLDL_DESCR 40
BEGIN
PROMPT 2 3 "Descrizione "
FIELD S0
HELP "Inserire la descrizione del luogo di lavoro"
USE LDL KEY 2
CHECKTYPE REQUIRED
INPUT S0 F_TABLDL_DESCR
DISPLAY "Descrizione@40" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TABLDL_CODTAB
KEY 2
END
ENDPAGE
ENDMASK

14
at/attbldn.h Executable file
View File

@ -0,0 +1,14 @@
#define F_TABLDN_CODTAB 100
#define F_TABLDN_DESCR 101
#define F_TABLDN_INDIR 102
#define F_TABLDN_LOC 103
#define F_TABLDN_COM 104
#define F_TABLDN_DENCOM 105
#define F_TABLDN_DENLOC 106
#define F_TABLDN_PROVCOM 107
#define F_TABLDN_CAPCOM 108
#define F_TABLDN_TELEFONO 109
#define F_TABLDN_ORARIO 110
#define F_TABLDN_NOTE1 111
#define F_TABLDN_NOTE2 112
#define DLG_DEL 115

141
at/attbldn.uml Executable file
View File

@ -0,0 +1,141 @@
#include "attbldn.h"
TOOLBAR "" 0 0 0 2
#include <relapbar.h>
ENDPAGE
PAGE "Punti di prelievo" -1 -1 78 7
STRING F_TABLDN_CODTAB 4
BEGIN
PROMPT 2 1 "Codice "
FIELD CODTAB
KEY 1
FLAGS "U"
USE LDN
INPUT CODTAB F_TABLDN_CODTAB
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TABLDN_CODTAB CODTAB
OUTPUT F_TABLDN_DESCR S0
CHECKTYPE REQUIRED
HELP "Codice del punto di prelievo"
END
STRING F_TABLDN_DESCR 50
BEGIN
PROMPT 2 2 "Punto "
FIELD S0
KEY 2
USE LDN KEY 2
INPUT S0 F_TABLDN_DESCR
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TABLDN_CODTAB
CHECKTYPE REQUIRED
HELP "Denominazione del punto di prelievo"
END
STRING F_TABLDN_INDIR 50
BEGIN
PROMPT 2 4 "Indirizzo "
FIELD S1
END
STRING F_TABLDN_COM 4
BEGIN
PROMPT 2 5 "Comune "
FIELD S6
FLAGS "U"
USE LF_COMUNI
INPUT STATO ""
INPUT COM F_TABLDN_COM
#include <comdcod.h>
OUTPUT F_TABLDN_COM COM
OUTPUT F_TABLDN_DENCOM DENCOM
OUTPUT F_TABLDN_PROVCOM PROVCOM
OUTPUT F_TABLDN_CAPCOM CAPCOM
CHECKTYPE NORMAL
WARNING "Comune assente"
END
STRING F_TABLDN_DENCOM 48
BEGIN
PROMPT 21 5 ""
USE LF_COMUNI KEY 2
INPUT DENCOM F_TABLDN_DENCOM
#include <comdden.h>
COPY OUTPUT F_TABLDN_COM
CHECKTYPE NORMAL
END
STRING F_TABLDN_LOC 4
BEGIN
PROMPT 2 6 "Localita' "
FIELD S7
FLAGS "U"
USE LCP SELECT S7=#F_TABLDN_COM
INPUT CODTAB F_TABLDN_LOC
DISPLAY "Codice" CODTAB
DISPLAY "Localita'@30" S0
DISPLAY "CAP@5" S6
OUTPUT F_TABLDN_LOC CODTAB
OUTPUT F_TABLDN_DENLOC S0
OUTPUT F_TABLDN_CAPCOM S6
OUTPUT F_TABLDN_COM S7
CHECKTYPE NORMAL
HELP "Codice localita' postale se diversa dal comune"
END
STRING F_TABLDN_DENLOC 30
BEGIN
PROMPT 21 6 ""
USE LCP KEY 2 SELECT S7=#F_TABLDN_COM
INPUT S0 F_TABLDN_DENLOC
DISPLAY "Localita'@30" S0
DISPLAY "CAP@5" S6
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TABLDN_LOC
CHECKTYPE NORMAL
HELP "Localita' postale se diversa dal comune"
END
STRING F_TABLDN_PROVCOM 5
BEGIN
PROMPT 73 5 ""
FLAGS "D"
END
STRING F_TABLDN_CAPCOM 5
BEGIN
PROMPT 69 6 "CAP "
FIELD S8
//FLAGS "D"
END
STRING F_TABLDN_TELEFONO 20
BEGIN
PROMPT 2 8 "Telefono "
FIELD S4
END
STRING F_TABLDN_ORARIO 50
BEGIN
PROMPT 2 9 "Orario "
FIELD S2
END
STRING F_TABLDN_NOTE1 35
BEGIN
PROMPT 2 10 "Note "
FIELD S3[1,35]
END
STRING F_TABLDN_NOTE2 35
BEGIN
PROMPT 2 11 " "
FIELD S3[36,70]
END
ENDPAGE
ENDMASK

14
at/attbmed.h Executable file
View File

@ -0,0 +1,14 @@
// definizione campi della maschera tabella medici
#define F_CODMED 101
#define F_COGNOME 102
#define F_NOME 103
#define F_INDIRIZZO 104
#define F_COM 105
#define F_DENCOM 106
#define F_LOCALITA 107
#define F_DENLOC 108
#define F_CAPCOM 109
#define F_PROVCOM 110
#define F_TELAMB 111
#define F_TELABI 112

156
at/attbmed.uml Executable file
View File

@ -0,0 +1,156 @@
#include "attbmed.h"
TOOLBAR "" 0 0 0 2
#include <relapbar.h>
ENDPAGE
PAGE "Medici" -1 -1 78 20
GROUPBOX DLG_NULL 77 5
BEGIN
PROMPT 1 1 ""
FLAGS "R"
END
NUMBER F_CODMED 6
BEGIN
PROMPT 2 2 "Cod. medico "
FIELD CODMED
FLAGS "U"
KEY 1
USE LF_MEDICI
INPUT CODMED F_CODMED
DISPLAY "Codice " CODMED
DISPLAY "Cognome@25" COGNOME
DISPLAY "Nome@25" NOME
OUTPUT F_CODMED CODMED
OUTPUT F_COGNOME COGNOME
OUTPUT F_NOME NOME
CHECKTYPE REQUIRED
END
STRING F_COGNOME 25
BEGIN
PROMPT 2 3 "Cognome "
FIELD COGNOME
KEY 2
USE LF_MEDICI KEY 2
INPUT COGNOME F_COGNOME
INPUT NOME F_NOME
DISPLAY "Cognome@25" COGNOME
DISPLAY "Nome@25" NOME
DISPLAY "Codice " CODMED
COPY OUTPUT F_CODMED
CHECKTYPE REQUIRED
WARNING "Inserire il cognome del medico"
END
STRING F_NOME 25
BEGIN
PROMPT 2 4 "Nome "
FIELD NOME
KEY 2
COPY ALL F_COGNOME
CHECKTYPE NORMAL
END
GROUPBOX DLG_NULL 77 5
BEGIN
PROMPT 1 6 "Indirizzo"
END
STRING F_INDIRIZZO 50
BEGIN
PROMPT 2 7 "Indirizzo "
FIELD INDIRIZZO
END
STRING F_COM 4
BEGIN
PROMPT 2 8 "Comune "
FIELD COM
FLAGS "U"
USE LF_COMUNI
INPUT STATO ""
INPUT COM F_COM
#include <comdcod.h>
OUTPUT F_COM COM
OUTPUT F_DENCOM DENCOM
OUTPUT F_PROVCOM PROVCOM
OUTPUT F_CAPCOM CAPCOM
CHECKTYPE NORMAL
WARNING "Comune assente"
END
STRING F_DENCOM 48
BEGIN
PROMPT 19 8 ""
USE LF_COMUNI KEY 2
INPUT DENCOM F_DENCOM
#include <comdden.h>
COPY OUTPUT F_COM
CHECKTYPE NORMAL
END
STRING F_LOCALITA 4
BEGIN
PROMPT 2 9 "Località "
FIELD LOCALITA
FLAGS "U"
USE LCP SELECT S7=#F_COM
INPUT CODTAB F_LOCALITA
DISPLAY "Codice" CODTAB
DISPLAY "Località@30" S0
DISPLAY "CAP@5" S6
OUTPUT F_LOCALITA CODTAB
OUTPUT F_DENLOC S0
OUTPUT F_CAPCOM S6
OUTPUT F_COM S7
CHECKTYPE NORMAL
HELP "Codice localit… postale se diversa dal comune"
END
STRING F_DENLOC 30
BEGIN
PROMPT 19 9 ""
USE LCP KEY 2 SELECT S7=#F_COM
INPUT S0 F_DENLOC
DISPLAY "Località@30" S0
DISPLAY "CAP@5" S6
DISPLAY "Codice" CODTAB
COPY OUTPUT F_LOCALITA
CHECKTYPE NORMAL
HELP "Localit… postale se diversa dal comune"
END
STRING F_PROVCOM 5
BEGIN
PROMPT 71 8 ""
FLAGS "D"
END
STRING F_CAPCOM 5
BEGIN
PROMPT 67 9 "CAP "
FLAGS "D"
END
GROUPBOX DLG_NULL 77 3
BEGIN
PROMPT 1 11 "Telefoni"
END
STRING F_TELAMB 15
BEGIN
PROMPT 2 12 "Ambulatorio "
FIELD TELAMB
END
STRING F_TELABI 15
BEGIN
PROMPT 40 12 "Abitazione "
FIELD TELABI
END
ENDPAGE
ENDMASK

4
at/attbmtc.h Executable file
View File

@ -0,0 +1,4 @@
#define F_TABMTC_CODTAB 100
#define F_TABMTC_DESCR 101
#define F_TABMTC_SEGNALA 102
#define DLG_DEL 105

47
at/attbmtc.uml Executable file
View File

@ -0,0 +1,47 @@
#include "attbmtc.h"
TOOLBAR "" 0 0 0 2
#include <relapbar.h>
ENDPAGE
PAGE "Motivi per controlli sanitari" -1 -1 78 7
STRING F_TABMTC_CODTAB 4
BEGIN
PROMPT 2 1 "Codice "
FIELD CODTAB
HELP "Inserire il codice del motivo"
USE MTC
CHECKTYPE REQUIRED
INPUT CODTAB F_TABMTC_CODTAB
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@25" S0
OUTPUT F_TABMTC_CODTAB CODTAB
OUTPUT F_TABMTC_DESCR S0
KEY 1
FLAGS "U"
END
STRING F_TABMTC_DESCR 25
BEGIN
PROMPT 2 3 "Descrizione "
FIELD S0
HELP "Inserire la descrizione del motivo"
USE MTC KEY 2
CHECKTYPE REQUIRED
INPUT S0 F_TABMTC_DESCR
DISPLAY "Descrizione@25" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TABMTC_CODTAB
KEY 2
END
BOOLEAN F_TABMTC_SEGNALA
BEGIN
PROMPT 2 5 "Segnala la sospensione per questo motivo"
FIELD B0
HELP "Indicare se occorre segnalare che il soggetto e' sospeso per questo motivo"
END
ENDPAGE
ENDMASK

18
at/attbpr1.h Executable file
View File

@ -0,0 +1,18 @@
// tabella di conversione CT Rimini- AVIS per stato trasfusionale
#define F_TABPR1_CODTAB 100
#define F_TABPR1_DESCR 101
#define F_TABPR1_OPERAZIONE 102
#define F_TABPR1_TIPOCON 104
#define F_TABPR1_CATDON 105
#define F_TABPR1_IDON1 106
#define F_TABPR1_IDON2 107
#define F_TABPR1_IDON3 108
#define F_TABPR1_IDON4 109
#define F_TABPR1_MOTIVO 110
#define F_TABPR1_DESC_CATDON 201
#define F_TABPR1_DESC_TIPOCON 202
#define F_TABPR1_DESC_IDON1 203
#define F_TABPR1_DESC_IDON2 204
#define F_TABPR1_DESC_IDON3 205
#define F_TABPR1_DESC_IDON4 206
#define F_TABPR1_DESC_MOTIVO 207

202
at/attbpr1.uml Executable file
View File

@ -0,0 +1,202 @@
#include "attbpr1.h"
TOOLBAR "" 0 0 0 2
#include <relapbar.h>
ENDPAGE
PAGE "Tabella conversione stato trasfusionale CETRAPLUS" -1 -1 78 18
STRING F_TABPR1_CODTAB 3
BEGIN
PROMPT 2 1 "Codice "
FIELD CODTAB
USE PR1
CHECKTYPE REQUIRED
INPUT CODTAB F_TABPR1_CODTAB
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@30" S0
OUTPUT F_TABPR1_CODTAB CODTAB
OUTPUT F_TABPR1_DESCR S0
KEY 1
FLAGS "U"
HELP "Inserire il codice dello stato trasfusionale"
END
STRING F_TABPR1_DESCR 50
BEGIN
PROMPT 2 3 "Descrizione "
FIELD S0
USE PR1 KEY 2
CHECKTYPE REQUIRED
INPUT S0 F_TABPR1_DESCR
DISPLAY "Descrizione@30" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TABPR1_CODTAB
KEY 2
HELP "Inserire la descrizione dello stato trasfusionale"
END
RADIOBUTTON F_TABPR1_OPERAZIONE 35
BEGIN
PROMPT 2 5 "Operazione "
FIELD I0
ITEM "0|Sostituire senza segnalazione"
ITEM "1|Sostituire con segnalazione"
ITEM "2|Segnalare"
ITEM "3|Ignorare"
END
STRING F_TABPR1_CATDON 2
BEGIN
PROMPT 2 11 "Categoria "
FIELD S6
FLAGS "U"
USE CTD
INPUT CODTAB F_TABPR1_CATDON
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@30" S0
OUTPUT F_TABPR1_CATDON CODTAB
OUTPUT F_TABPR1_DESC_CATDON S0
CHECKTYPE NORMAL
WARNING "Codice non presente"
END
STRING F_TABPR1_DESC_CATDON 30
BEGIN
PROMPT 23 11 ""
FLAGS "D"
END
STRING F_TABPR1_TIPOCON 2
BEGIN
PROMPT 2 12 "Tipo controllo "
FIELD S7
FLAGS "U"
USE TCS
INPUT CODTAB F_TABPR1_TIPOCON
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@30" S0
OUTPUT F_TABPR1_TIPOCON CODTAB
OUTPUT F_TABPR1_DESC_TIPOCON S0
CHECKTYPE NORMAL
WARNING "Codice non presente"
END
STRING F_TABPR1_DESC_TIPOCON 30
BEGIN
PROMPT 23 12 ""
FLAGS "D"
END
STRING F_TABPR1_IDON1 2
BEGIN
PROMPT 2 13 "Tipi donazione "
FIELD S8
FLAGS "U"
USE IDO
INPUT CODTAB F_TABPR1_IDON1
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@40" S0
OUTPUT F_TABPR1_IDON1 CODTAB
OUTPUT F_TABPR1_DESC_IDON1 S0
CHECKTYPE NORMAL
WARNING "Codice idoneita' non presente"
HELP "Idoneita' alla donazione"
END
STRING F_TABPR1_IDON2 2
BEGIN
PROMPT 17 14 ""
FIELD S9
FLAGS "U"
USE IDO
INPUT CODTAB F_TABPR1_IDON2
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@40" S0
OUTPUT F_TABPR1_IDON2 CODTAB
OUTPUT F_TABPR1_DESC_IDON2 S0
CHECKTYPE NORMAL
WARNING "Codice idoneita' non presente"
HELP "Idoneita' alla donazione"
END
STRING F_TABPR1_IDON3 2
BEGIN
PROMPT 17 15 ""
FIELD S10
FLAGS "U"
USE IDO
INPUT CODTAB F_TABPR1_IDON3
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@40" S0
OUTPUT F_TABPR1_IDON3 CODTAB
OUTPUT F_TABPR1_DESC_IDON3 S0
CHECKTYPE NORMAL
WARNING "Codice idoneita' non presente"
HELP "Idoneita' alla donazione"
END
STRING F_TABPR1_IDON4 2
BEGIN
PROMPT 17 16 ""
FIELD S11
FLAGS "U"
USE IDO
INPUT CODTAB F_TABPR1_IDON4
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@40" S0
OUTPUT F_TABPR1_IDON4 CODTAB
OUTPUT F_TABPR1_DESC_IDON4 S0
CHECKTYPE NORMAL
WARNING "Codice idoneita' non presente"
HELP "Idoneita' alla donazione"
END
STRING F_TABPR1_MOTIVO 4
BEGIN
PROMPT 2 17 "Motivo "
FIELD S1
FLAGS "U"
USE MTC
INPUT CODTAB F_TABPR1_MOTIVO
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TABPR1_MOTIVO CODTAB
OUTPUT F_TABPR1_DESC_MOTIVO S0
CHECKTYPE NORMAL
WARNING "Codice motivo non presente"
HELP "Motivo del controllo sanitario"
END
STRING F_TABPR1_DESC_IDON1 25
BEGIN
PROMPT 23 13 ""
FLAGS "D"
END
STRING F_TABPR1_DESC_IDON2 25
BEGIN
PROMPT 23 14 ""
FLAGS "D"
END
STRING F_TABPR1_DESC_IDON3 25
BEGIN
PROMPT 23 15 ""
FLAGS "D"
END
STRING F_TABPR1_DESC_IDON4 25
BEGIN
PROMPT 23 16 ""
FLAGS "D"
END
STRING F_TABPR1_DESC_MOTIVO 25
BEGIN
PROMPT 23 17 ""
FLAGS "D"
END
ENDPAGE
ENDMASK

5
at/attbpr2.h Executable file
View File

@ -0,0 +1,5 @@
// tabella di conversione CT Parma- AVIS per tipo donazione
#define F_TABPR2_CODTAB 100
#define F_TABPR2_DESCR 101
#define F_TABPR2_TIPODON 102
#define F_TABPR2_DESC_TIPODON 201

61
at/attbpr2.uml Executable file
View File

@ -0,0 +1,61 @@
#include "attbpr2.h"
TOOLBAR "" 0 0 0 2
#include <relapbar.h>
ENDPAGE
PAGE "Tabella conversione tipi donazione" -1 -1 78 18
STRING F_TABPR2_CODTAB 3
BEGIN
PROMPT 2 1 "Codice "
FIELD CODTAB
USE PR2
CHECKTYPE REQUIRED
INPUT CODTAB F_TABPR2_CODTAB
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@30" S0
OUTPUT F_TABPR2_CODTAB CODTAB
OUTPUT F_TABPR2_DESCR S0
KEY 1
FLAGS "U"
HELP "Inserire il codice del tipo donazione"
END
STRING F_TABPR2_DESCR 50
BEGIN
PROMPT 2 3 "Descrizione "
FIELD S0
USE PR2 KEY 2
CHECKTYPE REQUIRED
INPUT S0 F_TABPR2_DESCR
DISPLAY "Descrizione@30" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TABPR2_CODTAB
KEY 2
HELP "Inserire la descrizione del tipo donazione"
END
STRING F_TABPR2_TIPODON 2
BEGIN
PROMPT 2 5 "Tipo donazione "
FIELD S6
FLAGS "U"
USE TDN
INPUT CODTAB F_TABPR2_TIPODON
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@30" S0
OUTPUT F_TABPR2_TIPODON CODTAB
OUTPUT F_TABPR2_DESC_TIPODON S0
CHECKTYPE NORMAL
WARNING "Codice non presente"
END
STRING F_TABPR2_DESC_TIPODON 30
BEGIN
PROMPT 23 5 ""
FLAGS "D"
END
ENDPAGE
ENDMASK

3
at/attbprf.h Executable file
View File

@ -0,0 +1,3 @@
#define F_TABPRF_CODTAB 100
#define F_TABPRF_DESCR 101
#define DLG_DEL 105

40
at/attbprf.uml Executable file
View File

@ -0,0 +1,40 @@
#include "attbprf.h"
TOOLBAR "" 0 0 0 2
#include <relapbar.h>
ENDPAGE
PAGE "Professioni" -1 -1 78 7
STRING F_TABPRF_CODTAB 4
BEGIN
PROMPT 2 1 "Codice "
FIELD CODTAB
HELP "Inserire il codice della professione"
USE PRF
CHECKTYPE REQUIRED
INPUT CODTAB F_TABPRF_CODTAB
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@40" S0
OUTPUT F_TABPRF_CODTAB CODTAB
OUTPUT F_TABPRF_DESCR S0
KEY 1
FLAGS "U"
END
STRING F_TABPRF_DESCR 40
BEGIN
PROMPT 2 3 "Descrizione "
FIELD S0
HELP "Inserire la descrizione della professione"
USE PRF KEY 2
CHECKTYPE REQUIRED
INPUT S0 F_TABPRF_DESCR
DISPLAY "Descrizione@40" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TABPRF_CODTAB
KEY 2
END
ENDPAGE
ENDMASK

3
at/attbscs.h Executable file
View File

@ -0,0 +1,3 @@
#define F_TABSCS_CODTAB 100
#define F_TABSCS_DESCR 101
#define DLG_DEL 105

40
at/attbscs.uml Executable file
View File

@ -0,0 +1,40 @@
#include "attbscs.h"
TOOLBAR "" 0 0 0 2
#include <relapbar.h>
ENDPAGE
PAGE "Singoli controlli sanitari" -1 -1 78 7
STRING F_TABSCS_CODTAB 2
BEGIN
PROMPT 2 1 "Codice "
FIELD CODTAB
HELP "Inserire il codice del singolo controllo"
USE SCS
CHECKTYPE REQUIRED
INPUT CODTAB F_TABSCS_CODTAB
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@30" S0
OUTPUT F_TABSCS_CODTAB CODTAB
OUTPUT F_TABSCS_DESCR S0
KEY 1
FLAGS "U"
END
STRING F_TABSCS_DESCR 30
BEGIN
PROMPT 2 3 "Descrizione "
FIELD S0
HELP "Inserire la descrizione del singolo controllo"
USE SCS KEY 2
CHECKTYPE REQUIRED
INPUT S0 F_TABSCS_DESCR
DISPLAY "Descrizione@30" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TABSCS_CODTAB
KEY 2
END
ENDPAGE
ENDMASK

47
at/attbsez.h Executable file
View File

@ -0,0 +1,47 @@
// definizione campi della maschera tabella sezioni
#define F_CODSEZ 101
#define F_CODSOT 103
#define F_DENSEZ 102
#define F_DENSOT 104
#define F_INDIRIZZO 105
#define F_COM 106
#define F_DENCOM 107
#define F_LOCALITA 108
#define F_DENLOC 109
#define F_CAPCOM 110
#define F_CAPLOC 111
#define F_PROVCOM 112
#define F_TELEFONO 113
#define F_FAX 114
#define F_REFERCED 115
#define F_STATO 116
#define F_INTMINCONV 117
#define F_INTMIN 118
#define F_INTMAX 119
#define F_TIPOCONV 120
#define F_DATAULTCON 121
#define F_INTESTAZ1 122
#define F_INTESTAZ2 123
#define F_INTESTAZ3 124
#define F_INTESTAZ4 125
#define F_CONVORA 126
#define F_CONVSEDE1 127
#define F_CONVSEDE2 128
#define F_CONVSEDE3 129
#define F_CONVSEDE4 130
#define F_CONVNOTE 131
#define F_DONEMER 132
#define F_INTESTI 133
#define F_CATEMER 134
#define F_DESC_CATEMER 135
#define F_CATESTI 136
#define F_DESC_CATESTI 137
#define F_CATCANC 138
#define F_DESC_CATCANC 139
#define F_GIOCARSOL 140
#define F_GIOSOLSOL 141
#define F_GIOULTSOL 142
#define F_GIOPERRIT 143
#define F_NUMMAXSOL 144
#define F_DENOMINAZ 145

475
at/attbsez.uml Executable file
View File

@ -0,0 +1,475 @@
#include "attbsez.h"
TOOLBAR "" 0 0 0 2
#include <relapbar.h>
ENDPAGE
PAGE "Sezioni 1" -1 -1 78 20
GROUPBOX DLG_NULL 77 4
BEGIN
PROMPT 1 0 ""
FLAGS "R"
END
STRING F_CODSEZ 2
BEGIN
PROMPT 2 1 "Cod. sezione "
FIELD CODSEZ
FLAGS "U"
KEY 1
USE LF_SEZIONI
INPUT CODSEZ F_CODSEZ
INPUT CODSOT F_CODSOT
DISPLAY "Cod.sez. " CODSEZ
DISPLAY "Cod.sot. " CODSOT
DISPLAY "Sezione@25" DENSEZ
DISPLAY "Sottogruppo@25" DENSOT
OUTPUT F_CODSEZ CODSEZ
OUTPUT F_DENSEZ DENSEZ
OUTPUT F_CODSOT CODSOT
OUTPUT F_DENSOT DENSOT
MESSAGE COPY,1@
CHECKTYPE REQUIRED
END
STRING F_CODSOT 2
BEGIN
PROMPT 2 2 "Cod. sottogruppo "
FIELD CODSOT
FLAGS "U"
KEY 1
COPY ALL F_CODSEZ
MESSAGE COPY,2@
CHECKTYPE NORMAL
WARNING "Inserire il codice della sezione"
END
STRING F_DENSEZ 25
BEGIN
PROMPT 29 1 "Denominazione sez. "
FIELD DENSEZ
KEY 2
USE LF_SEZIONI KEY 2
INPUT DENSEZ F_DENSEZ
INPUT DENSOT F_DENSOT
DISPLAY "Sezione@25" DENSEZ
DISPLAY "Sottogruppo@25" DENSOT
DISPLAY "Cod.sez. " CODSEZ
DISPLAY "Cod.sot. " CODSOT
COPY OUTPUT F_CODSEZ
MESSAGE COPY,3@
CHECKTYPE REQUIRED
WARNING "Inserire la denominazione della sezione"
END
STRING F_DENSOT 25
BEGIN
PROMPT 29 2 "Denominazione sot. "
FIELD DENSOT
KEY 2
COPY ALL F_DENSEZ
MESSAGE COPY,4@
CHECKTYPE NORMAL
WARNING "Inserire la denominazione del sottogruppo"
END
GROUPBOX DLG_NULL 77 8
BEGIN
PROMPT 1 4 "Dati anagrafici"
END
STRING F_DENOMINAZ 50
BEGIN
PROMPT 2 5 "Denominazione "
FIELD DENOMINAZ
END
STRING F_INDIRIZZO 50
BEGIN
PROMPT 2 6 "Indirizzo "
FIELD INDIRIZZO
END
STRING F_COM 4
BEGIN
PROMPT 2 7 "Comune "
FIELD COM
FLAGS "U"
USE LF_COMUNI
INPUT STATO ""
INPUT COM F_COM
#include <comdcod.h>
OUTPUT F_COM COM
OUTPUT F_DENCOM DENCOM
OUTPUT F_PROVCOM PROVCOM
OUTPUT F_CAPCOM CAPCOM
CHECKTYPE NORMAL
MESSAGE SHOW,F_CAPCOM|SHOW,F_CAPLOC
WARNING "Comune assente"
END
STRING F_DENCOM 48
BEGIN
PROMPT 19 7 ""
USE LF_COMUNI KEY 2
INPUT DENCOM F_DENCOM
#include <comdden.h>
COPY OUTPUT F_COM
CHECKTYPE NORMAL
END
STRING F_LOCALITA 4
BEGIN
PROMPT 2 8 "Localita' "
FIELD LOCALITA
FLAGS "U"
USE LCP SELECT S7=#F_COM
INPUT CODTAB F_LOCALITA
DISPLAY "Codice" CODTAB
DISPLAY "Localita'@30" S0
DISPLAY "CAP@5" S6
OUTPUT F_LOCALITA CODTAB
OUTPUT F_DENLOC S0
OUTPUT F_CAPLOC S6
OUTPUT F_COM S7
CHECKTYPE NORMAL
MESSAGE EMPTY HIDE,F_CAPLOC|SHOW,F_CAPCOM
HELP "Codice localit… postale se diversa dal comune"
END
STRING F_DENLOC 30
BEGIN
PROMPT 19 8 ""
USE LCP KEY 2 SELECT S7=#F_COM
INPUT S0 F_DENLOC
DISPLAY "Località@30" S0
DISPLAY "CAP@5" S6
DISPLAY "Codice" CODTAB
COPY OUTPUT F_LOCALITA
CHECKTYPE NORMAL
MESSAGE EMPTY HIDE,F_CAPLOC|SHOW,F_CAPCOM
HELP "Localit… postale se diversa dal comune"
END
STRING F_PROVCOM 5
BEGIN
PROMPT 71 7 ""
FLAGS "D"
END
STRING F_CAPCOM 5
BEGIN
PROMPT 67 8 "CAP "
FLAGS "D"
END
STRING F_CAPLOC 5
BEGIN
PROMPT 67 8 "CAP "
FLAGS "D"
END
STRING F_TELEFONO 15
BEGIN
PROMPT 2 9 "Telefono "
FIELD TELEFONO
END
STRING F_FAX 15
BEGIN
PROMPT 32 9 "Fax "
FIELD FAX
END
STRING F_REFERCED 50
BEGIN
PROMPT 2 10 "Referente CED "
FIELD REFERCED
END
RADIOBUTTON F_STATO 13
BEGIN
PROMPT 1 12 "Stato"
FIELD STATO
ITEM "A|Attiva"
ITEM "E|Estinta"
END
GROUPBOX DLG_NULL 25 6
BEGIN
PROMPT 16 12 "Intestazione tessere"
END
STRING F_INTESTAZ1 20
BEGIN
PROMPT 17 13 ""
FIELD INTESTAZ1
END
STRING F_INTESTAZ2 20
BEGIN
PROMPT 17 14 ""
FIELD INTESTAZ2
END
STRING F_INTESTAZ3 20
BEGIN
PROMPT 17 15 ""
FIELD INTESTAZ3
END
STRING F_INTESTAZ4 20
BEGIN
PROMPT 17 16 ""
FIELD INTESTAZ4
END
GROUPBOX DLG_NULL 35 8
BEGIN
PROMPT 43 12 "Dati per stampa cartolina"
END
STRING F_CONVORA 20
BEGIN
PROMPT 44 13 "Orario "
FIELD CONVORA
END
STRING F_CONVSEDE1 25
BEGIN
PROMPT 44 14 "Sede "
FIELD CONVSEDE1
END
STRING F_CONVSEDE2 25
BEGIN
PROMPT 44 15 " "
FIELD CONVSEDE2
END
STRING F_CONVSEDE3 25
BEGIN
PROMPT 44 16 " "
FIELD CONVSEDE3
END
STRING F_CONVSEDE4 25
BEGIN
PROMPT 44 17 " "
FIELD CONVSEDE4
END
STRING F_CONVNOTE 25
BEGIN
PROMPT 44 18 "Note "
FIELD CONVNOTE
END
ENDPAGE
PAGE "Sezioni 2" -1 -1 78 20
GROUPBOX DLG_NULL 77 4
BEGIN
PROMPT 1 0 ""
FLAGS "R"
END
STRING DLG_NULL 2
BEGIN
PROMPT 2 1 "Cod. sezione "
FLAGS "D"
GROUP 1
END
STRING DLG_NULL 2
BEGIN
PROMPT 2 2 "Cod. sottogruppo "
FLAGS "D"
GROUP 2
END
STRING DLG_NULL 25
BEGIN
PROMPT 29 1 "Denominazione sez. "
FLAGS "D"
GROUP 3
END
STRING DLG_NULL 25
BEGIN
PROMPT 29 2 "Denominazione sot. "
FLAGS "D"
GROUP 4
END
GROUPBOX DLG_NULL 35 6
BEGIN
PROMPT 1 4 "Parametri convoc. per sezione"
END
NUMBER F_INTMINCONV 4
BEGIN
PROMPT 2 5 "Int. min. convoc. "
FIELD INTMINCONV
HELP "Intervallo minimo di convocazione in giorni (dall'ultima don.)"
END
NUMBER F_INTMIN 4
BEGIN
PROMPT 2 6 "Int. avvisi: min. "
FIELD INTMIN
END
NUMBER F_INTMAX 4
BEGIN
PROMPT 2 7 " max. "
FIELD INTMAX
END
LISTBOX F_TIPOCONV 11
BEGIN
PROMPT 2 8 "Tipo convocazione "
FIELD TIPOCONV
ITEM "D|Data fissa"
ITEM "G|dal Giorno"
END
GROUPBOX DLG_NULL 35 7
BEGIN
PROMPT 1 10 "Parametri convoc. su punto prelievo"
END
NUMBER F_GIOCARSOL 3
BEGIN
PROMPT 2 11 "Gio. tra cart. e soll. "
FIELD GIOCARSOL
HELP "Intervallo in giorni tra cartolina e primo sollecito"
END
NUMBER F_GIOSOLSOL 3
BEGIN
PROMPT 2 12 "Gio. tra soll. e soll. "
FIELD GIOSOLSOL
HELP "Intervallo in giorni tra solleciti"
END
NUMBER F_GIOULTSOL 3
BEGIN
PROMPT 2 13 "Gio. tra penult. e ult. soll. "
FIELD GIOULTSOL
HELP "Intervallo tra penultimo e ultimo sollecito"
END
NUMBER F_GIOPERRIT 3
BEGIN
PROMPT 2 14 "Gio. tra chiamate per ritard. "
FIELD GIOPERRIT
HELP "Giorni tra le chiamate per ritardatari"
END
NUMBER F_NUMMAXSOL 2
BEGIN
PROMPT 2 15 "Num. max di solleciti "
FIELD NUMMAXSOL
HELP "Numero massimo di solleciti inviabili per soggetto"
END
DATE F_DATAULTCON
BEGIN
PROMPT 2 17 "Data ultima conv. "
FIELD DATAULTCON
//FLAGS "D"
END
GROUPBOX DLG_NULL 41 8
BEGIN
PROMPT 37 4 "Parametri per chiusura periodica"
END
NUMBER F_DONEMER 3
BEGIN
PROMPT 38 5 "Donazioni per passaggio a emeriti "
FIELD DONEMER
FLAGS "U"
END
NUMBER F_INTESTI 2
BEGIN
PROMPT 38 6 "Intervallo di estinzione in anni "
FIELD INTESTI
FLAGS "U"
END
TEXT DLG_NULL
BEGIN
PROMPT 38 7 "Categorie:"
END
STRING F_CATEMER 2
BEGIN
PROMPT 39 8 "emeriti "
FIELD CATEMER
FLAGS "U"
USE CTD
INPUT CODTAB F_CATEMER
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@30" S0
OUTPUT F_CATEMER CODTAB
OUTPUT F_DESC_CATEMER S0
CHECKTYPE NORMAL
WARNING "Codice non presente"
END
STRING F_DESC_CATEMER 30 20
BEGIN
PROMPT 56 8 ""
FLAGS "D"
END
STRING F_CATESTI 2
BEGIN
PROMPT 39 9 "estinti "
FIELD CATESTI
FLAGS "U"
USE CTD
INPUT CODTAB F_CATESTI
COPY DISPLAY F_CATEMER
OUTPUT F_CATESTI CODTAB
OUTPUT F_DESC_CATESTI S0
CHECKTYPE NORMAL
WARNING "Codice non presente"
END
STRING F_DESC_CATESTI 30 20
BEGIN
PROMPT 56 9 ""
FLAGS "D"
END
STRING F_CATCANC 2
BEGIN
PROMPT 39 10 "cancellati "
FIELD CATCANC
FLAGS "U"
USE CTD
INPUT CODTAB F_CATCANC
COPY DISPLAY F_CATEMER
OUTPUT F_CATCANC CODTAB
OUTPUT F_DESC_CATCANC S0
CHECKTYPE NORMAL
WARNING "Codice non presente"
END
STRING F_DESC_CATCANC 30 20
BEGIN
PROMPT 56 10 ""
FLAGS "D"
END
ENDPAGE
ENDMASK

8
at/attbtcs.h Executable file
View File

@ -0,0 +1,8 @@
// tabella tipi/esiti controlli sanitari
#define F_TABTCS_CODTAB 100
#define F_TABTCS_DESCR 101
#define F_TABTCS_CATCOLL 102
#define F_TABTCS_MODSTATO 103
#define F_TABTCS_STATO 104
#define F_DESCR_CATCOLL 105
#define DLG_DEL 106

85
at/attbtcs.uml Executable file
View File

@ -0,0 +1,85 @@
#include "attbtcs.h"
TOOLBAR "" 0 0 0 2
#include <relapbar.h>
ENDPAGE
PAGE "Tipi/Esiti controlli sanitari" -1 -1 78 18
STRING F_TABTCS_CODTAB 2
BEGIN
PROMPT 2 1 "Codice "
FIELD CODTAB
USE TCS
CHECKTYPE REQUIRED
INPUT CODTAB F_TABTCS_CODTAB
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@30" S0
OUTPUT F_TABTCS_CODTAB CODTAB
OUTPUT F_TABTCS_DESCR S0
KEY 1
FLAGS "U"
HELP "Inserire il codice del controllo sanitario"
END
STRING F_TABTCS_DESCR 30
BEGIN
PROMPT 2 3 "Descrizione "
FIELD S0
USE TCS KEY 2
CHECKTYPE REQUIRED
INPUT S0 F_TABTCS_DESCR
DISPLAY "Descrizione@30" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TABTCS_CODTAB
KEY 2
HELP "Inserire la descrizione del controllo"
END
STRING F_TABTCS_CATCOLL 2
BEGIN
PROMPT 2 5 "Cat.collegata "
FIELD S7
FLAGS "U"
USE CTD
INPUT CODTAB F_TABTCS_CATCOLL
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@30" S0
OUTPUT F_TABTCS_CATCOLL CODTAB
OUTPUT F_DESCR_CATCOLL S0
CHECKTYPE NORMAL
WARNING "Codice non presente"
END
STRING F_DESCR_CATCOLL 30
BEGIN
PROMPT 23 5 ""
FLAGS "D"
END
RADIOBUTTON F_TABTCS_MODSTATO 35
BEGIN
PROMPT 2 7 "Modifica stato"
FIELD S6
ITEM "N|Non modifica"
MESSAGE CLEAR, F_TABTCS_STATO
MESSAGE DISABLE, F_TABTCS_STATO
ITEM "I|Idoneita'"
MESSAGE ENABLE, F_TABTCS_STATO
ITEM "S|Sospensione"
MESSAGE ENABLE, F_TABTCS_STATO
ITEM "B|Blocco (sosp. senza id. auto)"
MESSAGE ENABLE, F_TABTCS_STATO
ITEM "F|Fine sospensione"
MESSAGE ENABLE, F_TABTCS_STATO
HELP "Indicare se il controllo modifica lo stato e in che modo"
END
STRING F_TABTCS_STATO 20
BEGIN
PROMPT 40 8 "Stato "
FIELD S3
END
ENDPAGE
ENDMASK

8
at/attbtdn.h Executable file
View File

@ -0,0 +1,8 @@
#define F_TABTDN_CODTAB 100
#define F_TABTDN_DESCR 101
#define F_TABTDN_PROCDON 102
#define F_TABTDN_IDON1 103
#define F_DESC_I1 104
#define F_TABTDN_IDON2 105
#define F_DESC_I2 106
#define DLG_DEL 107

88
at/attbtdn.uml Executable file
View File

@ -0,0 +1,88 @@
#include "attbtdn.h"
TOOLBAR "" 0 0 0 2
#include <relapbar.h>
ENDPAGE
PAGE "Tipi di donazione" -1 -1 78 7
STRING F_TABTDN_CODTAB 2
BEGIN
PROMPT 2 1 "Codice "
FIELD CODTAB
HELP "Inserire il codice del tipo di donazione"
USE TDN
CHECKTYPE REQUIRED
INPUT CODTAB F_TABTDN_CODTAB
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@30" S0
OUTPUT F_TABTDN_CODTAB CODTAB
OUTPUT F_TABTDN_DESCR S0
KEY 1
FLAGS "U"
END
STRING F_TABTDN_DESCR 30
BEGIN
PROMPT 2 3 "Descrizione "
FIELD S0
HELP "Inserire la descrizione del tipo di donazione"
USE TDN KEY 2
CHECKTYPE REQUIRED
INPUT S0 F_TABTDN_DESCR
DISPLAY "Descrizione@30" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TABTDN_CODTAB
KEY 2
END
LISTBOX F_TABTDN_PROCDON 17
BEGIN
PROMPT 2 5 "Procedura di donazione "
FIELD S6
#include "procdon.h"
HELP "Indicare la procedura di donazione"
END
STRING F_TABTDN_IDON1 2
BEGIN
PROMPT 2 7 "Idoneità necessarie: 1 "
FIELD S7
USE IDO SELECT S6==#F_TABTDN_PROCDON
INPUT CODTAB F_TABTDN_IDON1
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@30" S0
OUTPUT F_TABTDN_IDON1 CODTAB
OUTPUT F_DESC_I1 S0
CHECKTYPE REQUIRED
FLAGS "U"
END
STRING F_DESC_I1 30
BEGIN
PROMPT 31 7 ""
FLAGS "D"
END
STRING F_TABTDN_IDON2 2
BEGIN
PROMPT 2 9 " 2 "
FIELD S8
USE IDO SELECT S6==#F_TABTDN_PROCDON
INPUT CODTAB F_TABTDN_IDON2
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@30" S0
OUTPUT F_TABTDN_IDON2 CODTAB
OUTPUT F_DESC_I2 S0
CHECKTYPE NORMAL
FLAGS "U"
END
STRING F_DESC_I2 30
BEGIN
PROMPT 31 9 ""
FLAGS "D"
END
ENDPAGE
ENDMASK

3
at/f97.dir Executable file
View File

@ -0,0 +1,3 @@
97
1
%medici|0|0|145|0|Medici di base AVIS|||