Patch level :

Files correlati     :
Ricompilazione Demo : [ ]
Commento            : Programmi per collegamento altre procedure (per ora Rimini, CT e comunale/portatile)


git-svn-id: svn://10.65.10.50/trunk@7732 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
cris 1999-02-02 14:31:21 +00:00
parent 47aa76bf3a
commit 1ee5dca507
10 changed files with 1007 additions and 0 deletions

27
at/at8.cpp Executable file
View File

@ -0,0 +1,27 @@
#include <xvt.h>
#include <strings.h>
#include <checks.h>
#include "at8.h"
#define usage "Error - usage : %s -{0|1|2}"
int main(int argc,char** argv)
{
int rt = -1 ;
const int r = (argc > 1) ? atoi(&argv[1][1]) : -1;
switch (r)
{
case 0:
rt = at8100(argc,argv) ; break;
case 1:
rt = at8200(argc,argv) ; break;
case 2:
rt = at8300(argc,argv) ; break;
default:
error_box(usage, argv[0]) ; break;
}
return rt;
}

9
at/at8.h Executable file
View File

@ -0,0 +1,9 @@
#ifndef __AT8_H
#define __AT8_H
int at8100(int argc, char* argv[]);
int at8200(int argc, char* argv[]);
int at8300(int argc, char* argv[]);
#endif // __AT8_H

19
at/at8.url Executable file
View File

@ -0,0 +1,19 @@
#define LIBDIR f:\xvt.403\win_x86\ptk\lib
#define QFIRMNAME "AGA Informatica S.r.l."
#include <default.url>
/* at8 -0 aggiornamento stato soggetti da CT */
MENU TASK_MENUBAR
SUBMENU MENU_FILE "~File"
/* at8 -1 aggiornamento controlli da portatili */
MENUBAR MENU_BAR(1)
MENU MENU_BAR(1)
SUBMENU MENU_FILE "~File"
/* at8 -2 aggiornamento donazioni da CT */
MENUBAR MENU_BAR(2)
MENU MENU_BAR(2)
SUBMENU MENU_FILE "~File"

352
at/at8100.cpp Executable file
View File

@ -0,0 +1,352 @@
#include <applicat.h>
#include <execp.h>
#include <mask.h>
#include <msksheet.h>
#include <mailbox.h>
#include <prefix.h>
#include <progind.h>
#include <recarray.h>
#include <relation.h>
#include <tabutil.h>
#include <urldefid.h>
#include <validate.h>
#include <lffiles.h>
#include "at8.h"
// nomi campi maschera
#include "atlib.h"
// nomi dei campi
#include "soggetti.h"
#include "donaz.h"
#include "contsan.h"
#include "idoneita.h"
class TCTStato2AT : 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:
TCTStato2AT() {}
};
HIDDEN inline TCTStato2AT& app() { return (TCTStato2AT&) main_app(); }
bool TCTStato2AT::create()
{
TApplication::create();
_msk = new TMask("at8100a");
_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 TCTStato2AT::destroy()
{
delete _sidoneita;
delete _scontrolli;
delete _sdonazioni;
delete _idoneita;
delete _contsan;
delete _donaz;
delete _rel;
delete _msk;
return TApplication::destroy();
}
bool TCTStato2AT::menu(MENU_TAG m)
{
KEY tasto = _msk->run();
if (tasto == K_ENTER)
{
_rel->lfile().setkey(2);
bool modificato = FALSE;
bool modifanagr = FALSE;
TDate oggi(TODAY);
TRectype recsog = _rel->curr();
TExternisamfile* f = new TExternisamfile("$ctdon");
TProgind *pi;
pi = new TProgind(f->eod(),"Aggiornamento stato soggetti da CT", FALSE, TRUE, 10);
pi->setstatus(1);
for(f->first(); !f->eof(); f->next())
{
pi->addstatus(1);
modificato = FALSE;
modifanagr = FALSE;
const TString80 cognome = f->get("COGNOME");
const TString80 nome = f->get("NOME");
const TDate datanasc = f->get_date("DATANASC");
const donaz_anno = f->get_int("DONAZ_ANNO");
recsog.zero();
recsog.put(SOG_COGNOME, cognome);
recsog.put(SOG_NOME, nome);
recsog.put(SOG_DATANASC, datanasc);
if (recsog.read(_rel->lfile())==NOERR)
{
// aggiorna anagrafica soggetto
TString16 tel_casa = f->get("TEL_CASA");
TString16 tel_lavoro = f->get("TEL_LAVORO");
if (tel_casa.not_empty())
{
recsog.put(SOG_TELABI,tel_casa);
modifanagr = TRUE;
}
if (tel_lavoro.not_empty())
{
recsog.put(SOG_TELLAV,tel_lavoro);
modifanagr = TRUE;
}
TString16 stato = f->get("STATO");
TString16 statoavis = recsog.get(SOG_STATO);
TDate dataini = f->get_date("DATAINI");
TDate datafin = f->get_date("DATAFIN");
TString16 idon = "";
if ((stato=="08") || (stato=="03") || (stato=="09"))
{
if (statoavis != "DE")
{
TRectype* key = new TRectype(LF_CONTSAN);
key->put(CON_CODICE, recsog.get(SOG_CODICE));
_scontrolli->read(key);
int progcon = _scontrolli->rows()+1;
TRectype& reccon = _contsan->curr();
reccon.zero();
reccon.put(CON_CODICE, recsog.get(SOG_CODICE));
reccon.put(CON_PROGCON, progcon);
if (dataini.ok())
reccon.put(CON_DATACON, dataini);
else
reccon.put(CON_DATACON, oggi);
reccon.put(CON_TIPOCON, "DE");
if (datafin.ok())
{
reccon.put(CON_PROSSTIPO, "FS");
reccon.put(CON_PROSSDATA, datafin);
}
TString80 resp = "AGGIORNAMENTO DA CENTRO TRASF.";
reccon.put(CON_RESPONSAB, resp);
//reccon.put(IDO_MOTIVO, _motivoid);
modificato = TRUE;
_scontrolli->insert_row(reccon);
_scontrolli->write(TRUE);
}
}
if (stato=="05")
{
if (statoavis != "E")
{
TRectype* key = new TRectype(LF_CONTSAN);
key->put(CON_CODICE, recsog.get(SOG_CODICE));
int err = _scontrolli->read(key);
int progcon = _scontrolli->rows()+1;
TRectype& reccon = _contsan->curr();
reccon.zero();
reccon.put(CON_CODICE, recsog.get(SOG_CODICE));
reccon.put(CON_PROGCON, progcon);
if (dataini.ok())
reccon.put(CON_DATACON, dataini);
else
reccon.put(CON_DATACON, oggi);
reccon.put(CON_TIPOCON, "E");
if (datafin.ok())
{
reccon.put(CON_PROSSTIPO, "FS");
reccon.put(CON_PROSSDATA, datafin);
}
TString80 resp = "AGGIORNAMENTO DA CENTRO TRASF.";
reccon.put(CON_RESPONSAB, resp);
//reccon.put(IDO_MOTIVO, _motivoid);
modificato = TRUE;
_scontrolli->insert_row(reccon);
_scontrolli->write(TRUE);
}
}
if ((stato=="022") || (stato=="04"))
{
if (modstato_tcs(statoavis) != 'S')
{
TRectype* key = new TRectype(LF_CONTSAN);
key->put(CON_CODICE, recsog.get(SOG_CODICE));
int err = _scontrolli->read(key);
int progcon = _scontrolli->rows()+1;
TRectype& reccon = _contsan->curr();
reccon.zero();
reccon.put(CON_CODICE, recsog.get(SOG_CODICE));
reccon.put(CON_PROGCON, progcon);
if (dataini.ok())
reccon.put(CON_DATACON, dataini);
else
reccon.put(CON_DATACON, oggi);
reccon.put(CON_TIPOCON, "SO");
if (datafin.ok())
{
reccon.put(CON_PROSSTIPO, "FS");
reccon.put(CON_PROSSDATA, datafin);
}
TString80 resp = "AGGIORNAMENTO DA CENTRO TRASF.";
reccon.put(CON_RESPONSAB, resp);
//reccon.put(IDO_MOTIVO, _motivoid);
modificato = TRUE;
_scontrolli->insert_row(reccon);
_scontrolli->write(TRUE);
}
}
if (stato=="021")
{
const char modstato = modstato_tcs(statoavis);
bool id_soloaf = ((recsog.get(SOG_STATOSI)!="ID") && (recsog.get(SOG_STATOAF)=="ID"));
if ((modstato != 'I') && (modstato != 'F') && (!id_soloaf) )
{
TRectype* key = new TRectype(LF_CONTSAN);
key->put(CON_CODICE, recsog.get(SOG_CODICE));
_scontrolli->read(key);
int progcon = _scontrolli->rows()+1;
TRectype& reccon = _contsan->curr();
reccon.zero();
reccon.put(CON_CODICE, recsog.get(SOG_CODICE));
reccon.put(CON_PROGCON, progcon);
reccon.put(CON_DATACON, oggi);
reccon.put(CON_TIPOCON, "PI");
reccon.put(CON_IDON1, "PL");
if (recsog.get_int(SOG_INTAF)==0)
reccon.put(CON_INTAF, _intaf_m);
else
reccon.put(CON_INTAF, recsog.get_int(SOG_INTAF));
TString80 resp = "AGGIORNAMENTO DA CENTRO TRASF.";
reccon.put(CON_RESPONSAB, resp);
//reccon.put(IDO_MOTIVO, _motivoid);
modificato = TRUE;
_scontrolli->insert_row(reccon);
_scontrolli->write(TRUE);
}
}
if ((stato=="02") || (stato=="01") || (stato=="011"))
{
if ((modstato_tcs(statoavis) != 'I') && (modstato_tcs(statoavis) != 'F'))
{
TRectype* key = new TRectype(LF_CONTSAN);
key->put(CON_CODICE, recsog.get(SOG_CODICE));
_scontrolli->read(key);
int progcon = _scontrolli->rows()+1;
TRectype& reccon = _contsan->curr();
reccon.zero();
reccon.put(CON_CODICE, recsog.get(SOG_CODICE));
reccon.put(CON_PROGCON, progcon);
reccon.put(CON_DATACON, oggi);
reccon.put(CON_TIPOCON, "PI");
reccon.put(CON_IDON1, "SI");
if (donaz_anno==0)
{
if (recsog.get_int(SOG_INTSI)==0)
{
const TString16 sesso = recsog.get(SOG_SESSO);
if (sesso == "2")
{
TDate datanasc = recsog.get_date(SOG_DATANASC);
int eta = oggi.year() - datanasc.year();
if(eta <= _etadonne)
reccon.put(CON_INTSI, _intsi_f1);
else
reccon.put(CON_INTSI, _intsi_f2);
}
else
reccon.put(CON_INTSI, _intsi_m);
}
else
reccon.put(CON_INTSI, recsog.get_int(SOG_INTSI));
}
else
{
const int intsi = (360/donaz_anno);
reccon.put(CON_INTSI, intsi);
}
TString80 resp = "AGGIORNAMENTO DA CENTRO TRASF.";
reccon.put(CON_RESPONSAB, resp);
//reccon.put(IDO_MOTIVO, _motivoid);
modificato = TRUE;
_scontrolli->insert_row(reccon);
_scontrolli->write(TRUE);
}
}
if (modificato)
{
TRectype* key = new TRectype(LF_IDONEITA);
key->put(IDO_CODICE, recsog.get(SOG_CODICE));
_sidoneita->read(key);
con_reord(recsog,_scontrolli,_sidoneita);
modifanagr = TRUE;
}
if (modifanagr)
{
recsog.put(SOG_DATAULTAGG, oggi);
recsog.put(SOG_UTENULTAGG, "CT");
recsog.rewrite(_rel->lfile());
}
}
}
delete pi;
delete f;
}
return FALSE;
}
int TCTStato2AT::write(TSheet_field& s)
{
return NOERR;
}
int at8100(int argc, char* argv[])
{
TCTStato2AT a;
a.run(argc, argv, "Aggiornamento stato soggetti da CT");
return 0;
}

13
at/at8100a.uml Executable file
View File

@ -0,0 +1,13 @@
PAGE "Aggiornamento stato soggetti 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

367
at/at8200.cpp Executable file
View File

@ -0,0 +1,367 @@
#include <applicat.h>
#include <execp.h>
#include <mask.h>
#include <msksheet.h>
#include <mailbox.h>
#include <printer.h>
#include <prefix.h>
#include <progind.h>
#include <recarray.h>
#include <relation.h>
#include <tabutil.h>
#include <urldefid.h>
#include <validate.h>
#include <lffiles.h>
#include "at8.h"
#include "at8200a.h"
// nomi campi maschera
#include "atlib.h"
// nomi dei campi
#include "soggetti.h"
#include "donaz.h"
#include "contsan.h"
#include "idoneita.h"
class TAggConSan : 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:
TAggConSan() {}
};
HIDDEN inline TAggConSan& app() { return (TAggConSan&) main_app(); }
bool TAggConSan::create()
{
TApplication::create();
_msk = new TMask("at8200a");
_rel = new TRelation(LF_SOGGETTI);
//_rel->add("CTD", "CODTAB==CATDON",1,0,ALIAS_CTD);
_soggetti = new TLocalisamfile(LF_SOGGETTI);
_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 TAggConSan::destroy()
{
delete _sidoneita;
delete _scontrolli;
delete _sdonazioni;
delete _idoneita;
delete _contsan;
delete _donaz;
delete _soggetti;
delete _rel;
delete _msk;
return TApplication::destroy();
}
bool TAggConSan::menu(MENU_TAG m)
{
KEY tasto = _msk->run();
if (tasto == K_ENTER)
{
bool anagrafe = _msk->get_bool(F_ANAGRAFE);
_rel->lfile().setkey(2);
bool modificato = FALSE;
TDate oggi(TODAY);
TPrintrow row;
TString256 rigastampa;
rigastampa = "SOGGETTI NON TROVATI SU ARCHIVIO PROVINCIALE";
rigastampa << oggi.string();
rigastampa.center_just(120);
row.put(rigastampa);
row.put("@>", 1);
row.put("Pag. @#", 105);
printer().setheaderline(2, row);
rigastampa = "";
rigastampa.fill('-',120);
row.reset();
row.put(rigastampa);
printer().setheaderline(3, row);
TRectype recsog = _rel->curr();
TExternisamfile* fc = new TExternisamfile("$portacon");
TProgind *pi;
pi = new TProgind(fc->eod(),"Aggiornamento controlli sanitari da portatile", FALSE, TRUE, 10);
pi->setstatus(1);
for(fc->first(); !fc->eof(); fc->next())
{
pi->addstatus(1);
modificato = FALSE;
const TString80 cognome = fc->get("COGNOME");
const TString80 nome = fc->get("NOME");
const TDate datanasc = fc->get_date("DATANASC");
recsog.zero();
recsog.put(SOG_COGNOME, cognome);
recsog.put(SOG_NOME, nome);
recsog.put(SOG_DATANASC, datanasc);
if (recsog.read(_rel->lfile())==NOERR)
{
TDate datacon = fc->get_date("DATACON");
bool esiste = FALSE;
TRectype* key = new TRectype(LF_CONTSAN);
key->put(CON_CODICE, recsog.get(SOG_CODICE));
_scontrolli->read(key);
for (int r=1; r<=_scontrolli->rows(); r++)
{
const TRectype& riga = _scontrolli->row(r);
TDate datacon1 = riga.get(CON_DATACON);
if (datacon==datacon1)
esiste = TRUE;
}
if (!esiste)
{
int progcon = _scontrolli->rows()+1;
TRectype& reccon = _contsan->curr();
reccon.zero();
reccon.put(CON_CODICE, recsog.get(SOG_CODICE));
reccon.put(CON_PROGCON, progcon);
reccon.put(CON_DATACON, datacon);
reccon.put(CON_TIPOCON, fc->get("TIPOCON"));
reccon.put(CON_IDON1, fc->get("IDON1"));
reccon.put(CON_IDON2, fc->get("IDON2"));
reccon.put(CON_IDON3, fc->get("IDON3"));
reccon.put(CON_IDON4, fc->get("IDON4"));
reccon.put(CON_INTSI, fc->get("INTSI"));
reccon.put(CON_INTAF, fc->get("INTAF"));
reccon.put(CON_PROSSTIPO, fc->get("PROSSTIPO"));
reccon.put(CON_PROSSDATA, fc->get("PROSSDATA"));
reccon.put(CON_MOTIVO, fc->get("MOTIVO"));
TString80 resp = "port.-" ;
resp << fc->get("RESPONSAB");
reccon.put(CON_RESPONSAB, resp);
modificato = TRUE;
_scontrolli->insert_row(reccon);
_scontrolli->write(TRUE);
}
if (modificato)
{
TRectype* key = new TRectype(LF_IDONEITA);
key->put(IDO_CODICE, recsog.get(SOG_CODICE));
_sidoneita->read(key);
con_reord(recsog,_scontrolli,_sidoneita);
recsog.put(SOG_DATAULTAGG, oggi);
recsog.put(SOG_UTENULTAGG, "PORT.");
recsog.rewrite(_rel->lfile());
}
}
else
{
rigastampa = "";
rigastampa << cognome;
rigastampa << " " << nome;
rigastampa << " " << datanasc.string();
row.reset();
row.put((const char*) rigastampa);
printer().print(row);
}
}
delete pi;
delete fc;
TExternisamfile* fi = new TExternisamfile("$portaido");
TProgind *pi1;
pi1 = new TProgind(fi->eod(),"Aggiornamento controlli sanitari da portatile", FALSE, TRUE, 10);
pi1->setstatus(1);
for(fi->first(); !fi->eof(); fi->next())
{
pi1->addstatus(1);
modificato = FALSE;
const TString80 cognome = fi->get("COGNOME");
const TString80 nome = fi->get("NOME");
const TDate datanasc = fi->get_date("DATANASC");
recsog.zero();
recsog.put(SOG_COGNOME, cognome);
recsog.put(SOG_NOME, nome);
recsog.put(SOG_DATANASC, datanasc);
if (recsog.read(_rel->lfile())==NOERR)
{
TDate dataido = fi->get_date("DATAIDO");
bool esiste = FALSE;
TRectype* key = new TRectype(LF_IDONEITA);
key->put(IDO_CODICE, recsog.get(SOG_CODICE));
_sidoneita->read(key);
for (int r=1; r<=_sidoneita->rows(); r++)
{
const TRectype& riga = _sidoneita->row(r);
TDate dataido1 = riga.get(IDO_DATAIDO);
if (dataido==dataido1)
esiste = TRUE;
}
if (!esiste)
{
int progido = _sidoneita->rows()+1;
TRectype& recido = _idoneita->curr();
recido.zero();
recido.put(IDO_CODICE, recsog.get(SOG_CODICE));
recido.put(IDO_PROGIDO, progido);
recido.put(IDO_DATAIDO, dataido);
recido.put(IDO_TIPOIDO, fi->get("TIPOIDO"));
recido.put(IDO_IDO_SOS, fi->get("IDO_SOS"));
recido.put(IDO_INTERVALLO, fi->get("INTERVALLO"));
recido.put(IDO_FINESOS, fi->get("FINESOS"));
recido.put(IDO_MOTIVO, fi->get("MOTIVO"));
TString80 resp = "port.-" ;
resp << fi->get("RESPONSAB");
recido.put(IDO_RESPONSAB, resp);
modificato = TRUE;
_sidoneita->insert_row(recido);
_sidoneita->write(TRUE);
}
if (modificato)
{
TRectype* key = new TRectype(LF_CONTSAN);
key->put(CON_CODICE, recsog.get(SOG_CODICE));
_scontrolli->read(key);
con_reord(recsog,_scontrolli,_sidoneita);
recsog.put(SOG_DATAULTAGG, oggi);
recsog.put(SOG_UTENULTAGG, "PORT.");
recsog.rewrite(_rel->lfile());
}
}
else
{
rigastampa = "";
rigastampa << cognome;
rigastampa << " " << nome;
rigastampa << " " << datanasc.string();
row.reset();
row.put((const char*) rigastampa);
printer().print(row);
}
}
delete pi1;
delete fi;
if (anagrafe)
{
TExternisamfile* fs = new TExternisamfile("$portasog");
TProgind *pi2;
pi2 = new TProgind(fs->eod(),"Aggiornamento dati anagrafici da portatile", FALSE, TRUE, 10);
pi2->setstatus(1);
for(fs->first(); !fs->eof(); fs->next())
{
pi2->addstatus(1);
modificato = FALSE;
const TString80 cognome = fs->get("COGNOME");
const TString80 nome = fs->get("NOME");
const TDate datanasc = fs->get_date("DATANASC");
recsog.zero();
recsog.put(SOG_COGNOME, cognome);
recsog.put(SOG_NOME, nome);
recsog.put(SOG_DATANASC, datanasc);
if (recsog.read(_rel->lfile())==NOERR)
{
recsog.put(SOG_TESSAVIS, fs->get("TESSAVIS"));
recsog.put(SOG_COGNOME_SP, fs->get("COGNOME_SP"));
recsog.put(SOG_DOM_INDIR, fs->get("DOM_INDIR"));
recsog.put(SOG_DOM_CODCOM, fs->get("DOM_CODCOM"));
recsog.put(SOG_DOM_CODLOC, fs->get("DOM_CODLOC"));
recsog.put(SOG_DOM_STRADA, fs->get("DOM_STRADA"));
recsog.put(SOG_DOM_DISTRI, fs->get("DOM_DISTRI"));
recsog.put(SOG_DOM_CAP, fs->get("DOM_CAP"));
recsog.put(SOG_RES_INDIR, fs->get("RES_INDIR"));
recsog.put(SOG_RES_CODCOM, fs->get("RES_CODCOM"));
recsog.put(SOG_RES_CODLOC, fs->get("RES_CODLOC"));
recsog.put(SOG_RES_CAP, fs->get("RES_CAP"));
recsog.put(SOG_COMNASC, fs->get("COMNASC"));
recsog.put(SOG_SESSO, fs->get("SESSO"));
recsog.put(SOG_CF, fs->get("CF"));
recsog.put(SOG_DOCID, fs->get("DOCID"));
recsog.put(SOG_TELABI, fs->get("TELABI"));
recsog.put(SOG_TELLAV, fs->get("TELLAV"));
recsog.put(SOG_TELALT, fs->get("TELALT"));
recsog.put(SOG_CATNOND1, fs->get("CATNOND1"));
recsog.put(SOG_CATNOND2, fs->get("CATNOND2"));
recsog.put(SOG_CODMED, fs->get("CODMED"));
recsog.put(SOG_NOTIZIARIO, fs->get("NOTIZIARIO"));
recsog.put(SOG_BENEM, fs->get("BENEM"));
recsog.put(SOG_CONSENSO, fs->get("CONSENSO"));
recsog.put(SOG_MODCONV, fs->get("MODCONV"));
recsog.put(SOG_GIOPREDON, fs->get("GIOPREDON"));
recsog.put(SOG_GIOPRECON, fs->get("GIOPRECON"));
recsog.put(SOG_CONDOCC, fs->get("CONDOCC"));
recsog.put(SOG_POSPROF, fs->get("POSPROF"));
recsog.put(SOG_RAMOATT, fs->get("RAMOATT"));
recsog.put(SOG_TITSTUD, fs->get("TITSTUD"));
recsog.put(SOG_PROFESS, fs->get("PROFESS"));
recsog.put(SOG_ESCLUSO, fs->get("ESCLUSO"));
recsog.put(SOG_TERMESCL, fs->get("TERMESCL"));
recsog.put(SOG_MOTESCL, fs->get("MOTESCL"));
recsog.put(SOG_DATAULTAGG, oggi);
recsog.put(SOG_UTENULTAGG, "PORT.");
recsog.rewrite(_rel->lfile());
}
else
{
rigastampa = "";
rigastampa << cognome;
rigastampa << " " << nome;
rigastampa << " " << datanasc.string();
row.reset();
row.put((const char*) rigastampa);
printer().print(row);
}
}
delete pi2;
delete fs;
}
}
return FALSE;
}
int TAggConSan::write(TSheet_field& s)
{
return NOERR;
}
int at8200(int argc, char* argv[])
{
TAggConSan a;
a.run(argc, argv, "Aggiornamento archivio da portatile");
return 0;
}

4
at/at8200a.h Executable file
View File

@ -0,0 +1,4 @@
// aggiornamento archivio da portatili
// definizione campi per maschera di selezione
#define F_ANAGRAFE 101

19
at/at8200a.uml Executable file
View File

@ -0,0 +1,19 @@
#include "at8200a.h"
PAGE "Aggiornamento archivio da portatili" -1 -1 78 20
BOOLEAN F_ANAGRAFE
BEGIN
PROMPT 2 5 "Aggiorna anche dati anagrafici"
END
BUTTON DLG_OK 9 2
BEGIN
PROMPT -12 14 ""
END
BUTTON DLG_QUIT 9 2
BEGIN
PROMPT -22 14 ""
END
ENDPAGE
ENDMASK

184
at/at8300.cpp Executable file
View File

@ -0,0 +1,184 @@
#include <applicat.h>
#include <execp.h>
#include <mask.h>
#include <msksheet.h>
#include <mailbox.h>
#include <prefix.h>
#include <progind.h>
#include <recarray.h>
#include <relation.h>
#include <tabutil.h>
#include <urldefid.h>
#include <validate.h>
#include <lffiles.h>
#include "at8.h"
#include "atlib.h"
// nomi dei campi
#include "soggetti.h"
#include "donaz.h"
#include "contsan.h"
#include "idoneita.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(),"Aggiornamento donazioni 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);
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);
if ((catdon == _catini2 || _catini2.empty()) && (totdon>=_numdon2) && _catfin2.not_empty() && (!_sttess2 || dimissione))
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));
}
}
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, "Aggiornamento donazioni da CT");
return 0;
}

13
at/at8300a.uml Executable file
View File

@ -0,0 +1,13 @@
PAGE "Aggiornamento donazioni 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