diff --git a/at/at5.cpp b/at/at5.cpp index b3840d0d3..3798456b4 100755 --- a/at/at5.cpp +++ b/at/at5.cpp @@ -4,7 +4,7 @@ #include "at5.h" -#define usage "Error - usage : %s -[0|1|2]" +#define usage "Error - usage : %s -[0|1|2|3]" int main(int argc, char** argv) { @@ -19,6 +19,8 @@ int main(int argc, char** argv) rt = at5200(argc, argv); break; case 2: rt = at5300(argc, argv); break; + case 3: + rt = at5400(argc, argv); break; default: error_box(usage, argv[0]) ; rt = 1; break; } diff --git a/at/at5.h b/at/at5.h index c4b67e203..010bf73bc 100755 --- a/at/at5.h +++ b/at/at5.h @@ -4,6 +4,7 @@ int at5100(int argc, char* argv[]); // parametri int at5200(int argc, char* argv[]); // situazione sanitaria int at5300(int argc, char* argv[]); // turni per controlli +int at5400(int argc, char* argv[]); // riordina donazioni #endif // __AT5_H diff --git a/at/at5.url b/at/at5.url index ed4de897d..b77ce0939 100755 --- a/at/at5.url +++ b/at/at5.url @@ -19,3 +19,8 @@ MENUBAR MENU_BAR(2) MENU MENU_BAR(2) SUBMENU MENU_FILE "~File" +/* at5 -3 riordina donazioni soggetto */ +MENUBAR MENU_BAR(3) +MENU MENU_BAR(3) + SUBMENU MENU_FILE "~File" + diff --git a/at/at5400.cpp b/at/at5400.cpp new file mode 100755 index 000000000..a582c53a0 --- /dev/null +++ b/at/at5400.cpp @@ -0,0 +1,121 @@ +#include +#include +#include +#include +#include +#include "atlib.h" + +#include "at5.h" + +#include "soggetti.h" +#include "donaz.h" +#include "contsan.h" +#include "idoneita.h" + +class TRiordinaSog : public TApplication +{ + TLocalisamfile* _soggetti; + TLocalisamfile* _donaz; + TLocalisamfile* _contsan; + TLocalisamfile* _idoneita; + TRecord_array* _sdonazioni; + TRecord_array* _scontrolli; + TRecord_array* _sidoneita; + +protected: + virtual bool create(); + virtual bool destroy(); +public: + TRiordinaSog() {} + virtual ~TRiordinaSog() {} +}; + +bool TRiordinaSog::create() +{ + TApplication::create(); + + if (argc() < 3) + return error_box("Specificare il codice del soggetto"); + long codsog = atol(argv(2)); + _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); + const int numdon1 = config.get_int("NumDon1"); + const int numdon2 = config.get_int("NumDon2"); + TString16 catini1 = config.get("CatIni1"); + TString16 catfin1 = config.get("CatFin1"); + TString16 catini2 = config.get("CatIni2"); + TString16 catfin2 = config.get("CatFin2"); + const bool sttess2 = config.get_bool("StTess2"); + const bool dataisc = config.get_bool("DataIsc"); + const int etadonne = config.get_int("EtaDonne"); + const int intsi_f1 = config.get_int("IntSI_F1"); + const int intsi_f2 = config.get_int("IntSI_F2"); + const int intsi_m = config.get_int("IntSI_M"); + const int intaf_m = config.get_int("IntAF_M"); + TRectype soggetto(LF_SOGGETTI); + _soggetti->put(SOG_CODICE, codsog); + if (_soggetti->read() == NOERR) + { + TRectype& sog = _soggetti->curr(); + TRectype* key = new TRectype(LF_DONAZ); + key->put(DON_CODICE, codsog); + int err = _sdonazioni->read(key); + if (err == NOERR) + { + calcola_donazioni_lib(sog, _sdonazioni); + _soggetti->rewrite(); + } + TTable ctd("CTD"); + TString16 catdon = sog.get(SOG_CATDON); + const int totdon = sog.get_int(SOG_TOTDON); + ctd.put("CODTAB",catdon); + if (ctd.read() == NOERR) + { + bool dimissione = ctd.get_bool("B0"); + if (dimissione) + { + sog.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()) + sog.put(SOG_CATDON, catfin1); + if ((catdon == catini2 || catini2.empty()) && (totdon>=numdon2) && catfin2.not_empty() && (!sttess2 || dimissione)) + sog.put(SOG_CATDON, catfin2); + } + TDate dataiscsog = sog.get_date(SOG_DATAISC); + if (dataiscsog.empty() && dataisc) + { + const TRectype& riga = _sdonazioni->row(1); + sog.put(SOG_DATAISC,riga.get(DON_DATADON)); + } + _soggetti->rewrite(); + } + stop_run(); + return TRUE; +} + +bool TRiordinaSog::destroy() +{ + delete _sidoneita; + delete _scontrolli; + delete _sdonazioni; + delete _idoneita; + delete _contsan; + delete _donaz; + delete _soggetti; + return TApplication::destroy(); +} + +int at5400(int argc, char* argv[]) +{ + TRiordinaSog a; + a.run(argc, argv, "Riordina donazioni soggetto"); + return 0; +}