Patch level :10.0
Files correlati : Ricompilazione Demo : [ ] Commento : fine immissione cespiti in analitica registro sintetico cespiti analiticizzato git-svn-id: svn://10.65.10.50/trunk@20546 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
8d7e5c7128
commit
b7424d5550
133
ce/ce3900.cpp
133
ce/ce3900.cpp
@ -120,13 +120,12 @@ void TStampa_sintetica_recordset::set_filter(const TStampa_sintetica_mask& msk)
|
||||
{
|
||||
//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() << ")";
|
||||
query << "(ANSI(DTCOMP)<=#DATAFINE)";
|
||||
//cespiti alienati esclusi?
|
||||
if (exclude_aliens)
|
||||
query << "&&((DTALIEN='')||(ANSI(DTALIEN)>=#DATAINIZIO))"; // << msk.get_date(F_DATAINIZIO).date2ansi() << "))";
|
||||
query << "&&((DTALIEN='')||(ANSI(DTALIEN)>=#DATAINIZIO))";
|
||||
|
||||
//categorie
|
||||
const TString& dacat = msk.get(F_FROM_CAT);
|
||||
@ -140,11 +139,23 @@ void TStampa_sintetica_recordset::set_filter(const TStampa_sintetica_mask& msk)
|
||||
}
|
||||
|
||||
//parte analitica
|
||||
if (anal)
|
||||
const TString& codcdc = msk.get(F_CODCDC);
|
||||
const TString& codcms = msk.get(F_CODCMS);
|
||||
const TString& codfase = msk.get(F_CODFASE);
|
||||
if (codcdc.full() || codcms.full() || codfase.full())
|
||||
{
|
||||
query << "&&(BETWEEN(SALCECMS.CODCDC,#DACODCDC,#ACODCDC))";
|
||||
query << "&&(BETWEEN(SALCECMS.CODCMS,#DACODCMS,#ACODCMS))";
|
||||
query << "&&(BETWEEN(SALCECMS.CODFASE,#DACODFASE,#ACODFASE))";
|
||||
query << "&&";
|
||||
|
||||
if (codcdc.full())
|
||||
query << "(BETWEEN(SALCECMS.CODCDC,#CODCDC,#CODCDC))&&";
|
||||
|
||||
if (codcms.full())
|
||||
query << "(BETWEEN(SALCECMS.CODCMS,#CODCMS,#CODCMS))&&";
|
||||
|
||||
if (codfase.full())
|
||||
query << "(BETWEEN(SALCECMS.CODFASE,#CODFASE,#CODFASE))&&";
|
||||
|
||||
query.rtrim(2);
|
||||
query << "\nJOIN SALCECMS INTO IDCESPITE=IDCESPITE";
|
||||
}
|
||||
|
||||
@ -158,18 +169,13 @@ void TStampa_sintetica_recordset::set_filter(const TStampa_sintetica_mask& msk)
|
||||
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);
|
||||
}
|
||||
//set var condizionali in analitica
|
||||
if (codcdc.full())
|
||||
set_var("#CODCDC", codcdc);
|
||||
if (codcms.full())
|
||||
set_var("#CODCMS", codcms);
|
||||
if (codfase.full())
|
||||
set_var("#CODFASE", codfase);
|
||||
|
||||
}
|
||||
|
||||
@ -183,14 +189,31 @@ class TStampa_sintetica_rep : public TReport
|
||||
int _group_codimp, _group_codloc;
|
||||
TString _codcdc, _codcms, _codfase;
|
||||
TCespite _cespite;
|
||||
real _percutil;
|
||||
TString16 _cespi_percutil;
|
||||
|
||||
protected:
|
||||
real val_amm(const TRectype& rec_saldi) const;
|
||||
virtual bool get_usr_val(const TString& name, TVariant& var) const;
|
||||
real perc_util() const;
|
||||
|
||||
public:
|
||||
void set_filter(const TStampa_sintetica_mask& msk);
|
||||
};
|
||||
|
||||
//metodo per avere, solo al cambio cespite, la % di utilizzo per la chiave cespite/anno/cdc/cms/fase
|
||||
//serve nel caso si utilizzi il cespite in analitica (selezioni su cdc/cms/fase)
|
||||
real TStampa_sintetica_rep::perc_util() const
|
||||
{
|
||||
const TString& curr_cespite = _cespite.get(CESPI_IDCESPITE);
|
||||
if (curr_cespite != _cespi_percutil)
|
||||
{
|
||||
(TString&)_cespi_percutil = curr_cespite;
|
||||
(real&)_percutil = ceca_percutil(_cespi_percutil, _anno, _codcdc, _codcms, _codfase);
|
||||
}
|
||||
return _percutil;
|
||||
}
|
||||
|
||||
void TStampa_sintetica_rep::set_filter(const TStampa_sintetica_mask& msk)
|
||||
{
|
||||
_anno = msk.get_int(F_ESERCIZIO);
|
||||
@ -282,7 +305,43 @@ bool TStampa_sintetica_rep::get_usr_val(const TString& name, TVariant& var) cons
|
||||
return true;
|
||||
}
|
||||
|
||||
if (name == "#PERCAMM") // percentuale ammortamento
|
||||
|
||||
|
||||
if (name == "#QAMMMV") //quote ammortamento su movimento esercizio corrente
|
||||
{
|
||||
real quote_ammmv;
|
||||
const TArray& array_ammmv = _cespite.ammmv();
|
||||
for (int i = 0; i < array_ammmv.items(); i++)
|
||||
{
|
||||
const TRectype& rec_ammmv = (const TRectype&)array_ammmv[i];
|
||||
quote_ammmv += rec_ammmv.get_real(AMMMV_QNOR) + rec_ammmv.get_real(AMMMV_QACC) +
|
||||
rec_ammmv.get_real(AMMMV_QANT) + rec_ammmv.get_real(AMMMV_QPERSE) +
|
||||
rec_ammmv.get_real(AMMMV_QPPRIVATE) + rec_ammmv.get_real(AMMMV_FPRIVATO);
|
||||
}
|
||||
quote_ammmv *= perc_util();
|
||||
var = quote_ammmv;
|
||||
return true;
|
||||
}
|
||||
if (name == "#QAMM") //quote ammortamento esercizio corrente
|
||||
{
|
||||
const TRectype& rec_ammce = _cespite.amm_pro();
|
||||
real quote_amm = real(rec_ammce.get_real(AMMCE_QNOR) + rec_ammce.get_real(AMMCE_QACC) +
|
||||
rec_ammce.get_real(AMMCE_QANT) + rec_ammce.get_real(AMMCE_QPERSE) +
|
||||
rec_ammce.get_real(AMMCE_QPPRIVATE) + rec_ammce.get_real(AMMCE_FPRIVATO));
|
||||
quote_amm *= perc_util();
|
||||
var = quote_amm;
|
||||
return true;
|
||||
}
|
||||
if (name == "#QAMM_FPRIVATO") //fondo ammortamento privato corrente
|
||||
{
|
||||
const TRectype& rec_ammce = _cespite.amm_pro();
|
||||
real famm = rec_ammce.get_real(AMMCE_FPRIVATO);
|
||||
famm *= perc_util();
|
||||
var = famm;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (name == "#PERCAMM") // percentuale ammortamento
|
||||
{
|
||||
real percamm;
|
||||
real valamm = val_amm(_cespite.sal_ini());
|
||||
@ -290,7 +349,9 @@ bool TStampa_sintetica_rep::get_usr_val(const TString& name, TVariant& var) cons
|
||||
{
|
||||
const int anno_acq = _cespite.get_date(CESPI_DTCOMP).year();
|
||||
if (anno_acq == _anno)
|
||||
{
|
||||
valamm = val_amm(_cespite.sal_pro());
|
||||
}
|
||||
}
|
||||
if (!valamm.is_zero())
|
||||
{
|
||||
@ -304,34 +365,7 @@ bool TStampa_sintetica_rep::get_usr_val(const TString& name, TVariant& var) cons
|
||||
return true;
|
||||
}
|
||||
|
||||
if (name == "#QAMMMV") //quote ammortamento su movimento esercizio corrente
|
||||
{
|
||||
real quote_ammmv;
|
||||
const TArray& array_ammmv = _cespite.ammmv();
|
||||
for (int i = 0; i < array_ammmv.items(); i++)
|
||||
{
|
||||
const TRectype& rec_ammmv = (const TRectype&)array_ammmv[i];
|
||||
quote_ammmv += rec_ammmv.get_real(AMMMV_QNOR) + rec_ammmv.get_real(AMMMV_QACC) +
|
||||
rec_ammmv.get_real(AMMMV_QANT) + rec_ammmv.get_real(AMMMV_QPERSE) +
|
||||
rec_ammmv.get_real(AMMMV_QPPRIVATE) + rec_ammmv.get_real(AMMMV_FPRIVATO);
|
||||
}
|
||||
var = quote_ammmv;
|
||||
return true;
|
||||
}
|
||||
if (name == "#QAMM") //quote ammortamento esercizio corrente
|
||||
{
|
||||
const TRectype& rec_ammce = _cespite.amm_pro();
|
||||
var = real(rec_ammce.get_real(AMMCE_QNOR) + rec_ammce.get_real(AMMCE_QACC) +
|
||||
rec_ammce.get_real(AMMCE_QANT) + rec_ammce.get_real(AMMCE_QPERSE) +
|
||||
rec_ammce.get_real(AMMCE_QPPRIVATE) + rec_ammce.get_real(AMMCE_FPRIVATO));
|
||||
return true;
|
||||
}
|
||||
if (name == "#QAMM_FPRIVATO") //fondo ammortamento privato corrente
|
||||
{
|
||||
const TRectype& rec_ammce = _cespite.amm_pro();
|
||||
var = rec_ammce.get_real(AMMCE_FPRIVATO);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (name == "#FAMM") //fondo ammortamento alla fine dell'esercizio precedente
|
||||
{
|
||||
const TRectype& rec_ammce = _cespite.amm_ini();
|
||||
@ -347,6 +381,8 @@ bool TStampa_sintetica_rep::get_usr_val(const TString& name, TVariant& var) cons
|
||||
var = rec_ammce.get_real(AMMCE_FPRIVATO);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
if (name == "#CESSELIM") //cessioni elminiazioni
|
||||
{
|
||||
real cesselim;
|
||||
@ -358,6 +394,7 @@ bool TStampa_sintetica_rep::get_usr_val(const TString& name, TVariant& var) cons
|
||||
rec_movam.get_real(MOVAM_QANT) + rec_movam.get_real(MOVAM_QPERSE) +
|
||||
rec_movam.get_real(MOVAM_QPPRIVATE) + rec_movam.get_real(MOVAM_FPRIVATO);
|
||||
}
|
||||
cesselim *= perc_util();
|
||||
var = cesselim;
|
||||
return true;
|
||||
}
|
||||
|
@ -6,10 +6,7 @@
|
||||
#define F_DATAFINE 105
|
||||
#define F_GRUPPO 106
|
||||
#define F_SPECIE 107
|
||||
#define F_D_GRUPPO 108
|
||||
#define F_D_SPECIE 109
|
||||
#define F_CODTAB 110
|
||||
#define F_D_CODTAB 111
|
||||
#define F_DESC_GRSP 108
|
||||
|
||||
#define F_FROM_CAT 112
|
||||
#define F_D_FROM_CAT 113
|
||||
|
@ -6,15 +6,14 @@ ENDPAGE
|
||||
|
||||
PAGE "Registro cespiti sintetico" 0 2 0 0
|
||||
|
||||
GROUPBOX DLG_NULL 78 6
|
||||
GROUPBOX DLG_NULL 78 5
|
||||
BEGIN
|
||||
PROMPT 1 0 ""
|
||||
FLAGS "R"
|
||||
PROMPT 1 1 ""
|
||||
END
|
||||
|
||||
NUMBER F_CODDITTA 5
|
||||
BEGIN
|
||||
PROMPT 2 1 "Ditta "
|
||||
PROMPT 2 2 "Ditta "
|
||||
FLAGS "DF"
|
||||
USE LF_NDITTE
|
||||
INPUT CODDITTA F_CODDITTA
|
||||
@ -24,13 +23,13 @@ END
|
||||
|
||||
STRING F_RAGSOC 55
|
||||
BEGIN
|
||||
PROMPT 20 1 ""
|
||||
PROMPT 20 2 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_ESERCIZIO 4
|
||||
BEGIN
|
||||
PROMPT 2 2 "Esercizio "
|
||||
PROMPT 2 3 "Esercizio "
|
||||
FLAGS "Z"
|
||||
USE CCE
|
||||
JOIN ESC ALIAS 105 INTO CODTAB==CODTAB
|
||||
@ -46,58 +45,44 @@ END
|
||||
|
||||
DATE F_DATAINIZIO
|
||||
BEGIN
|
||||
PROMPT 20 2 "Data inizio "
|
||||
PROMPT 20 3 "Data inizio "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
DATE F_DATAFINE
|
||||
BEGIN
|
||||
PROMPT 45 2 "Data fine "
|
||||
PROMPT 45 3 "Data fine "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_GRUPPO 2
|
||||
BEGIN
|
||||
PROMPT 2 3 "Gruppo "
|
||||
PROMPT 2 4 "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]
|
||||
PROMPT 17 4 "Specie "
|
||||
FLAGS "_"
|
||||
USE CCB
|
||||
JOIN %CAT ALIAS 400 INTO CODTAB=CODTAB[5,10]
|
||||
INPUT CODTAB[1,4] F_ESERCIZIO SELECT
|
||||
INPUT CODTAB[5,6] F_GRUPPO SELECT
|
||||
INPUT CODTAB[5,6] F_GRUPPO
|
||||
INPUT CODTAB[7,10] F_SPECIE
|
||||
DISPLAY "Gruppo" CODTAB[5,6]
|
||||
DISPLAY "Specie" CODTAB[7,10]
|
||||
DISPLAY "Descrizione@60" 107@->S0
|
||||
DISPLAY "Descrizione@50" 400@->S0
|
||||
OUTPUT F_GRUPPO CODTAB[5,6]
|
||||
OUTPUT F_SPECIE CODTAB[7,10]
|
||||
OUTPUT F_D_SPECIE 107@->S0
|
||||
CHECKTYPE NORMAL
|
||||
OUTPUT F_DESC_GRSP 400@->S0
|
||||
CHECKTYPE FORCED
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING F_D_GRUPPO 60 55
|
||||
STRING F_DESC_GRSP 60 44
|
||||
BEGIN
|
||||
PROMPT 20 3 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_D_SPECIE 60 55
|
||||
BEGIN
|
||||
PROMPT 20 4 ""
|
||||
PROMPT 31 4 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
|
@ -261,7 +261,7 @@ bool TCesp_anal_mask::on_field_event(TOperable_field& o, TField_event e, long jo
|
||||
|
||||
//maschera principale
|
||||
//-------------------
|
||||
case F_IDCESPITE:
|
||||
//case F_IDCESPITE:
|
||||
case F_IDCESPITE_N:
|
||||
case F_ESERCIZIO:
|
||||
if (e == fe_modify || e == fe_close)
|
||||
|
@ -231,6 +231,7 @@ END
|
||||
STRING S_DESFASE 50 37
|
||||
BEGIN
|
||||
PROMPT 35 3 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING S_CODCDC 20
|
||||
|
122
ce/celib.cpp
122
ce/celib.cpp
@ -438,100 +438,50 @@ bool null_fields(const TRectype& rec, const char* fld0, const char* fld1, const
|
||||
//Metodi per cespiti in analitica (come maiali nello spazio!?)
|
||||
//------------------------------------------------------------
|
||||
//ricava la % di utilizzo di un cespite in un esercizio, date cms/fase/cdc
|
||||
real ceca_perc_util(const TString& cespite, const int anno,
|
||||
const TString& cms, const TString& fase, const TString& cdc)
|
||||
real ceca_percutil(const TString& idcespite, int anno,
|
||||
const TString& cdc, const TString& cms, const TString& fase)
|
||||
{
|
||||
//controllo su date inizio e fine del periodo di utilizzo del cespite nell'esercizio selezionato
|
||||
const TRectype& cespi = cache().get(LF_CESPI, cespite);
|
||||
//const int codcat = cespi.get_int(CESPI_CODCAT);
|
||||
|
||||
TDate dtinies, dtfines;
|
||||
TEsercizi_contabili esc;
|
||||
esc.code2range(anno, dtinies, dtfines);
|
||||
|
||||
//controlli sulle date esercizio - cespite; il cespite potrebbe essere entrato in funzione..
|
||||
//..o essere stato alienato durante l'esercizio selezionato
|
||||
TDate dtfine = dtfines;
|
||||
const TDate dtalien = cespi.get_date(CESPI_DTALIEN);
|
||||
if (dtalien.ok() && (dtalien < dtfines))
|
||||
dtfine = dtalien;
|
||||
|
||||
TDate dtini = dtinies;
|
||||
const TDate dtfunz = cespi.get_date(CESPI_DTFUNZ);
|
||||
if (dtfunz.ok() && (dtfunz > dtinies))
|
||||
dtini = dtfunz;
|
||||
|
||||
//..a questo punto dtini e dtfine rappresentano il periodo di utilizzo del cespite
|
||||
//nell'esercizio selezionato
|
||||
//quindi il periodo di utilizzo del cespite nell'esercizio,in giorni,sara'...
|
||||
const long delta_cesp = dtfine - dtini + 1;
|
||||
//se il delta viene negativo il cespite è tutto nel passato o nel futuro, quindi la sua % di utilizzo..
|
||||
//..sarà ZERO!!! e il calcolo si chiuderà qui!
|
||||
if (delta_cesp <= 0)
|
||||
return ZERO;
|
||||
|
||||
//token_string con le coppie cespite/anno, per poter avere poi le varie % di utilizzo di tale cespite,
|
||||
//..in quell'anno, suddivise per cms/cdc/fase (stesso principio di funzionamento dei SALDANA)
|
||||
TToken_string key;
|
||||
key.add(cespite);
|
||||
key.add(anno);
|
||||
TRecord_array salcecms(key, LF_SALCECMS);
|
||||
|
||||
//ciclo su SALCECMS data una chiave cespite/anno (si fa solo se salcecms non e' vuoto,
|
||||
//e' inutile perdere tempo..) alla ricerca di tutte le righe con gli ammortamenti di..
|
||||
//..quel cespite in quell'anno sparsi su varie cdc/cms/fasi
|
||||
real perc;
|
||||
if (salcecms.rows() > 0)
|
||||
TString query;
|
||||
query << "USE SALCECMS";
|
||||
//se c'è almeno un filtro su cdc/cms/fase scatta la select analitica!
|
||||
if (cdc.full() || cms.full() || fase.full())
|
||||
{
|
||||
//
|
||||
for (int i = 1; i <= salcecms.last_row(); i++)
|
||||
{
|
||||
if (cms.full() && cms != salcecms[i].get(SALCECMS_CODCMS))
|
||||
continue;
|
||||
if (cdc.full() && cdc != salcecms[i].get(SALCECMS_CODCDC))
|
||||
continue;
|
||||
if (fase.full() && fase != salcecms[i].get(SALCECMS_CODFASE))
|
||||
continue;
|
||||
|
||||
perc += ceca_calc_perc_util_cesp(salcecms[i], dtini, dtfine);
|
||||
}
|
||||
query << "\nSELECT ";
|
||||
if (cdc.full())
|
||||
query << "(BETWEEN(SALCECMS.CODCDC,#CODCDC,#CODCDC))&&";
|
||||
if (cms.full())
|
||||
query << "(BETWEEN(SALCECMS.CODCMS,#CODCMS,#CODCMS))&&";
|
||||
if (fase.full())
|
||||
query << "(BETWEEN(SALCECMS.CODFASE,#CODFASE,#CODFASE))&&";
|
||||
query.rtrim(2);
|
||||
}
|
||||
return perc;
|
||||
}
|
||||
else //se non si è scelto alcun parametro analitico -> la percentuale è 100% comunque!
|
||||
return 1;
|
||||
|
||||
query << "\nFROM IDCESPITE=#IDCESPITE CODES=#CODES";
|
||||
query << "\nTO IDCESPITE=#IDCESPITE CODES=#CODES";
|
||||
|
||||
real ceca_calc_perc_util_cesp(const TRectype& salcecms_rec, const TDate& dtinices, const TDate& dtfineces)
|
||||
{
|
||||
//adeesso prende la percentuale di utilizzo del cespite nella commessa..
|
||||
real percutil = salcecms_rec.get_real(SALCECMS_PERCUTIL);
|
||||
//normalizza la percentuale...
|
||||
percutil = percutil / CENTO;
|
||||
TISAM_recordset recset(query);
|
||||
|
||||
//prende il codice commessa del record..
|
||||
TString80 codcms = salcecms_rec.get(SALCECMS_CODCMS);
|
||||
//..ed accede cosi' alla tabella delle commesse
|
||||
const TRectype& cms = cache().get(LF_COMMESSE, codcms);
|
||||
//prende le date di inizio e fine commessa dalla tabella per poterle confrontare con le date limite
|
||||
//del cespite nell'esercizio
|
||||
TDate dtfine = dtfineces;
|
||||
//se esiste una data di proroga (DATAPROR) -> la data fine commessa e' la data proroga,altrimenti e'
|
||||
//la normale data fine commessa (DATAFINE)
|
||||
TDate dtfinecms = cms.get_date(COMMESSE_DATAPROR);
|
||||
if (!dtfinecms.ok())
|
||||
dtfinecms = cms.get_date(COMMESSE_DATAFINE);
|
||||
if (dtfinecms.ok() && (dtfinecms < dtfineces))
|
||||
dtfine = dtfinecms;
|
||||
//in fase di settaggio variabili fa lo stesso ragionamento della select
|
||||
recset.set_var("#IDCESPITE", idcespite);
|
||||
recset.set_var("#CODES", long(anno));
|
||||
if (cdc.full())
|
||||
recset.set_var("#CODCDC", cdc);
|
||||
if (cms.full())
|
||||
recset.set_var("#CODCMS", cms);
|
||||
if (fase.full())
|
||||
recset.set_var("#CODFASE", fase);
|
||||
|
||||
TDate dtini = dtinices;
|
||||
const TDate dtinicms = cms.get_date(COMMESSE_DATAINIZIO);
|
||||
if ((dtinicms.ok()) && (dtinicms > dtinices))
|
||||
dtini = dtinicms;
|
||||
//intervallo giorni di utilizzo cespite nella commessa
|
||||
const real delta_cms = real(dtfine - dtini + 1) / real(dtfineces - dtinices + 1);
|
||||
const long items = recset.items();
|
||||
|
||||
//...e la porta in giorni rispetto al totale di utilizzo dei giorni del cespite nell'esercizio
|
||||
//(il 100% sono i giorni di utilizzo del cespite in tutte le commesse dell'esercizio)
|
||||
percutil *= delta_cms;
|
||||
real percutil = ZERO;
|
||||
for (bool ok = recset.move_first(); ok; ok = recset.move_next())
|
||||
{
|
||||
real perc = recset.get(SALCECMS_PERCUTIL).as_real();
|
||||
percutil += perc;
|
||||
}
|
||||
|
||||
percutil /= CENTO;
|
||||
return percutil;
|
||||
}
|
@ -9,6 +9,8 @@
|
||||
#include <automask.h>
|
||||
#endif
|
||||
|
||||
#include <recset.h>
|
||||
|
||||
class TDitta_cespiti
|
||||
{
|
||||
long _ditta;
|
||||
@ -74,10 +76,7 @@ bool null_fields(const TRectype& rec, const char* fld0, const char* fld1, const
|
||||
|
||||
//Metodi da usare nei cespiti per analitica
|
||||
//-------------------------------------------
|
||||
real ceca_perc_util(const TString& cespite, const int anno,
|
||||
const TString& cms, const TString& fase, const TString& cdc);
|
||||
|
||||
real ceca_calc_perc_util_cesp(const TRectype& salcecms_rec,
|
||||
const TDate& dtinices, const TDate& dtfineces);
|
||||
real ceca_percutil(const TString& idcespite, int anno,
|
||||
const TString& cdc, const TString& cms, const TString& fase);
|
||||
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user