diff --git a/ce/ce3900.cpp b/ce/ce3900.cpp index 2e674690c..0deb79431 100755 --- a/ce/ce3900.cpp +++ b/ce/ce3900.cpp @@ -1,6 +1,8 @@ #include #include #include +#include +#include #include #include #include @@ -91,7 +93,14 @@ bool TStampa_sintetica_mask::on_field_event(TOperable_field& o, TField_event e, } TStampa_sintetica_mask::TStampa_sintetica_mask() : TAutomask("ce3900"), _preview(false) -{} +{ + const bool has_ca = dongle().active(CAAUT); + //se la chiave ha CA mostra i campi gruppo 2 (analitica).. + if (has_ca) + show(-2); + else + hide(-2); +} /////////////////////////////////////////////////////////////// // RECORDSET @@ -109,14 +118,19 @@ static const TStampa_sintetica_recordset* myself = NULL; //metodo per caricare i valori nel recordset dalla maschera...fighissimo!! void TStampa_sintetica_recordset::set_filter(const TStampa_sintetica_mask& msk) { - const TString& dacat = msk.get(F_FROM_CAT); - const TString& acat = msk.get(F_TO_CAT); - TString query = "USE CESPI\nSELECT "; - query << "(ANSI(DTCOMP)<=" << msk.get_date(F_DATAFINE).date2ansi() << ")"; - //cespiti alienati esclusi? - if (msk.get_bool(F_EXCLUDE_ALIENS)) - query << "&&((DTALIEN='')||(ANSI(DTALIEN)>=" << msk.get_date(F_DATAINIZIO).date2ansi() << "))"; + //parametri per costruzione query + const bool exclude_aliens = msk.get_bool(F_EXCLUDE_ALIENS); + const bool anal = dongle().active(CAAUT); + TString query = "USE CESPI\nSELECT "; + query << "(ANSI(DTCOMP)<=#DATAFINE)"; //" << msk.get_date(F_DATAFINE).date2ansi() << ")"; + //cespiti alienati esclusi? + if (exclude_aliens) + query << "&&((DTALIEN='')||(ANSI(DTALIEN)>=#DATAINIZIO))"; // << msk.get_date(F_DATAINIZIO).date2ansi() << "))"; + + //categorie + const TString& dacat = msk.get(F_FROM_CAT); + const TString& acat = msk.get(F_TO_CAT); if (dacat.full() || acat.full()) { if (dacat == acat) @@ -125,8 +139,38 @@ void TStampa_sintetica_recordset::set_filter(const TStampa_sintetica_mask& msk) query << "&&(BETWEEN(CODCAT," << dacat << ',' << acat << "))"; } - query << "\nBY CODCAT|CODIMP|CODLOC|IDCESPITE"; //query standard senza raggruppamenti - set(query); //setta la nuova query nel report (che avrebbe solo USE CESPI) + //parte analitica + if (anal) + { + query << "&&(BETWEEN(SALCECMS.CODCDC,#DACODCDC,#ACODCDC))"; + query << "&&(BETWEEN(SALCECMS.CODCMS,#DACODCMS,#ACODCMS))"; + query << "&&(BETWEEN(SALCECMS.CODFASE,#DACODFASE,#ACODFASE))"; + query << "\nJOIN SALCECMS INTO IDCESPITE=IDCESPITE"; + } + + //ordinamenti + query << "\nBY CODCAT|CODIMP|CODLOC|IDCESPITE"; + + //setta la nuova complicata query nel report (che avrebbe solo USE CESPI) + set(query); + + set_var("#DATAFINE", msk.get_date(F_DATAFINE).date2ansi()); + if (exclude_aliens) + set_var("#DATAINIZIO", msk.get_date(F_DATAINIZIO).date2ansi()); + + if (anal) + { + const TString& codcdc = msk.get(F_CODCDC); + set_var("#DACODCDC", codcdc); + set_var("#ACODCDC", codcdc); + const TString& codcms = msk.get(F_CODCMS); + set_var("#DACODCMS", codcms); + set_var("#ACODCMS", codcms); + const TString& codfase = msk.get(F_CODFASE); + set_var("#DACODFASE", codfase); + set_var("#ACODFASE", codfase); + } + } //////////////////////////////////////////////////////// @@ -137,6 +181,7 @@ class TStampa_sintetica_rep : public TReport int _anno; int _tpamm; int _group_codimp, _group_codloc; + TString _codcdc, _codcms, _codfase; TCespite _cespite; protected: @@ -154,6 +199,10 @@ void TStampa_sintetica_rep::set_filter(const TStampa_sintetica_mask& msk) _group_codimp = msk.get_bool(F_GROUP_CODIMP); _group_codloc = msk.get_bool(F_GROUP_CODLOC); + _codcdc = msk.get(F_CODCDC); + _codcms = msk.get(F_CODCMS); + _codfase = msk.get(F_CODFASE); + ((TStampa_sintetica_recordset*) recordset())->set_filter(msk); } @@ -317,6 +366,8 @@ bool TStampa_sintetica_rep::get_usr_val(const TString& name, TVariant& var) cons var = _cespite.res_amm(); return true; } + + //campi di testata del report if (name == "#SITUAZIONE") //tipo situazione da stampare in testata { var.set(_tpamm); @@ -327,7 +378,21 @@ bool TStampa_sintetica_rep::get_usr_val(const TString& name, TVariant& var) cons var.set(_anno); return true; } - + if (name == "#CODCDC") + { + var.set(_codcdc); + return true; + } + if (name == "#CODCMS") + { + var.set(_codcms); + return true; + } + if (name == "#CODFASE") + { + var.set(_codfase); + return true; + } return TReport::get_usr_val(name, var); } diff --git a/ce/ce3900.h b/ce/ce3900.h index 80dff01bb..6125b3dda 100755 --- a/ce/ce3900.h +++ b/ce/ce3900.h @@ -21,4 +21,11 @@ #define F_GROUP_CODLOC 118 #define F_EXCLUDE_ALIENS 119 -#define F_REPORT 120 +#define F_CODCMS 120 +#define F_DESCMS 121 +#define F_CODFASE 122 +#define F_DESFASE 123 +#define F_CODCDC 124 +#define F_DESCDC 125 + +#define F_REPORT 126 diff --git a/ce/ce3900.uml b/ce/ce3900.uml index a601e8c8e..10d99f427 100755 --- a/ce/ce3900.uml +++ b/ce/ce3900.uml @@ -14,41 +14,40 @@ END NUMBER F_CODDITTA 5 BEGIN - PROMPT 2 1 "Ditta " - FLAGS "DF" - USE LF_NDITTE - INPUT CODDITTA F_CODDITTA - OUTPUT F_RAGSOC RAGSOC - CHECKTYPE REQUIRED + PROMPT 2 1 "Ditta " + FLAGS "DF" + USE LF_NDITTE + INPUT CODDITTA F_CODDITTA + OUTPUT F_RAGSOC RAGSOC + CHECKTYPE REQUIRED END STRING F_RAGSOC 55 BEGIN - PROMPT 20 1 "" - FLAGS "D" + PROMPT 20 1 "" + FLAGS "D" END NUMBER F_ESERCIZIO 4 BEGIN - PROMPT 2 2 "Esercizio " - FLAGS "Z" - USE CCE - JOIN ESC ALIAS 105 INTO CODTAB==CODTAB - INPUT CODTAB F_ESERCIZIO - DISPLAY "Codice esercizio" CODTAB - DISPLAY "Data inizio@15" 105@->D0 - DISPLAY "Data fine@15" 105@->D1 - OUTPUT F_ESERCIZIO CODTAB - OUTPUT F_DATAINIZIO 105@->D0 - OUTPUT F_DATAFINE 105@->D1 - CHECKTYPE REQUIRED - FIELD CODTAB[1,4] + PROMPT 2 2 "Esercizio " + FLAGS "Z" + USE CCE + JOIN ESC ALIAS 105 INTO CODTAB==CODTAB + INPUT CODTAB F_ESERCIZIO + DISPLAY "Codice esercizio" CODTAB + DISPLAY "Data inizio@15" 105@->D0 + DISPLAY "Data fine@15" 105@->D1 + OUTPUT F_ESERCIZIO CODTAB + OUTPUT F_DATAINIZIO 105@->D0 + OUTPUT F_DATAFINE 105@->D1 + CHECKTYPE REQUIRED END DATE F_DATAINIZIO BEGIN - PROMPT 20 2 "Data inizio " - FLAGS "D" + PROMPT 20 2 "Data inizio " + FLAGS "D" END DATE F_DATAFINE @@ -59,49 +58,47 @@ END NUMBER F_GRUPPO 2 BEGIN - PROMPT 2 3 "Gruppo " - FLAGS "Z" - USE CCB KEY 1 - JOIN %CGR ALIAS 106 INTO CODTAB==CODTAB[5,6] - INPUT CODTAB[1,4] F_ESERCIZIO SELECT - INPUT CODTAB[5,6] F_GRUPPO - INPUT CODTAB[7,10] F_SPECIE - DISPLAY "Codice" CODTAB[5,6] - DISPLAY "Descrizione@60" 106@->S0 - OUTPUT F_GRUPPO CODTAB[5,6] - OUTPUT F_D_GRUPPO 106@->S0 - CHECKTYPE NORMAL - FIELD CODTAB[5,6] + PROMPT 2 3 "Gruppo " + FLAGS "Z" + USE CCB KEY 1 + JOIN %CGR ALIAS 106 INTO CODTAB==CODTAB[5,6] + INPUT CODTAB[1,4] F_ESERCIZIO SELECT + INPUT CODTAB[5,6] F_GRUPPO + INPUT CODTAB[7,10] F_SPECIE + DISPLAY "Codice" CODTAB[5,6] + DISPLAY "Descrizione@60" 106@->S0 + OUTPUT F_GRUPPO CODTAB[5,6] + OUTPUT F_D_GRUPPO 106@->S0 + CHECKTYPE NORMAL END STRING F_SPECIE 4 BEGIN - PROMPT 2 4 "Specie " - FLAGS "_" - USE CCB KEY 1 - JOIN %CAT ALIAS 107 INTO CODTAB[1,2]==CODTAB[5,6] CODTAB[3,6]==CODTAB[7,10] - INPUT CODTAB[1,4] F_ESERCIZIO SELECT - INPUT CODTAB[5,6] F_GRUPPO SELECT - INPUT CODTAB[7,10] F_SPECIE - DISPLAY "Gruppo" CODTAB[5,6] - DISPLAY "Specie" CODTAB[7,10] - DISPLAY "Descrizione@60" 107@->S0 - OUTPUT F_SPECIE CODTAB[7,10] - OUTPUT F_D_SPECIE 107@->S0 - CHECKTYPE NORMAL - FIELD CODTAB[7,10] + PROMPT 2 4 "Specie " + FLAGS "_" + USE CCB KEY 1 + JOIN %CAT ALIAS 107 INTO CODTAB[1,2]==CODTAB[5,6] CODTAB[3,6]==CODTAB[7,10] + INPUT CODTAB[1,4] F_ESERCIZIO SELECT + INPUT CODTAB[5,6] F_GRUPPO SELECT + INPUT CODTAB[7,10] F_SPECIE + DISPLAY "Gruppo" CODTAB[5,6] + DISPLAY "Specie" CODTAB[7,10] + DISPLAY "Descrizione@60" 107@->S0 + OUTPUT F_SPECIE CODTAB[7,10] + OUTPUT F_D_SPECIE 107@->S0 + CHECKTYPE NORMAL END STRING F_D_GRUPPO 60 55 BEGIN - PROMPT 20 3 "" - FLAGS "D" + PROMPT 20 3 "" + FLAGS "D" END STRING F_D_SPECIE 60 55 BEGIN - PROMPT 20 4 "" - FLAGS "D" + PROMPT 20 4 "" + FLAGS "D" END GROUPBOX DLG_NULL 78 4 @@ -147,7 +144,7 @@ BEGIN FLAGS "Z" END -GROUPBOX DLG_NULL 78 4 +GROUPBOX DLG_NULL 39 3 BEGIN PROMPT 1 13 "@bRaggruppamenti" END @@ -156,17 +153,98 @@ BOOLEAN F_GROUP_CODIMP BEGIN PROMPT 2 14 "Per impianto " MESSAGE FALSE CLEAR,F_GROUP_CODLOC - MESSAGE TRUE ENABLE,F_GROUP_CODLOC + MESSAGE TRUE ENABLE,F_GROUP_CODLOC END BOOLEAN F_GROUP_CODLOC BEGIN - PROMPT 2 15 "Per localita' " + PROMPT 20 14 "Per localita' " +END + +GROUPBOX DLG_NULL 38 3 +BEGIN + PROMPT 41 13 "@bEsclusioni" END BOOLEAN F_EXCLUDE_ALIENS BEGIN - PROMPT 2 17 "Escludere i cespiti alienati" + PROMPT 42 14 "Escludere i cespiti alienati" +END + +GROUPBOX DLG_NULL 78 5 +BEGIN + PROMPT 1 16 "@bAnalitica" + GROUP 2 +END + +STRING F_CODCMS 20 +BEGIN + PROMPT 2 17 "Commessa " + USE LF_COMMESSE + INPUT CODCMS F_CODCMS + DISPLAY "Codice@20" CODCMS + DISPLAY "Descrizione@50" DESCRIZ + OUTPUT F_CODCMS CODCMS + OUTPUT F_DESCMS DESCRIZ + CHECKTYPE NORMAL + GROUP 2 +END + +STRING F_DESCMS 50 39 +BEGIN + PROMPT 36 17 "" + USE LF_COMMESSE KEY 2 + INPUT DESCRIZ F_DESCMS + DISPLAY "Descrizione@50" DESCRIZ + DISPLAY "Codice@20" CODCMS + COPY OUTPUT F_CODCMS + CHECKTYPE NORMAL + GROUP 2 +END + +STRING F_CODFASE 10 +BEGIN + PROMPT 2 18 "Fase " + USE LF_FASI + INPUT CODCMSFAS F_CODCMS SELECT + INPUT CODFASE F_CODFASE + DISPLAY "Fase@10" CODFASE + DISPLAY "Descrizione@50" DESCRIZ + OUTPUT F_CODFASE CODFASE + OUTPUT F_DESFASE DESCRIZ + CHECKTYPE NORMAL + GROUP 2 +END + +STRING F_DESFASE 50 39 +BEGIN + PROMPT 36 18 "" + FLAGS "D" + GROUP 2 +END + +STRING F_CODCDC 20 +BEGIN + PROMPT 2 19 "C. costo " + USE LF_CDC + INPUT CODCOSTO F_CODCDC + DISPLAY "Codice@20" CODCOSTO + DISPLAY "Descrizione@50" DESCRIZ + OUTPUT F_CODCDC CODCOSTO + OUTPUT F_DESCDC DESCRIZ + CHECKTYPE NORMAL + GROUP 2 +END + +STRING F_DESCDC 50 39 +BEGIN + PROMPT 36 19 "" + USE LF_CDC KEY 2 + INPUT DESCRIZ F_DESCDC + DISPLAY "Descrizione@50" DESCRIZ + DISPLAY "Codice@20" CODCOSTO + COPY OUTPUT F_CODCDC + GROUP 2 END ENDPAGE diff --git a/ce/ce3900a.rep b/ce/ce3900a.rep index bacb2807c..6a563d399 100755 --- a/ce/ce3900a.rep +++ b/ce/ce3900a.rep @@ -1,30 +1,31 @@ Registro cespiti sintetico - +
- - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + +
-
+
+ MESSAGE RESET,F1.103 MESSAGE RESET,F1.102 MESSAGE RESET,F1.101 @@ -32,30 +33,30 @@ MESSAGE RESET,F1.104 MESSAGE RESET,F1.105 MESSAGE RESET,F1.106 MESSAGE RESET,F1.107 - - + + - - - + + + #SYSTEM.RAGSOC - - + + - - + + #SYSTEM.DATE - - + + - - + + #ANNO - - + + #SITUAZIONE
  • @@ -63,10 +64,31 @@ MESSAGE RESET,F1.107
  • + + + + + + #CODCDC + + + + + + + #CODCMS + + + + + + + #CODFASE +
  • -
    +
    CODCAT - + MESSAGE RESET,F2.103 MESSAGE RESET,F2.102 MESSAGE RESET,F2.101 @@ -74,20 +96,19 @@ MESSAGE RESET,F2.104 MESSAGE RESET,F2.105 MESSAGE RESET,F2.106 MESSAGE RESET,F2.107 - - - - - + + #DESCAT + MESSAGE COPY,F2.98 - - + CODCAT + MESSAGE COPY,F2.97
    -