Patch level : 12.0 1086
Files correlati : ci1300ab.rep ci1300bb.rep ci1300a.rep ci1300a.msk ci1300b.rep ci1.exe Commento : Aggiunti report per beneficiario alla stampa ore per risorsa/attrezzatura aggiunto logo del beneficiario sintassi da mettere nel prescript del campo immagine : LOGO_BENEF #THIS ! L'Id dell'immagine deve essere LOGO+<codice tipo lavoro>
This commit is contained in:
parent
f09652c549
commit
8e4d68a734
@ -11,6 +11,7 @@
|
|||||||
#include "../ca/cfcms.h"
|
#include "../ca/cfcms.h"
|
||||||
|
|
||||||
#include "rilore.h"
|
#include "rilore.h"
|
||||||
|
#include "cilib.h"
|
||||||
#include "ci1350.h"
|
#include "ci1350.h"
|
||||||
#include "ci1300a.h"
|
#include "ci1300a.h"
|
||||||
|
|
||||||
@ -34,7 +35,7 @@ protected:
|
|||||||
public:
|
public:
|
||||||
void set_codcf(long codcf) { _codcf = codcf; }
|
void set_codcf(long codcf) { _codcf = codcf; }
|
||||||
void set_codtpl(const char *cod) { _codtpl = cod; }
|
void set_codtpl(const char *cod) { _codtpl = cod; }
|
||||||
TRil_ore_ris_report(const TString & tipostampa);
|
TRil_ore_ris_report(bool mensile, bool beneficiario);
|
||||||
};
|
};
|
||||||
|
|
||||||
size_t TRil_ore_ris_report::get_usr_words(TString_array& words) const
|
size_t TRil_ore_ris_report::get_usr_words(TString_array& words) const
|
||||||
@ -87,15 +88,15 @@ bool TRil_ore_ris_report::execute_usr_word(unsigned int opcode, TVariant_stack&
|
|||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
TRil_ore_ris_report::TRil_ore_ris_report(const TString & tipostampa) : _codcf(0L)
|
TRil_ore_ris_report::TRil_ore_ris_report(bool mensile, bool beneficiario) : _codcf(0L)
|
||||||
{
|
{
|
||||||
TFilename report_name;
|
TFilename report_name;
|
||||||
|
|
||||||
if (tipostampa[1] == 'M')
|
if (mensile)
|
||||||
report_name = "ci1300a";
|
report_name = "ci1300a";
|
||||||
else
|
else
|
||||||
report_name = "ci1300b";
|
report_name = "ci1300b";
|
||||||
if (tipostampa[0] == 'B')
|
if (beneficiario)
|
||||||
report_name << "b";
|
report_name << "b";
|
||||||
load(report_name);
|
load(report_name);
|
||||||
set_recordset(new TRil_ore_recordset);
|
set_recordset(new TRil_ore_recordset);
|
||||||
@ -105,14 +106,17 @@ TRil_ore_ris_report::TRil_ore_ris_report(const TString & tipostampa) : _codcf(0L
|
|||||||
// Maschera
|
// Maschera
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
class TRil_ore_ris_mask : public TAutomask
|
class TRil_ore_ris_mask : public TSimpleAutomask
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
// virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
|
|
||||||
void elabora_risorsa(const TString& curr_risorsa, const int curr_mese, const bool ignore, TReport& rep) const;
|
void elabora_risorsa(const TString& curr_risorsa, const int curr_mese, const bool ignore, TReport& rep) const;
|
||||||
const bool mensile() const { return get(F_TIPOSTAMPA)[1] == 'M';}
|
const TString & tipostampa() const { return get(F_TIPOSTAMPA); }
|
||||||
const bool per_beneficiario() const { return get(F_TIPOSTAMPA)[0] == 'B'; }
|
const bool mensile() const { return tipostampa() == "M";}
|
||||||
|
const bool per_beneficiario() const { return get_bool(F_BENEFICIARIO); }
|
||||||
|
const real proponi_costo(const char *codlist, const char * tipo, const char * codice, const char * tpora, int mese, int anno) const ;
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void elabora() const;
|
void elabora() const;
|
||||||
@ -121,19 +125,48 @@ public:
|
|||||||
virtual ~TRil_ore_ris_mask() {}
|
virtual ~TRil_ore_ris_mask() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
TRil_ore_ris_mask::TRil_ore_ris_mask() : TAutomask("ci1300a")
|
TRil_ore_ris_mask::TRil_ore_ris_mask() : TSimpleAutomask("ci1300a")
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TRil_ore_ris_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
/*bool TRil_ore_ris_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
const real TRil_ore_ris_mask::proponi_costo(const char *codlist, const char * tipo, const char * codice, const char * tpora, int mese, int anno) const
|
||||||
|
{
|
||||||
|
real r;
|
||||||
|
const TDate dal(1, mese, anno);
|
||||||
|
TRisoatt_key chiave(codlist, tipo[0], codice, dal, tpora);
|
||||||
|
const TRectype & rec = cache().get("&ROA", chiave);
|
||||||
|
|
||||||
|
if (rec.empty())
|
||||||
|
{
|
||||||
|
if (chiave.cod().full() && chiave.tpora().full())
|
||||||
|
{
|
||||||
|
TModule_table tab("ROA");
|
||||||
|
|
||||||
|
tab.put("CODTAB", chiave);
|
||||||
|
const int err = tab.read();
|
||||||
|
if (err != _isemptyfile)
|
||||||
|
{
|
||||||
|
chiave.overwrite("????????", 21, 8);
|
||||||
|
if (err != _iseof)
|
||||||
|
tab.prev();
|
||||||
|
if (tab.get("CODTAB").match(chiave))
|
||||||
|
r = tab.get_real("R1");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
r = rec.get_real("R1");
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
void TRil_ore_ris_mask::elabora_risorsa(const TString& curr_risorsa, const int curr_mese, const bool ignore, 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 int tipo_ordinamento = get_int(F_ORDINAMENTO);
|
||||||
const TString4 tipo_stampa = get(F_TIPOSTAMPA);
|
|
||||||
const int anno = get_int(F_ANNO);
|
const int anno = get_int(F_ANNO);
|
||||||
const int mese = mensile() ? curr_mese : 0;
|
const int mese = mensile() ? curr_mese : 0;
|
||||||
const bool calc_ore_lav = rep.field("F1.98") != NULL;
|
const bool calc_ore_lav = rep.field("F1.98") != NULL;
|
||||||
@ -207,13 +240,13 @@ void TRil_ore_ris_mask::elabora_risorsa(const TString& curr_risorsa, const int c
|
|||||||
|
|
||||||
for (bool ok = rilore_recset.move_first(); ok; ok = rilore_recset.move_next())
|
for (bool ok = rilore_recset.move_first(); ok; ok = rilore_recset.move_next())
|
||||||
{
|
{
|
||||||
const TString80 codcosto = rilore_recset.get(RILORE_CODCOSTO).as_string();
|
const TString80 codcosto = rilore_recset.get_string(RILORE_CODCOSTO);
|
||||||
TString80 codcms = rilore_recset.get(RILORE_CODCMS).as_string();
|
TString80 codcms = rilore_recset.get_string(RILORE_CODCMS);
|
||||||
const TString16 codfase = rilore_recset.get(RILORE_CODFASE).as_string();
|
const TString16 codfase = rilore_recset.get_string(RILORE_CODFASE);
|
||||||
|
|
||||||
//date limite qta ore sul record del file LF_RILORE
|
//date limite qta ore sul record del file LF_RILORE
|
||||||
TDate ini_rilore = rilore_recset.get(RILORE_DADATA).as_date();
|
TDate ini_rilore = rilore_recset.get_date(RILORE_DADATA);
|
||||||
TDate fine_rilore = rilore_recset.get(RILORE_ADATA).as_date();
|
TDate fine_rilore = rilore_recset.get_date(RILORE_ADATA);
|
||||||
|
|
||||||
//adatta le date alla commessa se quest'ultima è contenuta nell'intervallo (può essere più breve..
|
//adatta le date alla commessa se quest'ultima è contenuta nell'intervallo (può essere più breve..
|
||||||
//..dell'intervallo selezionato, oppure sovrapporsi solo parzialmente)
|
//..dell'intervallo selezionato, oppure sovrapporsi solo parzialmente)
|
||||||
@ -229,10 +262,10 @@ void TRil_ore_ris_mask::elabora_risorsa(const TString& curr_risorsa, const int c
|
|||||||
|
|
||||||
if (giorni_lavorativi_rilore > 0)
|
if (giorni_lavorativi_rilore > 0)
|
||||||
{
|
{
|
||||||
const real tot_ore = rilore_recset.get(RILORE_QTAORE).as_real();
|
const real tot_ore = rilore_recset.get_real(RILORE_QTAORE);
|
||||||
|
|
||||||
const real tot_ore_uso_risorsa_nel_periodo = tot_ore * giorni_lavorativi / giorni_lavorativi_rilore;
|
const real tot_ore_uso_risorsa_nel_periodo = tot_ore * giorni_lavorativi / giorni_lavorativi_rilore;
|
||||||
const TString8 tpora = rilore_recset.get(RILORE_TPORA).as_string();
|
const TString8 tpora = rilore_recset.get_string(RILORE_TPORA);
|
||||||
const TString8 tpassenza = cache().get("&ORE", tpora, "S2");
|
const TString8 tpassenza = cache().get("&ORE", tpora, "S2");
|
||||||
|
|
||||||
//crea la chiave per l'assoc_array
|
//crea la chiave per l'assoc_array
|
||||||
@ -297,7 +330,7 @@ void TRil_ore_ris_mask::elabora_risorsa(const TString& curr_risorsa, const int c
|
|||||||
{
|
{
|
||||||
if (giorni_lavorativi_rilore == 1 || ci_is_ferial_day(data))
|
if (giorni_lavorativi_rilore == 1 || ci_is_ferial_day(data))
|
||||||
{
|
{
|
||||||
const int index = tipo_stampa == 'M' ? data.day() : data.month();
|
const int index = mensile() ? data.day() : data.month();
|
||||||
real prev = record->get(index);
|
real prev = record->get(index);
|
||||||
prev += ore_al_giorno;
|
prev += ore_al_giorno;
|
||||||
record->add(prev.string(), index);
|
record->add(prev.string(), index);
|
||||||
@ -305,6 +338,17 @@ void TRil_ore_ris_mask::elabora_risorsa(const TString& curr_risorsa, const int c
|
|||||||
tot += ore_al_giorno;
|
tot += ore_al_giorno;
|
||||||
record->add(tot.string(), 32);
|
record->add(tot.string(), 32);
|
||||||
|
|
||||||
|
real totcosto = record->get(34);
|
||||||
|
real costo = rilore_recset.get_real(RILORE_COSTO);
|
||||||
|
|
||||||
|
if (costo == ZERO)
|
||||||
|
costo = proponi_costo(rilore_recset.get_string(RILORE_CODLIST),
|
||||||
|
rilore_recset.get_string(RILORE_TIPORA),
|
||||||
|
rilore_recset.get_string(RILORE_CODICE),
|
||||||
|
tpora, data.month(), data.year());
|
||||||
|
totcosto += ore_al_giorno * costo;
|
||||||
|
record->add(totcosto.string(), 34);
|
||||||
|
|
||||||
int i = data - inizio_periodo + 1;
|
int i = data - inizio_periodo + 1;
|
||||||
if (tpassenza.full())
|
if (tpassenza.full())
|
||||||
{
|
{
|
||||||
@ -372,14 +416,13 @@ void TRil_ore_ris_mask::elabora() const
|
|||||||
//book di stampa
|
//book di stampa
|
||||||
TReport_book book;
|
TReport_book book;
|
||||||
//stampa mensile o annuale?
|
//stampa mensile o annuale?
|
||||||
const TString4 tipostampa = get(F_TIPOSTAMPA);
|
TRil_ore_ris_report rep(mensile(), per_beneficiario());
|
||||||
TRil_ore_ris_report rep(tipostampa);
|
|
||||||
|
|
||||||
rep.set_codcf(get_long(F_CODFIN));
|
rep.set_codcf(get_long(F_CODFIN));
|
||||||
rep.set_codtpl(get(F_CODTPL));
|
rep.set_codtpl(get(F_CODTPL));
|
||||||
int da_mese = 1;
|
int da_mese = 1;
|
||||||
int a_mese = 1;
|
int a_mese = 1;
|
||||||
if (tipostampa[1] == 'M')
|
if (mensile())
|
||||||
{
|
{
|
||||||
da_mese = get_int(F_DA_MESE);
|
da_mese = get_int(F_DA_MESE);
|
||||||
a_mese = get_int(F_A_MESE);
|
a_mese = get_int(F_A_MESE);
|
||||||
@ -395,7 +438,7 @@ void TRil_ore_ris_mask::elabora() const
|
|||||||
//giro su tutti i mesi; se stampa annuale o mese unico -> un giro solo
|
//giro su tutti i mesi; se stampa annuale o mese unico -> un giro solo
|
||||||
for (int m = da_mese; m <= a_mese; m++)
|
for (int m = da_mese; m <= a_mese; m++)
|
||||||
{
|
{
|
||||||
if (tipostampa[1] == 'M')
|
if (mensile())
|
||||||
format_report_month(get_int(F_ANNO), m, rep);
|
format_report_month(get_int(F_ANNO), m, rep);
|
||||||
|
|
||||||
//query sulla tabella interessata (risorse o attrezzature)
|
//query sulla tabella interessata (risorse o attrezzature)
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
#define F_CODFIN 219
|
#define F_CODFIN 219
|
||||||
#define F_RAGFIN 220
|
#define F_RAGFIN 220
|
||||||
#define F_RIGHE 221
|
#define F_RIGHE 221
|
||||||
|
#define F_BENEFICIARIO 222
|
||||||
|
|
||||||
//campi riga sheet
|
//campi riga sheet
|
||||||
#define S_CODCMS 101
|
#define S_CODCMS 101
|
||||||
|
@ -131,21 +131,25 @@ BEGIN
|
|||||||
PROMPT 1 6 "@bFiltri su anno / mese"
|
PROMPT 1 6 "@bFiltri su anno / mese"
|
||||||
END
|
END
|
||||||
|
|
||||||
LISTBOX F_TIPOSTAMPA 25
|
LISTBOX F_TIPOSTAMPA 1 8
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 7 "Tipo di stampa "
|
PROMPT 2 7 "Tipo di stampa "
|
||||||
ITEM "AM|Mensile"
|
ITEM "M|Mensile"
|
||||||
MESSAGE SHOW,F_DA_MESE|SHOW,F_A_MESE|CLEAR,4@
|
MESSAGE SHOW,F_DA_MESE|SHOW,F_A_MESE
|
||||||
ITEM "AA|Annuale"
|
ITEM "A|Annuale"
|
||||||
MESSAGE HIDE,F_DA_MESE|HIDE,F_A_MESE|CLEAR,4@
|
MESSAGE HIDE,F_DA_MESE|HIDE,F_A_MESE
|
||||||
ITEM "BM|Per Beneficiario Mensile"
|
|
||||||
MESSAGE SHOW,F_DA_MESE|SHOW,F_A_MESE|ENABLE,4@
|
|
||||||
ITEM "BA|Per Beneficiario Annuale"
|
|
||||||
MESSAGE HIDE,F_DA_MESE|HIDE,F_A_MESE|ENABLE,4@
|
|
||||||
FLAGS "Z"
|
FLAGS "Z"
|
||||||
FIELD #TIPOSTAMPA
|
FIELD #TIPOSTAMPA
|
||||||
END
|
END
|
||||||
|
|
||||||
|
BOOLEAN F_BENEFICIARIO
|
||||||
|
BEGIN
|
||||||
|
PROMPT 32 7 "Per Beneficiario"
|
||||||
|
MESSAGE FALSE CLEAR,4@
|
||||||
|
MESSAGE TRUE ENABLE,4@
|
||||||
|
FIELD #BENEFICIARIO
|
||||||
|
END
|
||||||
|
|
||||||
NUMBER F_ANNO 4
|
NUMBER F_ANNO 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 8 "Anno "
|
PROMPT 2 8 "Anno "
|
||||||
|
@ -121,9 +121,23 @@
|
|||||||
<field border="1" x="2" y="14" deactivated="" type="Testo" valign="center" hidden="" link="" dynamic_height="" shade_offset="" width="12" codval="" id="" pattern="2" hide_zero="" text=" MESE">
|
<field border="1" x="2" y="14" deactivated="" type="Testo" valign="center" hidden="" link="" dynamic_height="" shade_offset="" width="12" codval="" id="" pattern="2" hide_zero="" text=" MESE">
|
||||||
<font face="Arial" bold="1" size="8" />
|
<font face="Arial" bold="1" size="8" />
|
||||||
</field>
|
</field>
|
||||||
<field border="1" x="14" y="14" deactivated="" type="Numero" valign="center" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="8" codval="" id="" pattern="2" hide_zero="" text="">
|
<field border="1" x="14" y="14" deactivated="" type="Array" valign="center" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="8" codval="" id="" pattern="2" hide_zero="" text="">
|
||||||
<font face="Arial" bold="1" size="8" />
|
<font face="Arial" bold="1" size="8" />
|
||||||
<source>#MESE</source>
|
<source>#MESE</source>
|
||||||
|
<list>
|
||||||
|
<li Value="Gennaio" Code="01" />
|
||||||
|
<li Value="Febbraio" Code="02" />
|
||||||
|
<li Value="Marzo" Code="03" />
|
||||||
|
<li Value="Aprile" Code="04" />
|
||||||
|
<li Value="Maggio" Code="05" />
|
||||||
|
<li Value="Giugno" Code="06" />
|
||||||
|
<li Value="Luglio" Code="07" />
|
||||||
|
<li Value="Agosto" Code="08" />
|
||||||
|
<li Value="Settembre" Code="09" />
|
||||||
|
<li Value="Ottobre" Code="10" />
|
||||||
|
<li Value="Novembre" Code="11" />
|
||||||
|
<li Value="Dicembre" Code="12" />
|
||||||
|
</list>
|
||||||
</field>
|
</field>
|
||||||
<field border="2" x="1" y="16" deactivated="" type="Linea" hidden="" link="" dynamic_height="" shade_offset="" width="166" codval="" height="0" id="" pattern="1" hide_zero="" text="" />
|
<field border="2" x="1" y="16" deactivated="" type="Linea" hidden="" link="" dynamic_height="" shade_offset="" width="166" codval="" height="0" id="" pattern="1" hide_zero="" text="" />
|
||||||
<field x="76" y="8.25" deactivated="" type="Stringa" hidden="1" link="" dynamic_height="" shade_offset="" width="7" codval="" id="90" pattern="2" hide_zero="" text="">
|
<field x="76" y="8.25" deactivated="" type="Stringa" hidden="1" link="" dynamic_height="" shade_offset="" width="7" codval="" id="90" pattern="2" hide_zero="" text="">
|
||||||
@ -150,8 +164,7 @@
|
|||||||
#THIS !</prescript>
|
#THIS !</prescript>
|
||||||
</field>
|
</field>
|
||||||
<field x="111" y="1" deactivated="" type="Immagine" hidden="" link="" dynamic_height="" shade_offset="" width="40" codval="" height="4" id="111" pattern="1" hide_zero="" text="">
|
<field x="111" y="1" deactivated="" type="Immagine" hidden="" link="" dynamic_height="" shade_offset="" width="40" codval="" height="4" id="111" pattern="1" hide_zero="" text="">
|
||||||
<prescript description="H1.111 PRESCRIPT">LOGO
|
<prescript description="H1.111 PRESCRIPT">LOGO #THIS !</prescript>
|
||||||
#THIS !</prescript>
|
|
||||||
</field>
|
</field>
|
||||||
</section>
|
</section>
|
||||||
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Head" level="2" hidden="" page_break="" can_break="" pattern="1">
|
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Head" level="2" hidden="" page_break="" can_break="" pattern="1">
|
||||||
@ -182,8 +195,8 @@
|
|||||||
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Body" level="" hidden="" page_break="" can_break="" pattern="1" />
|
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Body" level="" hidden="" page_break="" can_break="" pattern="1" />
|
||||||
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Body" level="1" hidden="" page_break="" can_break="" pattern="1">
|
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Body" level="1" hidden="" page_break="" can_break="" pattern="1">
|
||||||
<font face="Arial Narrow" size="7" />
|
<font face="Arial Narrow" size="7" />
|
||||||
<field border="1" x="43.5" deactivated="" type="Numero" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="6" codval="" id="" pattern="1" hide_zero="" text=".2">
|
<field border="1" x="43.5" deactivated="" type="Numero" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="6" codval="" id="" pattern="1" hide_zero="1" text=".2">
|
||||||
<source>Costo</source>
|
<source>TotCostoCons</source>
|
||||||
<prescript description="B1.0 PRESCRIPT">MESSAGE ADD,F1.99</prescript>
|
<prescript description="B1.0 PRESCRIPT">MESSAGE ADD,F1.99</prescript>
|
||||||
</field>
|
</field>
|
||||||
<field border="1" x="50" deactivated="" type="Numero" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="6" codval="" id="" pattern="1" hide_zero="" text=".2">
|
<field border="1" x="50" deactivated="" type="Numero" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="6" codval="" id="" pattern="1" hide_zero="" text=".2">
|
||||||
|
@ -116,12 +116,10 @@
|
|||||||
<font face="Arial" bold="1" size="8" />
|
<font face="Arial" bold="1" size="8" />
|
||||||
</field>
|
</field>
|
||||||
<field x="3" y="1" deactivated="" type="Immagine" hidden="" link="" dynamic_height="" shade_offset="" width="80" codval="" height="4" id="110" pattern="1" hide_zero="" text="">
|
<field x="3" y="1" deactivated="" type="Immagine" hidden="" link="" dynamic_height="" shade_offset="" width="80" codval="" height="4" id="110" pattern="1" hide_zero="" text="">
|
||||||
<prescript description="H1.110 PRESCRIPT">LOGO_BENEF
|
<prescript description="H1.110 PRESCRIPT">LOGO_BENEF #THIS !</prescript>
|
||||||
#THIS !</prescript>
|
|
||||||
</field>
|
</field>
|
||||||
<field x="82" y="1" deactivated="" type="Immagine" hidden="" link="" dynamic_height="" shade_offset="" width="40" codval="" height="4" id="111" pattern="1" hide_zero="" text="">
|
<field x="82" y="1" deactivated="" type="Immagine" hidden="" link="" dynamic_height="" shade_offset="" width="40" codval="" height="4" id="111" pattern="1" hide_zero="" text="">
|
||||||
<prescript description="H1.111 PRESCRIPT">LOGO
|
<prescript description="H1.111 PRESCRIPT">LOGO #THIS !</prescript>
|
||||||
#THIS !</prescript>
|
|
||||||
</field>
|
</field>
|
||||||
</section>
|
</section>
|
||||||
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Head" level="2" hidden="" page_break="" can_break="" pattern="1">
|
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Head" level="2" hidden="" page_break="" can_break="" pattern="1">
|
||||||
@ -152,8 +150,8 @@
|
|||||||
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Body" level="" hidden="" page_break="" can_break="" pattern="1" />
|
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Body" level="" hidden="" page_break="" can_break="" pattern="1" />
|
||||||
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Body" level="1" hidden="" page_break="" can_break="" pattern="1">
|
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Body" level="1" hidden="" page_break="" can_break="" pattern="1">
|
||||||
<font face="Arial Narrow" size="7" />
|
<font face="Arial Narrow" size="7" />
|
||||||
<field border="1" x="44" deactivated="" type="Numero" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="6" codval="" id="" pattern="1" hide_zero="" text=".2">
|
<field border="1" x="44" deactivated="" type="Numero" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="6" codval="" id="" pattern="1" hide_zero="1" text=".2">
|
||||||
<source>Costo</source>
|
<source>TotCostoCons</source>
|
||||||
<prescript description="B1.0 PRESCRIPT">MESSAGE ADD,F1.99</prescript>
|
<prescript description="B1.0 PRESCRIPT">MESSAGE ADD,F1.99</prescript>
|
||||||
</field>
|
</field>
|
||||||
<field border="1" x="50.5" deactivated="" type="Numero" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="6" codval="" id="" pattern="1" hide_zero="" text=".2">
|
<field border="1" x="50.5" deactivated="" type="Numero" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="6" codval="" id="" pattern="1" hide_zero="" text=".2">
|
||||||
|
@ -26,6 +26,7 @@ TRil_ore_recordset::TRil_ore_recordset() : TAS400_recordset("AS400(512)")
|
|||||||
create_field("TotPrev", -1, 7, _realfld, false);
|
create_field("TotPrev", -1, 7, _realfld, false);
|
||||||
create_field("TotCons", -1, 7, _realfld, false);
|
create_field("TotCons", -1, 7, _realfld, false);
|
||||||
create_field("TotOreLav", -1, 7, _realfld, false);
|
create_field("TotOreLav", -1, 7, _realfld, false);
|
||||||
|
create_field("TotCostoCons", -1, 7, _realfld, false);
|
||||||
|
|
||||||
TString4 name;
|
TString4 name;
|
||||||
for (int i = 1; i <= 31; i++)
|
for (int i = 1; i <= 31; i++)
|
||||||
@ -176,15 +177,22 @@ void ci_fill_recset_from_ass(TAssoc_array& ass, TReport& rep)
|
|||||||
real totale_p = record_ass.get(0);
|
real totale_p = record_ass.get(0);
|
||||||
totale_p.round(2);
|
totale_p.round(2);
|
||||||
recset->set("TotPrev", totale_p);
|
recset->set("TotPrev", totale_p);
|
||||||
|
|
||||||
// Totale consuntivo (lo prende dall'assoc_array e lo butta nel recset appena arrotondato)
|
// Totale consuntivo (lo prende dall'assoc_array e lo butta nel recset appena arrotondato)
|
||||||
real totale_c = record_ass.get(32);
|
real totale_c = record_ass.get(32);
|
||||||
totale_c.round(2);
|
totale_c.round(2);
|
||||||
recset->set("TotCons", totale_c);
|
recset->set("TotCons", totale_c);
|
||||||
|
|
||||||
// Totale ore lavorat (lo prende dall'assoc_array e lo butta nel recset appena arrotondato)
|
// Totale ore lavorat (lo prende dall'assoc_array e lo butta nel recset appena arrotondato)
|
||||||
real totale_o = record_ass.get(33);
|
real totale_o = record_ass.get(33);
|
||||||
totale_o.round(2);
|
totale_o.round(2);
|
||||||
recset->set("TotOreLav", totale_o);
|
recset->set("TotOreLav", totale_o);
|
||||||
|
|
||||||
|
// Totale costo consuntivo (lo prende dall'assoc_array e lo butta nel recset appena arrotondato)
|
||||||
|
real tot_costo = record_ass.get(34);
|
||||||
|
|
||||||
|
tot_costo.round(2);
|
||||||
|
recset->set("TotCostoCons", tot_costo);
|
||||||
//per avere una distribuzione di ore giornaliera che faccia ritornare il totale consuntivo..
|
//per avere una distribuzione di ore giornaliera che faccia ritornare il totale consuntivo..
|
||||||
//..indipendentemente da arrotondamenti e troncamenti, si ricorre al mitico TGeneric_distrib...
|
//..indipendentemente da arrotondamenti e troncamenti, si ricorre al mitico TGeneric_distrib...
|
||||||
TGeneric_distrib esso(totale_c, 2);
|
TGeneric_distrib esso(totale_c, 2);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user