webservice/library/WsScore/Order/v0.1/Service.php
2016-07-11 11:41:23 +02:00

604 lines
18 KiB
PHP

<?php
require_once __DIR__ . '/Types.php';
class Order extends Scores_Ws_Server
{
/**
* Financial account : Placing an order to have the entered numbers in the database
* @param string $siren
* Le siren de l'entité
* @param string $date
* Date de cloture du bilan
* @param string $type
* N:Normal, S:Simplifié, C:Consolidé
* @param string $source
* Code partenaire fourni pour l'envoi de bilan PDF
* @param integer $private
* 1 si le bilan doit être considére comme privé
* @throws SoapFault
* @return string
* Retourne la référence de commande
*/
public function setBilanInput($siren, $date, $type, $source, $private = 0)
{
$this->authenticate();
$this->permission('UPLOADBILAN');
// Check source
if (in_array($source, array('extranet', 'infogreffe'))) {
}
// Check Siren
else {
if (strlen($siren) != 9 || intval($siren) == 0) {
throw new SoapFault('ERR', "SIREN invalid");
}
$iInsee = new Metier_Insee_MInsee();
$result = $iInsee->getIdentiteLight($siren);
if (count($result) == 0) {
throw new SoapFault('ERR', "SIREN invalid");
}
}
$refCommande = uniqid();
$data = array(
'refCommande' => $refCommande,
'siren' => $siren,
'userId' => $this->User->id,
'bilanConfidentiel' => $private,
'bilanSource' => $source,
'bilanCloture' => $date,
'bilanType' => $type,
'dateInsert' => date('YmdHis'),
);
try {
$commandeM = new Application_Model_Sdv1OrderBilanInput();
$commandeM->insert($data);
return $refCommande;
} catch (Zend_Db_Exception $e) {
if ($this->User->idClient==1) {
throw new SoapFault('ERR', $e->getMessage());
} else {
throw new SoapFault('ERR', "Application error");
}
}
}
/**
* Send file content as base64
* @param string $ref
* Order reference
* @param string $file
* Base64 string of file content
* @param string $hash
* MD5 du contenu du fichier
* @throws SoapFault
* @return boolean
*/
public function setBilanInputContent($ref, $file, $hash = null)
{
$this->authenticate();
$this->permission('UPLOADBILAN');
// Ref exist
$commandeM = new Application_Model_Sdv1OrderBilanInput();
$commandeSql = $commandeM->select()->where('refCommande=?', $ref);
$commandeResult = $commandeM->fetchRow($commandeSql);
if ($commandeResult === false) {
throw new SoapFault('ERR', "Ref not exist");
}
// Generate filename
$siren = $commandeResult->siren;
$type = $commandeResult->type;
$cloture = $commandeResult->bilanCloture;
$ref = $commandeResult->refCommande;
$filename = $siren.'_'.$type.'_'.$cloture.'_'.$ref.'.pdf';
// Save file
$decoded = base64_decode($file);
if ($decoded === false) {
throw new SoapFault('ERR', "Error decoding");
}
$c = Zend_Registry::get('config');
$path = $c->profil->path->shared.'/datafile/clients/bilansext/send';
$write = file_put_contents($path.'/'.$filename, $decoded);
if ($write === false) {
throw new SoapFault('ERR', "Error writing");
}
// Check MD5
if (!empty($hash)) {
if (md5_file($path.'/'.$filename) != $hash) {
throw new SoapFault('ERR', "File hash verification failed");
}
}
// Sauvegarde database
$data = array(
'bilanFileSent' => date('YmdHis'),
'bilanFile' => $filename,
);
try {
$commandeM->update($data, 'refCommande="'.$commandeResult->refCommande.'"');
return true;
} catch (Zend_Db_Exception $e) {
if ($this->User->idClient == 1) {
throw new SoapFault('ERR', $e->getMessage());
} else {
throw new SoapFault('ERR', "Application error");
}
}
return false;
}
/**
* Financial account : Tag file is sent
* @param string $ref
* @param string $filename
* @throws SoapFault
* @return boolean
*/
public function setBilanInputFile($ref, $filename)
{
$this->authenticate();
$this->permission('UPLOADBILAN');
// Check source = extranet
/*if ($this->authApp != 'extranet') {
throw new SoapFault('ERR', "Not authorize");
}*/
$data = array(
'bilanFileSent' => date('YmdHis'),
'bilanFile' => $filename,
);
try {
$commandeM = new Application_Model_Sdv1OrderBilanInput();
$commandeM->update($data, 'refCommande="'.$ref.'"');
return true;
} catch (Zend_Db_Exception $e) {
if ($this->User->idClient == 1) {
throw new SoapFault('ERR', $e->getMessage());
} else {
throw new SoapFault('ERR', "Application error");
}
}
return false;
}
/**
* Liste des commandes de saisie de bilan
* @param string $month
* @throws SoapFault
* @return BilanInput[]
*/
public function getBilanInputList($month = null)
{
$this->authenticate();
if ($month === null) {
$month = date('Y-m');
}
$dateStart = $month.'-01 00:00:00';
$dateEnd = $month.'-31 23:59:59';
$list = array();
try {
$commandeM = new Application_Model_Sdv1OrderBilanInput();
$sql = $commandeM->select()
->where('userId=?', $this->User->id)
->where('dateInsert BETWEEN "'.$dateStart.'" AND "'.$dateEnd.'"')
->order('dateInsert DESC');
$result = $commandeM->fetchAll($sql);
if (count($result) > 0) {
foreach($result as $item) {
$cmd = new BilanInput();
$cmd->Reference = strtoupper($item->refCommande);
$cmd->Siren = $item->siren;
$cmd->BilanFileRecv = $item->bilanFileRecv;
$cmd->BilanCloture = $item->bilanCloture;
$cmd->BilanType = $item->bilanType;
$cmd->ErreurDate = $item->erreurDate;
$cmd->ErreurLabel = $item->erreurTxt;
$cmd->DateInsert = $item->dateInsert;
$cmd->DateSaisie = $item->dateSaisie;
$list[] = $cmd;
}
}
} catch (Zend_Db_Exception $e) {
if ($this->User->idClient == 1) {
throw new SoapFault('ERR', $e->getMessage());
} else {
throw new SoapFault('ERR', "Application error");
}
}
return $list;
}
/**
* Détail d'un bilan en commande saisie
* @param string $ref
* @throws SoapFault
* @return BilanInput|NULL
*/
protected function getBilanInputDetail($ref)
{
$this->authenticate();
try {
$commandeM = new Application_Model_Sdv1OrderBilanInput();
$sql = $commandeM->select()->where('userId=?', $this->User->id)->where('refCommande=?', $ref);
$item = $commandeM->fetchRow($sql);
if ($item !== null) {
$cmd = new BilanInput();
$cmd->Reference = strtoupper($item->refCommande);
$cmd->Siren = $item->siren;
$cmd->BilanFileRecv = $item->bilanFileRecv;
$cmd->BilanCloture = $item->bilanCloture;
$cmd->BilanType = $item->bilanType;
$cmd->ErreurDate = $item->erreurDate;
$cmd->ErreurLabel = $item->erreurTxt;
$cmd->DateInsert = $item->dateInsert;
$cmd->DateSaisie = $item->dateSaisie;
return $cmd;
}
} catch (Zend_Db_Exception $e) {
if ($this->User->idClient == 1) {
throw new SoapFault('ERR', $e->getMessage());
} else {
throw new SoapFault('ERR', "Application error");
}
}
return null;
}
/**
* Liste des commandes KBIS
* @param string $month
* @throws SoapFault
* @return PieceKbis[]
*/
public function getKbisList($month = null)
{
$this->authenticate();
if ($month === null) {
$month = date('Y-m');
}
$dateStart = $month.'-01 00:00:00';
$dateEnd = $month.'-31 23:59:59';
$list = array();
try {
$commandeM = new Application_Model_Sdv1GreffeCommandesKb();
$sql = $commandeM->select()
->where('login=?', $this->User->login)
->where('dateInsert BETWEEN "'.$dateStart.'" AND "'.$dateEnd.'"')
->order('dateInsert DESC');
$result = $commandeM->fetchAll($sql);
if (count($result) > 0) {
foreach($result as $item) {
$cmd = new PieceKbis();
$cmd->Reference = strtoupper($item->refCommande);
$cmd->Mode = $item->mode;
$cmd->Error = $item->cmdError;
$cmd->CompanyName = $item->raisonSociale;
$cmd->CompanySiren = $item->siren;
$cmd->DateInsert = $item->dateInsert;
$cmd->DateEnvoi = $item->dateEnvoi;
$list[] = $cmd;
}
}
} catch (Zend_Db_Exception $e) {
if ($this->User->idClient == 1) {
throw new SoapFault('ERR', $e->getMessage());
} else {
throw new SoapFault('ERR', "Application error");
}
}
return $list;
}
/**
* Detail de la commande d'un KBIS
* @param unknown $ref
* @throws SoapFault
* @return BilanInput|NULL
*/
protected function getKbisDetail($ref)
{
$this->authenticate();
try {
$commandeM = new Application_Model_Sdv1GreffeCommandesKb();
$sql = $commandeM->select()->where('login=?', $this->User->login)->where('refCommande=?', $ref);
$item = $commandeM->fetchRow($sql);
if ($item !== null) {
$cmd = new BilanInput();
$cmd->Reference = strtoupper($item->refCommande);
$cmd->Mode = $item->mode;
$cmd->Error = $item->cmdError;
$cmd->CompanyName = $item->raisonSociale;
$cmd->CompanySiren = $item->siren;
$cmd->DateInsert = $item->dateInsert;
$cmd->DateEnvoi = $item->dateEnvoi;
return $cmd;
}
} catch (Zend_Db_Exception $e) {
if ($this->User->idClient == 1) {
throw new SoapFault('ERR', $e->getMessage());
} else {
throw new SoapFault('ERR', "Application error");
}
}
return null;
}
protected function getKbisFile($ref)
{
$this->authenticate();
// --- Paramètres
$hostname = 'http://'.$_SERVER['SERVER_NAME'];
if ($_SERVER['SERVER_PORT']!='80'){
$hostname.= ':'.$_SERVER['SERVER_PORT'];
}
$c = Zend_Registry::get('config');
$path = realpath($c->profil->path->shared).'/datafile/kbis';
$file = null;
// --- Lecture des informations de la commande
try {
$commandeM = new Application_Model_Sdv1GreffeCommandesKb();
$sql = $commandeM->select()->where('login=?', $this->User->login)->where('refCommande=?', $ref);
$item = $commandeM->fetchRow($sql);
if ($item !== null) {
$cmd = new BilanInput();
$cmd->Reference = strtoupper($item->refCommande);
$cmd->Mode = $item->mode;
$cmd->Error = $item->cmdError;
$cmd->CompanyName = $item->raisonSociale;
$cmd->CompanySiren = $item->siren;
$cmd->DateInsert = $item->dateInsert;
$cmd->DateEnvoi = $item->dateEnvoi;
return $cmd;
}
} catch (Zend_Db_Exception $e) {
if ($this->User->idClient == 1) {
throw new SoapFault('ERR', $e->getMessage());
} else {
throw new SoapFault('ERR', "Application error");
}
}
}
/**
* Liste des commandes d'acte infogreffe
* @param string $month
* @throws SoapFault
* @return Acte[]
*/
public function getActeList($month = null)
{
$this->authenticate();
if ($month === null) {
$month = date('Y-m');
}
$dateStart = $month.'-01 00:00:00';
$dateEnd = $month.'-31 23:59:59';
$list = array();
try {
$commandeM = new Application_Model_Sdv1GreffeCommandesAc();
$sql = $commandeM->select()
->where('login=?', $this->User->login)
->where('dateInsert BETWEEN "'.$dateStart.'" AND "'.$dateEnd.'"')
->order('dateInsert DESC');
$result = $commandeM->fetchAll($sql);
if (count($result) > 0) {
foreach($result as $item) {
$cmd = new Acte();
$cmd->Reference = strtoupper($item->refCommande);
$cmd->Mode = $item->mode;
$cmd->Error = $item->cmdError;
$cmd->DocLabel = ''; //@todo : Génére le libellé du document
$cmd->DocDepotNum = $item->depotNum;
$cmd->DocDepotDate = $item->depotDate;
$cmd->DocActeNum = $item->acteNum;
$cmd->DocActeType = $item->acteType;
$cmd->DocActeDate = $item->acteDate;
$cmd->CompanyName = $item->raisonSociale;
$cmd->CompanySiren = $item->siren;
$cmd->DateInsert = $item->dateInsert;
$cmd->DateEnvoi = $item->dateEnvoi;
$list[] = $cmd;
}
}
} catch (Zend_Db_Exception $e) {
if ($this->User->idClient == 1) {
throw new SoapFault('ERR', $e->getMessage());
} else {
throw new SoapFault('ERR', "Application error");
}
}
return $list;
}
protected function getActeDetail($ref){}
protected function getActeFile($ref){}
/**
* Liste des commandes de bilan infogreffe
* @param string $month
* @throws SoapFault
* @return Bilan[]
*/
public function getBilanList($month = null)
{
$this->authenticate();
if ($month === null) {
$month = date('Y-m');
}
$dateStart = $month.'-01 00:00:00';
$dateEnd = $month.'-31 23:59:59';
$list = array();
try {
$commandeM = new Application_Model_Sdv1GreffeCommandesBi();
$sql = $commandeM->select()
->where('login=?', $this->User->login)
->where('dateInsert BETWEEN "'.$dateStart.'" AND "'.$dateEnd.'"')
->order('dateInsert DESC');
$result = $commandeM->fetchAll($sql);
if (count($result) > 0) {
foreach($result as $item) {
$cmd = new Bilan();
$cmd->Reference = strtoupper($item->refCommande);
$cmd->Mode = $item->mode;
$cmd->Error = $item->cmdError;
$cmd->DocBilanCloture = $item->bilanCloture;
$cmd->DocBilanType = $item->bilanType;
$cmd->CompanyName = $item->raisonSociale;
$cmd->CompanySiren = $item->siren;
$cmd->DateInsert = $item->dateInsert;
$cmd->DateEnvoi = $item->dateEnvoi;
$list[] = $cmd;
}
}
} catch (Zend_Db_Exception $e) {
if ($this->User->idClient == 1) {
throw new SoapFault('ERR', $e->getMessage());
} else {
throw new SoapFault('ERR', "Application error");
}
}
return $list;
}
/**
* Détail de la commande de bilan Infogreffe
* @param unknown $ref
* @throws SoapFault
* @return BilanInput|NULL
*/
protected function getBilanDetail($ref)
{
$this->authenticate();
try {
$commandeM = new Application_Model_Sdv1GreffeCommandesKb();
$sql = $commandeM->select()->where('login=?', $this->User->login)->where('refCommande=?', $ref);
$item = $commandeM->fetchRow($sql);
if ($item !== null) {
$cmd = new BilanInput();
$cmd->Reference = strtoupper($item->refCommande);
$cmd->Mode = $item->mode;
$cmd->Error = $item->cmdError;
$cmd->DocBilanCloture = $item->bilanCloture;
$cmd->DocBilanType = $item->bilanType;
$cmd->CompanyName = $item->raisonSociale;
$cmd->CompanySiren = $item->siren;
$cmd->DateInsert = $item->dateInsert;
$cmd->DateEnvoi = $item->dateEnvoi;
return $cmd;
}
} catch (Zend_Db_Exception $e) {
if ($this->User->idClient == 1) {
throw new SoapFault('ERR', $e->getMessage());
} else {
throw new SoapFault('ERR', "Application error");
}
}
return null;
}
protected function getBilanFile($ref){}
protected function setInvestigation()
{
$this->authenticate();
$this->permission('enquetec');
//Table pour le stockage des demandes d'investigation
}
/**
* Commandes de statuts association
* @param string $month
* @throws SoapFault
* @return AssoStatut[]
*/
public function getAssoStatut($month = null)
{
$this->authenticate();
if ($month === null) {
$month = date('Y-m');
}
$dateStart = $month.'-01 00:00:00';
$dateEnd = $month.'-31 23:59:59';
$list = array();
try {
$commandeM = new Application_Model_Sdv1GreffeCommandesKb();
$sql = $commandeM->select()
->where('login=?', $this->User->login)
->where('dateInsert BETWEEN "'.$dateStart.'" AND "'.$dateEnd.'"')
->order('dateInsert DESC');
$result = $commandeM->fetchAll($sql);
if (count($result) > 0) {
foreach($result as $item) {
$cmd = new AssoStatut();
$cmd->Reference = strtoupper($item->refCommande);
$cmd->Mode = $item->mode;
$cmd->Error = $item->cmdError;
$cmd->CompanyName = $item->companyName;
$cmd->CompanyId = $item->companyId;
$cmd->CompanyIdType = $item->typeId;
$cmd->DateInsert = $item->dateInsert;
$cmd->DateEnvoi = $item->dateDone;
$list[] = $cmd;
}
}
} catch (Zend_Db_Exception $e) {
if ($this->User->idClient == 1) {
throw new SoapFault('ERR', $e->getMessage());
} else {
throw new SoapFault('ERR', "Application error");
}
}
return $list;
}
}