2013-11-05 11:18:30 +00:00
|
|
|
<?php
|
|
|
|
require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'Infogreffe.php';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Infogreffe : Document Bilan
|
|
|
|
*/
|
|
|
|
class Metier_Infogreffe_Bi extends Metier_Infogreffe
|
|
|
|
{
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Db Adapter
|
|
|
|
* @var Zend_Db_Adapter_Abstract
|
|
|
|
*/
|
|
|
|
public $db;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* consolides|sociaux
|
|
|
|
* @var string
|
|
|
|
*/
|
|
|
|
public $type_comptes;
|
|
|
|
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
* @param string $siren
|
|
|
|
*/
|
|
|
|
public function __construct($siren, $db = null)
|
|
|
|
{
|
|
|
|
parent::__construct();
|
|
|
|
|
|
|
|
//Set type
|
|
|
|
$this->type_document = 'BI';
|
|
|
|
|
|
|
|
//Set Siren
|
|
|
|
$this->siren = $siren;
|
|
|
|
|
|
|
|
//Get defaut database adapter
|
|
|
|
if ($db === null) {
|
|
|
|
$this->db = Zend_Db_Table_Abstract::getDefaultAdapter();
|
|
|
|
} else {
|
|
|
|
$this->db = $db;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2013-12-26 14:25:59 +00:00
|
|
|
*
|
2013-11-05 11:18:30 +00:00
|
|
|
* @param $onlyDb
|
|
|
|
* @return array
|
|
|
|
*/
|
|
|
|
public function getList($onlyDb = false)
|
|
|
|
{
|
|
|
|
$this->mode_diffusion = 'XL';
|
|
|
|
$this->reference_client = 'list-' . $this->siren;
|
|
|
|
|
2014-02-25 16:33:07 +00:00
|
|
|
$bilansM = new Application_Model_JoGreffesBilans();
|
|
|
|
|
2013-11-05 11:18:30 +00:00
|
|
|
//Requete WebService
|
|
|
|
$bilansXML = null;
|
|
|
|
if ( $onlyDb === false ) {
|
|
|
|
//Infogreffe webservice
|
2013-12-26 14:25:59 +00:00
|
|
|
try {
|
|
|
|
$xml = $this->callRequest();
|
2014-06-06 15:25:10 +00:00
|
|
|
$requestOk = true;
|
2013-12-26 14:25:59 +00:00
|
|
|
} catch( Exception $e ) {
|
2014-06-06 15:25:10 +00:00
|
|
|
$requestOk = false;
|
2013-12-26 14:25:59 +00:00
|
|
|
//@todo : get error message
|
|
|
|
}
|
2014-06-06 15:25:10 +00:00
|
|
|
if ( $requestOk === true ) {
|
|
|
|
//Set All line state to 0
|
|
|
|
try {
|
|
|
|
$bilansM->update(array('actif' => 0), 'siren='.$this->siren);
|
|
|
|
} catch(Zend_Db_Exception $e) {
|
|
|
|
|
|
|
|
}
|
|
|
|
$bilansXML = $this->formatList($xml);
|
|
|
|
}
|
2013-11-05 11:18:30 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
//Lecture de la base de données
|
|
|
|
$sql = $bilansM->select()
|
2014-04-10 15:47:27 +00:00
|
|
|
->from($bilansM, array(
|
|
|
|
'siren',
|
|
|
|
'numRC',
|
|
|
|
'LPAD(numGreffe,4,0) AS numGreffe',
|
|
|
|
'pdfLink',
|
|
|
|
'pdfSize',
|
|
|
|
'pdfPage',
|
|
|
|
'millesime',
|
|
|
|
'num_depot',
|
|
|
|
'date_cloture',
|
|
|
|
'type_comptes',
|
|
|
|
'mode_diffusion',
|
|
|
|
'duree_exercice',
|
|
|
|
'saisie_date',
|
|
|
|
'saisie_code',
|
|
|
|
'pages',
|
|
|
|
))
|
2013-11-05 11:18:30 +00:00
|
|
|
->where('siren=?', $this->siren)
|
2014-02-25 16:33:07 +00:00
|
|
|
->where('actif=1')
|
|
|
|
->order('date_cloture DESC')
|
|
|
|
->order('num_depot DESC')
|
|
|
|
->order('dateInsert DESC');
|
|
|
|
//GROUP BY type_comptes, date_cloture AND ORDER BY num_depot DESC
|
2013-11-05 11:18:30 +00:00
|
|
|
$rows = $bilansM->fetchAll($sql);
|
|
|
|
|
|
|
|
$bilans = array();
|
|
|
|
if ( count($rows)>0 ) {
|
|
|
|
foreach ( $rows as $row ) {
|
|
|
|
$item = new stdClass();
|
|
|
|
$item->File = $row->pdfLink;
|
|
|
|
$item->FileSize = $row->pdfSize;
|
|
|
|
$item->NumberOfPages = $row->pdfPage;
|
|
|
|
$item->Millesime = $row->millesime;
|
|
|
|
$item->NumDepot = $row->num_depot;
|
|
|
|
$item->DateCloture = $row->date_cloture;
|
2014-02-25 16:33:07 +00:00
|
|
|
if ( empty($row->type_comptes) ) {
|
2014-01-16 10:47:25 +00:00
|
|
|
$item->Type = 'sociaux';
|
|
|
|
} else {
|
|
|
|
$item->Type = $row->type_comptes;
|
|
|
|
}
|
2013-11-05 11:18:30 +00:00
|
|
|
$mode_diffusion = explode(',', $row->mode_diffusion);
|
2014-01-16 10:47:25 +00:00
|
|
|
|
2014-02-07 16:14:36 +00:00
|
|
|
if (in_array('T', $mode_diffusion) || !empty($item->File)) {
|
2013-11-05 11:18:30 +00:00
|
|
|
$item->ModeDiffusion = 'T';
|
|
|
|
} elseif (in_array('C',$mode_diffusion)) {
|
|
|
|
$item->ModeDiffusion = 'C';
|
|
|
|
} else {
|
|
|
|
$item->ModeDiffusion = '';
|
|
|
|
}
|
|
|
|
$item->DureeExercice = $row->duree_exercice;
|
2014-02-07 16:14:36 +00:00
|
|
|
$item->SaisieDate = $row->saisie_date;
|
|
|
|
$item->SaisieCode = $row->saisie_code;
|
|
|
|
switch ( $row->saisie_code ) {
|
|
|
|
case '00': $item->SaisieLabel = "Bilan saisi sans anomalie"; break;
|
|
|
|
case '01': $item->SaisieLabel = "Bilan saisi avec des incohérences comptables à la source du document (issues du remettant)"; break;
|
|
|
|
case '02': $item->SaisieLabel = "Bilan avec Actif, Passif ou Compte de Résultat nul"; break;
|
|
|
|
case '03': $item->SaisieLabel = "Bilan incomplet (des pages manquent)"; break;
|
|
|
|
case '04': $item->SaisieLabel = "Bilan complet non détaillé (seuls les totaux et sous totaux sont renseignés)"; break;
|
|
|
|
case '05': $item->SaisieLabel = "Bilan reçu en double exemplaire"; break;
|
|
|
|
case '06': $item->SaisieLabel = "Bilan intermédiaire - Situation provisoire"; break;
|
|
|
|
case '07': $item->SaisieLabel = "Bilan illisible"; break;
|
|
|
|
case 'A7': $item->SaisieLabel = "Bilan illisible, présentant un cadre gris très foncés (dans lesquels sont inscrits en général les totaux)"; break;
|
|
|
|
case 'B7': $item->SaisieLabel = "Bilan manuscrits"; break;
|
|
|
|
case 'C7': $item->SaisieLabel = "Bilan illisible, présentant des caractères trop gras"; break;
|
|
|
|
case 'D7': $item->SaisieLabel = "Bilan scanné en biais ou qui présentent des pages rognées"; break;
|
|
|
|
case 'E7': $item->SaisieLabel = "Bilan numérisés trop clairement (comme une imprimante dont la cartouche est presque vide)"; break;
|
|
|
|
case 'F7': $item->SaisieLabel = "Bilan illisible"; break;
|
|
|
|
case '08': $item->SaisieLabel = "Bilan consolidé"; break;
|
|
|
|
case '09': $item->SaisieLabel = "Déclaration d'impôts"; break;
|
|
|
|
case '10': $item->SaisieLabel = "Document autre que bilan"; break;
|
|
|
|
case '11': $item->SaisieLabel = "Bilan de clôture de liquidation"; break;
|
|
|
|
case '12': $item->SaisieLabel = "Bilan de Société financière"; break;
|
|
|
|
case '13': $item->SaisieLabel = "Bilan de Société d'assurance"; break;
|
|
|
|
case '14': $item->SaisieLabel = "Bilan de Société immobilière"; break;
|
|
|
|
case '15': $item->SaisieLabel = "Bilan de Société étrangère"; break;
|
|
|
|
default: $item->SaisieLabel = ""; break;
|
|
|
|
}
|
2013-11-05 11:18:30 +00:00
|
|
|
$bilans[] = $item;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return $bilans;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Download file
|
|
|
|
* @param string $dateCloture
|
|
|
|
* Format AAAA-MM-DD
|
|
|
|
* @param string $type
|
|
|
|
* sociaux ou consolides
|
2014-02-07 16:14:36 +00:00
|
|
|
* @params int $orderId
|
|
|
|
* Id de commande pour l'enregistrement dans la table de gestion
|
2013-11-05 11:18:30 +00:00
|
|
|
* @throws Exception
|
|
|
|
* @return string
|
|
|
|
* Return path (not complete) and filename
|
|
|
|
*/
|
2014-02-07 16:14:36 +00:00
|
|
|
public function getCommandeT($dateCloture = null, $type = 'sociaux', $orderId = null)
|
2013-11-05 11:18:30 +00:00
|
|
|
{
|
|
|
|
//Lire dans la base de données
|
|
|
|
$bilansM = new Application_Model_JoGreffesBilans();
|
|
|
|
$sql = $bilansM->select()
|
2014-04-10 15:47:27 +00:00
|
|
|
->from($bilansM, array(
|
|
|
|
'siren',
|
|
|
|
'numRC',
|
|
|
|
'LPAD(numGreffe,4,0) AS numGreffe',
|
|
|
|
'pdfLink',
|
|
|
|
'millesime',
|
|
|
|
'num_depot',
|
|
|
|
'date_cloture',
|
|
|
|
'type_comptes',
|
|
|
|
))
|
2013-11-05 11:18:30 +00:00
|
|
|
->where('siren=?', $this->siren)
|
|
|
|
->where('date_cloture=?', $dateCloture);
|
|
|
|
if ( $type == 'sociaux' || $type == '' ) {
|
2014-02-07 16:14:36 +00:00
|
|
|
$sql->where("(type_comptes='sociaux' OR type_comptes='')");
|
2013-11-05 11:18:30 +00:00
|
|
|
} else {
|
2014-02-07 16:14:36 +00:00
|
|
|
$sql->where('type_comptes=?',$type);
|
2013-11-05 11:18:30 +00:00
|
|
|
}
|
2014-02-25 16:33:07 +00:00
|
|
|
$sql->order('dateInsert DESC')->order('num_depot DESC')->limit(1);
|
2014-02-07 16:14:36 +00:00
|
|
|
|
2013-11-05 11:18:30 +00:00
|
|
|
$row = $bilansM->fetchRow($sql);
|
|
|
|
if ( null === $row ) {
|
2014-02-07 16:14:36 +00:00
|
|
|
throw new Exception("Element doesn't exist");
|
2013-11-05 11:18:30 +00:00
|
|
|
}
|
|
|
|
|
2014-02-25 16:33:07 +00:00
|
|
|
$this->mode_diffusion = 'T';
|
|
|
|
$this->reference_client = 'T'.date('YmdHis');
|
|
|
|
$this->greffe = $row->numGreffe;
|
|
|
|
$this->dossier_millesime = substr($row->numRC,0,2);
|
|
|
|
$this->dossier_statut = substr($row->numRC,2,1);
|
|
|
|
$this->dossier_chrono = substr($row->numRC,3);
|
|
|
|
$this->num_depot = $row->num_depot;
|
|
|
|
$this->date_cloture = $row->date_cloture;
|
2014-03-04 14:18:05 +00:00
|
|
|
$this->type_comptes = $row->type_comptes;
|
2014-02-25 16:33:07 +00:00
|
|
|
|
|
|
|
//Set the filename
|
|
|
|
$filename = $this->getFilePath($type, $dateCloture) . '/' . $this->getFileName($type, $dateCloture);
|
|
|
|
|
2013-11-05 11:18:30 +00:00
|
|
|
if ($row->pdfLink != '') {
|
|
|
|
|
|
|
|
//Check if filename exist
|
2014-02-07 16:14:36 +00:00
|
|
|
if ( !file_exists($this->config->storage->path . '/' . $filename) ) {
|
2014-06-06 15:25:10 +00:00
|
|
|
throw new Exception('File not found', 'INT');
|
2013-11-05 11:18:30 +00:00
|
|
|
}
|
|
|
|
|
2014-03-04 14:18:05 +00:00
|
|
|
} elseif ( file_exists($this->config->storage->path . '/' . $filename) ) {
|
2013-11-05 11:18:30 +00:00
|
|
|
|
2014-02-25 16:33:07 +00:00
|
|
|
//Analyser le fichier - Nombre de page et taille
|
|
|
|
$infos = $this->pdfInfos($this->config->storage->path . '/' . $filename);
|
|
|
|
|
|
|
|
//Enregistrer les infos du fichier dans la base de données
|
|
|
|
if (false !== $infos) {
|
|
|
|
$this->dbSetFile(basename($filename), $infos['size'], $infos['pages'], $infos['version']);
|
|
|
|
} else {
|
|
|
|
$this->dbSetFile(basename($filename));
|
|
|
|
}
|
|
|
|
|
|
|
|
} else {
|
2013-11-05 11:18:30 +00:00
|
|
|
|
|
|
|
try {
|
|
|
|
$xml = $this->callRequest();
|
|
|
|
} catch(Exception $e) {
|
|
|
|
throw new Exception($e->getMessage(), $e->getCode());
|
|
|
|
}
|
|
|
|
|
|
|
|
$bilan = $this->formatItem($xml);
|
|
|
|
$url = $bilan['url_acces'];
|
2014-02-07 16:14:36 +00:00
|
|
|
if ( empty($url) ) {
|
2013-11-05 11:18:30 +00:00
|
|
|
throw new Exception('File url not given');
|
|
|
|
}
|
|
|
|
|
2014-02-07 16:14:36 +00:00
|
|
|
if ( $orderId !== null ) {
|
|
|
|
$commandeM = new Application_Model_Sdv1GreffeCommandesBi();
|
|
|
|
$commandeM->update(array(
|
|
|
|
'cmdUrl'=> $url,
|
|
|
|
'dateCommande' => date('YmdHis'),
|
|
|
|
), 'id='.$orderId);
|
|
|
|
}
|
|
|
|
|
2013-11-05 11:18:30 +00:00
|
|
|
//Récupérer le fichier
|
|
|
|
$getfile = $this->download($url, $filename);
|
|
|
|
|
|
|
|
//Analyser le fichier - Nombre de page et taille
|
|
|
|
$infos = $this->pdfInfos($getfile);
|
|
|
|
|
|
|
|
//Enregistrer les infos du fichier dans la base de données
|
|
|
|
if (false !== $infos) {
|
2014-02-25 16:33:07 +00:00
|
|
|
$this->dbSetFile(basename($filename), $infos['size'], $infos['pages'], $infos['version']);
|
|
|
|
} else {
|
|
|
|
$this->dbSetFile(basename($filename));
|
2013-11-05 11:18:30 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return $filename;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @todo : Vérifier fonctionnement
|
|
|
|
* @param string $dateCloture
|
|
|
|
* @param string $type
|
|
|
|
* @param string $reference
|
|
|
|
* @throws Exception
|
|
|
|
* @return boolean
|
|
|
|
*/
|
|
|
|
public function getCommandeC($dateCloture = null, $type = 'sociaux', $reference = '')
|
|
|
|
{
|
|
|
|
$this->mode_diffusion = 'C';
|
|
|
|
|
|
|
|
//Lire dans la base de données
|
|
|
|
$bilansM = new Application_Model_JoGreffesBilans();
|
|
|
|
$sql = $bilansM->select()
|
2014-04-10 15:47:27 +00:00
|
|
|
->from($bilansM, array(
|
|
|
|
'siren',
|
|
|
|
'numRC',
|
|
|
|
'LPAD(numGreffe,4,0) AS numGreffe',
|
|
|
|
'pdfLink',
|
|
|
|
'millesime',
|
|
|
|
'num_depot',
|
|
|
|
'date_cloture',
|
|
|
|
'type_comptes',
|
|
|
|
))
|
2013-11-05 11:18:30 +00:00
|
|
|
->where('siren=?', $this->siren)
|
|
|
|
->where('date_cloture=?', $dateCloture);
|
|
|
|
if ($type=='sociaux') {
|
2014-02-07 16:14:36 +00:00
|
|
|
$sql->where("(type_comptes='sociaux' OR type_comptes='')");
|
2013-11-05 11:18:30 +00:00
|
|
|
} else {
|
2014-02-07 16:14:36 +00:00
|
|
|
$sql->where('type_comptes=?',$type);
|
2013-11-05 11:18:30 +00:00
|
|
|
}
|
|
|
|
$row = $bilansM->fetchRow($sql);
|
|
|
|
if ( null === $row ) {
|
|
|
|
throw new Exception('Not exist');
|
|
|
|
}
|
|
|
|
|
|
|
|
$this->reference_client = $reference;
|
|
|
|
|
|
|
|
//Générer les paramètres de commande depuis la base de données
|
|
|
|
$this->greffe = $row->numGreffe;
|
|
|
|
$this->dossier_millesime = substr($row->numRC,0,2);
|
|
|
|
$this->dossier_statut = substr($row->numRC,2,1);
|
|
|
|
$this->dossier_chrono = substr($row->numRC,3);
|
|
|
|
$this->num_depot = $row->num_depot;
|
|
|
|
$this->date_cloture = $row->date_cloture;
|
|
|
|
|
|
|
|
//Faire la requete
|
|
|
|
try {
|
|
|
|
$xml = $this->callRequest();
|
|
|
|
} catch(Exception $e) {
|
2014-02-07 16:14:36 +00:00
|
|
|
//La prise en charge du courrier est effective
|
|
|
|
if ( $e->getCode() != 17 ) {
|
|
|
|
throw new Exception($e->getMessage());
|
|
|
|
}
|
2013-11-05 11:18:30 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Name of file
|
|
|
|
* @param string $type
|
|
|
|
* @param string $dateCloture
|
2014-02-25 16:33:07 +00:00
|
|
|
* Format : AAAA-MM-JJ
|
2013-11-05 11:18:30 +00:00
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
public function getFileName($type, $dateCloture)
|
|
|
|
{
|
|
|
|
if ($type=='') {
|
|
|
|
$type = 'sociaux';
|
|
|
|
}
|
2014-02-07 16:14:36 +00:00
|
|
|
$date = substr($dateCloture,0,4).substr($dateCloture,5,2).substr($dateCloture,8,2);
|
|
|
|
|
|
|
|
return 'bilan-' . $this->siren . '-' . $type . '-' . $date . '.pdf';
|
2013-11-05 11:18:30 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Path of file
|
|
|
|
* @param string $type
|
|
|
|
* @param string $dateCloture
|
2014-03-26 15:42:52 +00:00
|
|
|
* Format : AAAA-MM-JJ
|
2013-11-05 11:18:30 +00:00
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
public function getFilePath($type, $dateCloture)
|
|
|
|
{
|
|
|
|
if ($type=='') {
|
|
|
|
$type = 'sociaux';
|
|
|
|
}
|
2014-02-07 16:14:36 +00:00
|
|
|
$dir = 'bilans' . '/' . $type . '/' . substr($dateCloture,0,4);
|
|
|
|
if ( !file_exists( $this->config->storage->path . '/' . $dir ) ) {
|
|
|
|
mkdir($this->config->storage->path . '/' . $dir, 0777, true);
|
|
|
|
}
|
|
|
|
return $dir;
|
2013-11-05 11:18:30 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Format XML to Array for a list of items
|
|
|
|
* @param string $xml
|
|
|
|
* @return array
|
|
|
|
*/
|
|
|
|
protected function formatList($xml)
|
|
|
|
{
|
|
|
|
//Parse XML to make an array
|
|
|
|
$doc = new DOMDocument();
|
|
|
|
$doc->loadXML($xml);
|
|
|
|
$liste_bilan_complet = $doc->getElementsByTagName('liste_bilan_complet')->item(0);
|
|
|
|
$bilan_complet = $liste_bilan_complet->getElementsByTagName('bilan_complet');
|
|
|
|
|
|
|
|
$bilans = array();
|
|
|
|
if ( count($bilan_complet)>0 )
|
|
|
|
{
|
|
|
|
foreach( $bilan_complet as $element )
|
|
|
|
{
|
|
|
|
$bilan = array();
|
|
|
|
$num_gest = $element->getElementsByTagName('num_gest')->item(0);
|
|
|
|
$bilan['num_gest']['greffe'] = $num_gest->getElementsByTagName('greffe')->item(0)->nodeValue;
|
|
|
|
$bilan['num_gest']['dossier_millesime'] = $num_gest->getElementsByTagName('dossier_millesime')->item(0)->nodeValue;
|
|
|
|
$bilan['num_gest']['dossier_statut'] = $num_gest->getElementsByTagName('dossier_statut')->item(0)->nodeValue;
|
|
|
|
$bilan['num_gest']['dossier_chrono'] = $num_gest->getElementsByTagName('dossier_chrono')->item(0)->nodeValue;
|
|
|
|
$bilan['dossier_millesime'] = $num_gest->getElementsByTagName('dossier_millesime')->item(0)->nodeValue;
|
|
|
|
$bilan['dossier_statut'] = $num_gest->getElementsByTagName('dossier_statut')->item(0)->nodeValue;
|
|
|
|
$bilan['dossier_chrono'] = $num_gest->getElementsByTagName('dossier_chrono')->item(0)->nodeValue;
|
|
|
|
$bilan['num_siren'] = $element->getElementsByTagName('num_siren')->item(0)->nodeValue;
|
|
|
|
$bilan['date_cloture'] = $element->getElementsByTagName('date_cloture')->item(0)->nodeValue;
|
|
|
|
$bilan['date_cloture_iso'] = $element->getElementsByTagName('date_cloture_iso')->item(0)->nodeValue;
|
|
|
|
$bilan['millesime'] = $element->getElementsByTagName('millesime')->item(0)->nodeValue;
|
|
|
|
$bilan['num_depot'] = $element->getElementsByTagName('num_depot')->item(0)->nodeValue;
|
|
|
|
$bilan['type_comptes'] = $element->getElementsByTagName('type_comptes')->item(0)->nodeValue;
|
|
|
|
$mode_diffusion = $element->getElementsByTagName('mode_diffusion')->item(0)->getElementsByTagName('mode');
|
|
|
|
foreach($mode_diffusion as $mode)
|
|
|
|
{
|
|
|
|
$bilan['mode_diffusion'][] = $mode->getAttribute('type');
|
|
|
|
}
|
|
|
|
|
|
|
|
//Enregistrer dans la bdd
|
|
|
|
$this->dbUpdateItem($bilan);
|
|
|
|
|
|
|
|
//Génération de l'index pour le tri
|
|
|
|
$date = $bilan['date_cloture_iso'];
|
|
|
|
if( !empty($date) )
|
|
|
|
{
|
|
|
|
$key = substr($date,0,4).substr($date,5,2).substr($date,8,2).'-'.$bilan['num_depot'];
|
|
|
|
//Affectation liste générale avec un index permettant le tri
|
|
|
|
$bilans[$key] = $bilan;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
krsort($bilans);
|
|
|
|
return $bilans;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Format XML to Array for one item
|
|
|
|
* @param string $xml
|
|
|
|
* @return array
|
|
|
|
*/
|
|
|
|
protected function formatItem($xml)
|
|
|
|
{
|
|
|
|
$doc = new DOMDocument();
|
|
|
|
$doc->loadXML($xml);
|
|
|
|
$bilan_complet = $doc->getElementsByTagName('bilan_complet')->item(0);
|
|
|
|
$bilan = array();
|
|
|
|
$bilan['num_gest'] = array();
|
|
|
|
$num_gest = $bilan_complet->getElementsByTagName('num_gest')->item(0);
|
|
|
|
$bilan['num_gest']['greffe'] = $num_gest->getElementsByTagName('greffe')->item(0)->nodeValue;
|
|
|
|
$bilan['num_gest']['dossier_millesime'] = $num_gest->getElementsByTagName('dossier_millesime')->item(0)->nodeValue;
|
|
|
|
$bilan['num_gest']['dossier_statut'] = $num_gest->getElementsByTagName('dossier_statut')->item(0)->nodeValue;
|
|
|
|
$bilan['num_gest']['dossier_chrono'] = $num_gest->getElementsByTagName('dossier_chrono')->item(0)->nodeValue;
|
|
|
|
$bilan['num_siren'] = $bilan_complet->getElementsByTagName('num_siren')->item(0)->nodeValue;
|
|
|
|
$bilan['date_cloture'] = $bilan_complet->getElementsByTagName('date_cloture')->item(0)->nodeValue;
|
|
|
|
$bilan['date_cloture_iso'] = $bilan_complet->getElementsByTagName('date_cloture_iso')->item(0)->nodeValue;
|
|
|
|
$bilan['millesime'] = $bilan_complet->getElementsByTagName('millesime')->item(0)->nodeValue;
|
|
|
|
$bilan['num_depot'] = $bilan_complet->getElementsByTagName('num_depot')->item(0)->nodeValue;
|
|
|
|
$bilan['type_comptes'] = $bilan_complet->getElementsByTagName('type_comptes')->item(0)->nodeValue;
|
|
|
|
$bilan['url_acces'] = $bilan_complet->getElementsByTagName('url_acces')->item(0)->nodeValue;
|
|
|
|
|
|
|
|
return $bilan;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Update informations about an item in database
|
|
|
|
* @param array $list
|
|
|
|
* @return boolean
|
|
|
|
*/
|
|
|
|
protected function dbUpdateItem($list)
|
|
|
|
{
|
|
|
|
//Insert or Update
|
|
|
|
$data = array(
|
|
|
|
'siren' => $list['num_siren'],
|
|
|
|
'numRC' => $list['num_gest']['dossier_millesime'].
|
|
|
|
$list['num_gest']['dossier_statut'].$list['num_gest']['dossier_chrono'],
|
|
|
|
//'numRC2' => '',
|
2014-02-25 16:33:07 +00:00
|
|
|
'numGreffe' => intval($list['num_gest']['greffe']),
|
2013-11-05 11:18:30 +00:00
|
|
|
'millesime' => $list['millesime'],
|
|
|
|
'num_depot' => $list['num_depot'],
|
|
|
|
'date_cloture' => $list['date_cloture_iso'],
|
|
|
|
'type_comptes' => $list['type_comptes'],
|
|
|
|
'mode_diffusion' => join(',',$list['mode_diffusion']),
|
2014-02-25 16:33:07 +00:00
|
|
|
'actif' => 1,
|
2013-11-05 11:18:30 +00:00
|
|
|
);
|
|
|
|
|
2014-02-25 16:33:07 +00:00
|
|
|
$this->db->getProfiler()->setEnabled(true);
|
|
|
|
|
2013-11-05 11:18:30 +00:00
|
|
|
try {
|
|
|
|
$bilanM = new Application_Model_JoGreffesBilans();
|
|
|
|
$sql = $bilanM->select()
|
|
|
|
->where('siren=?', $this->siren)
|
2014-02-25 16:33:07 +00:00
|
|
|
->where('num_depot=?', $list['num_depot'])
|
2013-12-26 14:25:59 +00:00
|
|
|
->where('date_cloture=?', $list['date_cloture_iso'])
|
2014-02-25 16:33:07 +00:00
|
|
|
//->where('type_comptes=?', $list['type_comptes'])
|
|
|
|
->order('dateInsert ASC');
|
|
|
|
$rows = $bilanM->fetchAll($sql);
|
2013-11-05 11:18:30 +00:00
|
|
|
} catch(Zend_Db_Exception $e) {
|
2014-02-25 16:33:07 +00:00
|
|
|
/*echo $query = $this->db->getProfiler()->getLastQueryProfile()->getQuery();
|
|
|
|
echo "\n";
|
|
|
|
$queryParams = $this->db->getProfiler()->getLastQueryProfile()->getQueryParams();
|
|
|
|
print_r($queryParams);
|
|
|
|
echo "\n";*/
|
2013-11-05 11:18:30 +00:00
|
|
|
throw new Exception($e->getMessage());
|
|
|
|
}
|
|
|
|
|
2014-02-25 16:33:07 +00:00
|
|
|
$this->db->getProfiler()->setEnabled(false);
|
|
|
|
|
|
|
|
if ( count($rows) == 0 ) {
|
|
|
|
//Add dateInsert
|
|
|
|
$data['dateInsert'] = date('YmdHis');
|
|
|
|
try {
|
|
|
|
$result = $bilanM->insert($data);
|
|
|
|
} catch(Zend_Exception $e) {
|
|
|
|
throw new Exception($e->getMessage());
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
//Correct multiple item
|
|
|
|
$item = $rows[0];
|
|
|
|
if ( count($rows) > 1 ) {
|
|
|
|
try {
|
|
|
|
$result = $bilanM->delete(array(
|
|
|
|
$bilanM->getAdapter()->quoteInto('siren=?', $this->siren),
|
|
|
|
$bilanM->getAdapter()->quoteInto('num_depot=?', $list['num_depot']),
|
|
|
|
$bilanM->getAdapter()->quoteInto('date_cloture=?', $list['date_cloture_iso']),
|
|
|
|
$bilanM->getAdapter()->quoteInto('type_comptes=?', $list['type_comptes']),
|
|
|
|
'id!='.$item->id,
|
|
|
|
));
|
|
|
|
} catch(Zend_Exception $e) {
|
|
|
|
throw new Exception($e->getMessage());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
try {
|
|
|
|
$result = $bilanM->update($data, 'id='.$item->id);
|
|
|
|
} catch(Zend_Exception $e) {
|
|
|
|
throw new Exception($e->getMessage());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-11-05 11:18:30 +00:00
|
|
|
if ($result) {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Set file informations in database
|
|
|
|
* @param string $filename
|
|
|
|
* @param int $size
|
|
|
|
* @param int $numberOfPage
|
|
|
|
* @param string $version
|
|
|
|
* @return boolean
|
|
|
|
*/
|
2014-02-25 16:33:07 +00:00
|
|
|
public function dbSetFile($filename, $size = 0, $numberOfPage = '', $version = '')
|
2013-11-05 11:18:30 +00:00
|
|
|
{
|
|
|
|
$data = array(
|
|
|
|
'pdfLink' => $filename,
|
|
|
|
'pdfSize' => $size,
|
|
|
|
'pdfPage' => $numberOfPage,
|
|
|
|
'pdfVer' => $version,
|
|
|
|
'pdfDate' => date('Ymd'),
|
|
|
|
);
|
|
|
|
|
|
|
|
$where = array(
|
|
|
|
'siren='.$this->siren,
|
2014-02-25 16:33:07 +00:00
|
|
|
'date_cloture="'.$this->date_cloture.'"',
|
2013-11-05 11:18:30 +00:00
|
|
|
'type_comptes="'.$this->type_comptes.'"',
|
|
|
|
);
|
|
|
|
|
|
|
|
try {
|
|
|
|
$bilanM = new Application_Model_JoGreffesBilans();
|
|
|
|
$result = $bilanM->update($data, $where);
|
|
|
|
} catch(Zend_Db_Adapter_Exception $e) {
|
|
|
|
throw new Exception($e->getMessage());
|
|
|
|
} catch(Zend_Db_Exception $e) {
|
|
|
|
throw new Exception($e->getMessage());
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($result) {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|