Projet

Général

Profil

Anomalie #5931 » MONTREAL_DOSSIER__CLASS.php

Charles Bonnissent, 24/11/2015 19:22

 
<?php

namespace MONTREAL;

use \Dcp\AttributeIdentifiers\MONTREAL_DOSSIER as MONTREAL_DOSSIER_Attributes;
use Dcp\Ui\RenderConfigManager;

Class MONTREAL_DOSSIER extends \Dcp\Family\MONTREAL_BASE implements
\Dcp\Ui\IRenderConfigAccess
{


protected static $_sequence_name = "dossier_sequence";

public function postCreated()
{
$err = parent::postCreated();
if ($this->initid == $this->id) {
$err .= $this->setChrono();
}
return $err;
}

public function postStore()
{
$err = parent::postStore();
$this->synchronizeWithFinancier(true);
return $err;
}


public function changeToRelecture() {
error_log("try to change to relecture");
if ($this->getATag("redactionDone") && $this->getATag("financeDone")) {
$this->setState('mdwfl__e3', "", true, false);
//$this->modify(true, "state", true);
}
}

public function changeToValidated() {
$valideur = $this->getAttributeValue(MONTREAL_DOSSIER_Attributes::mtd_valideur);
foreach($valideur as $currentValideur) {
error_log($currentValideur);
if (!$this->getATag("validated" . $currentValideur)) {

return;
}
}
$this->setState('mdwfl__e6', "", true, false);
}

/**
* @param string $mode
* @param \Doc $document
*
* @return \Dcp\Ui\IRenderConfig
*/
public function getRenderConfig($mode, \Doc $document)
{
switch ($mode) {
case RenderConfigManager::CreateMode:
case RenderConfigManager::EditMode:
return new dossier_edit($this);
case RenderConfigManager::ViewMode:
return new dossier_view($this);
}

return null;
}

public function getCustomTitle()
{
if (!$this->initid) {
return ___("Created", "MONTREAL");
}
return "DOSSIER : " . str_pad(
$this->getAttributeValue(
MONTREAL_DOSSIER_Attributes::mtd_num_dossier
), 3, "0", STR_PAD_LEFT
);
}

public function synchronizeWithFinancier($noStore = false, $noFinancierStore = false)
{
$searchDoc = new \SearchDoc("", "MONTREAL_DOSSIER_FINANCIER");
$searchDoc->overrideViewControl();
$searchDoc->setObjectReturn(true);
$searchDoc->addFilter(
"mdf_linked_dossier = '%d'", $this->initid
);
$searchDoc->slice = 1;
$searchDoc->search();
$dossierFinancier = $searchDoc->getNextDoc();

if (!$dossierFinancier) {
return;
}

error_log("FOUND");

$this->disableEditControl();
//get value from financier
$this->setValue("mtd_financier",
$dossierFinancier->getAttributeValue("mtd_financier")
);
$this->setValue(
"mtd_finance_organisme",
$dossierFinancier->getAttributeValue("mtd_finance_organisme")
);
$this->setValue(
"mtd_finance_titre",
$dossierFinancier->getAttributeValue("mtd_finance_titre")
);
$this->setValue(
"mtd_finance_montant",
$dossierFinancier->getAttributeValue("mtd_finance_montant")
);
$this->setValue(
"mtd_finance_soutient",
$dossierFinancier->getAttributeValue("mtd_finance_soutient")
);
$this->setValue(
"mtd_finance_simon",
$dossierFinancier->getAttributeValue("mtd_finance_simon")
);
if (!$noStore) {
error_log("UPDATE DOSSIER");
error_log($this->modify(true, true));
}
$this->enableEditControl();
//set values to dossier financier
$dossierFinancier->disableEditControl();
$dossierFinancier->transfertValuesFrom($this);
if (!$noFinancierStore) {
error_log("UPDATE FINANCIER");
$dossierFinancier->computeDProfil();
$dossierFinancier->modify(true, "", true);

}
$dossierFinancier->enableEditControl();
}

public function checkConseilDate($date)
{
if ($this->state === "mdwfl__e1") {
return $this->isFutureDate($date);
}
}

public function generateODT() {
$path = $this->viewDoc("MONTREAL:templateDossier.odt:B");
error_log($path);
$info = null;
require_once "FDL/Lib.Vault.php";
convertFile($path, 'pdfa', $path.".pdf", $info);
$this->setFile("mtd_ordre_jour", $path.".pdf", "ordre_jour.pdf");
$this->store();
}


protected function setChrono()
{
$err = "";
$num = $this->getNextSequenceNumber();
$this->disableEditControl();
$this->setAttributeValue(
MONTREAL_DOSSIER_Attributes::mtd_num_dossier, $num
);
$err .= $this->store();
$this->enableEditControl();
return $err;
}

/**
* Get the next Sequence Number
*
* @return string or boolean return false if no sequence
*/
protected function getNextSequenceNumber()
{
$number = false;
$sequence = static::$_sequence_name;
if ($sequence) {
$res = pg_exec(
$this->init_dbid(),
"select nextval ('" . static::$_sequence_name . "');"
);
$arr = pg_fetch_array($res, 0);
$number = sprintf("%03d", $arr[0]);
}
return $number;
}

/**
* setSqlInit
*
*/
protected function setSQLInit()
{
$sequence = static::$_sequence_name;
if ($sequence) {
$this->sqlinit = "create sequence $sequence start 1;";
}
}

}
(2-2/8)