From 2bd8f6552990f7f3c019e2fc2b894d198df489c8 Mon Sep 17 00:00:00 2001 From: cris Date: Fri, 7 Aug 1998 09:35:35 +0000 Subject: [PATCH] Patch level : Files correlati : Ricompilazione Demo : [ ] Commento : in caso di cancellazione convocazione riporta indietro la datat ultima convocazione sulla sezione interessata; corretto ordine nella destroy(); visualizza anche il giorno 'domenica'; corretta la rewrite (non aggiunge 1 al numero cartoline di ogni soggetto) git-svn-id: svn://10.65.10.50/trunk@6912 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- at/at0400.cpp | 96 ++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 69 insertions(+), 27 deletions(-) diff --git a/at/at0400.cpp b/at/at0400.cpp index 86ec3aa7e..b8d28cb96 100755 --- a/at/at0400.cpp +++ b/at/at0400.cpp @@ -47,9 +47,9 @@ class TGestioneConvocazioni: public TRelation_application TString16 _codsez; // codice sezione convocata TString16 _codsot; // codice sottogruppo TDate _dataini; - bool _ritarda; + bool _tutti, _ritarda; int _maxrit; - bool _inserimento; + bool _inserimento; protected: virtual bool user_create(); @@ -126,6 +126,9 @@ bool TGestioneConvocazioni::filter_func_convoc(const TRelation* rel) } else filtrato = (punto == app()._punto); + if (app()._tutti && !filtrato) + filtrato = (punto == app()._punto); + // filtro per data prossima donazione //const TDate dataprossi = sog.get(SOG_DATAPROSSI); //filtrato = (dataprossi.ok()) && (dataprossi <= data) && filtrato; @@ -164,11 +167,13 @@ bool TGestioneConvocazioni::filter_func_convoc(const TRelation* rel) } bool TGestioneConvocazioni::sezione_handler(TMask_field& f, KEY k) -{ +{ if (f.to_check(k)) + //if (f.to_check(k)) { TMask& m = f.mask(); - if (m.get(F_DATAINI).empty() && (m.mode() == MODE_INS)) + //if (m.get(F_DATAINI).empty() && (m.mode() == MODE_INS)) + if (m.mode() == MODE_INS) { //const TString16 codsez = m.get(F_CODSEZ); //const TString16 codsot = m.get(F_CODSOT); @@ -182,8 +187,11 @@ bool TGestioneConvocazioni::sezione_handler(TMask_field& f, KEY k) { TDate data = sez.get_date(SEZ_DATAULTCON); ++data; - m.set(F_DATAINI, data); - m.check_field(F_DATAINI); + if (data <= m.get_date(F_DATA)) + { + m.set(F_DATAINI, data); + m.check_field(F_DATAINI); + } } } } @@ -199,9 +207,6 @@ bool TGestioneConvocazioni::data_handler(TMask_field& f, KEY k) TString16 datagio = ""; switch (giorno) { - case 0: - datagio = "Domenica"; - break; case 1: datagio = "Lunedi"; break; @@ -220,6 +225,9 @@ bool TGestioneConvocazioni::data_handler(TMask_field& f, KEY k) case 6: datagio = "Sabato"; break; + case 7: + datagio = "Domenica"; + break; } f.mask().set(F_DATAGIO,datagio); } @@ -237,9 +245,6 @@ bool TGestioneConvocazioni::dataini_handler(TMask_field& f, KEY k) TString16 datagio = ""; switch (giorno) { - case 0: - datagio = "Domenica"; - break; case 1: datagio = "Lunedi"; break; @@ -258,6 +263,9 @@ bool TGestioneConvocazioni::dataini_handler(TMask_field& f, KEY k) case 6: datagio = "Sabato"; break; + case 7: + datagio = "Domenica"; + break; } f.mask().set(F_DATAINIGIO,datagio); } @@ -273,6 +281,8 @@ bool TGestioneConvocazioni::esegui_handler(TMask_field& f, KEY k) app()._numero = m.get_long(F_NUMERO); app()._data = m.get(F_DATA); app()._punto = m.get(F_PUNTO); + //app()._tutti = m.get_bool(F_TUTTI); + app()._tutti = TRUE; app()._tipo = m.get(F_TIPO); app()._codsez = m.get(F_CODSEZ); app()._codsot = m.get(F_CODSOT); @@ -535,22 +545,24 @@ bool TGestioneConvocazioni::user_create() bool TGestioneConvocazioni::user_destroy() { - delete _tmpconv; - delete _tmprconv; - delete _tmprel; - delete _rel; - delete _relsog; - delete _msk; - delete _cur; - delete _rconvoc; - delete _soggetti; delete _sconvocati; + delete _soggetti; + delete _rconvoc; + delete _cur; + delete _relsog; + delete _rel; + delete _msk; + delete _tmprel; + delete _tmprconv; + delete _tmpconv; return TRUE; } const char* TGestioneConvocazioni::get_next_key() { // autonumerazione progressiva delle convocazioni + _rel->lfile().last(); + _lastcod = _rel->lfile().get_long(COV_NUMERO); return format("%d|%ld", F_NUMERO, _lastcod+1 ); } @@ -611,6 +623,36 @@ bool TGestioneConvocazioni::remove() int err = _sconvocati->remove(); if (err == _iseof || err == _isemptyfile) err = NOERR; + if (err == NOERR) + { + TLocalisamfile sez(LF_SEZIONI); + sez.setkey(1); + sez.zero(); + sez.put(SEZ_CODSEZ, app()._codsez); + sez.put(SEZ_CODSOT, app()._codsot); + if (sez.read() == NOERR) + { + TLocalisamfile convoc(LF_CONVOC); + convoc.setkey(3); + convoc.put(COV_CODSEZ, app()._codsez); + convoc.put(COV_CODSOT, app()._codsot); + convoc.put(COV_DATA, app()._data); + convoc.read(); + --convoc; + TDate dataini = convoc.get_date(COV_DATAINI); + TDate datanulla(NULLDATE); + while (!convoc.eof() && (dataini == datanulla)) + { + --convoc; + dataini = convoc.get_date(COV_DATAINI); + } + if ((convoc.get(COV_CODSEZ) == app()._codsez) && (convoc.get(COV_CODSOT) == app()._codsot)) + sez.put(SEZ_DATAULTCON, convoc.get_date(COV_DATA)); + else + sez.put(SEZ_DATAULTCON,NULLDATE); + sez.rewrite(); + } + } // cancella la testata if (err == NOERR) ok = TRelation_application::remove(); return (ok && err == NOERR); @@ -709,20 +751,20 @@ int TGestioneConvocazioni::scrivi(const TMask& m, bool ri) rec.put(RCV_CHIAMATA,chiamata); rec.put(RCV_STAMPATO,row.get(5)); rec.put(RCV_ANNULLATO,row.get(6)); - //if (!ri) - //{ // aggiornamento archivio soggetti soggetti.put(SOG_CODICE,codice); if (soggetti.read() == NOERR) { if (chiamata == 'S') soggetti.put(SOG_DATAULTSOL,dataconv); - soggetti.put(SOG_DATACONV,dataconv); - int numconv = soggetti.get_int(SOG_NUMCONV); - soggetti.put(SOG_NUMCONV,numconv+1); + if (!(soggetti.get_date(SOG_DATACONV) == dataconv)) + { + soggetti.put(SOG_DATACONV,dataconv); + int numconv = soggetti.get_int(SOG_NUMCONV); + soggetti.put(SOG_NUMCONV,numconv+1); + } soggetti.rewrite(); } - //} } err = ri ? _sconvocati->rewrite() : _sconvocati->write(); }