diff --git a/ci/ci1300.cpp b/ci/ci1300.cpp index 530746a07..6125217ed 100755 --- a/ci/ci1300.cpp +++ b/ci/ci1300.cpp @@ -47,7 +47,7 @@ class TRil_ore_ris_mask : public TAutomask protected: virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); - void elabora_risorsa(const TString& curr_risorsa, TReport& rep) const; + void elabora_risorsa(const TString& curr_risorsa, const int curr_mese, TReport& rep) const; public: void elabora() const; @@ -65,12 +65,12 @@ bool TRil_ore_ris_mask::on_field_event(TOperable_field& o, TField_event e, long return true; } -void TRil_ore_ris_mask::elabora_risorsa(const TString& curr_risorsa, TReport& rep) const +void TRil_ore_ris_mask::elabora_risorsa(const TString& curr_risorsa, const int curr_mese, TReport& rep) const { const int tipo_ordinamento = get_int(F_ORDINAMENTO); const char tipo_stampa = get(F_TIPOSTAMPA)[0]; const int anno = get_int(F_ANNO); - const int mese = tipo_stampa == 'M' ? get_int(F_MESE) : 0; + const int mese = tipo_stampa == 'M' ? curr_mese : 0; //date del periodo TDate inizio_periodo, fine_periodo; @@ -189,6 +189,9 @@ void TRil_ore_ris_mask::elabora_risorsa(const TString& curr_risorsa, TReport& re rep.set_recordset(recset); //tenta la mask2report per far apparire sul report i campi di selezione della maschera rep.mask2report(*this); + TString4 code; + code.format("%02d", curr_mese); + recset->set_var("#MESE", code, true); //finita l'elaborazione che ha riempito l'assoc_array, asegna il medesimo ad un.. //..csv_recordset e poi sbatte quest'ultimo (ordinato) nel report //Il tutto nel magico metodo che segue! @@ -202,60 +205,71 @@ void TRil_ore_ris_mask::elabora_risorsa(const TString& curr_risorsa, TReport& re //metodo di alto livello per filtrare su ris/att e chiamare i metodi di livello inferiore per elaborare la singola ris/att void TRil_ore_ris_mask::elabora() const { + //book di stampa TReport_book book; - //stampa mensile o annuale? const char tipostampa = get(F_TIPOSTAMPA)[0]; TRil_ore_ris_report rep(tipostampa); + int da_mese = 1; + int a_mese = 1; if (tipostampa == 'M') - format_report_month(get_int(F_ANNO), get_int(F_MESE), rep); - - //query sulla tabella interessata (risorse o attrezzature) - TString16 da_ris_att, a_ris_att; - TString query_ris_att; - TString msg; - const char tiporisorsa = get(F_RISOATT)[0]; - - if (tiporisorsa == 'R') { - da_ris_att = get(F_DA_CODRIS); - a_ris_att = get(F_A_CODRIS); - query_ris_att << "USE RSS"; - msg << "Scansione risorse..."; - } - else - { - da_ris_att = get(F_DA_CODATT); - a_ris_att = get(F_A_CODATT); - query_ris_att << "USE ATR"; - "Scansione attrezzature..."; + da_mese = get_int(F_DA_MESE); + a_mese = get_int(F_A_MESE); } - query_ris_att << "\nFROM CODTAB=#DACODICE"; - query_ris_att << "\nTO CODTAB=#ACODICE"; - - TISAM_recordset recset_ris_att(query_ris_att); - recset_ris_att.set_var("#DACODICE", da_ris_att); - recset_ris_att.set_var("#ACODICE", a_ris_att); - const long recset_ris_att_items = recset_ris_att.items(); - - TProgind pi(recset_ris_att_items, msg, true, true); - - //per ogni risorsa/attrezzatura dell'elenco genera un report singolo che viene riempito nella elabora_risorsa e.. - //..aggiunto al book per la stampa finale - for (bool ok = recset_ris_att.move_first(); ok; ok = recset_ris_att.move_next()) + //giro su tutti i mesi; se stampa annuale o mese unico -> un giro solo + for (int m = da_mese; m <= a_mese; m++) { - if (!pi.addstatus(1)) - break; + if (tipostampa == 'M') + format_report_month(get_int(F_ANNO), m, rep); - const TString80 curr_risorsa = recset_ris_att.cursor()->curr().get("CODTAB"); + //query sulla tabella interessata (risorse o attrezzature) + TString16 da_ris_att, a_ris_att; + TString query_ris_att; + TString msg; + const char tiporisorsa = get(F_RISOATT)[0]; - elabora_risorsa(curr_risorsa, rep); + if (tiporisorsa == 'R') + { + da_ris_att = get(F_DA_CODRIS); + a_ris_att = get(F_A_CODRIS); + query_ris_att << "USE RSS"; + msg << "Scansione risorse..."; + } + else + { + da_ris_att = get(F_DA_CODATT); + a_ris_att = get(F_A_CODATT); + query_ris_att << "USE ATR"; + "Scansione attrezzature..."; + } - book.add(rep); - } + query_ris_att << "\nFROM CODTAB=#DACODICE"; + query_ris_att << "\nTO CODTAB=#ACODICE"; + + TISAM_recordset recset_ris_att(query_ris_att); + recset_ris_att.set_var("#DACODICE", da_ris_att); + recset_ris_att.set_var("#ACODICE", a_ris_att); + const long recset_ris_att_items = recset_ris_att.items(); + TProgind pi(recset_ris_att_items, msg, true, true); + + //per ogni risorsa/attrezzatura dell'elenco genera un report singolo che viene riempito nella elabora_risorsa e.. + //..aggiunto al book per la stampa finale + for (bool ok = recset_ris_att.move_first(); ok; ok = recset_ris_att.move_next()) + { + if (!pi.addstatus(1)) + break; + + const TString80 curr_risorsa = recset_ris_att.cursor()->curr().get("CODTAB"); + + elabora_risorsa(curr_risorsa, m, rep); + + book.add(rep); + } //for (bool ok = recset_ris_att.move_first()... + } //for (int m = da_mese; .. //e alla fine stampa il book book.preview(); } diff --git a/ci/ci1300a.h b/ci/ci1300a.h index 623cca24a..6f5dbf7e2 100755 --- a/ci/ci1300a.h +++ b/ci/ci1300a.h @@ -10,6 +10,7 @@ #define F_A_DESATT 209 #define F_TIPOSTAMPA 210 #define F_ANNO 211 -#define F_MESE 212 -#define F_ORDINAMENTO 213 -#define F_SHOW_FASI 214 +#define F_DA_MESE 212 +#define F_A_MESE 213 +#define F_ORDINAMENTO 214 +#define F_SHOW_FASI 215 diff --git a/ci/ci1300a.uml b/ci/ci1300a.uml index 09d7e927e..89a0469a4 100755 --- a/ci/ci1300a.uml +++ b/ci/ci1300a.uml @@ -126,7 +126,7 @@ BEGIN GROUP 2 END -GROUPBOX -1 78 3 +GROUPBOX -1 78 4 BEGIN PROMPT 1 6 "@bFiltri su anno / mese" END @@ -135,31 +135,38 @@ LISTBOX F_TIPOSTAMPA 10 BEGIN PROMPT 2 7 "Tipo di stampa " ITEM "M|Mensile" - MESSAGE SHOW,F_MESE + MESSAGE SHOW,F_DA_MESE|SHOW,F_A_MESE ITEM "A|Annuale" - MESSAGE HIDE,F_MESE + MESSAGE HIDE,F_DA_MESE|HIDE,F_A_MESE FLAGS "Z" FIELD #TIPOSTAMPA END NUMBER F_ANNO 4 BEGIN - PROMPT 35 7 "Anno " + PROMPT 2 8 "Anno " CHECKTYPE REQUIRED FLAGS "A" FIELD #ANNO + NUM_EXPR (#F_A_MESE>=#F_DA_MESE) + WARNING "Il mese finale deve essere uguale o successivo a quello iniziale" END -LISTBOX F_MESE 10 +LISTBOX F_DA_MESE 10 BEGIN - PROMPT 50 7 "Mese " - FLAGS "M" - FIELD #MESE + PROMPT 17 8 "Da mese " + FLAGS "AM" +END + +LISTBOX F_A_MESE 10 +BEGIN + PROMPT 42 8 "A mese " + FLAGS "AM" END RADIOBUTTON F_ORDINAMENTO 40 BEGIN - PROMPT 1 9 "@bStampa e ordina per:" + PROMPT 1 10 "@bStampa e ordina per:" ITEM "1|Commessa" ITEM "2|Commessa - CdC" ITEM "3|Commessa - Fase" diff --git a/ci/ci1350.cpp b/ci/ci1350.cpp index 98394674c..270dfbd16 100755 --- a/ci/ci1350.cpp +++ b/ci/ci1350.cpp @@ -222,13 +222,13 @@ void ci_fill_recset_from_ass(TAssoc_array& ass, TReport& rep) //formattazione report per stampa mensile dettagliata per giorno void format_report_month(const int anno, const int mese, TReport& rep) { + TString16 code; + //maggico giro per formattare la testata del calendario di pagina nel report const TDate primo_del_mese(1, mese, anno); TDate ultimo_del_mese = primo_del_mese; ultimo_del_mese.set_end_month(); - TString16 code; - for (TDate giorno = primo_del_mese; giorno <= ultimo_del_mese; ++giorno) { code.format("H0.%d", giorno.day() + 100); diff --git a/ci/ci1400.cpp b/ci/ci1400.cpp index 7dfeab9b3..e15f52c2c 100755 --- a/ci/ci1400.cpp +++ b/ci/ci1400.cpp @@ -61,6 +61,7 @@ public: TRil_ore_cms_report(const char tipostampa); }; + TRil_ore_cms_report::TRil_ore_cms_report(const char tipostampa) { if (tipostampa == 'M') @@ -81,7 +82,7 @@ class TRil_ore_cms_mask : public TAutomask protected: virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); - bool elabora_commessa(const TString& curr_commessa, TReport& rep) const; + bool elabora_commessa(const TString& curr_commessa, const int curr_mese, TReport& rep) const; public: void elabora() const; @@ -96,17 +97,34 @@ TRil_ore_cms_mask::TRil_ore_cms_mask() : TAutomask("ci1400a") bool TRil_ore_cms_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) { + switch (o.dlg()) + { + //se viene selezionata una commessa in particolare da stampare -> non ha piu' senso lo sheet.. + //..con le commesse da escludere (group 3) + case F_CODCMS: + if (e == fe_init || e == fe_modify) + { + const TString& codcms = o.get(); + if (codcms.full()) + hide(-3); + else + show(-3); + } + break; + default: + break; + } return true; } -bool TRil_ore_cms_mask::elabora_commessa(const TString& curr_commessa, TReport& rep) const +bool TRil_ore_cms_mask::elabora_commessa(const TString& curr_commessa, const int curr_mese, TReport& rep) const { const TVariant tipo_cms_cdc = get(F_CMSOCDC); const bool per_commessa = tipo_cms_cdc.as_string() == "C"; const char tipo_stampa = get(F_TIPOSTAMPA)[0]; const int anno = get_int(F_ANNO); - const int mese = tipo_stampa == 'M' ? get_int(F_MESE) : 0; + const int mese = tipo_stampa == 'M' ? curr_mese : 0; //date del periodo TDate inizio_periodo, fine_periodo; @@ -114,12 +132,12 @@ bool TRil_ore_cms_mask::elabora_commessa(const TString& curr_commessa, TReport& TAssoc_array righe; - //query sul file delle ore in chiave 4 o 6, in base alla scelta di Cdc(4) o Cms(5): TIPO+CODCOSTO+... o TIPO+CODCMS+... + //query sul file delle ore in chiave 4 o 5, in base alla scelta di Cdc(4) o Cms(5): TIPO+CODCOSTO+... o TIPO+CODCMS+... TString query; if (per_commessa) { - query << "USE RILORE KEY 6"; + query << "USE RILORE KEY 5"; query << "\nFROM TIPO=#TIPO CODCMS=#CODICE"; query << "\nTO TIPO=#TIPO CODCMS=#CODICE"; } @@ -222,6 +240,9 @@ bool TRil_ore_cms_mask::elabora_commessa(const TString& curr_commessa, TReport& rep.set_recordset(recset); //tenta la mask2report per far apparire sul report i campi di selezione della maschera rep.mask2report(*this); + TString4 code; + code.format("%02d", curr_mese); + recset->set_var("#MESE", code, true); //finita l'elaborazione che ha riempito l'assoc_array, asegna il medesimo ad un.. //..csv_recordset e poi sbatte quest'ultimo (ordinato) nel report ci_fill_recset_from_ass(righe, rep); @@ -234,95 +255,103 @@ bool TRil_ore_cms_mask::elabora_commessa(const TString& curr_commessa, TReport& void TRil_ore_cms_mask::elabora() const { + //book di stampa TReport_book book; //stampa mensile o annuale? const char tipostampa = get(F_TIPOSTAMPA)[0]; TRil_ore_cms_report rep(tipostampa); + int da_mese = 1; + int a_mese = 1; if (tipostampa == 'M') - format_report_month(get_int(F_ANNO), get_int(F_MESE), rep); - - //query sul file interessato (commessa o centro di costo) - TString16 da_cms_cdc, a_cms_cdc; - TString query_cms_cdc; - TString msg, code_name; - const char tipo_cms_cdc = get(F_CMSOCDC)[0]; - - if (tipo_cms_cdc == 'C') { - da_cms_cdc = get(F_DA_CODCMS); - a_cms_cdc = get(F_A_CODCMS); - query_cms_cdc << "USE COMMESSE"; - query_cms_cdc << "\nFROM CODCMS=#DACODICE"; - query_cms_cdc << "\nTO CODCMS=#ACODICE"; - msg << "Scansione commesse..."; - code_name = "CODCMS"; + da_mese = get_int(F_DA_MESE); + a_mese = get_int(F_A_MESE); } - else - { - da_cms_cdc = get(F_DA_CODCDC); - a_cms_cdc = get(F_A_CODCDC); - query_cms_cdc << "USE CDC"; - query_cms_cdc << "\nFROM CODCOSTO=#DACODICE"; - query_cms_cdc << "\nTO CODCOSTO=#ACODICE"; - msg << "Scansione centri di costo..."; - code_name = "CODCOSTO"; - } - - TISAM_recordset recset_cms_cdc(query_cms_cdc); - //aggiunta Adolfica: lista di commesse da considerare separatamente pił commessa borraccione.. - //..con tutte le altre - TSheet_field& lista = sfield(F_RIGHE); - const int lista_items = lista.items(); - if (lista_items > 0) + //giro su tutti i mesi; se stampa annuale o mese unico -> un giro solo + for (int m = da_mese; m <= a_mese; m++) { - TProgind pi_lista(lista_items, msg, true, true); + if (tipostampa == 'M') + format_report_month(get_int(F_ANNO), m, rep); - FOR_EACH_SHEET_ROW(lista, r, riga) + //query sul file interessato (commessa o centro di costo) + TString16 cms_cdc; + TString query_cms_cdc; + TString msg, code_name; + const char tipo_cms_cdc = get(F_CMSOCDC)[0]; + + if (tipo_cms_cdc == 'C') { - if (!pi_lista.addstatus(1)) - break; - - const TString& curr_cms_cdc = riga->get(lista.cid2index(S_CODCMS)); - recset_cms_cdc.set_var("#DACODICE", curr_cms_cdc); - recset_cms_cdc.set_var("#ACODICE", curr_cms_cdc); - - elabora_commessa(curr_cms_cdc, rep); - book.add(rep); + cms_cdc = get(F_CODCMS); + query_cms_cdc << "USE COMMESSE"; + query_cms_cdc << "\nFROM CODCMS=#CODICE"; + query_cms_cdc << "\nTO CODCMS=#CODICE"; + msg << "Scansione commesse..."; + code_name = "CODCMS"; } - - elabora_commessa("_ALTRE_", rep); - book.add(rep); - //e stampiamo questo book! - book.preview(); - } - else //programma standard senza lista commesse - { - recset_cms_cdc.set_var("#DACODICE", da_cms_cdc); - recset_cms_cdc.set_var("#ACODICE", a_cms_cdc); - - const long recset_cms_cdc_items = recset_cms_cdc.items(); - - TProgind pi(recset_cms_cdc_items, msg, true, true); - - //per ogni cms/cdc dell'elenco genera un report singolo che viene riempito nella elabora_commessa e.. - //..aggiunto al book per la stampa finale - for (bool ok = recset_cms_cdc.move_first(); ok; ok = recset_cms_cdc.move_next()) + else { - if (!pi.addstatus(1)) - break; - - const TString80 curr_commessa = recset_cms_cdc.cursor()->curr().get(code_name); - - elabora_commessa(curr_commessa, rep); - - book.add(rep); + cms_cdc = get(F_CODCDC); + query_cms_cdc << "USE CDC"; + query_cms_cdc << "\nFROM CODCOSTO=#CODICE"; + query_cms_cdc << "\nTO CODCOSTO=#CODICE"; + msg << "Scansione centri di costo..."; + code_name = "CODCOSTO"; } + + TISAM_recordset recset_cms_cdc(query_cms_cdc); - //e alla fine stampa il book - book.preview(); - } + //aggiunta Adolfica: lista di commesse da considerare separatamente pił commessa borraccione.. + //..con tutte le altre + TSheet_field& lista = sfield(F_RIGHE); + const int lista_items = lista.items(); + if (lista_items > 0) + { + TProgind pi_lista(lista_items, msg, true, true); + + FOR_EACH_SHEET_ROW(lista, r, riga) + { + if (!pi_lista.addstatus(1)) + break; + + const TString& curr_cms_cdc = riga->get(lista.cid2index(S_CODCMS)); + recset_cms_cdc.set_var("#CODICE", curr_cms_cdc); + + elabora_commessa(curr_cms_cdc, m, rep); + book.add(rep); + } + + elabora_commessa("_ALTRE_", m, rep); + book.add(rep); + //e stampiamo questo book! + book.preview(); + } + else //programma standard senza lista commesse + { + recset_cms_cdc.set_var("#CODICE", cms_cdc); + + const long recset_cms_cdc_items = recset_cms_cdc.items(); + + TProgind pi(recset_cms_cdc_items, msg, true, true); + + //per ogni cms/cdc dell'elenco genera un report singolo che viene riempito nella elabora_commessa e.. + //..aggiunto al book per la stampa finale + for (bool ok = recset_cms_cdc.move_first(); ok; ok = recset_cms_cdc.move_next()) + { + if (!pi.addstatus(1)) + break; + + const TString80 curr_commessa = recset_cms_cdc.cursor()->curr().get(code_name); + + elabora_commessa(curr_commessa, m, rep); + + book.add(rep); + } //for (bool ok = recset_cms_cdc.move_first()... + } //if (lista_items > 0)... + } //for (int i = da_mese; i <= a_mese; i++)... + //e alla fine stampa il book + book.preview(); } /////////////////////////////////////////////////////////// diff --git a/ci/ci1400a.h b/ci/ci1400a.h index f60528e10..d8efb8201 100755 --- a/ci/ci1400a.h +++ b/ci/ci1400a.h @@ -1,16 +1,13 @@ #define F_CMSOCDC 201 -#define F_DA_CODCMS 202 -#define F_DA_DESCMS 203 -#define F_A_CODCMS 204 -#define F_A_DESCMS 205 -#define F_DA_CODCDC 206 -#define F_DA_DESCDC 207 -#define F_A_CODCDC 208 -#define F_A_DESCDC 209 +#define F_CODCMS 202 +#define F_DESCMS 203 +#define F_CODCDC 204 +#define F_DESCDC 205 #define F_TIPOSTAMPA 210 #define F_ANNO 211 -#define F_MESE 212 +#define F_DA_MESE 212 +#define F_A_MESE 213 #define F_RIGHE 220 diff --git a/ci/ci1400a.uml b/ci/ci1400a.uml index fac0245e2..dc804c8e3 100755 --- a/ci/ci1400a.uml +++ b/ci/ci1400a.uml @@ -6,7 +6,7 @@ ENDPAGE PAGE "Rilevazione ore per Commessa - CdC" -1 -1 0 0 -GROUPBOX -1 78 5 +GROUPBOX -1 78 4 BEGIN PROMPT 1 1 "@bFiltri su Commesse / CdC" END @@ -15,156 +15,113 @@ LISTBOX F_CMSOCDC 1 16 BEGIN PROMPT 2 2 "@bTipo " ITEM "C|Commessa" - MESSAGE HIDE,2@|SHOW,1@ + MESSAGE HIDE,2@|SHOW,1@|SHOW,3@ ITEM "S|Centro di Costo" - MESSAGE HIDE,1@|SHOW,2@ + MESSAGE HIDE,1@|SHOW,2@|HIDE,3@ FLAGS "Z" FIELD #CMSOCDC END -STRING F_DA_CODCMS 20 +STRING F_CODCMS 20 BEGIN - PROMPT 2 3 "Da commessa " + PROMPT 2 3 "Commessa " USE LF_COMMESSE - INPUT CODCMS F_DA_CODCMS + INPUT CODCMS F_CODCMS DISPLAY "Codice@20" CODCMS DISPLAY "Descrizione@50" DESCRIZ - OUTPUT F_DA_CODCMS CODCMS - OUTPUT F_DA_DESCMS DESCRIZ + OUTPUT F_CODCMS CODCMS + OUTPUT F_DESCMS DESCRIZ CHECKTYPE NORMAL GROUP 1 END -STRING F_DA_DESCMS 50 37 +STRING F_DESCMS 50 42 BEGIN - PROMPT 38 3 "" + PROMPT 34 3 "" USE LF_COMMESSE KEY 2 - INPUT DESCRIZ F_DA_DESCMS + INPUT DESCRIZ F_DESCMS DISPLAY "Descrizione@50" DESCRIZ DISPLAY "Codice@20" CODCMS - COPY OUTPUT F_DA_CODCMS + COPY OUTPUT F_CODCMS CHECKTYPE NORMAL GROUP 1 END -STRING F_A_CODCMS 20 +STRING F_CODCDC 20 BEGIN - PROMPT 2 4 "A commessa " - COPY USE F_DA_CODCMS - INPUT CODCMS F_A_CODCMS - DISPLAY "Codice@20" CODCMS - DISPLAY "Descrizione@50" DESCRIZ - OUTPUT F_A_CODCMS CODCMS - OUTPUT F_A_DESCMS DESCRIZ - CHECKTYPE NORMAL - GROUP 1 -END - -STRING F_A_DESCMS 50 37 -BEGIN - PROMPT 38 4 "" - COPY USE F_DA_DESCMS - INPUT DESCRIZ F_A_DESCMS - DISPLAY "Descrizione@50" DESCRIZ - DISPLAY "Codice@20" CODCMS - COPY OUTPUT F_A_CODCMS - CHECKTYPE NORMAL - GROUP 1 -END - -STRING F_DA_CODCDC 20 -BEGIN - PROMPT 2 3 "Da CdC " + PROMPT 2 3 "CdC " USE LF_CDC - INPUT CODCOSTO F_DA_CODCDC + INPUT CODCOSTO F_CODCDC DISPLAY "Codice@20" CODCOSTO DISPLAY "Descrizione@50" DESCRIZ - OUTPUT F_DA_CODCDC CODCOSTO - OUTPUT F_DA_DESCDC DESCRIZ + OUTPUT F_CODCDC CODCOSTO + OUTPUT F_DESCDC DESCRIZ CHECKTYPE NORMAL GROUP 2 END -STRING F_DA_DESCDC 50 42 +STRING F_DESCDC 50 47 BEGIN - PROMPT 32 3 "" + PROMPT 29 3 "" USE LF_CDC KEY 2 - INPUT DESCRIZ F_DA_DESCDC + INPUT DESCRIZ F_DESCDC DISPLAY "Descrizione@50" DESCRIZ DISPLAY "Codice@20" CODCOSTO - COPY OUTPUT F_DA_CODCDC + COPY OUTPUT F_CODCDC CHECKTYPE NORMAL GROUP 2 END -STRING F_A_CODCDC 20 -BEGIN - PROMPT 2 4 "A CdC " - COPY USE F_DA_CODCDC - INPUT CODCOSTO F_A_CODCDC - DISPLAY "Codice@20" CODCOSTO - DISPLAY "Descrizione@50" DESCRIZ - OUTPUT F_A_CODCDC CODCOSTO - OUTPUT F_A_DESCDC DESCRIZ - CHECKTYPE NORMAL - GROUP 2 -END - -STRING F_A_DESCDC 50 42 +GROUPBOX -1 78 4 BEGIN - PROMPT 32 4 "" - COPY USE F_DA_DESCDC - INPUT DESCRIZ F_A_DESCDC - DISPLAY "Descrizione@50" DESCRIZ - DISPLAY "Codice@20" CODCOSTO - COPY OUTPUT F_A_CODCDC - CHECKTYPE NORMAL - GROUP 2 -END - -GROUPBOX -1 78 3 -BEGIN - PROMPT 1 6 "@bFiltri su anno / mese" + PROMPT 1 5 "@bFiltri su anno / mese" END LISTBOX F_TIPOSTAMPA 10 BEGIN - PROMPT 2 7 "Tipo di stampa " + PROMPT 2 6 "Tipo di stampa " ITEM "M|Mensile" - MESSAGE SHOW,F_MESE + MESSAGE SHOW,F_DA_MESE|SHOW,F_A_MESE ITEM "A|Annuale" - MESSAGE HIDE,F_MESE + MESSAGE HIDE,F_DA_MESE|HIDE,F_A_MESE FLAGS "Z" FIELD #TIPOSTAMPA END NUMBER F_ANNO 4 BEGIN - PROMPT 35 7 "Anno " + PROMPT 2 7 "Anno " CHECKTYPE REQUIRED FLAGS "A" FIELD #ANNO + NUM_EXPR (#F_A_MESE>=#F_DA_MESE) + WARNING "Il mese finale deve essere uguale o successivo a quello iniziale" END -LISTBOX F_MESE 10 +LISTBOX F_DA_MESE 10 BEGIN - PROMPT 50 7 "Mese " - FLAGS "M" - FIELD #MESE + PROMPT 17 7 "Da mese " + FLAGS "AM" +END + +LISTBOX F_A_MESE 10 +BEGIN + PROMPT 42 7 "A Mese " + FLAGS "AM" END TEXT DLG_NULL BEGIN - PROMPT 1 10 "@bCommesse da considerare separatamente" - GROUP 1 + PROMPT 1 9 "@bCommesse da considerare separatamente" + GROUP 3 END SPREADSHEET F_RIGHE 78 -2 BEGIN - PROMPT 1 11 "" + PROMPT 1 10 "" ITEM "Codice@20" ITEM "Descrizione@50" - GROUP 1 + GROUP 3 END STRING DLG_PROFILE 50