diff --git a/ci/ci0200.cpp b/ci/ci0200.cpp index b9d58b267..635c63803 100755 --- a/ci/ci0200.cpp +++ b/ci/ci0200.cpp @@ -243,7 +243,7 @@ void TRisoatt_msk::azzera_tutto(TSheet_field& sheet) //vaoler pari a zero, e poi ricarica lo sheet void TRisoatt_msk::registra() { - TLocalisamfile tabmod(LF_TABMOD); + //TLocalisamfile tabmod(LF_TABMOD); TModule_table tab("&ROA"); const int anno = get_int(F_ANNO); TSheet_field& sheet = sfield(F_SHEET); @@ -277,11 +277,6 @@ void TRisoatt_msk::registra() tab.put("I0", anme); } err = tab.rewrite(); - int cazzone; - if (err == NOERR) - cazzone = 1; - else - cazzone = err; } else { diff --git a/ci/ci0500.cpp b/ci/ci0500.cpp index 6eb73c740..114e06f5c 100755 --- a/ci/ci0500.cpp +++ b/ci/ci0500.cpp @@ -24,8 +24,8 @@ class TDisp_risoatt_msk : public TAutomask protected: virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); - const TString & add_field_to_tab_filter(TString & filtro, short id, int len = 0, const char * empty_value = ""); - const TString & add_field_to_tab_key(TString & filtro, TToken_string & row, short id, bool number, int len = 0, const char * empty_value = ""); + const TString& add_field_to_tab_filter(const short id, int len = 0, const char* empty_value = ""); + const TString& add_field_to_tab_key(TToken_string& row, const short id, int len = 0); void riempi_sheet(); void nuova_riga(); void azzera_riga(TSheet_field& sheet); @@ -37,39 +37,35 @@ public: TDisp_risoatt_msk(); }; -const TString & TDisp_risoatt_msk::add_field_to_tab_filter(TString & filtro, short id, int len, const char * empty_value) +//ADD_FIELD_TO_TAB_FILTER: aggiunge un campo al filtro +const TString& TDisp_risoatt_msk::add_field_to_tab_filter(const short id, int len, const char* empty_value) { if (len <= 0) len = field(id).size(); - TString & val = get_tmp_string(80); + + TString& val = get_tmp_string(); val = get(id); if (val == empty_value) val.fill('?', len); else val.left_just(len); - filtro << val; - - return val; + + return val; } -const TString & TDisp_risoatt_msk::add_field_to_tab_key(TString & filtro, TToken_string & row, short id, bool number, int len, const char * empty_value) +const TString& TDisp_risoatt_msk::add_field_to_tab_key(TToken_string& row, const short id, int len) { - TSheet_field & sh = sfield(F_SHEET); + TSheet_field& sh = sfield(F_SHEET); if (len <= 0) len = sh.sheet_mask().field(id).size(); - TString & val = get_tmp_string(80); + TString& val = get_tmp_string(); val = row.get(sh.cid2index(id)); - if (val == empty_value) - val.fill(number ? '0' : ' ', len); - else - val.left_just(len); - filtro << val; - - return val; + val.left_just(len); + return val; } //RIEMPI_SHEET: metodo che riempie lo sheet in base ai campi chiave @@ -80,34 +76,22 @@ void TDisp_risoatt_msk::riempi_sheet() char risoatt = get(F_RISOATT)[0]; //guardo il tipo risorsa / attrezzatura che sto ricercando (se Tutti setto a '?') - add_field_to_tab_filter(filtro, F_RISOATT, 1, "T"); + filtro << add_field_to_tab_filter(F_RISOATT, 1, "T"); //leggo il codice corretto a seconda del tipo selezionato (se vuoto setto a 16 caratteri '?') switch(risoatt) { - case 'T': - add_field_to_tab_filter(filtro, F_CODICE); - break; - case 'R': - add_field_to_tab_filter(filtro, F_CODRIS); - break; - case 'A': - add_field_to_tab_filter(filtro, F_CODATT); - break; - default: break; + case 'T': filtro << add_field_to_tab_filter(F_CODICE); break; + case 'R': filtro << add_field_to_tab_filter(F_CODRIS); break; + case 'A': filtro << add_field_to_tab_filter(F_CODATT); break; + default : break; } - add_field_to_tab_filter(filtro, F_ANNO); + filtro << add_field_to_tab_filter(F_ANNO); //leggo il mese (se vuoto setto a '??') - add_field_to_tab_filter(filtro, F_MESE, 2); + filtro << add_field_to_tab_filter(F_MESE, 2); //leggo il tipo ora (se vuoto setto a '??') - add_field_to_tab_filter(filtro, F_TPORA); - - int i ; - for (i = filtro.len() - 1; i >= 0 && filtro[i] == '?'; i--); - filtro.cut(++i); - if (i > 0) - filtro << '*'; + filtro << add_field_to_tab_filter(F_TPORA); TString query; @@ -158,7 +142,7 @@ void TDisp_risoatt_msk::riempi_sheet() void TDisp_risoatt_msk::nuova_riga() { TSheet_field& sheet = sfield(F_SHEET); - TToken_string & riga = sheet.row(-1); + TToken_string& riga = sheet.row(-1); const int r = sheet.items() - 1; sheet.select(r); TMask& msk = sheet.sheet_mask(); @@ -195,16 +179,39 @@ void TDisp_risoatt_msk::nuova_riga() const int orecons = msk.get_int(S_ORECONS); if(oreprev > 0 || orecons > 0) - sheet.update_row(r); + { + riga.add(msk.get(S_RISOATT)[0], sheet.cid2index(S_RISOATT)); + const char tipo = msk.get(S_RISOATT)[0]; + + switch(tipo) + { + case 'R': + { + riga.add(msk.get(S_CODRIS), sheet.cid2index(S_CODRIS)); + riga.add(msk.get(S_DESRIS), sheet.cid2index(S_DESRIS)); + } + break; + case 'A': + { + riga.add(msk.get(S_CODATT), sheet.cid2index(S_CODATT)); + riga.add(msk.get(S_DESATT), sheet.cid2index(S_DESATT)); + } + break; + default : break; + } + riga.add(msk.get(S_ANNO), sheet.cid2index(S_ANNO)); + riga.add(msk.get(S_MESE), sheet.cid2index(S_MESE)); + riga.add(msk.get(S_TPORA), sheet.cid2index(S_TPORA)); + riga.add(msk.get(S_OREPREV), sheet.cid2index(S_OREPREV)); + riga.add(msk.get(S_ORECONS), sheet.cid2index(S_ORECONS)); + } else { - sheet.destroy(sheet.items() - 1); + sheet.destroy(r); sheet.force_update(); } } msk.enable_default(); - - sheet.check_row(sheet.items() - 1); sheet.force_update(); } @@ -251,13 +258,15 @@ void TDisp_risoatt_msk::registra() { chiave.cut(0); TToken_string& riga = *(TToken_string*)row; - const TString4 tipo = add_field_to_tab_key(chiave, riga, S_RISOATT, false, 1, "T"); - const bool risorsa = tipo[0] == 'R'; - const TString16 codice = add_field_to_tab_key(chiave, riga, risorsa ? S_CODRIS : S_CODATT, false); - const TString4 stranno = add_field_to_tab_key(chiave, riga, S_ANNO, true); - const TString4 mese = add_field_to_tab_key(chiave, riga, S_MESE, true, 2); - const TString4 tpora = add_field_to_tab_key(chiave, riga, S_TPORA, true); - const TString80 descr = risorsa ? riga.get(sheet.cid2index(S_DESRIS)) : riga.get(sheet.cid2index(S_DESATT)); + + const TString4 tipo = add_field_to_tab_key(riga, S_RISOATT, 1); + chiave << tipo; + chiave << add_field_to_tab_key(riga, tipo[0] == 'R' ? S_CODRIS : S_CODATT); + + TString8 anme; anme << add_field_to_tab_key(riga, S_ANNO) << add_field_to_tab_key(riga, S_MESE, 2); + chiave << anme; + chiave << add_field_to_tab_key(riga, S_TPORA); + const TString80 descr = tipo[0] == 'R' ? riga.get(sheet.cid2index(S_DESRIS)) : riga.get(sheet.cid2index(S_DESATT)); const int oreprev = riga.get_int(sheet.cid2index(S_OREPREV)); const int orecons = riga.get_int(sheet.cid2index(S_ORECONS)); diff --git a/ci/ci0500a.h b/ci/ci0500a.h index 5ad0ac552..728516f0a 100755 --- a/ci/ci0500a.h +++ b/ci/ci0500a.h @@ -16,7 +16,7 @@ #define S_RISOATT 101 #define S_CODRIS 102 #define S_DESRIS 108 -#define S_CODATT 201 +#define S_CODATT 202 #define S_DESATT 208 #define S_ANNO 103 #define S_MESE 104 diff --git a/ci/ci0500a.uml b/ci/ci0500a.uml index d08286018..a11838429 100755 --- a/ci/ci0500a.uml +++ b/ci/ci0500a.uml @@ -198,6 +198,7 @@ BEGIN OUTPUT S_DESATT S0 CHECKTYPE REQUIRED FLAGS "GD" + MESSAGE COPY,S_CODRIS GROUP 2 END @@ -232,6 +233,7 @@ BEGIN DISPLAY "Descrizione@50" S0 OUTPUT S_TPORA CODTAB FLAGS "D" + CHECKTYPE REQUIRED END NUMBER S_OREPREV 6