1578 lines
76 KiB
PHP
1578 lines
76 KiB
PHP
<?php
|
|
/*----------------------------------------------------------------------------------| www.giz.de |----/
|
|
Deutsche Gesellschaft für International Zusammenarbeit (GIZ) Gmb
|
|
/-------------------------------------------------------------------------------------------------------/
|
|
|
|
@version 3.5.x
|
|
@build 27th May, 2022
|
|
@created 15th June, 2012
|
|
@package Cost Benefit Projection
|
|
@subpackage sum.php
|
|
@author Llewellyn van der Merwe <http://www.vdm.io>
|
|
@owner Deutsche Gesellschaft für International Zusammenarbeit (GIZ) Gmb
|
|
@copyright Copyright (C) 2015. All Rights Reserved
|
|
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
|
|
|
|
/-------------------------------------------------------------------------------------------------------/
|
|
Cost Benefit Projection Tool.
|
|
/------------------------------------------------------------------------------------------------------*/
|
|
|
|
// No direct access to this file
|
|
defined('_JEXEC') or die('Restricted access');
|
|
|
|
/**
|
|
* Calculation Class
|
|
**/
|
|
|
|
// uncomment for dev
|
|
error_reporting(0);
|
|
|
|
// make sure to include the negative finder file
|
|
include_once 'negativefinder.php';
|
|
|
|
class Sum
|
|
{
|
|
public $totals;
|
|
public $items;
|
|
public $interventions;
|
|
|
|
// set some basic defaults
|
|
protected $company;
|
|
protected $genders = array('male' => 'males','female' => 'females');
|
|
protected $ages = array('15-19','20-24','25-29','30-34','35-39','40-44','45-49','50-54','55-59','60-64');
|
|
|
|
public function __construct($data = null)
|
|
{
|
|
// set data to class
|
|
if ($data)
|
|
{
|
|
$this->company = $data;
|
|
// first set the user
|
|
if ($this->setCompany())
|
|
{
|
|
// do the calculation for days lost
|
|
if($this->setDaysLost())
|
|
{
|
|
// do the calculation for cost
|
|
if($this->setCost())
|
|
{
|
|
// do the calculation for interventions
|
|
if($this->setInterventions())
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public function setCompany()
|
|
{
|
|
if(CostbenefitprojectionHelper::checkObject($this->company))
|
|
{
|
|
// main switch
|
|
$usecountry = false;
|
|
// public switch
|
|
if (isset($this->company->public))
|
|
{
|
|
$usecountry = true;
|
|
$cKey = 'id';
|
|
}
|
|
else
|
|
{
|
|
$cKey = 'country';
|
|
}
|
|
// set array of json objects to convert to array
|
|
$jsonObjects = array('percentmale','percentfemale','country_percentmale','country_percentfemale','country_maledeath','country_femaledeath','country_maleyld','country_femaleyld');
|
|
$removeArray = array(
|
|
'asset_id','not_required','published','created_by','country_created_by','country_created','country_version','country_hits','country_ordering',
|
|
'modified_by','country_asset_id','created','modified','version','hits','ordering','country_published','country_modified_by','country_modified','country_maledeath','country_femaledeath','country_maleyld','country_femaleyld',
|
|
'idCompanyScaling_factorC',$cKey.'CountryHealth_dataB',$cKey.'CountryHealth_dataBB','causesrisksIdCauseriskG','causesrisksIdCauseriskGG','idCompanyInterventionD','countryCountryInterventionDD','idCountryInterventionDD');
|
|
foreach ($jsonObjects as $jsonObject)
|
|
{
|
|
if (isset($this->company->$jsonObject) && CostbenefitprojectionHelper::isJson($this->company->$jsonObject))
|
|
{
|
|
// convert to array
|
|
$array = json_decode($this->company->$jsonObject,true);
|
|
if (CostbenefitprojectionHelper::checkArray($array))
|
|
{
|
|
$this->company->$jsonObject = array();
|
|
foreach ($array as $option => $values)
|
|
{
|
|
if (CostbenefitprojectionHelper::checkArray($values))
|
|
{
|
|
foreach ($values as $nr => $value)
|
|
{
|
|
$this->company->{$jsonObject}[$nr][$option] = $value;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// if company has not causerisks selected fall back on country
|
|
if ($usecountry || (isset($this->company->causesrisks) && !CostbenefitprojectionHelper::checkArray($this->company->causesrisks)) || $this->company->department == 1)
|
|
{
|
|
$this->company->causesrisks = $this->company->country_causesrisks;
|
|
$this->company->medical_turnovers_males = $this->company->males * ($this->company->country_medical_turnovers/100000);
|
|
$this->company->medical_turnovers_females = $this->company->females * ($this->company->country_medical_turnovers/100000);
|
|
$this->company->sick_leave_males = $this->company->males * $this->company->country_sick_leave;
|
|
$this->company->sick_leave_females = $this->company->females * $this->company->country_sick_leave;
|
|
$this->company->datayear = $this->company->country_datayear;
|
|
$this->company->total_healthcare = ($this->company->country_healthcare/100) * $this->company->total_salary;
|
|
$this->company->working_days = $this->company->country_working_days;
|
|
$this->company->productivity_losses = $this->company->country_productivity_losses;
|
|
|
|
$usecountry = true;
|
|
}
|
|
// percent sorting
|
|
$percentSort = array('percentmale','percentfemale','country_percentmale','country_percentfemale');
|
|
foreach ($percentSort as $sort)
|
|
{
|
|
$point = $sort;
|
|
if (isset($this->company->$sort) && !CostbenefitprojectionHelper::checkArray($this->company->$sort) && strpos($sort, 'country') === false)
|
|
{
|
|
$sort = 'country_'.$sort;
|
|
}
|
|
if (isset($this->company->$sort) && CostbenefitprojectionHelper::checkArray($this->company->$sort))
|
|
{
|
|
$bucket = array();
|
|
foreach ($this->company->$sort as $value)
|
|
{
|
|
$bucket[$value['age']] = (int) $value['percent'];
|
|
}
|
|
$this->company->$point = $bucket;
|
|
}
|
|
}
|
|
// country totals sorting
|
|
$countrySort = array(
|
|
'country_maledeath' => array('gender' => 'male', 'type' => 'death'),
|
|
'country_femaledeath' => array('gender' => 'female', 'type' => 'death'),
|
|
'country_maleyld' => array('gender' => 'male', 'type' => 'yld'),
|
|
'country_femaleyld' => array('gender' => 'female', 'type' => 'yld'));
|
|
$this->company->country_yld = 0;
|
|
$this->company->country_death = 0;
|
|
foreach ($countrySort as $sort => $tar)
|
|
{
|
|
if (isset($this->company->$sort) && CostbenefitprojectionHelper::checkArray($this->company->$sort))
|
|
{
|
|
foreach ($this->company->$sort as $value)
|
|
{
|
|
if ($this->company->datayear == $value['year'])
|
|
{
|
|
$this->company->{'country_'.$tar['type']} += $value['number'];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// country health totals sorting
|
|
$specialSort = array('maledeath','maleyld','femaledeath','femaleyld');
|
|
$keepData = array();
|
|
if (isset($this->company->{$cKey.'CountryHealth_dataB'}) && CostbenefitprojectionHelper::checkArray($this->company->{$cKey.'CountryHealth_dataB'}) && !$usecountry)
|
|
{
|
|
$healthBucket = array();
|
|
foreach ($this->company->{$cKey.'CountryHealth_dataB'} as $healthData)
|
|
{
|
|
$healthBucket[$healthData->causerisk] = new stdClass();
|
|
foreach ($specialSort as $sort)
|
|
{
|
|
if (isset($healthData->$sort) && CostbenefitprojectionHelper::isJson($healthData->$sort))
|
|
{
|
|
// convert to array
|
|
$array = json_decode($healthData->$sort,true);
|
|
if (CostbenefitprojectionHelper::checkArray($array))
|
|
{
|
|
foreach ($array as $option => $values)
|
|
{
|
|
if (CostbenefitprojectionHelper::checkArray($values))
|
|
{
|
|
foreach ($values as $nr => $value)
|
|
{
|
|
$healthBucket[$healthData->causerisk]->{$sort}[$nr][$option] = $value;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// number sorting
|
|
foreach ($specialSort as $sort)
|
|
{
|
|
if (isset($healthBucket[$healthData->causerisk]->$sort) && CostbenefitprojectionHelper::checkArray($healthBucket[$healthData->causerisk]->$sort))
|
|
{
|
|
$bucket = array();
|
|
foreach ($healthBucket[$healthData->causerisk]->$sort as $value)
|
|
{
|
|
if (CostbenefitprojectionHelper::checkArray($value))
|
|
{
|
|
$buket[$value['age']] = $value['number'];
|
|
}
|
|
}
|
|
$healthBucket[$healthData->causerisk]->$sort = $buket;
|
|
}
|
|
}
|
|
// check if we should keep any other data
|
|
if (CostbenefitprojectionHelper::checkArray($keepData))
|
|
{
|
|
// set data to keep
|
|
foreach ($keepData as $keep)
|
|
{
|
|
$healthBucket[$healthData->causerisk]->$keep = $healthData->$keep;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
elseif (isset($this->company->{$cKey.'CountryHealth_dataBB'}) && CostbenefitprojectionHelper::checkArray($this->company->{$cKey.'CountryHealth_dataBB'}) && $usecountry)
|
|
{
|
|
$healthBucket = array();
|
|
foreach ($this->company->{$cKey.'CountryHealth_dataBB'} as $healthData)
|
|
{
|
|
$healthBucket[$healthData->causerisk] = new stdClass();
|
|
foreach ($specialSort as $sort)
|
|
{
|
|
if (isset($healthData->$sort) && CostbenefitprojectionHelper::isJson($healthData->$sort))
|
|
{
|
|
// convert to array
|
|
$array = json_decode($healthData->$sort,true);
|
|
if (CostbenefitprojectionHelper::checkArray($array))
|
|
{
|
|
foreach ($array as $option => $values)
|
|
{
|
|
if (CostbenefitprojectionHelper::checkArray($values))
|
|
{
|
|
foreach ($values as $nr => $value)
|
|
{
|
|
$healthBucket[$healthData->causerisk]->{$sort}[$nr][$option] = $value;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// number sorting
|
|
foreach ($specialSort as $sort)
|
|
{
|
|
if (isset($healthBucket[$healthData->causerisk]->$sort) && CostbenefitprojectionHelper::checkArray($healthBucket[$healthData->causerisk]->$sort))
|
|
{
|
|
$bucket = array();
|
|
foreach ($healthBucket[$healthData->causerisk]->$sort as $value)
|
|
{
|
|
if (CostbenefitprojectionHelper::checkArray($value))
|
|
{
|
|
$buket[$value['age']] = $value['number'];
|
|
}
|
|
}
|
|
$healthBucket[$healthData->causerisk]->$sort = $buket;
|
|
}
|
|
}
|
|
// check if we should keep any other data
|
|
if (CostbenefitprojectionHelper::checkArray($keepData))
|
|
{
|
|
// set data to keep
|
|
foreach ($keepData as $keep)
|
|
{
|
|
$healthBucket[$healthData->causerisk]->$keep = $healthData->$keep;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// set health data
|
|
$this->company->healthData = $healthBucket;
|
|
unset($healthBucket);
|
|
// set company scaling
|
|
$keepData = array(
|
|
'yld_scaling_factor_males',
|
|
'yld_scaling_factor_females',
|
|
'mortality_scaling_factor_males',
|
|
'mortality_scaling_factor_females',
|
|
'presenteeism_scaling_factor_males',
|
|
'presenteeism_scaling_factor_females',
|
|
'health_scaling_factor'
|
|
);
|
|
$scalingBucket = array();
|
|
if (isset($this->company->idCompanyScaling_factorC) && CostbenefitprojectionHelper::checkArray($this->company->idCompanyScaling_factorC))
|
|
{
|
|
// use the compony set values
|
|
foreach ($this->company->idCompanyScaling_factorC as $scalingFactor)
|
|
{
|
|
$scalingBucket[$scalingFactor->causerisk] = new stdClass();
|
|
foreach ($keepData as $keep)
|
|
{
|
|
$scalingBucket[$scalingFactor->causerisk]->$keep = $scalingFactor->$keep;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// set defaults
|
|
foreach ($this->company->causesrisks as $scalingFactor)
|
|
{
|
|
$scalingBucket[$scalingFactor] = new stdClass();
|
|
foreach ($keepData as $keep)
|
|
{
|
|
$scalingBucket[$scalingFactor]->$keep = 1;
|
|
}
|
|
}
|
|
}
|
|
// set scaling factors
|
|
$this->company->scalingFactors = $scalingBucket;
|
|
unset($scalingBucket);
|
|
// set Cause/Risk Details
|
|
$keepData = array(
|
|
'id',
|
|
'ref',
|
|
'name',
|
|
'alias',
|
|
'category',
|
|
'description'
|
|
);
|
|
if (isset($this->company->causesrisksIdCauseriskG) && CostbenefitprojectionHelper::checkArray($this->company->causesrisksIdCauseriskG) && !$usecountry)
|
|
{
|
|
foreach ($this->company->causesrisksIdCauseriskG as $causesrisks)
|
|
{
|
|
$this->items[$causesrisks->id] = new stdClass();
|
|
$this->items[$causesrisks->id]->details = new stdClass();
|
|
foreach ($keepData as $keep)
|
|
{
|
|
$this->items[$causesrisks->id]->details->$keep = $causesrisks->$keep;
|
|
}
|
|
}
|
|
}
|
|
elseif (isset($this->company->causesrisksIdCauseriskGG) && CostbenefitprojectionHelper::checkArray($this->company->causesrisksIdCauseriskGG) && $usecountry)
|
|
{
|
|
foreach ($this->company->causesrisksIdCauseriskGG as $causesrisks)
|
|
{
|
|
$this->items[$causesrisks->id] = new stdClass();
|
|
$this->items[$causesrisks->id]->details = new stdClass();
|
|
foreach ($keepData as $keep)
|
|
{
|
|
$this->items[$causesrisks->id]->details->$keep = $causesrisks->$keep;
|
|
}
|
|
}
|
|
}
|
|
// set company insterventions
|
|
$keepData = array(
|
|
'id',
|
|
'name',
|
|
'coverage',
|
|
'duration',
|
|
'description',
|
|
'reference',
|
|
'share',
|
|
'type'
|
|
);
|
|
$insterventionBucket = array();
|
|
if (isset($this->company->idCompanyInterventionD) && CostbenefitprojectionHelper::checkArray($this->company->idCompanyInterventionD))
|
|
{
|
|
foreach ($this->company->idCompanyInterventionD as $key => $intervention)
|
|
{
|
|
$insterventionBucket[$key] = new stdClass();
|
|
foreach ($keepData as $keep)
|
|
{
|
|
$insterventionBucket[$key]->$keep = $intervention->$keep;
|
|
}
|
|
// load the most important part, the actual intervention data
|
|
$array = json_decode($intervention->intervention,true);
|
|
if (CostbenefitprojectionHelper::checkArray($array))
|
|
{
|
|
$insterventionBucket[$key]->data = array();
|
|
foreach ($array as $option => $values)
|
|
{
|
|
if (CostbenefitprojectionHelper::checkArray($values))
|
|
{
|
|
foreach ($values as $nr => $value)
|
|
{
|
|
if ('causerisk' == $option)
|
|
{
|
|
$insterventionBucket[$key]->data[$nr]['id'] = $value;
|
|
$insterventionBucket[$key]->data[$nr]['allias'] = CostbenefitprojectionHelper::getVar('causerisk', $value, 'id', 'alias');
|
|
}
|
|
else
|
|
{
|
|
// set values
|
|
$insterventionBucket[$key]->data[$nr][$option] = $value;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
elseif ($usecountry || (isset($this->company->{$cKey.'CountryInterventionDD'}) && CostbenefitprojectionHelper::checkArray($this->company->{$cKey.'CountryInterventionDD'})))
|
|
{
|
|
foreach ($this->company->{$cKey.'CountryInterventionDD'} as $key => $intervention)
|
|
{
|
|
$insterventionBucket[$key] = new stdClass();
|
|
foreach ($keepData as $keep)
|
|
{
|
|
$insterventionBucket[$key]->$keep = $intervention->$keep;
|
|
}
|
|
// load the most important part, the actual intervention data
|
|
$array = json_decode($intervention->intervention,true);
|
|
if (CostbenefitprojectionHelper::checkArray($array))
|
|
{
|
|
$insterventionBucket[$key]->data = array();
|
|
foreach ($array as $option => $values)
|
|
{
|
|
if (CostbenefitprojectionHelper::checkArray($values))
|
|
{
|
|
foreach ($values as $nr => $value)
|
|
{
|
|
if ('causerisk' == $option)
|
|
{
|
|
$insterventionBucket[$key]->data[$nr]['id'] = $value;
|
|
$insterventionBucket[$key]->data[$nr]['allias'] = CostbenefitprojectionHelper::getVar('causerisk', $value, 'id', 'alias');
|
|
}
|
|
else
|
|
{
|
|
// set values
|
|
$insterventionBucket[$key]->data[$nr][$option] = $value;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// set intervention to company data
|
|
$this->company->interventions = $insterventionBucket;
|
|
unset($insterventionBucket);
|
|
// remove undeeded values
|
|
if (CostbenefitprojectionHelper::checkArray($removeArray))
|
|
{
|
|
foreach ($removeArray as $remove)
|
|
{
|
|
// remove value if set
|
|
if (isset($this->company->$remove))
|
|
{
|
|
unset($this->company->$remove);
|
|
}
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Do calculation for days lost.
|
|
*
|
|
* @return array
|
|
*
|
|
*/
|
|
protected function setDaysLost()
|
|
{
|
|
if(CostbenefitprojectionHelper::checkArray($this->company->causesrisks))
|
|
{
|
|
// set global totals morbidity
|
|
$this->totals['total_morbidity_raw'] = 0;
|
|
$this->totals['total_morbidity_interim'] = 0;
|
|
$this->totals['total_morbidity_scaled'] = 0;
|
|
$this->totals['total_morbidity_unscaled'] = 0;
|
|
// set global totals mortality
|
|
$this->totals['total_mortality_raw'] = 0;
|
|
$this->totals['total_mortality_interim'] = 0;
|
|
$this->totals['total_mortality_scaled'] = 0;
|
|
$this->totals['total_mortality_unscaled'] = 0;
|
|
// set global totals presenteesim
|
|
$this->totals['total_presenteeism_scaled'] = 0;
|
|
$this->totals['total_presenteeism_unscaled'] = 0;
|
|
// set global totals day_lost_mortality
|
|
$this->totals['total_days_lost_mortality_scaled'] = 0;
|
|
$this->totals['total_days_lost_mortality_unscaled'] = 0;
|
|
// set global totals day_lost
|
|
$this->totals['total_days_lost_scaled'] = 0;
|
|
$this->totals['total_days_lost_unscaled'] = 0;
|
|
// set global totals estimated_burden
|
|
$this->totals['total_estimated_burden'] = 0;
|
|
// work with each gender
|
|
foreach($this->genders as $gender => $genders)
|
|
{
|
|
// gender totals morbidity raw
|
|
$this->totals[$genders.'_morbidity_raw'] = 0;
|
|
$this->totals[$genders.'_mortality_raw'] = 0;
|
|
$this->totals[$genders.'_morbidity_interim'] = 0;
|
|
$this->totals[$genders.'_mortality_interim'] = 0;
|
|
// gender totals morbidity
|
|
$this->totals[$genders.'_morbidity_scaled'] = 0;
|
|
$this->totals[$genders.'_morbidity_unscaled'] = 0;
|
|
// gender totals mortality
|
|
$this->totals[$genders.'_mortality_scaled'] = 0;
|
|
$this->totals[$genders.'_mortality_unscaled'] = 0;
|
|
// gender totals presenteeism
|
|
$this->totals[$genders.'_presenteeism_scaled'] = 0;
|
|
$this->totals[$genders.'_presenteeism_unscaled'] = 0;
|
|
// gender totals day_lost_mortality
|
|
$this->totals[$genders.'_days_lost_mortality_scaled'] = 0;
|
|
$this->totals[$genders.'_days_lost_mortality_unscaled'] = 0;
|
|
// gender totals day_lost
|
|
$this->totals[$genders.'_days_lost_scaled'] = 0;
|
|
$this->totals[$genders.'_days_lost_unscaled'] = 0;
|
|
}
|
|
|
|
///////////////////////////////////////////////////////
|
|
// ------ set morbidity for each cause/risk ------ //
|
|
///////////////////////////////////////////////////////
|
|
|
|
// set morbidity_raw
|
|
foreach($this->company->causesrisks as $id)
|
|
{
|
|
// work with each gender
|
|
foreach($this->genders as $gender => $genders)
|
|
{
|
|
$this->items[$id]->$gender = new stdClass();
|
|
// work with each age group
|
|
foreach($this->ages as $age)
|
|
{
|
|
if (isset($this->company->{'percent'.$gender}[$age]))
|
|
{
|
|
// set each gender and age group
|
|
$this->items[$id]->$gender->$age = new stdClass();
|
|
// continue only if we have a value
|
|
$goodToGo = true;
|
|
// fix missing values
|
|
if(!isset($this->company->healthData[$id]->{$gender.'yld'}[$age]))
|
|
{
|
|
$this->company->healthData[$id]->{$gender.'yld'}[$age] = 0;
|
|
$goodToGo = false;
|
|
}
|
|
// set the YLD
|
|
$this->items[$id]->$gender->$age->yld = $this->company->healthData[$id]->{$gender.'yld'}[$age];
|
|
if ($goodToGo)
|
|
{
|
|
// set the estimated_burden of this age group & gender & cause
|
|
$this->items[$id]->$gender->$age->estimated_burden = ($this->items[$id]->$gender->$age->yld / $this->company->country_yld)*100;
|
|
if (!isset($this->items[$id]->subtotal_estimated_burden))
|
|
{
|
|
$this->items[$id]->subtotal_estimated_burden = $this->items[$id]->$gender->$age->estimated_burden;
|
|
}
|
|
else
|
|
{
|
|
$this->items[$id]->subtotal_estimated_burden += $this->items[$id]->$gender->$age->estimated_burden;
|
|
}
|
|
// set the totals for estimated_burden
|
|
$this->totals['total_estimated_burden'] = $this->totals['total_estimated_burden'] + $this->items[$id]->$gender->$age->estimated_burden;
|
|
}
|
|
else
|
|
{
|
|
$this->items[$id]->subtotal_estimated_burden = 0;
|
|
}
|
|
// set the morbidity raw
|
|
$this->items[$id]->$gender->$age->morbidity_raw = ( $this->company->healthData[$id]->{$gender.'yld'}[$age]/100000 )
|
|
* $this->company->$genders * ($this->company->{'percent'.$gender}[$age]/100);
|
|
// set total for morbidity_raw
|
|
$this->totals['total_morbidity_raw'] = $this->totals['total_morbidity_raw'] + $this->items[$id]->$gender->$age->morbidity_raw;
|
|
$this->totals[$genders.'_morbidity_raw'] = $this->totals[$genders.'_morbidity_raw'] + $this->items[$id]->$gender->$age->morbidity_raw;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// check estimated burden
|
|
if (100 < $this->totals['total_estimated_burden'])
|
|
{
|
|
foreach ($this->items as $item)
|
|
{
|
|
if (isset($item->subtotal_estimated_burden) && 0 != $item->subtotal_estimated_burden)
|
|
{
|
|
// adjust the subtotal to 100 %
|
|
$item->subtotal_estimated_burden = ($item->subtotal_estimated_burden * 100) / $this->totals['total_estimated_burden'];
|
|
}
|
|
}
|
|
// bring down the estimate to 100 %
|
|
$this->totals['total_estimated_burden'] = 100;
|
|
}
|
|
// set morbidity_unscaled & morbidity_interim
|
|
foreach($this->company->causesrisks as $id)
|
|
{
|
|
// work with each gender
|
|
foreach($this->genders as $gender => $genders)
|
|
{
|
|
// work with each age group
|
|
foreach($this->ages as $age)
|
|
{
|
|
if (isset($this->company->{'percent'.$gender}[$age]))
|
|
{
|
|
// set each gender and age group morbidity_unscaled
|
|
$this->items[$id]->$gender->$age->morbidity_unscaled = $this->items[$id]->$gender->$age->morbidity_raw
|
|
* $this->company->{'sick_leave_'.$genders} / $this->totals[$genders.'_morbidity_raw'];
|
|
// set total each cause/risk morbidity_unscaled
|
|
if (!isset($this->items[$id]->subtotal_morbidity_unscaled))
|
|
{
|
|
$this->items[$id]->subtotal_morbidity_unscaled = $this->items[$id]->$gender->$age->morbidity_unscaled;
|
|
}
|
|
else
|
|
{
|
|
$this->items[$id]->subtotal_morbidity_unscaled += $this->items[$id]->$gender->$age->morbidity_unscaled;
|
|
}
|
|
// set total each cause/risk per gender morbidity_unscaled
|
|
if (!isset($this->items[$id]->{$gender.'_morbidity_unscaled'}))
|
|
{
|
|
$this->items[$id]->{$gender.'_morbidity_unscaled'} = $this->items[$id]->$gender->$age->morbidity_unscaled;
|
|
}
|
|
else
|
|
{
|
|
$this->items[$id]->{$gender.'_morbidity_unscaled'} += $this->items[$id]->$gender->$age->morbidity_unscaled;
|
|
}
|
|
|
|
// set total for morbidity_unscaled per gender
|
|
$this->totals[$genders.'_morbidity_unscaled'] = $this->totals[$genders.'_morbidity_unscaled'] + $this->items[$id]->$gender->$age->morbidity_unscaled;
|
|
// set total for morbidity_unscaled
|
|
$this->totals['total_morbidity_unscaled'] = $this->totals['total_morbidity_unscaled'] + $this->items[$id]->$gender->$age->morbidity_unscaled;
|
|
// set the basic department
|
|
if($this->company->department == 2)
|
|
{
|
|
// set each gender and age group
|
|
$this->items[$id]->$gender->$age->morbidity_interim = $this->items[$id]->$gender->$age->morbidity_unscaled * $this->company->scalingFactors[$id]->{'yld_scaling_factor_'.$genders};
|
|
}
|
|
else
|
|
{
|
|
// set each gender and age group
|
|
$this->items[$id]->$gender->$age->morbidity_interim = $this->items[$id]->$gender->$age->morbidity_unscaled * 1;
|
|
}
|
|
// set total for morbidity_interim
|
|
$this->totals['total_morbidity_interim'] = $this->totals['total_morbidity_interim'] + $this->items[$id]->$gender->$age->morbidity_interim;
|
|
$this->totals[$genders.'_morbidity_interim'] = $this->totals[$genders.'_morbidity_interim'] + $this->items[$id]->$gender->$age->morbidity_interim;
|
|
// set the basic department
|
|
if($this->company->department == 2)
|
|
{
|
|
// set each gender and age group
|
|
$this->items[$id]->$gender->$age->presenteeism_unscaled = $this->items[$id]->$gender->$age->morbidity_unscaled
|
|
* $this->company->country_presenteeism;
|
|
}
|
|
else
|
|
{
|
|
// set each gender and age group
|
|
$this->items[$id]->$gender->$age->presenteeism_unscaled = $this->items[$id]->$gender->$age->morbidity_unscaled
|
|
* $this->company->country_presenteeism * 1;
|
|
}
|
|
// set total each cause/risk presenteeism_unscaled
|
|
if (!isset($this->items[$id]->subtotal_presenteeism_unscaled))
|
|
{
|
|
$this->items[$id]->subtotal_presenteeism_unscaled = $this->items[$id]->$gender->$age->presenteeism_unscaled;
|
|
}
|
|
else
|
|
{
|
|
$this->items[$id]->subtotal_presenteeism_unscaled += $this->items[$id]->$gender->$age->presenteeism_unscaled;
|
|
}
|
|
// set total each cause/risk per gender morbidity_unscaled
|
|
if (!isset($this->items[$id]->{$gender.'_presenteeism_unscaled'}))
|
|
{
|
|
$this->items[$id]->{$gender.'_presenteeism_unscaled'} = $this->items[$id]->$gender->$age->presenteeism_unscaled;
|
|
}
|
|
else
|
|
{
|
|
$this->items[$id]->{$gender.'_presenteeism_unscaled'} += $this->items[$id]->$gender->$age->presenteeism_unscaled;
|
|
}
|
|
|
|
// set total for presenteeism_unscaled per gender
|
|
$this->totals[$genders.'_presenteeism_unscaled'] = $this->totals[$genders.'_presenteeism_unscaled'] + $this->items[$id]->$gender->$age->presenteeism_unscaled;
|
|
// set total for presenteeism_unscaled
|
|
$this->totals['total_presenteeism_unscaled'] = $this->totals['total_presenteeism_unscaled'] + $this->items[$id]->$gender->$age->presenteeism_unscaled;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// set morbidity_scaled
|
|
foreach($this->company->causesrisks as $id)
|
|
{
|
|
// work with each gender
|
|
foreach($this->genders as $gender => $genders)
|
|
{
|
|
// work with each age group
|
|
foreach($this->ages as $age)
|
|
{
|
|
if (isset($this->company->{'percent'.$gender}[$age]))
|
|
{
|
|
// set each gender and age group
|
|
$this->items[$id]->$gender->$age->morbidity_scaled = $this->items[$id]->$gender->$age->morbidity_interim
|
|
* $this->company->{'sick_leave_'.$genders} / $this->totals[$genders.'_morbidity_interim'];
|
|
// set total each cause/risk
|
|
if (!isset($this->items[$id]->subtotal_morbidity_scaled))
|
|
{
|
|
$this->items[$id]->subtotal_morbidity_scaled = $this->items[$id]->$gender->$age->morbidity_scaled;
|
|
}
|
|
else
|
|
{
|
|
$this->items[$id]->subtotal_morbidity_scaled += $this->items[$id]->$gender->$age->morbidity_scaled;
|
|
}
|
|
// set total each cause/risk per gender
|
|
if (!isset($this->items[$id]->{$gender.'_morbidity_scaled'}))
|
|
{
|
|
$this->items[$id]->{$gender.'_morbidity_scaled'} = $this->items[$id]->$gender->$age->morbidity_scaled;
|
|
}
|
|
else
|
|
{
|
|
$this->items[$id]->{$gender.'_morbidity_scaled'} += $this->items[$id]->$gender->$age->morbidity_scaled;
|
|
}
|
|
// set total for morbidity_scaled per gender
|
|
$this->totals[$genders.'_morbidity_scaled'] = $this->totals[$genders.'_morbidity_scaled'] + $this->items[$id]->$gender->$age->morbidity_scaled;
|
|
// set total for morbidity_scaled
|
|
$this->totals['total_morbidity_scaled'] = $this->totals['total_morbidity_scaled'] + $this->items[$id]->$gender->$age->morbidity_scaled;
|
|
// set the basic department
|
|
if($this->company->department == 2)
|
|
{
|
|
// set each gender and age group
|
|
$this->items[$id]->$gender->$age->presenteeism_scaled = $this->items[$id]->$gender->$age->morbidity_scaled
|
|
* $this->company->country_presenteeism * $this->company->scalingFactors[$id]->{'presenteeism_scaling_factor_'.$genders};
|
|
}
|
|
else
|
|
{
|
|
// set each gender and age group
|
|
$this->items[$id]->$gender->$age->presenteeism_scaled = $this->items[$id]->$gender->$age->morbidity_scaled
|
|
* $this->company->country_presenteeism * 1;
|
|
}
|
|
// set total each cause/risk presenteeism_scaled
|
|
if (!isset($this->items[$id]->subtotal_presenteeism_scaled))
|
|
{
|
|
$this->items[$id]->subtotal_presenteeism_scaled = $this->items[$id]->$gender->$age->presenteeism_scaled;
|
|
}
|
|
else
|
|
{
|
|
$this->items[$id]->subtotal_presenteeism_scaled += $this->items[$id]->$gender->$age->presenteeism_scaled;
|
|
}
|
|
// set total each cause/risk per gender morbidity_scaled
|
|
if (!isset($this->items[$id]->{$gender.'_presenteeism_scaled'}))
|
|
{
|
|
$this->items[$id]->{$gender.'_presenteeism_scaled'} = $this->items[$id]->$gender->$age->presenteeism_scaled;
|
|
}
|
|
else
|
|
{
|
|
$this->items[$id]->{$gender.'_presenteeism_scaled'} += $this->items[$id]->$gender->$age->presenteeism_scaled;
|
|
}
|
|
// set total for presenteeism_scaled per gender
|
|
$this->totals[$genders.'_presenteeism_scaled'] = $this->totals[$genders.'_presenteeism_scaled'] + $this->items[$id]->$gender->$age->presenteeism_scaled;
|
|
// set total for presenteeism_scaled
|
|
$this->totals['total_presenteeism_scaled'] = $this->totals['total_presenteeism_scaled'] + $this->items[$id]->$gender->$age->presenteeism_scaled;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
///////////////////////////////////////////////////////
|
|
// ------ set mortality for each cause/risk ------ //
|
|
///////////////////////////////////////////////////////
|
|
|
|
// set mortality_raw
|
|
foreach($this->company->causesrisks as $id)
|
|
{
|
|
// work with each gender
|
|
foreach($this->genders as $gender => $genders)
|
|
{
|
|
// work with each age group
|
|
foreach($this->ages as $age)
|
|
{
|
|
if (isset($this->company->{'percent'.$gender}[$age]))
|
|
{
|
|
// set each gender and age group
|
|
// fix missing values
|
|
if(!isset($this->company->healthData[$id]->{$gender.'death'}[$age]))
|
|
{
|
|
$this->company->healthData[$id]->{$gender.'death'}[$age] = 0;
|
|
}
|
|
$this->items[$id]->$gender->$age->death = $this->company->healthData[$id]->{$gender.'death'}[$age];
|
|
$this->items[$id]->$gender->$age->mortality_raw = ( $this->company->healthData[$id]->{$gender.'death'}[$age]/100000 )
|
|
* $this->company->$genders * ($this->company->{'percent'.$gender}[$age]/100);
|
|
// set total for mortality_raw
|
|
$this->totals['total_mortality_raw'] = $this->totals['total_mortality_raw'] + $this->items[$id]->$gender->$age->mortality_raw;
|
|
$this->totals[$genders.'_mortality_raw'] = $this->totals[$genders.'_mortality_raw'] + $this->items[$id]->$gender->$age->mortality_raw;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// set mortality_unscaled & mortality_interim
|
|
foreach($this->company->causesrisks as $id)
|
|
{
|
|
// work with each gender
|
|
foreach($this->genders as $gender => $genders)
|
|
{
|
|
// work with each age group
|
|
foreach($this->ages as $age)
|
|
{
|
|
if (isset($this->company->{'percent'.$gender}[$age]))
|
|
{
|
|
// set each gender and age group
|
|
$this->items[$id]->$gender->$age->mortality_unscaled = $this->items[$id]->$gender->$age->mortality_raw
|
|
* $this->company->{'medical_turnovers_'.$genders} / $this->totals[$genders.'_mortality_raw'];
|
|
// set total each cause/risk
|
|
if(!isset($this->items[$id]->subtotal_mortality_unscaled))
|
|
{
|
|
$this->items[$id]->subtotal_mortality_unscaled = $this->items[$id]->$gender->$age->mortality_unscaled;
|
|
}
|
|
else
|
|
{
|
|
$this->items[$id]->subtotal_mortality_unscaled += $this->items[$id]->$gender->$age->mortality_unscaled;
|
|
}
|
|
// set total each cause/risk per gender
|
|
if(!isset($this->items[$id]->{$gender.'_mortality_unscaled'}))
|
|
{
|
|
$this->items[$id]->{$gender.'_mortality_unscaled'} = $this->items[$id]->$gender->$age->mortality_unscaled;
|
|
}
|
|
else
|
|
{
|
|
$this->items[$id]->{$gender.'_mortality_unscaled'} += $this->items[$id]->$gender->$age->mortality_unscaled;
|
|
}
|
|
// set total for mortality_unscaled per gender
|
|
$this->totals[$genders.'_mortality_unscaled'] = $this->totals[$genders.'_mortality_unscaled'] + $this->items[$id]->$gender->$age->mortality_unscaled;
|
|
// set total for mortality_unscaled
|
|
$this->totals['total_mortality_unscaled'] = $this->totals['total_mortality_unscaled'] + $this->items[$id]->$gender->$age->mortality_unscaled;
|
|
// set the basic department
|
|
if($this->company->department == 2)
|
|
{
|
|
// set each gender and age group
|
|
$this->items[$id]->$gender->$age->mortality_interim = $this->items[$id]->$gender->$age->mortality_unscaled * $this->company->scalingFactors[$id]->{'mortality_scaling_factor_'.$genders};
|
|
}
|
|
else
|
|
{
|
|
// set each gender and age group
|
|
$this->items[$id]->$gender->$age->mortality_interim = $this->items[$id]->$gender->$age->mortality_unscaled * 1;
|
|
}
|
|
// set total for mortality_interim
|
|
$this->totals['total_mortality_interim'] = $this->totals['total_mortality_interim'] + $this->items[$id]->$gender->$age->mortality_interim;
|
|
$this->totals[$genders.'_mortality_interim'] = $this->totals[$genders.'_mortality_interim'] + $this->items[$id]->$gender->$age->mortality_interim;
|
|
|
|
// set each gender and age group days_lost_mortality_unscaled
|
|
$this->items[$id]->$gender->$age->days_lost_mortality_unscaled = $this->items[$id]->$gender->$age->mortality_unscaled
|
|
* $this->company->working_days * $this->company->productivity_losses;
|
|
// set total each cause/risk days_lost_mortality_unscaled
|
|
if(!isset($this->items[$id]->subtotal_days_lost_mortality_unscaled))
|
|
{
|
|
$this->items[$id]->subtotal_days_lost_mortality_unscaled = $this->items[$id]->$gender->$age->days_lost_mortality_unscaled;
|
|
}
|
|
else
|
|
{
|
|
$this->items[$id]->subtotal_days_lost_mortality_unscaled += $this->items[$id]->$gender->$age->days_lost_mortality_unscaled;
|
|
}
|
|
// set total each cause/risk per gender days_lost_mortality_unscaled
|
|
if(!isset($this->items[$id]->{$gender.'_days_lost_mortality_unscaled'}))
|
|
{
|
|
$this->items[$id]->{$gender.'_days_lost_mortality_unscaled'} = $this->items[$id]->$gender->$age->days_lost_mortality_unscaled;
|
|
}
|
|
else
|
|
{
|
|
$this->items[$id]->{$gender.'_days_lost_mortality_unscaled'} += $this->items[$id]->$gender->$age->days_lost_mortality_unscaled;
|
|
}
|
|
// set total for days_lost_mortality_unscaled per gender
|
|
$this->totals[$genders.'_days_lost_mortality_unscaled'] = $this->totals[$genders.'_days_lost_mortality_unscaled'] + $this->items[$id]->$gender->$age->days_lost_mortality_unscaled;
|
|
// set total for days_lost_mortality_unscaled
|
|
$this->totals['total_days_lost_mortality_unscaled'] = $this->totals['total_days_lost_mortality_unscaled'] + $this->items[$id]->$gender->$age->days_lost_mortality_unscaled;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// set mortality_scaled
|
|
foreach($this->company->causesrisks as $id)
|
|
{
|
|
// work with each gender
|
|
foreach($this->genders as $gender => $genders)
|
|
{
|
|
// work with each age group
|
|
foreach($this->ages as $age)
|
|
{
|
|
if (isset($this->company->{'percent'.$gender}[$age]))
|
|
{
|
|
// set each gender and age group
|
|
$this->items[$id]->$gender->$age->mortality_scaled = $this->items[$id]->$gender->$age->mortality_interim
|
|
* $this->company->{'medical_turnovers_'.$genders} / $this->totals[$genders.'_mortality_interim'];
|
|
// set total each cause/risk
|
|
if(!isset($this->items[$id]->subtotal_mortality_scaled))
|
|
{
|
|
$this->items[$id]->subtotal_mortality_scaled = $this->items[$id]->$gender->$age->mortality_scaled;
|
|
}
|
|
else
|
|
{
|
|
$this->items[$id]->subtotal_mortality_scaled += $this->items[$id]->$gender->$age->mortality_scaled;
|
|
}
|
|
// set total each cause/risk per gender
|
|
if(!isset($this->items[$id]->{$gender.'_mortality_scaled'}))
|
|
{
|
|
$this->items[$id]->{$gender.'_mortality_scaled'} = $this->items[$id]->$gender->$age->mortality_scaled;
|
|
}
|
|
else
|
|
{
|
|
$this->items[$id]->{$gender.'_mortality_scaled'} += $this->items[$id]->$gender->$age->mortality_scaled;
|
|
}
|
|
// set total for mortality_scaled per gender
|
|
$this->totals[$genders.'_mortality_scaled'] = $this->totals[$genders.'_mortality_scaled'] + $this->items[$id]->$gender->$age->mortality_scaled;
|
|
// set total for mortality_scaled
|
|
$this->totals['total_mortality_scaled'] = $this->totals['total_mortality_scaled'] + $this->items[$id]->$gender->$age->mortality_scaled;
|
|
|
|
// set each gender and age group days_lost_mortality_scaled
|
|
$this->items[$id]->$gender->$age->days_lost_mortality_scaled = $this->items[$id]->$gender->$age->mortality_scaled
|
|
* $this->company->working_days * $this->company->productivity_losses;
|
|
// set total each cause/risk days_lost_mortality_scaled
|
|
if(!isset($this->items[$id]->subtotal_days_lost_mortality_scaled))
|
|
{
|
|
$this->items[$id]->subtotal_days_lost_mortality_scaled = $this->items[$id]->$gender->$age->days_lost_mortality_scaled;
|
|
}
|
|
else
|
|
{
|
|
$this->items[$id]->subtotal_days_lost_mortality_scaled += $this->items[$id]->$gender->$age->days_lost_mortality_scaled;
|
|
}
|
|
// set total each cause/risk per gender days_lost_mortality_scaled
|
|
if(!isset($this->items[$id]->{$gender.'_days_lost_mortality_scaled'}))
|
|
{
|
|
$this->items[$id]->{$gender.'_days_lost_mortality_scaled'} = $this->items[$id]->$gender->$age->days_lost_mortality_scaled;
|
|
}
|
|
else
|
|
{
|
|
$this->items[$id]->{$gender.'_days_lost_mortality_scaled'} += $this->items[$id]->$gender->$age->days_lost_mortality_scaled;
|
|
}
|
|
// set total for days_lost_mortality_scaled per gender
|
|
$this->totals[$genders.'_days_lost_mortality_scaled'] = $this->totals[$genders.'_days_lost_mortality_scaled'] + $this->items[$id]->$gender->$age->days_lost_mortality_scaled;
|
|
// set total for days_lost_mortality_scaled
|
|
$this->totals['total_days_lost_mortality_scaled'] = $this->totals['total_days_lost_mortality_scaled'] + $this->items[$id]->$gender->$age->days_lost_mortality_scaled;
|
|
}
|
|
}
|
|
|
|
// set gender days lost unscaled per cause/risk
|
|
$this->items[$id]->{$gender.'_days_lost_unscaled'} = $this->items[$id]->{$gender.'_morbidity_unscaled'}
|
|
+ $this->items[$id]->{$gender.'_days_lost_mortality_unscaled'}
|
|
+ $this->items[$id]->{$gender.'_presenteeism_unscaled'};
|
|
// set gender days lost scaled per cause/risk
|
|
$this->items[$id]->{$gender.'_days_lost_scaled'} = $this->items[$id]->{$gender.'_morbidity_scaled'}
|
|
+ $this->items[$id]->{$gender.'_days_lost_mortality_scaled'}
|
|
+ $this->items[$id]->subtotal_presenteeism_scaled;
|
|
// set gender global total days lost unscaled
|
|
$this->totals[$genders.'_days_lost_unscaled'] = $this->totals[$genders.'_days_lost_unscaled']
|
|
+ $this->items[$id]->{$gender.'_days_lost_unscaled'};
|
|
// set gender global total days lost scaled
|
|
$this->totals[$genders.'_days_lost_scaled'] = $this->totals[$genders.'_days_lost_scaled']
|
|
+ $this->items[$id]->{$gender.'_days_lost_scaled'};
|
|
}
|
|
|
|
// set subtotal days lost unscaled per cause/risk
|
|
$this->items[$id]->{'subtotal_days_lost_unscaled'} = $this->items[$id]->subtotal_morbidity_unscaled
|
|
+ $this->items[$id]->subtotal_days_lost_mortality_unscaled
|
|
+ $this->items[$id]->subtotal_presenteeism_unscaled;
|
|
// set subtotal days lost scaled per cause/risk
|
|
$this->items[$id]->{'subtotal_days_lost_scaled'} = $this->items[$id]->subtotal_morbidity_scaled
|
|
+ $this->items[$id]->subtotal_days_lost_mortality_scaled
|
|
+ $this->items[$id]->subtotal_presenteeism_scaled;
|
|
|
|
// set global total days lost unscaled
|
|
$this->totals['total_days_lost_unscaled'] = $this->totals['total_days_lost_scaled']
|
|
+ $this->items[$id]->{'subtotal_days_lost_unscaled'};
|
|
// set global total days lost scaled
|
|
$this->totals['total_days_lost_scaled'] = $this->totals['total_days_lost_scaled']
|
|
+ $this->items[$id]->{'subtotal_days_lost_scaled'};
|
|
} return true;
|
|
} return false;
|
|
}
|
|
|
|
/**
|
|
* Do calculation for cost.
|
|
*
|
|
* @return array
|
|
*
|
|
*/
|
|
protected function setCost()
|
|
{
|
|
if(CostbenefitprojectionHelper::checkArray($this->company->causesrisks))
|
|
{
|
|
// the total cost in Money
|
|
$this->totals['total_costmoney_scaled'] = 0;
|
|
$this->totals['total_costmoney_unscaled'] = 0;
|
|
// set global totals morbidity
|
|
$this->totals['total_costmoney_morbidity_scaled'] = 0;
|
|
$this->totals['total_costmoney_morbidity_unscaled'] = 0;
|
|
// set global totals mortality
|
|
$this->totals['total_costmoney_mortality_scaled'] = 0;
|
|
$this->totals['total_costmoney_mortality_unscaled'] = 0;
|
|
// set global totals presenteesim
|
|
$this->totals['total_costmoney_presenteeism_scaled'] = 0;
|
|
$this->totals['total_costmoney_presenteeism_unscaled'] = 0;
|
|
// the total cost in Values only
|
|
$this->totals['total_cost_scaled'] = 0;
|
|
$this->totals['total_cost_unscaled'] = 0;
|
|
// set global totals morbidity
|
|
$this->totals['total_cost_morbidity_scaled'] = 0;
|
|
$this->totals['total_cost_morbidity_unscaled'] = 0;
|
|
// set global totals mortality
|
|
$this->totals['total_cost_mortality_scaled'] = 0;
|
|
$this->totals['total_cost_mortality_unscaled'] = 0;
|
|
// set global totals presenteesim
|
|
$this->totals['total_cost_presenteeism_scaled'] = 0;
|
|
$this->totals['total_cost_presenteeism_unscaled'] = 0;
|
|
// work with each gender
|
|
foreach($this->genders as $gender => $genders)
|
|
{
|
|
// gender totals morbidity
|
|
$this->totals[$genders.'_costmoney_morbidity_scaled'] = 0;
|
|
$this->totals[$genders.'_costmoney_morbidity_unscaled'] = 0;
|
|
// gender totals mortality
|
|
$this->totals[$genders.'_costmoney_mortality_scaled'] = 0;
|
|
$this->totals[$genders.'_costmoney_mortality_unscaled'] = 0;
|
|
// gender totals presenteeism
|
|
$this->totals[$genders.'_costmoney_presenteeism_scaled'] = 0;
|
|
$this->totals[$genders.'_costmoney_presenteeism_unscaled'] = 0;
|
|
// gender totals
|
|
$this->totals[$genders.'_costmoney_scaled'] = 0;
|
|
$this->totals[$genders.'_costmoney_unscaled'] = 0;
|
|
// gender totals morbidity
|
|
$this->totals[$genders.'_cost_morbidity_scaled'] = 0;
|
|
$this->totals[$genders.'_cost_morbidity_unscaled'] = 0;
|
|
// gender totals mortality
|
|
$this->totals[$genders.'_cost_mortality_scaled'] = 0;
|
|
$this->totals[$genders.'_cost_mortality_unscaled'] = 0;
|
|
// gender totals presenteeism
|
|
$this->totals[$genders.'_cost_presenteeism_scaled'] = 0;
|
|
$this->totals[$genders.'_cost_presenteeism_unscaled'] = 0;
|
|
// gender totals
|
|
$this->totals[$genders.'_cost_scaled'] = 0;
|
|
$this->totals[$genders.'_cost_unscaled'] = 0;
|
|
}
|
|
|
|
//////////////////////////////////////////////////
|
|
// ------ set cost for each cause/risk ------ //
|
|
//////////////////////////////////////////////////
|
|
|
|
// set cost_morbidity
|
|
foreach($this->company->causesrisks as $id)
|
|
{
|
|
// work with each gender
|
|
foreach($this->genders as $gender => $genders)
|
|
{
|
|
// work with each age group
|
|
foreach($this->ages as $age)
|
|
{
|
|
if (isset($this->company->{'percent'.$gender}[$age]))
|
|
{
|
|
// unscaled ///////////////
|
|
// set each gender and age group morbidity_unscaled
|
|
$this->items[$id]->$gender->$age->cost_morbidity_unscaled = $this->items[$id]->$gender->$age->morbidity_unscaled
|
|
* (( $this->company->total_salary / (( $this->company->males + $this->company->females)
|
|
* $this->company->working_days))
|
|
+ $this->company->total_healthcare / $this->totals['total_morbidity_unscaled']);
|
|
// set total each cause/risk cost_morbidity_unscaled
|
|
if(!isset($this->items[$id]->subtotal_cost_morbidity_unscaled))
|
|
{
|
|
$this->items[$id]->subtotal_cost_morbidity_unscaled = $this->items[$id]->$gender->$age->cost_morbidity_unscaled;
|
|
}
|
|
else
|
|
{
|
|
$this->items[$id]->subtotal_cost_morbidity_unscaled += $this->items[$id]->$gender->$age->cost_morbidity_unscaled;
|
|
}
|
|
// set total each cause/risk per gender cost_morbidity_unscaled
|
|
if(!isset($this->items[$id]->{$gender.'_cost_morbidity_unscaled'}))
|
|
{
|
|
$this->items[$id]->{$gender.'_cost_morbidity_unscaled'} = $this->items[$id]->$gender->$age->cost_morbidity_unscaled;
|
|
}
|
|
else
|
|
{
|
|
$this->items[$id]->{$gender.'_cost_morbidity_unscaled'} += $this->items[$id]->$gender->$age->cost_morbidity_unscaled;
|
|
}
|
|
// set total for cost_morbidity_unscaled
|
|
$this->totals['total_cost_morbidity_unscaled'] = $this->totals['total_cost_morbidity_unscaled'] + $this->items[$id]->$gender->$age->cost_morbidity_unscaled;
|
|
// set total for cost_morbidity_unscaled per gender
|
|
$this->totals[$genders.'_cost_morbidity_unscaled'] = $this->totals[$genders.'_cost_morbidity_unscaled'] + $this->items[$id]->$gender->$age->cost_morbidity_unscaled;
|
|
|
|
// scaled /////////////////
|
|
// set each gender and age group morbidity_scaled
|
|
$this->items[$id]->$gender->$age->cost_morbidity_scaled = $this->items[$id]->$gender->$age->morbidity_scaled
|
|
* (( $this->company->total_salary / ($this->company->males + $this->company->females)
|
|
/ $this->company->working_days )
|
|
+ $this->company->total_healthcare / $this->totals['total_morbidity_scaled']);
|
|
// set total each cause/risk cost_morbidity_scaled
|
|
if(!isset($this->items[$id]->subtotal_cost_morbidity_scaled))
|
|
{
|
|
$this->items[$id]->subtotal_cost_morbidity_scaled = $this->items[$id]->$gender->$age->cost_morbidity_scaled;
|
|
}
|
|
else
|
|
{
|
|
$this->items[$id]->subtotal_cost_morbidity_scaled += $this->items[$id]->$gender->$age->cost_morbidity_scaled;
|
|
}
|
|
// set total each cause/risk per gender cost_morbidity_scaled
|
|
if(!isset($this->items[$id]->{$gender.'_cost_morbidity_scaled'}))
|
|
{
|
|
$this->items[$id]->{$gender.'_cost_morbidity_scaled'} = $this->items[$id]->$gender->$age->cost_morbidity_scaled;
|
|
}
|
|
else
|
|
{
|
|
$this->items[$id]->{$gender.'_cost_morbidity_scaled'} += $this->items[$id]->$gender->$age->cost_morbidity_scaled;
|
|
}
|
|
// set total for cost_morbidity_scaled
|
|
$this->totals['total_cost_morbidity_scaled'] = $this->totals['total_cost_morbidity_scaled'] + $this->items[$id]->$gender->$age->cost_morbidity_scaled;
|
|
// set total for cost_morbidity_scaled per gender
|
|
$this->totals[$genders.'_cost_morbidity_scaled'] = $this->totals[$genders.'_cost_morbidity_scaled'] + $this->items[$id]->$gender->$age->cost_morbidity_scaled;
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
// set cost_presenteeism
|
|
foreach($this->company->causesrisks as $id)
|
|
{
|
|
// work with each gender
|
|
foreach($this->genders as $gender => $genders)
|
|
{
|
|
// work with each age group
|
|
foreach($this->ages as $age)
|
|
{
|
|
if (isset($this->company->{'percent'.$gender}[$age]))
|
|
{
|
|
// unscaled ///////////////
|
|
// set each gender and age group cost_presenteeism_unscaled
|
|
$this->items[$id]->$gender->$age->cost_presenteeism_unscaled = $this->items[$id]->$gender->$age->presenteeism_unscaled
|
|
* ( $this->company->total_salary / (( $this->company->males + $this->company->females)
|
|
* $this->company->working_days));
|
|
// set total each cause/risk cost_presenteeism_unscaled
|
|
if(!isset($this->items[$id]->subtotal_cost_presenteeism_unscaled))
|
|
{
|
|
$this->items[$id]->subtotal_cost_presenteeism_unscaled = $this->items[$id]->$gender->$age->cost_presenteeism_unscaled;
|
|
}
|
|
else
|
|
{
|
|
$this->items[$id]->subtotal_cost_presenteeism_unscaled += $this->items[$id]->$gender->$age->cost_presenteeism_unscaled;
|
|
}
|
|
// set total each cause/risk per gender cost_presenteeism_unscaled
|
|
if(!isset($this->items[$id]->{$gender.'_cost_presenteeism_unscaled'}))
|
|
{
|
|
$this->items[$id]->{$gender.'_cost_presenteeism_unscaled'} = $this->items[$id]->$gender->$age->cost_presenteeism_unscaled;
|
|
}
|
|
else
|
|
{
|
|
$this->items[$id]->{$gender.'_cost_presenteeism_unscaled'} += $this->items[$id]->$gender->$age->cost_presenteeism_unscaled;
|
|
}
|
|
// set total for cost_presenteeism_unscaled
|
|
$this->totals['total_cost_presenteeism_unscaled'] = $this->totals['total_cost_presenteeism_unscaled']
|
|
+ $this->items[$id]->$gender->$age->cost_presenteeism_unscaled;
|
|
// set total for cost_presenteeism_unscaled per gender
|
|
$this->totals[$genders.'_cost_presenteeism_unscaled'] = $this->totals[$genders.'_cost_presenteeism_unscaled']
|
|
+ $this->items[$id]->$gender->$age->cost_presenteeism_unscaled;
|
|
|
|
// scaled /////////////////
|
|
// set each gender and age group cost_presenteeism_scaled
|
|
$this->items[$id]->$gender->$age->cost_presenteeism_scaled = $this->items[$id]->$gender->$age->presenteeism_scaled
|
|
* ( $this->company->total_salary / (( $this->company->males + $this->company->females)
|
|
* $this->company->working_days));
|
|
// set total each cause/risk cost_presenteeism_scaled
|
|
if(!isset($this->items[$id]->subtotal_cost_presenteeism_scaled))
|
|
{
|
|
$this->items[$id]->subtotal_cost_presenteeism_scaled = $this->items[$id]->$gender->$age->cost_presenteeism_scaled;
|
|
}
|
|
else
|
|
{
|
|
$this->items[$id]->subtotal_cost_presenteeism_scaled += $this->items[$id]->$gender->$age->cost_presenteeism_scaled;
|
|
}
|
|
// set total each cause/risk per gender cost_presenteeism_scaled
|
|
if(!isset($this->items[$id]->{$gender.'_cost_presenteeism_scaled'}))
|
|
{
|
|
$this->items[$id]->{$gender.'_cost_presenteeism_scaled'} = $this->items[$id]->$gender->$age->cost_presenteeism_scaled;
|
|
}
|
|
else
|
|
{
|
|
$this->items[$id]->{$gender.'_cost_presenteeism_scaled'} += $this->items[$id]->$gender->$age->cost_presenteeism_scaled;
|
|
}
|
|
// set total for cost_presenteeism_scaled
|
|
$this->totals['total_cost_presenteeism_scaled'] = $this->totals['total_cost_presenteeism_scaled']
|
|
+ $this->items[$id]->$gender->$age->cost_presenteeism_scaled;
|
|
// set total for cost_presenteeism_scaled per gender
|
|
$this->totals[$genders.'_cost_presenteeism_scaled'] = $this->totals[$genders.'_cost_presenteeism_scaled']
|
|
+ $this->items[$id]->$gender->$age->cost_presenteeism_scaled;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// set Cost_mortality
|
|
foreach($this->company->causesrisks as $id)
|
|
{
|
|
// work with each gender
|
|
foreach($this->genders as $gender => $genders)
|
|
{
|
|
// work with each age group
|
|
foreach($this->ages as $age)
|
|
{
|
|
if (isset($this->company->{'percent'.$gender}[$age]))
|
|
{
|
|
// unscaled ///////////////
|
|
// set each gender and age group cost_mortality_unscaled
|
|
$this->items[$id]->$gender->$age->cost_mortality_unscaled = $this->items[$id]->$gender->$age->days_lost_mortality_unscaled
|
|
* ( $this->company->total_salary / (( $this->company->males + $this->company->females)
|
|
* $this->company->working_days));
|
|
// set total each cause/risk cost_mortality_unscaled
|
|
if(!isset($this->items[$id]->subtotal_cost_mortality_unscaled))
|
|
{
|
|
$this->items[$id]->subtotal_cost_mortality_unscaled = $this->items[$id]->$gender->$age->cost_mortality_unscaled;
|
|
}
|
|
else
|
|
{
|
|
$this->items[$id]->subtotal_cost_mortality_unscaled += $this->items[$id]->$gender->$age->cost_mortality_unscaled;
|
|
}
|
|
// set total each cause/risk per gender cost_mortality_unscaled
|
|
if(!isset($this->items[$id]->{$gender.'_cost_mortality_unscaled'}))
|
|
{
|
|
$this->items[$id]->{$gender.'_cost_mortality_unscaled'} = $this->items[$id]->$gender->$age->cost_mortality_unscaled;
|
|
}
|
|
else
|
|
{
|
|
$this->items[$id]->{$gender.'_cost_mortality_unscaled'} += $this->items[$id]->$gender->$age->cost_mortality_unscaled;
|
|
}
|
|
// set total for cost_mortality_unscaled
|
|
$this->totals['total_cost_mortality_unscaled'] = $this->totals['total_cost_mortality_unscaled']
|
|
+ $this->items[$id]->$gender->$age->cost_mortality_unscaled;
|
|
// set total for cost_mortality_unscaled per gender
|
|
$this->totals[$genders.'_cost_mortality_unscaled'] = $this->totals[$genders.'_cost_mortality_unscaled']
|
|
+ $this->items[$id]->$gender->$age->cost_mortality_unscaled;
|
|
|
|
// scaled /////////////////
|
|
// set each gender and age group cost_mortality_scaled
|
|
$this->items[$id]->$gender->$age->cost_mortality_scaled = $this->items[$id]->$gender->$age->days_lost_mortality_scaled
|
|
* ( $this->company->total_salary / (( $this->company->males + $this->company->females)
|
|
* $this->company->working_days));
|
|
// set total each cause/risk cost_mortality_scaled
|
|
if(!isset($this->items[$id]->subtotal_cost_mortality_scaled))
|
|
{
|
|
$this->items[$id]->subtotal_cost_mortality_scaled = $this->items[$id]->$gender->$age->cost_mortality_scaled;
|
|
}
|
|
else
|
|
{
|
|
$this->items[$id]->subtotal_cost_mortality_scaled += $this->items[$id]->$gender->$age->cost_mortality_scaled;
|
|
}
|
|
// set total each cause/risk per gender cost_mortality_scaled
|
|
if(!isset($this->items[$id]->{$gender.'_cost_mortality_scaled'}))
|
|
{
|
|
$this->items[$id]->{$gender.'_cost_mortality_scaled'} = $this->items[$id]->$gender->$age->cost_mortality_scaled;
|
|
}
|
|
else
|
|
{
|
|
$this->items[$id]->{$gender.'_cost_mortality_scaled'} += $this->items[$id]->$gender->$age->cost_mortality_scaled;
|
|
}
|
|
// set total for cost_mortality_scaled
|
|
$this->totals['total_cost_mortality_scaled'] = $this->totals['total_cost_mortality_scaled']
|
|
+ $this->items[$id]->$gender->$age->cost_mortality_scaled;
|
|
// set total for cost_mortality_scaled per gender
|
|
$this->totals[$genders.'_cost_mortality_scaled'] = $this->totals[$genders.'_cost_mortality_scaled']
|
|
+ $this->items[$id]->$gender->$age->cost_mortality_scaled;
|
|
}
|
|
}
|
|
|
|
// unscaled ///////////////
|
|
$this->items[$id]->{$gender.'_cost_unscaled'} = $this->items[$id]->{$gender.'_cost_morbidity_unscaled'}
|
|
+ $this->items[$id]->{$gender.'_cost_mortality_unscaled'}
|
|
+ $this->items[$id]->{$gender.'_cost_presenteeism_unscaled'};
|
|
// scaled ///////////////
|
|
$this->items[$id]->{$gender.'_cost_scaled'} = $this->items[$id]->{$gender.'_cost_morbidity_scaled'}
|
|
+ $this->items[$id]->{$gender.'_cost_mortality_scaled'}
|
|
+ $this->items[$id]->{$gender.'_cost_presenteeism_scaled'};
|
|
|
|
// set total for gender cost_unscaled
|
|
$this->totals[$genders.'_cost_unscaled'] = $this->totals[$genders.'_cost_unscaled']
|
|
+ $this->items[$id]->{$gender.'_cost_unscaled'};
|
|
|
|
// set total for gender cost_scaled
|
|
$this->totals[$genders.'_cost_scaled'] = $this->totals[$genders.'_cost_scaled']
|
|
+ $this->items[$id]->{$gender.'_cost_scaled'};
|
|
}
|
|
// unscaled ///////////////
|
|
$this->items[$id]->subtotal_cost_unscaled = $this->items[$id]->subtotal_cost_morbidity_unscaled
|
|
+ $this->items[$id]->subtotal_cost_mortality_unscaled
|
|
+ $this->items[$id]->subtotal_cost_presenteeism_unscaled;
|
|
// scaled ///////////////
|
|
$this->items[$id]->subtotal_cost_scaled = $this->items[$id]->subtotal_cost_morbidity_scaled
|
|
+ $this->items[$id]->subtotal_cost_mortality_scaled
|
|
+ $this->items[$id]->subtotal_cost_presenteeism_scaled;
|
|
|
|
// set global total cost
|
|
$this->totals['total_cost_unscaled'] = $this->totals['total_cost_unscaled'] + $this->items[$id]->subtotal_cost_unscaled;
|
|
$this->totals['total_cost_scaled'] = $this->totals['total_cost_scaled'] + $this->items[$id]->subtotal_cost_scaled;
|
|
}
|
|
// turn values into money
|
|
foreach($this->company->causesrisks as $id)
|
|
{
|
|
// work with each gender
|
|
foreach($this->genders as $gender => $genders)
|
|
{
|
|
// work with each age group
|
|
foreach($this->ages as $age)
|
|
{
|
|
if (isset($this->company->{'percent'.$gender}[$age]))
|
|
{
|
|
// set each gender and age group costmoney_morbidity_unscaled
|
|
$this->items[$id]->$gender->$age->costmoney_morbidity_unscaled = $this->makeMoney((float)$this->items[$id]->$gender->$age->cost_morbidity_unscaled);
|
|
// set each gender and age group costmoney_morbidity_scaled
|
|
$this->items[$id]->$gender->$age->costmoney_morbidity_scaled = $this->makeMoney((float)$this->items[$id]->$gender->$age->cost_morbidity_scaled);
|
|
|
|
// set each gender and age group costmoney_presenteeism_unscaled
|
|
$this->items[$id]->$gender->$age->costmoney_presenteeism_unscaled = $this->makeMoney((float)$this->items[$id]->$gender->$age->cost_presenteeism_unscaled);
|
|
// set each gender and age group costmoney_presenteeism_scaled
|
|
$this->items[$id]->$gender->$age->costmoney_presenteeism_scaled = $this->makeMoney((float)$this->items[$id]->$gender->$age->cost_presenteeism_scaled);
|
|
|
|
// set each gender and age group costmoney_mortality_unscaled
|
|
$this->items[$id]->$gender->$age->costmoney_mortality_unscaled = $this->makeMoney((float)$this->items[$id]->$gender->$age->cost_mortality_unscaled);
|
|
// set each gender and age group costmoney_mortality_scaled
|
|
$this->items[$id]->$gender->$age->costmoney_mortality_scaled = $this->makeMoney((float)$this->items[$id]->$gender->$age->cost_mortality_scaled);
|
|
}
|
|
}
|
|
//// --- add all cost per gender --- ////
|
|
// set total each cause/risk per gender costmoney_morbidity_unscaled
|
|
$this->items[$id]->{$gender.'_costmoney_morbidity_unscaled'} = $this->makeMoney((float)$this->items[$id]->{$gender.'_cost_morbidity_unscaled'});
|
|
// set total each cause/risk per gender costmoney_morbidity_scaled
|
|
$this->items[$id]->{$gender.'_costmoney_morbidity_scaled'} = $this->makeMoney((float)$this->items[$id]->{$gender.'_cost_morbidity_scaled'});
|
|
|
|
// set total each cause/risk per gender costmoney_mortality_unscaled
|
|
$this->items[$id]->{$gender.'_costmoney_mortality_unscaled'} = $this->makeMoney((float)$this->items[$id]->{$gender.'_cost_mortality_unscaled'});
|
|
// set total each cause/risk per gender costmoney_mortality_scaled
|
|
$this->items[$id]->{$gender.'_costmoney_mortality_scaled'} = $this->makeMoney((float)$this->items[$id]->{$gender.'_cost_mortality_scaled'});
|
|
|
|
// set total each cause/risk per gender costmoney_presenteeism_unscaled
|
|
$this->items[$id]->{$gender.'_costmoney_presenteeism_unscaled'} = $this->makeMoney((float)$this->items[$id]->{$gender.'_cost_presenteeism_unscaled'});
|
|
// set total each cause/risk per gender costmoney_presenteeism_scaled
|
|
$this->items[$id]->{$gender.'_costmoney_presenteeism_scaled'} = $this->makeMoney((float)$this->items[$id]->{$gender.'_cost_presenteeism_scaled'});
|
|
|
|
// set total each subtotal_costmoney_unscale
|
|
$this->items[$id]->{$gender.'_costmoney_unscaled'} = $this->makeMoney((float)$this->items[$id]->{$gender.'_cost_unscaled'});
|
|
// set total each subtotal_costmoney_scaled
|
|
$this->items[$id]->{$gender.'_costmoney_scaled'} = $this->makeMoney((float)$this->items[$id]->{$gender.'_cost_scaled'});
|
|
|
|
// gender totals morbidity
|
|
$this->totals[$genders.'_costmoney_morbidity_scaled'] = $this->makeMoney((float)$this->totals[$genders.'_cost_morbidity_scaled']);
|
|
$this->totals[$genders.'_costmoney_morbidity_unscaled'] = $this->makeMoney((float)$this->totals[$genders.'_cost_morbidity_unscaled']);
|
|
// gender totals mortality
|
|
$this->totals[$genders.'_costmoney_mortality_scaled'] = $this->makeMoney((float)$this->totals[$genders.'_cost_mortality_scaled']);
|
|
$this->totals[$genders.'_costmoney_mortality_unscaled'] = $this->makeMoney((float)$this->totals[$genders.'_cost_mortality_unscaled']);
|
|
// gender total presenteeism
|
|
$this->totals[$genders.'_costmoney_presenteeism_unscaled'] = $this->makeMoney((float)$this->totals[$genders.'_cost_presenteeism_unscaled']);
|
|
$this->totals[$genders.'_costmoney_presenteeism_scaled'] = $this->makeMoney((float)$this->totals[$genders.'_cost_presenteeism_scaled']);
|
|
|
|
// set total gender costmoney
|
|
$this->totals[$genders.'_costmoney_unscaled'] = $this->makeMoney((float)$this->totals[$genders.'_cost_unscaled']);
|
|
$this->totals[$genders.'_costmoney_scaled'] = $this->makeMoney((float)$this->totals[$genders.'_cost_scaled']);
|
|
}
|
|
|
|
// set total each cause/risk costmoney_morbidity_unscaled
|
|
$this->items[$id]->subtotal_costmoney_morbidity_unscaled = $this->makeMoney((float)$this->items[$id]->subtotal_cost_morbidity_unscaled);
|
|
// set total each cause/risk costmoney_morbidity_scaled
|
|
$this->items[$id]->subtotal_costmoney_morbidity_scaled = $this->makeMoney((float)$this->items[$id]->subtotal_cost_morbidity_scaled);
|
|
|
|
// set total each cause/risk costmoney_mortality_unscaled
|
|
$this->items[$id]->subtotal_costmoney_mortality_unscaled = $this->makeMoney((float)$this->items[$id]->subtotal_cost_mortality_unscaled);
|
|
// set total each cause/risk costmoney_mortality_scaled
|
|
$this->items[$id]->subtotal_costmoney_mortality_scaled = $this->makeMoney((float)$this->items[$id]->subtotal_cost_mortality_scaled);
|
|
|
|
// set total each cause/risk costmoney_presenteeism_unscaled
|
|
$this->items[$id]->subtotal_costmoney_presenteeism_unscaled = $this->makeMoney((float)$this->items[$id]->subtotal_cost_presenteeism_unscaled);
|
|
// set total each cause/risk costmoney_presenteeism_scaled
|
|
$this->items[$id]->subtotal_costmoney_presenteeism_scaled = $this->makeMoney((float)$this->items[$id]->subtotal_cost_presenteeism_scaled);
|
|
|
|
// set total each subtotal_costmoney_unscale
|
|
$this->items[$id]->subtotal_costmoney_unscaled = $this->makeMoney((float)$this->items[$id]->subtotal_cost_unscaled);
|
|
// set total each subtotal_costmoney_scaled
|
|
$this->items[$id]->subtotal_costmoney_scaled = $this->makeMoney((float)$this->items[$id]->subtotal_cost_scaled);
|
|
}
|
|
|
|
// set global totals morbidity
|
|
$this->totals['total_costmoney_morbidity_scaled'] = $this->makeMoney((float)$this->totals['total_cost_morbidity_scaled']);
|
|
$this->totals['total_costmoney_morbidity_unscaled'] = $this->makeMoney((float)$this->totals['total_cost_morbidity_unscaled']);
|
|
// set global totals mortality
|
|
$this->totals['total_costmoney_mortality_scaled'] = $this->makeMoney((float)$this->totals['total_cost_mortality_scaled']);
|
|
$this->totals['total_costmoney_mortality_unscaled'] = $this->makeMoney((float)$this->totals['total_cost_mortality_unscaled']);
|
|
// set global totals presenteesim
|
|
$this->totals['total_costmoney_presenteeism_scaled'] = $this->makeMoney((float)$this->totals['total_cost_presenteeism_scaled']);
|
|
$this->totals['total_costmoney_presenteeism_unscaled'] = $this->makeMoney((float)$this->totals['total_cost_presenteeism_unscaled']);
|
|
// set global totals COST
|
|
$this->totals['total_costmoney_scaled'] = $this->makeMoney((float)$this->totals['total_cost_scaled']);
|
|
$this->totals['total_costmoney_unscaled'] = $this->makeMoney((float)$this->totals['total_cost_unscaled']);
|
|
return true;
|
|
} return false;
|
|
}
|
|
|
|
/**
|
|
* Set the interventions related to this Company.
|
|
*
|
|
* @return array
|
|
*
|
|
*/
|
|
protected function setInterventions()
|
|
{
|
|
// now set the result set
|
|
if(CostbenefitprojectionHelper::checkArray($this->company->causesrisks) && isset($this->company->interventions) && CostbenefitprojectionHelper::checkArray($this->company->interventions)){
|
|
$i = 0;
|
|
foreach ($this->company->interventions as $mainkey => $item)
|
|
{
|
|
// make sure duration is set
|
|
if (!isset($item->duration) || !is_numeric($item->duration) || 1 > $item->duration)
|
|
{
|
|
$item->duration = 1;
|
|
}
|
|
$this->interventions[$i]["id"] = $item->id;
|
|
$this->interventions[$i]["name"] = $item->name;
|
|
$this->interventions[$i]["description"] = $item->description;
|
|
$this->interventions[$i]["duration"] = $item->duration;
|
|
$this->interventions[$i]["coverage"] = $item->coverage;
|
|
$this->interventions[$i]["type"] = $item->type;
|
|
$this->interventions[$i]['found'] = array();
|
|
$this->interventions[$i]['not_found'] = array();
|
|
// set totals
|
|
$this->interventions[$i]['totals']['cost_per_employee'] = 0;
|
|
$this->interventions[$i]['totals']['costmoney_per_employee'] = 0;
|
|
$this->interventions[$i]['totals']['cost_of_problem_scaled'] = 0;
|
|
$this->interventions[$i]['totals']['cost_of_problem_unscaled'] = 0;
|
|
$this->interventions[$i]['totals']['costmoney_of_problem_scaled'] = 0;
|
|
$this->interventions[$i]['totals']['costmoney_of_problem_unscaled'] = 0;
|
|
$this->interventions[$i]['totals']['contribution_to_cost_scaled'] = 0;
|
|
$this->interventions[$i]['totals']['contribution_to_cost_unscaled'] = 0;
|
|
$this->interventions[$i]['totals']['cost'] = 0;
|
|
$this->interventions[$i]['totals']['costmoney'] = 0;
|
|
$this->interventions[$i]['totals']['benefit_scaled'] = 0;
|
|
$this->interventions[$i]['totals']['benefit_unscaled'] = 0;
|
|
$this->interventions[$i]['totals']['benefitmoney_scaled'] = 0;
|
|
$this->interventions[$i]['totals']['benefitmoney_unscaled'] = 0;
|
|
$this->interventions[$i]['totals']['net_benefit_scaled'] = 0;
|
|
$this->interventions[$i]['totals']['net_benefit_unscaled'] = 0;
|
|
$this->interventions[$i]['totals']['net_benefitmoney_scaled'] = 0;
|
|
$this->interventions[$i]['totals']['net_benefitmoney_unscaled'] = 0;
|
|
// now load the cause/risk that are linked to this user
|
|
$a = 0;
|
|
// set values
|
|
foreach ($item->data as $key => $value){
|
|
if(in_array($value['id'],$this->company->causesrisks)){
|
|
// set array of causes/risk ids
|
|
$this->interventions[$i]['found'][$value['id']] = $this->items[$value['id']]->details->name;
|
|
// set local cause/risk values
|
|
$this->interventions[$i]['items'][$a] = $value;
|
|
$this->interventions[$i]['items'][$a]['name'] = $this->items[$value['id']]->details->name;
|
|
$this->interventions[$i]['items'][$a]['cost_of_problem_unscaled'] = $this->items[$value['id']]->subtotal_cost_unscaled * $item->duration;
|
|
$this->interventions[$i]['items'][$a]['cost_of_problem_scaled'] = $this->items[$value['id']]->subtotal_cost_scaled * $item->duration;
|
|
$this->interventions[$i]['items'][$a]['costmoney_of_problem_unscaled'] = $this->makeMoney((float)$this->interventions[$i]['items'][$a]['cost_of_problem_unscaled']);
|
|
$this->interventions[$i]['items'][$a]['costmoney_of_problem_scaled'] = $this->makeMoney((float)$this->interventions[$i]['items'][$a]['cost_of_problem_scaled']);
|
|
|
|
$this->interventions[$i]['items'][$a]['cost'] = ($this->interventions[$i]["coverage"] /100)
|
|
* $value['cpe'] * ($this->company->males + $this->company->females);
|
|
|
|
// turn into money
|
|
$this->interventions[$i]['items'][$a]['costmoney'] = $this->makeMoney((float)$this->interventions[$i]['items'][$a]['cost']);
|
|
|
|
$this->interventions[$i]['items'][$a]['benefit_unscaled'] = ($this->interventions[$i]["coverage"] /100) * ($value['mbr'] /100)
|
|
* ($this->items[$value['id']]->subtotal_cost_morbidity_unscaled
|
|
+ $this->items[$value['id']]->subtotal_cost_presenteeism_unscaled)
|
|
+ ($value['mtr']/100) * $this->items[$value['id']]->subtotal_cost_mortality_unscaled
|
|
* $item->duration;
|
|
|
|
$this->interventions[$i]['items'][$a]['benefit_scaled'] = ($this->interventions[$i]["coverage"] /100) * ($value['mbr'] /100)
|
|
* ($this->items[$value['id']]->subtotal_cost_morbidity_scaled
|
|
+ $this->items[$value['id']]->subtotal_cost_presenteeism_scaled)
|
|
+ ($value['mtr']/100) * $this->items[$value['id']]->subtotal_cost_mortality_scaled
|
|
* $item->duration;
|
|
// turn into money
|
|
$this->interventions[$i]['items'][$a]['benefitmoney_unscaled'] = $this->makeMoney((float)$this->interventions[$i]['items'][$a]['benefit_unscaled']);
|
|
$this->interventions[$i]['items'][$a]['benefitmoney_scaled'] = $this->makeMoney((float)$this->interventions[$i]['items'][$a]['benefit_scaled']);
|
|
|
|
$this->interventions[$i]['items'][$a]['net_benefit_unscaled'] = $this->interventions[$i]['items'][$a]['benefit_unscaled']
|
|
- $this->interventions[$i]['items'][$a]['cost'];
|
|
$this->interventions[$i]['items'][$a]['net_benefit_scaled'] = $this->interventions[$i]['items'][$a]['benefit_scaled']
|
|
- $this->interventions[$i]['items'][$a]['cost'];
|
|
// turn into money
|
|
$this->interventions[$i]['items'][$a]['net_benefitmoney_unscaled'] = $this->makeMoney((float)$this->interventions[$i]['items'][$a]['net_benefit_unscaled']);
|
|
$this->interventions[$i]['items'][$a]['net_benefitmoney_scaled'] = $this->makeMoney((float)$this->interventions[$i]['items'][$a]['net_benefit_scaled']);
|
|
// set ratio
|
|
$this->interventions[$i]['items'][$a]['benefit_ratio_unscaled'] = $this->interventions[$i]['items'][$a]['benefit_unscaled']
|
|
/ $this->interventions[$i]['items'][$a]['cost'];
|
|
$this->interventions[$i]['items'][$a]['benefit_ratio_scaled'] = $this->interventions[$i]['items'][$a]['benefit_scaled']
|
|
/ $this->interventions[$i]['items'][$a]['cost'];
|
|
|
|
$this->interventions[$i]['items'][$a]['costmoney_per_employee'] = $this->makeMoney((float)$value['cpe']);
|
|
|
|
// set totals
|
|
$this->interventions[$i]['totals']['cost'] = $this->interventions[$i]['totals']['cost']
|
|
+ $this->interventions[$i]['items'][$a]['cost'];
|
|
$this->interventions[$i]['totals']['benefit_scaled'] = $this->interventions[$i]['totals']['benefit_scaled']
|
|
+ $this->interventions[$i]['items'][$a]['benefit_scaled'];
|
|
$this->interventions[$i]['totals']['benefit_unscaled'] = $this->interventions[$i]['totals']['benefit_unscaled']
|
|
+ $this->interventions[$i]['items'][$a]['benefit_unscaled'];
|
|
$this->interventions[$i]['totals']['net_benefit_scaled'] = $this->interventions[$i]['totals']['net_benefit_scaled']
|
|
+ $this->interventions[$i]['items'][$a]['net_benefit_scaled'];
|
|
$this->interventions[$i]['totals']['net_benefit_unscaled'] = $this->interventions[$i]['totals']['net_benefit_unscaled']
|
|
+ $this->interventions[$i]['items'][$a]['net_benefit_unscaled'];
|
|
$this->interventions[$i]['totals']['cost_per_employee'] = $this->interventions[$i]['totals']['cost_per_employee'] + $value['cpe'];
|
|
|
|
$this->interventions[$i]['totals']['cost_of_problem_scaled'] = $this->interventions[$i]['totals']['cost_of_problem_scaled']
|
|
+ $this->interventions[$i]['items'][$a]['cost_of_problem_scaled'];
|
|
$this->interventions[$i]['totals']['cost_of_problem_unscaled'] = $this->interventions[$i]['totals']['cost_of_problem_unscaled']
|
|
+ $this->interventions[$i]['items'][$a]['cost_of_problem_unscaled'];
|
|
} else {
|
|
$this->interventions[$i]['not_found'][$value['id']] = CostbenefitprojectionHelper::getVar('causerisk', $value['id'], 'id', 'name');
|
|
}
|
|
$a++;
|
|
}
|
|
// contribution_to_cost
|
|
$a = 0;
|
|
foreach ($item->data as $key => $value){
|
|
if(in_array($value['id'],$this->company->causesrisks)){
|
|
|
|
$this->interventions[$i]['items'][$a]['contribution_to_cost_unscaled'] = ($this->interventions[$i]['items'][$a]['cost_of_problem_unscaled']
|
|
/ $this->interventions[$i]['totals']['cost_of_problem_unscaled']) * 100;
|
|
$this->interventions[$i]['items'][$a]['contribution_to_cost_scaled'] = ($this->interventions[$i]['items'][$a]['cost_of_problem_scaled']
|
|
/ $this->interventions[$i]['totals']['cost_of_problem_scaled']) * 100;
|
|
// set totals
|
|
$this->interventions[$i]['totals']['contribution_to_cost_scaled'] = $this->interventions[$i]['totals']['contribution_to_cost_scaled']
|
|
+ $this->interventions[$i]['items'][$a]['contribution_to_cost_scaled'];
|
|
$this->interventions[$i]['totals']['contribution_to_cost_unscaled'] = $this->interventions[$i]['totals']['contribution_to_cost_unscaled']
|
|
+ $this->interventions[$i]['items'][$a]['contribution_to_cost_unscaled'];
|
|
}
|
|
$a++;
|
|
}
|
|
// set total money
|
|
$this->interventions[$i]['totals']['costmoney_per_employee'] = $this->makeMoney((float)$this->interventions[$i]['totals']['cost_per_employee']);
|
|
$this->interventions[$i]['totals']['costmoney_of_problem_scaled'] = $this->makeMoney((float)$this->interventions[$i]['totals']['cost_of_problem_scaled']);
|
|
$this->interventions[$i]['totals']['costmoney_of_problem_unscaled'] = $this->makeMoney((float)$this->interventions[$i]['totals']['cost_of_problem_unscaled']);
|
|
$this->interventions[$i]['totals']['costmoney'] = $this->makeMoney((float)$this->interventions[$i]['totals']['cost']);
|
|
$this->interventions[$i]['totals']['benefitmoney_scaled'] = $this->makeMoney((float)$this->interventions[$i]['totals']['benefit_scaled']);
|
|
$this->interventions[$i]['totals']['benefitmoney_unscaled'] = $this->makeMoney((float)$this->interventions[$i]['totals']['benefit_unscaled']);
|
|
$this->interventions[$i]['totals']['net_benefitmoney_scaled'] = $this->makeMoney((float)$this->interventions[$i]['totals']['net_benefit_scaled']);
|
|
$this->interventions[$i]['totals']['net_benefitmoney_unscaled'] = $this->makeMoney((float)$this->interventions[$i]['totals']['net_benefit_unscaled']);
|
|
if (isset($this->interventions[$i]['items']))
|
|
{
|
|
$this->interventions[$i]['nr_found'] = sizeof($this->interventions[$i]['items']);
|
|
}
|
|
else
|
|
{
|
|
$this->interventions[$i]['nr_found'] = 0;
|
|
}
|
|
if (isset($this->interventions[$i]['not_found']))
|
|
{
|
|
$this->interventions[$i]['nr_not_found'] = sizeof($this->interventions[$i]['not_found']);
|
|
}
|
|
else
|
|
{
|
|
$this->interventions[$i]['nr_not_found'] = 0;
|
|
}
|
|
$i++;
|
|
} return true;
|
|
} $this->interventions = false;
|
|
}
|
|
|
|
public function makeMoney($number)
|
|
{
|
|
if (is_numeric($number))
|
|
{
|
|
$negativeFinderObj = new NegativeFinder(new Expression("$number"));
|
|
$negative = $negativeFinderObj->isItNegative() ? TRUE : FALSE;
|
|
}
|
|
else
|
|
{
|
|
throw new Exception('ERROR! ('.$number.') is not a number!');
|
|
}
|
|
|
|
if (!$negative)
|
|
{
|
|
$format = $this->company->currency_positivestyle;
|
|
$sign = '+';
|
|
}
|
|
else
|
|
{
|
|
$format = $this->company->currency_negativestyle;
|
|
$sign = '-';
|
|
$number = abs($number);
|
|
}
|
|
$setupNumber = number_format((float)$number, (int)$this->company->currency_decimalplace, $this->company->currency_decimalsymbol, ' '); //$this->company->currency_thousands TODO);
|
|
$search = array('{sign}', '{number}', '{symbol}');
|
|
$replace = array($sign, $setupNumber, $this->company->currency_symbol);
|
|
$moneyMade = str_replace ($search,$replace,$format);
|
|
|
|
return $moneyMade;
|
|
}
|
|
|
|
}
|