diff --git a/ce/ce0500.cpp b/ce/ce0500.cpp index b5bc70f3e..0ba269578 100755 --- a/ce/ce0500.cpp +++ b/ce/ce0500.cpp @@ -119,6 +119,7 @@ protected: int calcola_stato_attivita(); bool cespite_ok() const; void set_cespi_filter(); + void crea_filtro(TString& filter) const; public: int stato_attivita() const { return _staat; } @@ -152,6 +153,31 @@ void TQuery_mask::on_user_search(TOperable_field& o) } } +//metodo per creare il filtro in base ai parametri maschera +void TQuery_mask::crea_filtro(TString& filter) const +{ + if (get(F_SELECT) == "I") // Filtro per impianto + { + const TString& imp = get(F_IMPIANTO); + if (imp.full()) + filter << '(' << CESPI_CODIMP << "=\"" << imp << "\")"; + } + else // Filtro per attività + { + filter << "(STR(" << CESPI_CODCGRA << "=" << get_int(F_GRUPPO) << ')'; + TString4 specie = get(F_SPECIE); specie.rtrim(); // Toglie spazi FINALI + filter << "&&(" << CESPI_CODSPA << "=\"" << specie << "\"))"; + } + + const int cat = get_int(F_CATEGORIA); + if (cat > 0) + { + if (filter.full()) + filter << "&&"; + filter << "(STR(CODCAT==" << cat << "))"; + } +} + void TQuery_mask::on_search_event(TOperable_field& o) { TToken_string order, fields, header; @@ -181,22 +207,10 @@ void TQuery_mask::on_search_event(TOperable_field& o) rel.add("CIM","CODTAB==CODIMP"); TString filter; - - if (get(F_SELECT) == "I") // Filtro per impianto - { - const TString& imp = get(F_IMPIANTO); - if (!imp.empty()) - filter << CESPI_CODIMP << "=\"" << imp << '"'; - } - else // Filtro per attività - { - filter << "STR(" << CESPI_CODCGRA << "=" << get_int(F_GRUPPO) << ')'; - TString4 specie = get(F_SPECIE); specie.rtrim(); // Toglie spazi FINALI - filter << "&&(" << CESPI_CODSPA << "=\"" << specie << "\")"; - } + crea_filtro(filter); TSorted_cursor cur(&rel, order, filter); - TCursor_sheet sht(&cur, order, TR("Cespiti"), header, 0, 1); + TCursor_sheet sht(&cur, fields, TR("Cespiti"), header, 0, 1); if (sht.run() == K_ENTER) { @@ -243,18 +257,8 @@ bool TQuery_mask::cespite_ok() const void TQuery_mask::set_cespi_filter() { TString filter; - if (get(F_SELECT) == "I") // Filtro per impianto - { - const TString& imp = get(F_IMPIANTO); - if (!imp.empty()) - filter << CESPI_CODIMP << "=\"" << imp << '"'; - } - else // Filtro per attività - { - filter << "STR(" << CESPI_CODCGRA << "=" << get_int(F_GRUPPO) << ')'; - TString4 specie = get(F_SPECIE); specie.rtrim(); // Toglie spazi FINALI - filter << "&&(" << CESPI_CODSPA << "=\"" << specie << "\")"; - } + crea_filtro(filter); + efield(F_IDCESPITE).browse()->set_filter(filter); efield(F_DESC).browse()->set_filter(filter); } @@ -319,6 +323,7 @@ bool TQuery_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) } if (e == fe_close && o.empty() && !field(F_IDCESPITE).empty() && !cespite_ok()) return error_box(TR("È necessario specificare la categoria del nuovo cespite")); + set_cespi_filter(); } } break; diff --git a/ce/ce0500a.uml b/ce/ce0500a.uml index 228c55b8e..dceeb7b8f 100755 --- a/ce/ce0500a.uml +++ b/ce/ce0500a.uml @@ -6,7 +6,7 @@ ENDPAGE PAGE "Anagrafica cespiti" 0 2 0 0 -GROUPBOX DLG_NULL 78 6 +GROUPBOX DLG_NULL 78 8 BEGIN PROMPT 0 1 "@bParametri ditta" END @@ -57,7 +57,7 @@ END RADIOBUTTON F_SELECT 1 75 BEGIN - PROMPT 1 3 "" + PROMPT 1 4 "Ricerca per: " FLAGS "Z" ITEM "A|Attività" MESSAGE SHOW,1@|HIDE,2@ @@ -67,14 +67,14 @@ END NUMBER F_GRUPPO 2 BEGIN - PROMPT 1 5 "Gruppo " + PROMPT 1 7 "Gruppo " FLAGS "Z" GROUP 1 END STRING F_SPECIE 4 BEGIN - PROMPT 16 5 "Specie " + PROMPT 16 7 "Specie " FLAGS "_" USE CCB JOIN %CAT ALIAS 400 INTO CODTAB=CODTAB[5,10] @@ -93,14 +93,14 @@ END STRING F_DESC_GRSP 60 45 BEGIN - PROMPT 31 5 "" + PROMPT 31 7 "" FLAGS "D" GROUP 1 END NUMBER F_IMPIANTO 10 BEGIN - PROMPT 1 5 "Impianto " + PROMPT 1 7 "Impianto " FLAGS "Z" USE CIM INPUT CODTAB F_IMPIANTO @@ -114,7 +114,7 @@ END STRING F_DESC_IMP 50 45 BEGIN - PROMPT 26 5 "" + PROMPT 26 7 "" FLAGS "Z" USE CIM KEY 2 INPUT S0 F_DESC_IMP @@ -127,7 +127,7 @@ END NUMBER F_CATEGORIA 2 BEGIN - PROMPT 1 7 "Categoria " + PROMPT 1 9 "Categoria " FLAGS "BZ" DRIVENBY F_GRUPPO DRIVENBY F_SPECIE @@ -137,7 +137,7 @@ END STRING F_DESC_CAT 60 58 BEGIN - PROMPT 16 7 "" + PROMPT 16 9 "" FLAGS "B" DRIVENBY F_GRUPPO DRIVENBY F_SPECIE @@ -145,7 +145,7 @@ END STRING F_IDCESPITE 10 BEGIN - PROMPT 1 8 "Cespite " + PROMPT 1 10 "Cespite " FLAGS "UZ" USE LF_CESPI INPUT IDCESPITE F_IDCESPITE @@ -167,7 +167,7 @@ END STRING F_DESC 60 50 BEGIN - PROMPT 24 8 "" + PROMPT 24 10 "" USE LF_CESPI KEY 3 INPUT DESC F_DESC DISPLAY "Descrizione@50" DESC @@ -184,24 +184,24 @@ BEGIN KEY 2 END -GROUPBOX DLG_NULL 78 13 +GROUPBOX DLG_NULL 78 12 BEGIN - PROMPT 1 9 "@bRicerce alternative e personalizzate" + PROMPT 0 11 "@bRicerche alternative e personalizzate" END BUTTON F_SEARCH1 22 2 BEGIN - PROMPT 2 10 "Per categoria" + PROMPT 1 12 "Per categoria" END BUTTON F_SEARCH2 22 2 BEGIN - PROMPT 28 10 "Per impianto" + PROMPT 27 12 "Per impianto" END BUTTON F_SEARCH3 22 2 BEGIN - PROMPT 54 10 "Per stabilimento" + PROMPT 53 12 "Per stabilimento" END ENDPAGE