Patch level :10.0

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :
Aggiunta la gestione da mese a mese nelle 2 stampe; eliminata la possibilita' di fare da commessa a commessa (e/o cdc) in quanto cagata assurda, mentre si e' mantenuta la da-a nelle risorse


git-svn-id: svn://10.65.10.50/branches/R_10_00@22266 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2011-06-15 13:29:27 +00:00
parent e777a89daf
commit 65e0251976
7 changed files with 234 additions and 229 deletions

View File

@ -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();
}

View File

@ -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

View File

@ -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"

View File

@ -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);

View File

@ -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();
}
///////////////////////////////////////////////////////////

View File

@ -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

View File

@ -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