From 20a39f0bbad5a45bc9aae603ba9fe40604bed965 Mon Sep 17 00:00:00 2001 From: cris Date: Tue, 6 Nov 2001 09:48:07 +0000 Subject: [PATCH] Patch level :1.7 nopatch Files correlati :at8.exe ctbo2at.ini Ricompilazione Demo : [ ] Commento :sistemate ultime menate importazione winsit file git-svn-id: svn://10.65.10.50/trunk@9934 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- at/at8800.cpp | 57 +++++++++++++++++++++++++++++++++++++++++++------- at/atlib1.cpp | 27 ++++++++++++++++++++---- at/ctbo2at.ini | 20 ++++++++++++++++-- 3 files changed, 91 insertions(+), 13 deletions(-) diff --git a/at/at8800.cpp b/at/at8800.cpp index a27b824a5..546995bba 100755 --- a/at/at8800.cpp +++ b/at/at8800.cpp @@ -119,6 +119,9 @@ class TCtbo2at: public TSkeleton_application { TMask* _msk; TCtbo2at_file* _trasfile; + int _numdon1, _numdon2; + TString16 _catini1, _catfin1, _catini2, _catfin2; + bool _sttess2, _dataisc; protected: virtual bool create(void); @@ -129,10 +132,9 @@ protected: static bool annulla_handler(TMask_field& f, KEY k); bool test_donation(TRectype& recsog, const char* tipo, const TDate& datadon, const TString& luogodon); bool test_inter(TRectype& recsog, const char* tipo, const TDate& datadon, int inter); - + void calcola_categoria(TRectype& recsog); public: const TMask& msk() const { return *_msk; } - TCtbo2at() {} virtual ~TCtbo2at() {} }; @@ -147,6 +149,15 @@ bool TCtbo2at::create() _msk = new TMask("at8800a"); _msk->set(F_FILENAME,ATFILENAME); _trasfile = NULL; + 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"); return TSkeleton_application::create(); } @@ -201,9 +212,43 @@ bool TCtbo2at::test_donation(TRectype& recsog, const char* tipo, const TDate& da donazioni.insert_row(rec); donazioni.write(TRUE); calcola_donazioni_lib(recsog, &donazioni); // questo metodo sistema tutto!!! + calcola_categoria(recsog); + // aggiorno data e utente ultimo aggiornamento + const TDate oggi(TODAY); + recsog.put(SOG_DATAULTAGG,oggi); + recsog.put(SOG_UTENULTAGG,"WINSIT"); return TRUE; } - + +void TCtbo2at::calcola_categoria(TRectype& recsog) +{ + 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); + catdon = _catfin1; + } + 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); + catdon = _catfin2; + } + } +} + bool TCtbo2at::test_inter(TRectype& recsog, const char* tipo, const TDate& datadon, int inter) { TRectype* key_cont = new TRectype(LF_CONTSAN); @@ -318,11 +363,9 @@ void TCtbo2at_file::validate(TCursor& cur,TRecord_text &rec, TToken_string &s, T { const TString code(s.get(0)); TString valore; - if (code == "_TOTALE") - { - } - else if (code == "_ULTIMA") + if (code == "_UPPERCASE") { + valore.upper(); } else NFCHECK("Macro non definita: %s", (const char *)code); str = valore; diff --git a/at/atlib1.cpp b/at/atlib1.cpp index b327be25a..c52eaa87e 100755 --- a/at/atlib1.cpp +++ b/at/atlib1.cpp @@ -8,6 +8,7 @@ #include "contsan.h" #include "donaz.h" #include "idoneita.h" +#include "rconvoc.h" bool is_idon_one(TString16 idon, const char* tipo) // verifica che l'idoneità "idon" sia del tipo "tipo" @@ -383,25 +384,43 @@ void don_datepross(TRectype& soggetto) statoparziale = soggetto.get(SOG_STATOSI); datastatoparziale = soggetto.get_date(SOG_DATASI); tipostato = modstato_tcs(statoparziale); - //if (statoparziale == SOSPENSIONE) if (tipostato == 'S') datasi = NULLDATE; - //if (statoparziale == IDONEITA) if (tipostato == 'I') if (datastatoparziale > datasi) datasi = datastatoparziale; statoparziale = soggetto.get(SOG_STATOAF); datastatoparziale = soggetto.get_date(SOG_DATAAF); tipostato = modstato_tcs(statoparziale); - //if (statoparziale == SOSPENSIONE) if (tipostato == 'S') dataaf = NULLDATE; - //if (statoparziale == IDONEITA) if (tipostato = 'I') if (datastatoparziale > dataaf) dataaf = datastatoparziale; soggetto.put(SOG_DATAPROSSI,datasi); soggetto.put(SOG_DATAPROSAF,dataaf); + // se la data prossima SI è superiore all'ultima convocazione + // va cancellata, anche dall'archivio convocazioni + TDate dataconv = soggetto.get_date(SOG_DATACONV); + if (datasi >= dataconv) + { + TLocalisamfile rconv(LF_RCONVOC); + const long codsog = soggetto.get_long(SOG_CODICE); + rconv.setkey(2); + rconv.zero(); + rconv.put(RCV_DATACONV, dataconv); + rconv.put(RCV_CODICE, codsog); + int err = rconv.read(); + if (err == NOERR) + { + rconv.put(RCV_ANNULLATO,TRUE); + rconv.rewrite(); + } + soggetto.put(SOG_DATACONV, NULLDATE); + soggetto.put(SOG_DATAULTSOL, NULLDATE); + const int zeroconv = 0; + soggetto.put(SOG_NUMCONV, zeroconv); + } } void calcola_donazioni_lib(TRectype& soggetto, TRecord_array* donazioni) diff --git a/at/ctbo2at.ini b/at/ctbo2at.ini index f6c87ee6e..3c98d932f 100755 --- a/at/ctbo2at.ini +++ b/at/ctbo2at.ini @@ -63,13 +63,15 @@ NAME(3) = COGNOME TYPE(3) = STRINGA FIELD(3) = 90->COGNOME POSITION(3) = 12 -LENGTH(3) = 25 +LENGTH(3) = 25 +MESSAGE(3) = _UPPERCASE NAME(4) = NOME TYPE(4) = STRINGA FIELD(4) = 90->NOME POSITION(4) = 37 LENGTH(4) = 25 +MESSAGE(4) = _UPPERCASE NAME(5) = DATA NASCITA TYPE(5) = DATA @@ -82,30 +84,35 @@ TYPE(6) = STRINGA FIELD(6) = 90->COMNASC POSITION(6) = 71 LENGTH(6) = 4 +MESSAGE(6) = _UPPERCASE NAME(7) = SESSO TYPE(7) = STRINGA FIELD(7) = 90->SESSO POSITION(7) = 75 LENGTH(7) = 1 +MESSAGE(7) = _UPPERCASE NAME(8) = TESSERA SSN TYPE(8) = STRINGA FIELD(8) = 90->TESSSSN POSITION(8) = 76 LENGTH(8) = 16 +MESSAGE(8) = _UPPERCASE NAME(9) = CODICE FISCALE TYPE(9) = STRINGA FIELD(9) = 90->CF POSITION(9) = 92 LENGTH(9) = 16 +MESSAGE(9) = _UPPERCASE NAME(10) = INDIRIZZO DOMICILIO TYPE(10) = STRINGA FIELD(10) = 90->DOM_INDIR POSITION(10) = 108 LENGTH(10) = 30 +MESSAGE(10) = _UPPERCASE NAME(11) = CAP DOMICILIO TYPE(11) = STRINGA @@ -118,12 +125,14 @@ TYPE(12) = STRINGA FIELD(12) = 90->DOM_CODCOM POSITION(12) = 143 LENGTH(12) = 4 +MESSAGE(12) = _UPPERCASE NAME(13) = INDIRIZZO RESIDENZA TYPE(13) = STRINGA FIELD(13) = 90->RES_INDIR POSITION(13) = 148 LENGTH(13) = 30 +MESSAGE(13) = _UPPERCASE NAME(14) = CAP RESIDENZA TYPE(14) = STRINGA @@ -136,6 +145,7 @@ TYPE(15) = STRINGA FIELD(15) = 90->RES_CODCOM POSITION(15) = 183 LENGTH(15) = 4 +MESSAGE(15) = _UPPERCASE NAME(16) = TELEFONO ABITAZIONE TYPE(16) = STRINGA @@ -160,24 +170,28 @@ TYPE(19) = STRINGA FIELD(19) = 90->GRUPPOAB0 POSITION(19) = 229 LENGTH(19) = 3 +MESSAGE(19) = _UPPERCASE NAME(20) = RH/ANTID TYPE(20) = STRINGA FIELD(20) = 90->RHANTID POSITION(20) = 232 LENGTH(20) = 3 +MESSAGE(20) = _UPPERCASE NAME(21) = KELL TYPE(21) = STRINGA FIELD(21) = 90->KELL POSITION(21) = 235 LENGTH(21) = 3 +MESSAGE(21) = _UPPERCASE NAME(22) = FENOTIPO RH TYPE(22) = STRINGA FIELD(22) = 90->FENOTIPORH POSITION(22) = 238 LENGTH(22) = 6 +MESSAGE(22) = _UPPERCASE NAME(23) = DATA ULTIMA SI TYPE(23) = DATA @@ -223,8 +237,10 @@ NAME(31) = ASSOCIAZIONE TYPE(31) = STRINGA POSITION(31) = 304 LENGTH(31) = 8 +MESSAGE(31) = _UPPERCASE NAME(32) = LUOGO DONAZIONE TYPE(32) = STRINGA POSITION(32) = 312 -LENGTH(32) = 8 \ No newline at end of file +LENGTH(32) = 8 +MESSAGE(32) = _UPPERCASE