extranet/library/Finance/synthese.lib.php
2011-06-07 09:42:17 +00:00

233 lines
6.9 KiB
PHP

<?php
Class FormatDatas
{
/**
* Ont peut y rajouter des labelles pour completer la synthese.
*
* Respecter l'ordre ( ordre d'affichage ).
* @var
*/
protected $tabRatio = array(
'r5' => array('title' => 'CHIFFRE D\'AFFAIRES', 'div' => 1000, 'unit' => ' K€', 'evolution' => 'r6' ),
'r7' => array('title' => 'RESULTAT COURANT AVANT IMPOTS', 'div' => 1000, 'unit' => ' K€', 'evolution' => 'r8' ),
'r10' => array('title' => 'RESULTAT NET', 'div' => 1000, 'unit' => ' K€', 'evolution' => 'r11' ),
'r18' => array('title' => 'FONDS PROPRES', 'div' => 1000, 'unit' => ' K€', 'evolution' => 'r19' ),
'r22' => array('title' => 'TOTAL BILAN', 'div' => 1000, 'unit' => ' K€', 'evolution' => 'r23' ),
'r231' => array('title' => 'FONDS DE ROULEMENT', 'div' => 1000, 'unit' => ' K€', 'evolution' => 'r235'),
'r232' => array('title' => 'BESOIN EN FONDS DE ROULEMENT', 'div' => 1000, 'unit' => ' K€', 'evolution' => 'r236'),
'r249' => array('title' => 'TRESORERIE', 'div' => 1000, 'unit' => ' K€', 'evolution' => 'r254'),
'r24' => array('title' => 'EFFECTIF', 'div' => 1, 'unit' => ' Pers.', 'evolution' => 'r24' )
);
protected $datas = array();
protected $structure = array();
private $resultats;
private $evolutionsArray;
/**
* Merci de passer l'objet a ce niveau : BilansInfos->item
*
* @param unknown_type $resultats
*/
public function __construct($resultats, $evolutions)
{
$this->resultats = $resultats;
$this->evolutionsArray = $evolutions;
}
/**
* A utiliser avec précaution !
*
* format : 'id' => array(title => '', div => '', unit => '', evolution => '')
* @param Array $element
*/
public function addInRatioTab($id, $element)
{
$tab = array($id => $element);
$copy = $this->tabRatio;
$this->tabRatio = array_merge($copy, $tab);
}
public function constructStructure()
{
self::constructBaseLibele();
foreach ($this->datas as $libele => $title) {
foreach ($this->resultats as $item)
foreach ($item as $row) {
foreach($row as $champ => $valeur) {
if ($champ == 'dateCloture'){
$date = $valeur;
self::constructBaseDate($libele, $valeur);
}
if ($champ == 'typeBilan')
{
self::constructBaseType($libele, $date, $valeur);
}
}
}
}
print_r($this->datas);
}
/**
* Construction du premier etage Libeler
*/
private function constructBaseLibele()
{
foreach ($this->tabRatio as $libel => $valeur) {
$this->datas[$valeur['title']] = array();
}
}
/**
* Construction du deuxieme etage Dates
*
* @param $libeler precedent $libele
* @param date courente $date
*/
private function constructBaseDate($libel, $date)
{
if(!array_key_exists($date, $this->datas)) {
$this->datas[$libel][$date] = array();
}
}
/**
* Construction du troisieme etage Type
*
* @param libele precedent $libele
* @param date precedente $date
* @param type en cours $type
*/
private function constructBaseType($libele, $date, $type)
{
foreach ($this->resultats as $row) {
foreach($row as $champ => $valeur) {
if ($champ == 'dateCloture') {
if ($valeur == $date) {
$this->datas[$libele][$valeur][$type] = array();
}
}
}
}
}
/**
* Construction du quatrieme etage Items
*
* @param libele precedent $libele
* @param date precedente $date
* @param type precedent $type
* @param item precedent $item
* @param id de l'item dans le tabRatio $id
* @param id evolution dans tabRatio $idEvol
*/
private function constructBaseItem($libele, $date, $type, $item, $id, $idEvol)
{
if ($item->id == $id) {
$var = new stdClass();
$var->val = $item->val;
foreach ($this->evolutionsArray as $evol) {
if ($evol->id == $idEvol)
$var->evolution = $item->val;
}
$this->datas[$libele][$date][$type] = $var;
}
}
}
Class Synthese
{
/**
* Type du bilan N, C, A, S, B
*
* N : Normal
* C : Consolidé
* A : Assurance
* B : Banque
* S : Simplifié
*
* Ont garde une priorité sur les bilan de type S donc les type N deviennent type S !
* Donc il n'y a pas de type N dans la vue.
*
* @var unknown_type
*/
protected $typeBilan = array(
'N', 'C', 'A', 'B'
);
/**
* Les données correctement formaté par FormatData
*
* @var unknown_type
*/
protected $datas;
/**
* Les parametres courrant de l'objet
*
* @var unknown_type
*/
protected $currentTypeBilan;
protected $currentDate;
public function __construct($resultats, $evolutions) {
$this->data = new FormatDatas($resultats, $evolutions);
$this->data->constructStructure();
}
/**
* Permet de retourner des elements du tableau
* peut egalement savoir si l'element existe dans le tableau
*
* @param unknown_type $id
* @param unknown_type (existe, title, div, unit, evolution)
*/
public function getElementInSynthese($id, $action)
{
foreach ($this->tabRatio as $name => $element) {
if ($name == $id) {
switch ($action){
case 'exist':
return (true);
case 'title':
return($element['title']);
case 'div':
return ($element['div']);
case 'unit':
return ($element['unit']);
case 'evolution':
return ($element['evolution']);
default:
return ($element);
}
}
}
return (false);
}
/**
* Permet de switcher entre les bilans
*
* @param unknown_type $type
*/
protected function selectTypeBilan($type)
{
foreach($this->typeBilan as $typeBilan) {
if ($typeBilan == $type)
$this->currentTypeBilan = $type;
}
}
/**
* Permet de selectionnez d'autre dates.
*
* @param unknown_type $date
*/
protected function selectDateBilan($date)
{
$this->currentDate = $date;
}
}