Patch level :10.0 1028
Files correlati : Ricompilazione Demo : [ ] Commento : altre aggiunte alle stampe della rilevazione ore (sheet cms speciali anche nella stampa per risorsa) git-svn-id: svn://10.65.10.50/branches/R_10_00@22279 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
003d4820db
commit
63e847f578
@ -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, const int curr_mese, TReport& rep) const;
|
||||
void elabora_risorsa(const TString& curr_risorsa, const int curr_mese, const bool ignore, TReport& rep) const;
|
||||
|
||||
public:
|
||||
void elabora() const;
|
||||
@ -65,7 +65,7 @@ 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, const int curr_mese, TReport& rep) const
|
||||
void TRil_ore_ris_mask::elabora_risorsa(const TString& curr_risorsa, const int curr_mese, const bool ignore, TReport& rep) const
|
||||
{
|
||||
const int tipo_ordinamento = get_int(F_ORDINAMENTO);
|
||||
const char tipo_stampa = get(F_TIPOSTAMPA)[0];
|
||||
@ -91,10 +91,16 @@ void TRil_ore_ris_mask::elabora_risorsa(const TString& curr_risorsa, const int c
|
||||
query << "\nFROM TIPO=#TIPO TIPORA=#TPRA CODICE=#CODICE";
|
||||
query << "\nTO TIPO=#TIPO TIPORA=#TPRA CODICE=#CODICE";
|
||||
|
||||
TISAM_recordset rilore_recset(query);
|
||||
TRil_ore_cms_recordset rilore_recset(query);
|
||||
rilore_recset.set_var("#TPRA", tiporisorsa);
|
||||
rilore_recset.set_var("#CODICE", curr_risorsa);
|
||||
|
||||
//aggiunta Adolfica: lista di commesse da considerare separatamente più commessa borraccione..
|
||||
//..con tutte le altre
|
||||
TSheet_field& lista = sfield(F_RIGHE);
|
||||
rilore_recset.set_list(lista.rows_array(), ignore);
|
||||
|
||||
|
||||
//un giro con le ore a 'P'reventivo, uno con quelle a 'C'onsuntivo
|
||||
for (int i = 0; i < 2; i++)
|
||||
{
|
||||
@ -254,21 +260,39 @@ void TRil_ore_ris_mask::elabora() const
|
||||
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);
|
||||
TSheet_field& lista = sfield(F_RIGHE);
|
||||
//se la stampa ha come chiave principale il CDC, lo sheet (che e' nascosto!) va vuotato in quanto potrebbe avere elementi..
|
||||
//..dovuti al profilo della maschera che produrrebbero una stampa non desiderata (per ora!, verra' il momento in cui il CRPA..
|
||||
//..cambiera' idea..)
|
||||
const int tipo_ordinamento = get_int(F_ORDINAMENTO);
|
||||
if (tipo_ordinamento >= 5)
|
||||
lista.reset();
|
||||
|
||||
//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())
|
||||
//Come gestire la lista delle commesse particolari
|
||||
//a) nel caso la lista sia vuota il giro di stampa è unico, considerando tutte le cms/cdc
|
||||
//b) nel caso la lista abbia elementi(cms/cdc), viene fatto un primo giro sui soli elementi della lista,...
|
||||
//poi un successivo su tutte le cms/cdc che non apparivano nella lista
|
||||
const int ignore_start = 0;
|
||||
const int ignore_end = !lista.empty();
|
||||
for (int ignore = ignore_start; ignore <= ignore_end; ignore++)
|
||||
{
|
||||
if (!pi.addstatus(1))
|
||||
break;
|
||||
TProgind pi(recset_ris_att_items, msg, true, true);
|
||||
|
||||
const TString80 curr_risorsa = recset_ris_att.cursor()->curr().get("CODTAB");
|
||||
//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;
|
||||
|
||||
elabora_risorsa(curr_risorsa, m, rep);
|
||||
const TString80 curr_risorsa = recset_ris_att.cursor()->curr().get("CODTAB");
|
||||
|
||||
elabora_risorsa(curr_risorsa, m, ignore!=0, rep);
|
||||
|
||||
book.add(rep);
|
||||
} //for (bool ok = recset_ris_att.move_first()...
|
||||
}
|
||||
|
||||
book.add(rep);
|
||||
} //for (bool ok = recset_ris_att.move_first()...
|
||||
} //for (int m = da_mese; ..
|
||||
//e alla fine stampa il book
|
||||
book.preview();
|
||||
|
@ -14,3 +14,9 @@
|
||||
#define F_A_MESE 213
|
||||
#define F_ORDINAMENTO 214
|
||||
#define F_SHOW_FASI 215
|
||||
|
||||
#define F_RIGHE 220
|
||||
|
||||
//campi riga sheet
|
||||
#define S_CODCMS 101
|
||||
#define S_DESCRCMS 102
|
||||
|
@ -164,20 +164,97 @@ BEGIN
|
||||
FLAGS "AM"
|
||||
END
|
||||
|
||||
RADIOBUTTON F_ORDINAMENTO 40
|
||||
RADIOBUTTON F_ORDINAMENTO 25
|
||||
BEGIN
|
||||
PROMPT 1 10 "@bStampa e ordina per:"
|
||||
ITEM "1|Commessa"
|
||||
MESSAGE SHOW,3@
|
||||
ITEM "2|Commessa - CdC"
|
||||
MESSAGE SHOW,3@
|
||||
ITEM "3|Commessa - Fase"
|
||||
MESSAGE SHOW,3@
|
||||
ITEM "4|Commessa - CdC - Fase"
|
||||
MESSAGE SHOW,3@
|
||||
ITEM "5|CdC"
|
||||
MESSAGE HIDE,3@
|
||||
ITEM "6|CdC - Commessa"
|
||||
MESSAGE HIDE,3@
|
||||
ITEM "7|CdC - Fase"
|
||||
MESSAGE HIDE,3@
|
||||
ITEM "8|CdC - Commessa - Fase"
|
||||
MESSAGE HIDE,3@
|
||||
FIELD #ORDINAMENTO
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 27 10 "@bCommesse da considerare separatamente"
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
SPREADSHEET F_RIGHE 50 9
|
||||
BEGIN
|
||||
PROMPT 27 11 ""
|
||||
ITEM "Codice@20"
|
||||
ITEM "Descrizione@50"
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
STRING DLG_PROFILE 50
|
||||
BEGIN
|
||||
PROMPT 1 -1 "Profilo "
|
||||
PSELECT
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
||||
//maschera di riga dello sheet
|
||||
PAGE "Riga commessa" -1 -1 72 3
|
||||
|
||||
STRING S_CODCMS 20
|
||||
BEGIN
|
||||
PROMPT 1 1 "Codice "
|
||||
USE LF_COMMESSE
|
||||
INPUT CODCMS S_CODCMS
|
||||
DISPLAY "Codice@20" CODCMS
|
||||
DISPLAY "Descrizione@50" DESCRIZ
|
||||
OUTPUT S_CODCMS CODCMS
|
||||
OUTPUT S_DESCRCMS DESCRIZ
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING S_DESCRCMS 50
|
||||
BEGIN
|
||||
PROMPT 1 2 "Descrizione "
|
||||
USE LF_COMMESSE KEY 2
|
||||
INPUT DESCRIZ S_DESCRCMS
|
||||
DISPLAY "Descrizione@50" DESCRIZ
|
||||
DISPLAY "Codice@20" CODCMS
|
||||
COPY OUTPUT S_CODCMS
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
|
||||
BUTTON DLG_OK 2 2
|
||||
BEGIN
|
||||
PROMPT 1 1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_DELREC 2 2
|
||||
BEGIN
|
||||
PROMPT 2 1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 2 2
|
||||
BEGIN
|
||||
PROMPT 3 1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
@ -1,7 +1,11 @@
|
||||
#include <relation.h>
|
||||
|
||||
#include "../ca/commesse.h"
|
||||
#include "../ca/cdc.h"
|
||||
#include "../ca/fasi.h"
|
||||
|
||||
#include "rilore.h"
|
||||
|
||||
#include "ci1350.h"
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
@ -31,6 +35,38 @@ TRil_ore_recordset::TRil_ore_recordset()
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Recordset
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
TString_array TRil_ore_cms_recordset::_list;
|
||||
bool TRil_ore_cms_recordset::_ignore;
|
||||
|
||||
//cerca se la commessa sulla riga di rilore in questione è nella lista..
|
||||
//..delle commesse da ignorare
|
||||
bool TRil_ore_cms_recordset::cms_cdc_filter(const TRelation* rel)
|
||||
{
|
||||
const TRectype& curr_rec = rel->curr();
|
||||
const TString& curr_codcms = curr_rec.get(RILORE_CODCMS);
|
||||
FOR_EACH_ARRAY_ROW(_list, r, riga)
|
||||
{
|
||||
const char* lista_codcms = riga->get(0);
|
||||
if (curr_codcms == lista_codcms)
|
||||
return !_ignore;
|
||||
}
|
||||
return _ignore;
|
||||
}
|
||||
|
||||
|
||||
void TRil_ore_cms_recordset::set_custom_filter(TCursor& cursor) const
|
||||
{
|
||||
//se la lista non c'è -> niente filtri
|
||||
if (_list.empty())
|
||||
cursor.set_filterfunction(NULL);
|
||||
else
|
||||
cursor.set_filterfunction(cms_cdc_filter);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////
|
||||
// Metodi liberi per determinare giorni lavorativi e feriali (nati per ci1300 ci1400)
|
||||
///////////////////////////////////////////////////////////////////////////////////////
|
||||
|
14
ci/ci1350.h
14
ci/ci1350.h
@ -15,6 +15,20 @@ public:
|
||||
};
|
||||
|
||||
|
||||
class TRil_ore_cms_recordset : public TISAM_recordset
|
||||
{
|
||||
static TString_array _list;
|
||||
static bool _ignore;
|
||||
static bool cms_cdc_filter(const TRelation* rel);
|
||||
|
||||
protected:
|
||||
virtual void set_custom_filter(TCursor& cursor) const;
|
||||
|
||||
public:
|
||||
void set_list(const TString_array& list, bool ignore) { _list = list; _ignore = ignore; }
|
||||
TRil_ore_cms_recordset(const char* query) : TISAM_recordset(query) {}
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////
|
||||
// Metodi liberi per determinare giorni lavorativi e feriali (nati per ci1300 ci1400)
|
||||
// e per formattare e riempire i report corrispondenti
|
||||
|
@ -13,47 +13,6 @@
|
||||
#include "ci1350.h"
|
||||
#include "ci1400a.h"
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Recordset
|
||||
///////////////////////////////////////////////////////////
|
||||
class TRil_ore_cms_recordset : public TISAM_recordset
|
||||
{
|
||||
static TString_array _ignore_list;
|
||||
static bool cms_cdc_ignore(const TRelation* rel);
|
||||
|
||||
protected:
|
||||
virtual void set_custom_filter(TCursor& cursor) const;
|
||||
|
||||
public:
|
||||
void ignore(const TString_array& list) { _ignore_list = list; }
|
||||
TRil_ore_cms_recordset(const char* query) : TISAM_recordset(query) {}
|
||||
};
|
||||
|
||||
TString_array TRil_ore_cms_recordset::_ignore_list;
|
||||
|
||||
//cerca se la commessa sulla riga di rilore in questione è nella lista..
|
||||
//..delle commesse da ignorare
|
||||
bool TRil_ore_cms_recordset::cms_cdc_ignore(const TRelation* rel)
|
||||
{
|
||||
const TRectype& curr_rec = rel->curr();
|
||||
const TString& curr_codcms = curr_rec.get(RILORE_CODCMS);
|
||||
FOR_EACH_ARRAY_ROW(_ignore_list, r, riga)
|
||||
{
|
||||
const char* lista_codcms = riga->get(0);
|
||||
if (curr_codcms == lista_codcms)
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void TRil_ore_cms_recordset::set_custom_filter(TCursor& cursor) const
|
||||
{
|
||||
if (!_ignore_list.empty())
|
||||
{
|
||||
cursor.set_filterfunction(cms_cdc_ignore);
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Report
|
||||
@ -160,13 +119,13 @@ bool TRil_ore_cms_mask::elabora_commessa(const TString& curr_commessa, const int
|
||||
{
|
||||
rilore_recset.set_var("#CODICE", "");
|
||||
const TSheet_field& lista = sfield(F_RIGHE);
|
||||
rilore_recset.ignore(lista.rows_array());
|
||||
rilore_recset.set_list(lista.rows_array(), true);
|
||||
}
|
||||
else
|
||||
{
|
||||
rilore_recset.set_var("#CODICE", curr_commessa);
|
||||
TString_array lista_vuota;
|
||||
rilore_recset.ignore(lista_vuota); //azzera la lista di ignoramento nel caso standard e la resetta!
|
||||
rilore_recset.set_list(lista_vuota, true); //azzera la lista di ignoramento nel caso standard e la resetta!
|
||||
}
|
||||
|
||||
//un giro con le ore a 'P'reventivo, uno con quelle a 'C'onsuntivo
|
||||
@ -315,6 +274,9 @@ void TRil_ore_cms_mask::elabora() const
|
||||
|
||||
//aggiunta Adolfica: lista di commesse da considerare separatamente più commessa borraccione..
|
||||
//..con tutte le altre
|
||||
// a) se la lista commesse da considerare separatamente ha elementi, lancia l'elaborazione..
|
||||
//....di una commessa alla volta della lista, che generera' una pagina per commessa, poi considerera'...
|
||||
//....una commessa virtuale finale in cui ricadono tutte le commesse che non sono nella lista
|
||||
TSheet_field& lista = sfield(F_RIGHE);
|
||||
const int lista_items = lista.items();
|
||||
if (lista_items > 0 && cms_cdc.blank())
|
||||
@ -332,12 +294,12 @@ void TRil_ore_cms_mask::elabora() const
|
||||
elabora_commessa(curr_cms_cdc, m, rep);
|
||||
book.add(rep);
|
||||
}
|
||||
|
||||
//commessa finale: è l'insieme di tutte le commesse che non rientrano nella lista
|
||||
recset_cms_cdc.set_var("#CODICE", "");
|
||||
elabora_commessa("_ALTRE_", m, rep);
|
||||
book.add(rep);
|
||||
}
|
||||
else //programma standard senza lista commesse
|
||||
else //programma standard senza lista commesse: genera una pagina per ogni commessa
|
||||
{
|
||||
recset_cms_cdc.set_var("#CODICE", cms_cdc);
|
||||
|
||||
@ -345,7 +307,7 @@ void TRil_ore_cms_mask::elabora() const
|
||||
|
||||
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..
|
||||
//per ogni cms/cdc dell'elenco commesse (1 o tutte per ora) 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())
|
||||
{
|
||||
|
@ -135,7 +135,7 @@ ENDPAGE
|
||||
ENDMASK
|
||||
|
||||
//maschera di riga dello sheet
|
||||
PAGE "Riga commessa" -1 -1 40 6
|
||||
PAGE "Riga commessa" -1 -1 72 3
|
||||
|
||||
STRING S_CODCMS 20
|
||||
BEGIN
|
||||
|
Loading…
x
Reference in New Issue
Block a user