extranet/includes/graydon/graydon_wsfunctions.php

930 lines
34 KiB
PHP

<?php
require_once 'graydon/graydon.php';
require_once 'dbbootstrap.php';
/**
* Retourne les identifiants disponible.
* @param string $pays
* Le pays Graydon
* @return string
* .
*/
function getCompanyMatchIdentifiers($pays)
{
global $page, $mode, $firephp, $graydon, $authentication;
$firephp->info('Méthode getCompanyMatchIdentifiers');
setDbConn('graydon');
$q = Doctrine_Query::create()
->from('Matchidentifiers')
->where('country = ?', $pays);
$matchidentifiers = new Matchidentifiers();
$matchidentifiers = $q->fetchOne();
/** Recup des types d'identifiants pour le pays **/
if($matchidentifiers == false)
{
//Récupération des intitulés identifiant
$request = new StdClass();
$request->Authentication_Parameters = $authentication;
$request->Country = $pays;
$firephp->log($request,'REQUETE CompanyMatchIdentifier');
try
{
$result = $graydon->getCompanyMatchIdentifiers($request);
$firephp->log($result,'CompanyMatchIdentifiers');
//Enregistrement de l'action dans les logs
$transactionIdentifier = $result->Service_Log->TransactionIdentifier;
$sessionID = $result->Service_Log->SessionID;
graydonRequeteLog($_SESSION['tabInfo']['login'], $page, 'getCompanyMatchIdentifiers', $transactionIdentifier, $sessionID);
//Log de la requete dans la bdd
$log = new Requetelog();
$log->login = $_SESSION['tabInfo']['login'];
$log->action = 'getCompanyMatchIdentifiers';
$log->request = serialize($request);
$log->transactionIdentifier = $transactionIdentifier;
$log->sessionID = $sessionID;
$log->mode = $mode;
$log->save();
$tabIdentifiers = $result->CompanyMatchIdentifiers->CompanyMatchIdentifier[0]->CompanyIdentifier;
//Stockage du résultat de la méthode en cache
$matchidentifiers = new Matchidentifiers();
$matchidentifiers->country = $pays;
$matchidentifiers->identifiers = serialize($tabIdentifiers);
$matchidentifiers->replace();
}catch( SoapFault $fault ){
$code = $fault->detail->GraydonCompanyData_Fault->FaultReturnCode;
$text = $fault->detail->GraydonCompanyData_Fault->FaultMessage;
$firephp->log($text,'texterror');
require_once 'graydon/graydon_error.php';
if(graydon_error($code, $text)!=false){
if($code=='CWS0112'){
//Stockage du résultat de la méthode en cache
$matchidentifiers = new Matchidentifiers();
$matchidentifiers->country = $pays;
$matchidentifiers->identifiers = serialize('noidentifiers');
$matchidentifiers->replace();
$tabIdentifiers = 'noidentifiers';
}
}else{
$tabIdentifiers = graydon_processSoapFault($graydon,$fault,$_SESSION['tabInfo']);
}
}
}else{
$firephp->info('tabIdentifiers pris dans la bdd');
$tabIdentifiers = unserialize($matchidentifiers->identifiers);
}
return $tabIdentifiers;
}
function getCompanyProducts($identifier)
{
global $page, $mode, $firephp, $graydon, $authentication;
setDbConn('graydon');
$q = Doctrine_Query::create()
->from('Companyproducts')
->where('identifiers = ?', $identifier);
$companyproducts = new Companyproducts();
$companyproducts = $q->fetchOne();
$now = mktime(date('G'), date('i'), date('s'),
date("m"), date("d"), date("Y"));
if ($companyproducts == false) {
$request = new StdClass();
$request->Authentication_Parameters = $authentication;
$request->CompanyMatchIdentifier = $identifier;
try {
// Make a request on the web service
$result = $graydon->getCompanyProducts($request);
// Enregistrement de l'action dans les logs
$transactionIdentifier = $result->Service_Log->TransactionIdentifier;
$sessionID = $result->Service_Log->SessionID;
graydonRequeteLog($_SESSION['tabInfo']['login'], $page,
'getCompanyProducts', $transactionIdentifier,
$sessionID);
// Log de la requete dans la bdd
$log = new Requetelog();
$log->login = $_SESSION['tabInfo']['login'];
$log->action = 'getCompanyProducts';
$log->request = serialize($request);
$log->transactionIdentifier = $transactionIdentifier;
$log->sessionID = $sessionID;
$log->mode = $mode;
$log->save();
// Sauvegarde dans la bdd
$companyproducts = new Companyproducts();
$companyproducts->identifiers = $identifier;
$companyproducts->company = serialize($result->Company);
$companyproducts->products = serialize($result->Products);
$companyproducts->save();
// Extraction
$company = $result->Company;
$products = $result->Products->Product;
} catch(SoapFault $fault){
$code = $fault->detail->GraydonCompanyData_Fault->FaultReturnCode;
$text = $fault->detail->GraydonCompanyData_Fault->FaultMessage;
$firephp->log($text,'texterror');
require_once 'graydon/graydon_error.php';
if (graydon_error($code, $text) == false) {
graydon_processSoapFault($graydon, $fault, $_SESSION['tabInfo']);
}
}
} else {
$company = unserialize($companyproducts->company);
$products = unserialize($companyproducts->products);
$products = $products->Product;
}
return array('Company' => $company, 'Products' => $products);
}
function getCompanyMatches($pays)
{
global $page, $mode, $firephp, $graydon, $authentication;
// Create the request parameters
$request = new StdClass();
// Initialise the request object
$request->Authentication_Parameters = $authentication;
// Create a new country parameters object
$company = new StdClass();
// Initialise the country object
$company->Country = $pays;
$company->ClientReference = '';
$request->CompanyMatches_Parameters = $company;
if($_REQUEST['method'] == 'keyword'){
$request->Keyword = $_REQUEST['frmRecherche']['Keywords'];
$request->City = isset($_REQUEST['frmRecherche']['City']) ? $_REQUEST['frmRecherche']['City'] : '' ;
$request->PostCode = isset($_REQUEST['frmRecherche']['PostCode']) ? $_REQUEST['frmRecherche']['PostCode'] : '' ;
}elseif($_REQUEST['method'] == 'identifier'){
$request->Identifier = $_REQUEST['frmRecherche']['Identifier'];
}elseif($_REQUEST['method'] == 'name'){
$request->Name = $_REQUEST['frmRecherche']['Name'];
$request->City = isset($_REQUEST['frmRecherche']['City']) ? $_REQUEST['frmRecherche']['City'] : '' ;
$request->PostCode = isset($_REQUEST['frmRecherche']['PostCode']) ? $_REQUEST['frmRecherche']['PostCode'] : '' ;
}elseif($_REQUEST['method'] == 'postcode'){
$request->PostCode = isset($_REQUEST['frmRecherche']['PostCode']) ? $_REQUEST['frmRecherche']['PostCode'] : '' ;
}
try
{
// Make a request on the webservice
if($_REQUEST['method'] == 'keyword'){
$result = $graydon->getCompanyMatchesByKeyword($request);
//Enregistrement de l'action dans les logs
$transactionIdentifier = $result->Service_Log->TransactionIdentifier;
$sessionID = $result->Service_Log->SessionID;
graydonRequeteLog($_SESSION['tabInfo']['login'], $page, 'getCompanyMatchesByKeyword', $transactionIdentifier, $sessionID);
//Log de la requete dans la bdd
setDbConn('graydon');
$log = new Requetelog();
$log->login = $_SESSION['tabInfo']['login'];
$log->action = 'getCompanyMatchesByKeyword';
$log->request = serialize($request);
$log->transactionIdentifier = $transactionIdentifier;
$log->sessionID = $sessionID;
$log->mode = 'normal';
$log->save();
}elseif($_REQUEST['method'] == 'identifier'){
$result = $graydon->getCompanyMatchesByIdentifier($request);
//Enregistrement de l'action dans les logs
$transactionIdentifier = $result->Service_Log->TransactionIdentifier;
$sessionID = $result->Service_Log->SessionID;
graydonRequeteLog($_SESSION['tabInfo']['login'], $page, 'getCompanyMatchesByIdentifier', $transactionIdentifier, $sessionID);
//Log de la requete dans la bdd
setDbConn('graydon');
$log = new Requetelog();
$log->login = $_SESSION['tabInfo']['login'];
$log->action = 'getCompanyMatchByIdentifier';
$log->request = serialize($request);
$log->transactionIdentifier = $transactionIdentifier;
$log->sessionID = $sessionID;
$log->mode = 'normal';
$log->save();
}elseif($_REQUEST['method'] == 'name'){
$result = $graydon->getCompanyMatchesByName($request);
//Enregistrement de l'action dans les logs
$transactionIdentifier = $result->Service_Log->TransactionIdentifier;
$sessionID = $result->Service_Log->SessionID;
graydonRequeteLog($_SESSION['tabInfo']['login'], $page, 'getCompanyMatchesByName', $transactionIdentifier, $sessionID);
//Log de la requete dans la bdd
setDbConn('graydon');
$log = new Requetelog();
$log->login = $_SESSION['tabInfo']['login'];
$log->action = 'getCompanyMatchesByName';
$log->request = serialize($request);
$log->transactionIdentifier = $transactionIdentifier;
$log->sessionID = $sessionID;
$log->mode = 'normal';
$log->save();
}elseif($_REQUEST['method'] == 'postcode'){
$result = $graydon->getCompanyMatchesByPostCode($request);
//Enregistrement de l'action dans les logs
$transactionIdentifier = $result->Service_Log->TransactionIdentifier;
$sessionID = $result->Service_Log->SessionID;
graydonRequeteLog($_SESSION['tabInfo']['login'], $page, 'getCompanyMatchesByPostCode', $transactionIdentifier, $sessionID);
//Log de la requete dans la bdd
setDbConn('graydon');
$log = new Requetelog();
$log->login = $_SESSION['tabInfo']['login'];
$log->action = 'getCompanyMatchesByPostCode';
$log->request = serialize($request);
$log->transactionIdentifier = $transactionIdentifier;
$log->sessionID = $sessionID;
$log->mode = 'normal';
$log->save();
}
$_SESSION['graydon']['SessionID'] = $result->Service_Log->SessionID;
$_SESSION['graydon']['TransactionIdentifier'] = $result->Service_Log->TransactionIdentifier;
return $result;
}catch( SoapFault $fault ){
if(isset($fault->faultstring) && $fault->faultcode = 'HTTP'){
print '<br/>Le service partenaire n\'est pas disponible.';
}else{
$code = $fault->detail->GraydonCompanyData_Fault->FaultReturnCode;
$text = $fault->detail->GraydonCompanyData_Fault->FaultMessage;
$firephp->log($text,'texterror');
require_once 'graydon/graydon_error.php';
$error = graydon_error($code, $text);
if($error==false){
return graydon_processSoapFault($graydon,$fault,$_SESSION['tabInfo']);
}elseif($error['Code'] == 'CWS5000'){
return array();
}
}
}
}
function getCountryAvailability($pays)
{
global $page, $mode, $firephp, $graydon, $authentication;
setDbConn('graydon');
$q = Doctrine_Query::create()
->from('Countryavailability')
->where('country = ?', $pays);
$countryavailability = new Countryavailability();
$countryavailability = $q->fetchOne();
if($countryavailability == false)
{
// Create the request parameters
$request = new StdClass();
// Initialise the request object
$request->Authentication_Parameters = $authentication;
$request->Country = $pays;
$firephp->log($request, 'request');
try
{
$result = $graydon->getCountryAvailability($request);
$firephp->log($result,'CountryAvailability');
//Enregistrement de l'action dans les logs
$transactionIdentifier = $result->Service_Log->TransactionIdentifier;
$sessionID = $result->Service_Log->SessionID;
graydonRequeteLog( $_SESSION['tabInfo']['login'], $page, 'getCountryAvailability', $transactionIdentifier, $sessionID);
//Log de la requete dans la bdd
$log = new Requetelog();
$log->login = $_SESSION['tabInfo']['login'];
$log->action = 'getCountryAvailability';
$log->request = serialize($request);
$log->transactionIdentifier = $transactionIdentifier;
$log->sessionID = $sessionID;
$log->mode = $mode;
$log->save();
$availability = $result->CountryAvailablity->CountryAndProduct[0]->Products->Product;
//Stockage du résultat de la méthode en cache
$countryavailability = new Countryavailability();
$countryavailability->country = $pays;
$countryavailability->availability = serialize($availability);
$countryavailability->replace();
}catch(SoapFault $fault){
$code = $fault->detail->GraydonCompanyData_Fault->FaultReturnCode;
$text = $fault->detail->GraydonCompanyData_Fault->FaultMessage;
$firephp->log($text,'texterror');
require_once 'graydon/graydon_error.php';
if(graydon_error($code, $text)==false){
$availability = graydon_processSoapFault($graydon,$fault,$_SESSION['tabInfo']);
}else{
$availability = false;
}
}
}else{
$availability = unserialize($countryavailability->availability);
}
return $availability;
}
function getCompanyMatchMethods($pays)
{
global $page, $mode, $firephp, $graydon, $authentication;
setDbConn('graydon');
$q = Doctrine_Query::create()
->from('Matchmethods')
->where('country = ?', $pays);
$matchmethods = new Matchmethods();
$matchmethods = $q->fetchOne();
if($matchmethods == false)
{
// Create the request parameters
$request = new StdClass();
// Initialise the request object
$request->Authentication_Parameters = $authentication;
$request->Country = $pays;
try
{
$result = $graydon->getCompanyMatchMethods($request);
//Enregistrement de l'action dans les logs
$transactionIdentifier = $result->Service_Log->TransactionIdentifier;
$sessionID = $result->Service_Log->SessionID;
graydonRequeteLog( $_SESSION['tabInfo']['login'], $page, 'getCompanyMatchMethods', $transactionIdentifier, $sessionID);
//Log de la requete dans la bdd
$log = new Requetelog();
$log->login = $_SESSION['tabInfo']['login'];
$log->action = 'getCompanyMatchMethods';
$log->request = serialize($request);
$log->transactionIdentifier = $transactionIdentifier;
$log->sessionID = $sessionID;
$log->mode = $mode;
$log->save();
$methods = $result->CompanyMatchMethods->CompanyMatchMethod[0]->MatchMethods->MatchMethod;
//Stockage du résultat de la méthode en cache
$matchmethods = new Matchmethods();
$matchmethods->country = $pays;
$matchmethods->methods = serialize($methods);
$matchmethods->replace();
}catch( SoapFault $fault ){
$code = $fault->detail->GraydonCompanyData_Fault->FaultReturnCode;
$text = $fault->detail->GraydonCompanyData_Fault->FaultMessage;
$firephp->log($text,'texterror');
require_once 'graydon/graydon_error.php';
if(graydon_error($code, $text)!=false){
if($code=='CWS0112'){
//Stockage du résultat de la méthode en cache
$matchmethods = new Matchmethods();
$matchmethods->country = $pays;
$matchmethods->methods = serialize('nomethods');
$matchmethods->replace();
$methods = 'nomethods';
}
}else{
$methods = graydon_processSoapFault($graydon,$fault,$_SESSION['tabInfo']);
}
}
}else{
$methods = unserialize($matchmethods->methods);
}
return $methods;
}
// --------------------------------------------------------------------------- //
// getIdentite
// --------------------------------------------------------------------------- //
function getIdentite($identifier, $CompanyProductIdentifier)
{
global $page, $graydon, $authentication;
$pays = $_SESSION['graydon']['pays'];
$login = $_SESSION['tabInfo']['login'];
$mode = $_SESSION['graydon']['mode'];
$name = $_SESSION['graydon']['name'];
setDbConn('graydon');
// Requete
$request = new StdClass();
$request->Authentication_Parameters = $authentication;
$request->OrderCreatorEmail = 'mricois@scores-decisions.com';
$request->CompanyProductIdentifier = $CompanyProductIdentifier;
$request->PartnerData = '';
try {
$placeOrderResult = $graydon->placeOrder($request);
} catch (SoapFault $e) {
$code = $e->detail->GraydonCompanyData_Fault->FaultReturnCode;
$text = $e->detail->GraydonCompanyData_Fault->FaultMessage;
require_once 'graydon/graydon_error.php';
$error = graydon_error($code, $text);
if ($error == false) {
print graydon_processSoapFault($graydon, $e, $_SESSION['tabInfo']);
} else {
print graydon_messageSoapFault();
//envoieCourriel("SoapFault, identifiant : ".
// $CompanyProductIdentifier);
}
return 0;
}
// Prix
$prix = Doctrine_Query::create()
->from('Price p')
->leftJoin('p.Country c')
->where('c.graydon_country = ?', $pays)
->fetchOne()->immediate;
// Enregistrement des commandes dans la bdd
$commande = new Commandes();
$commande->reference = $placeOrderResult->OrderStatus->OrderReference;
$commande->servicespeed =
$placeOrderResult->OrderStatus->Order->ServiceSpeed;
$commande->prix = $prix;
$commande->orderstate = $placeOrderResult->OrderStatus->OrderState;
$commande->dateordered = $placeOrderResult->OrderStatus->DateOrdered;
$commande->datecompleted =
$placeOrderResult->OrderStatus->DateCompleted;
$commande->datedue = $placeOrderResult->OrderStatus->DateDue;
$commande->companyproductidentifier = $CompanyProductIdentifier;
$commande->sessionid = $placeOrderResult->Service_Log->SessionID;
$commande->transactionidentifier =
$placeOrderResult->Service_Log->TransactionIdentifier;
$commande->user = $login;
$commande->mode = $mode;
$commande->Country = Doctrine_Query::create()
->from('Country')
->where('graydon_country = ?', $pays)
->fetchOne();
$commande->save();
$mailcommande = $commande->toString();
$commande_id = $commande->id;
// Detail
$commandeDetail = new CommandesDetail();
$commandeDetail->eName = $name;
$commandeDetail->eIdentifiers = $identifier;
$commandeDetail->ePays = $pays;
$commandeDetail->commandes_id = $commande->id;
$commandeDetail->eLanguageCode = 'F';
$commandeDetail->eCreditOpinionCurrency = 'EUR';
$commandeDetail->save();
// setLog
$client = new SoapClient(null, array(
'trace' => 1,
'soap_version' => SOAP_1_1,
'location' => WEBSERVICE_URL,
'uri' => WEBSERVICE_URI,
'login' => $login,
'password' => $_SESSION['tabInfo']['password']));
$client->setLog('international_identite', $commande_id, 0, $prix);
// Enregistrement de l'action dans les logs
$transactionIdentifier =
$placeOrderResult->Service_Log->TransactionIdentifier;
$sessionID = $placeOrderResult->Service_Log->SessionID;
graydonRequeteLog($login, $page, 'placeOrder',
$transactionIdentifier, $sessionID);
// Log de la requete dans la bdd
$log = new Requetelog();
$log->login = $_SESSION['tabInfo']['login'];
$log->action = 'placeOrder';
$log->request = serialize($request);
$log->transactionIdentifier = $transactionIdentifier;
$log->sessionID = $sessionID;
$log->mode = $mode;
$log->save();
// Envoi d'un mail pour le passage de la commande
envoieCourriel($mailcommande);
// On verifie l'etat de la demande
if (isset($placeOrderResult) == true &&
$placeOrderResult->OrderStatus->OrderState == 'Completed') {
$requete = new StdClass();
$requete->Authentication_Parameters = $authentication;
$requete->LanguageCode = 'F';
$requete->OrderReference =
$placeOrderResult->OrderStatus->OrderReference;
$availability = getCountryAvailability($pays);
foreach($availability as $a) {
if ($a->ServiceSpeed == $commande->servicespeed) {
$mime_types = $a->MimeTypes->MimeType;
break;
}
}
if (empty($mime_types) == true) {
return 0;
}
// Récupération des documents
foreach ($mime_types as $mime_type) {
if (empty($mime_type) == true) {
continue;
}
print "mime_type='$mime_type'<br/>";
$requete->MimeType = $mime_type; // 'html', 'xml', 'pdf', 'doc'
try {
$reportResult = $graydon->getCompanyReport($requete);
} catch (SoapFault $e) {
$code = $e->detail->GraydonCompanyData_Fault->FaultReturnCode;
$text = $e->detail->GraydonCompanyData_Fault->FaultMessage;
require_once 'graydon/graydon_error.php';
$error = graydon_error($code, $text);
if ($error == false) {
print graydon_processSoapFault($graydon, $e,
$_SESSION['tabInfo']);
} else {
print graydon_messageSoapFault();
//envoieCourriel("SoapFault, identifiant : ".$commande_id);
}
return 0;
}
// Enregistrement de l'action dans les logs
$transactionIdentifier =
$reportResult->Service_Log->TransactionIdentifier;
$sessionID = $reportResult->Service_Log->SessionID;
graydonRequeteLog($login, $page,
'getCompanyReport', $transactionIdentifier,
$sessionID);
// Log dans la bdd
$log = new Requetelog();
$log->login = $login;
$log->action = 'getCompanyReport';
$log->request = serialize($requete);
$log->transactionIdentifier = $transactionIdentifier;
$log->sessionID = $sessionID;
$log->mode = $mode;
$log->save();
// Rapport dans la bdd
$rapport = new Report();
$rapport->identifier = $identifier;
$rapport->name = $name;
$rapport->format = $mime_type;
switch($mime_type) {
case 'html':
$rapport->content = $reportResult->ReportText;
break;
case 'xml':
$rapport->content = $reportResult->ReportXML->any;
break;
case 'pdf':
case 'doc':
$rapport->content = $reportResult->ReportBinary;
break;
default:
print 'type de document inconnu: '.
$reportResult->ReportMimeType."\n";
continue;
}
$rapport->order_id = $commande_id;
$rapport->save();
}
$commande->orderstate = 'Delivered';
$commande->save();
}
return $commande_id;
}
// --------------------------------------------------------------------------- //
// envoieCourriel
// --------------------------------------------------------------------------- //
function envoieCourriel($ref)
{
require_once 'mail/mail.php';
sendMail("[International] - (Date :".
date("d")."/".date("m")."/".date("Y").") - Commande",
"Commande effectuée par ".$_SESSION['tabInfo']['login']."\n".
$ref,
// From
array('email' => 'contact@scores-decisions.com',
'name' => 'Commandes International'),
// To
array(0 => array('email' => EMAIL_SUPPORTDEV,
'name' => 'Support')));
}
// --------------------------------------------------------------------------- //
// copieDesRapports
// --------------------------------------------------------------------------- //
function copieDesRapports($commande_a_copier,
$identifier,
$pidentifier)
{
$pays = $_SESSION['graydon']['pays'];
$login = $_SESSION['tabInfo']['login'];
$mode = $_SESSION['graydon']['mode'];
$name = $_SESSION['graydon']['name'];
// Nouvelle commande
$commande = new Commandes();
$commande->prix = Doctrine_Query::create()
->from('Price p')
->leftJoin('p.Country c')
->where('c.graydon_country = ?', $pays)
->fetchOne()->immediate;
$commande->servicespeed = 'Immediate';
$commande->orderstate = 'Delivered';
$commande->dateordered = date('Y-m-d');
$commande->datedue = $commande->dateordered;
$commande->datecompleted = Doctrine_Query::create()
->from('Commandes')
->where('id = ?', $commande_a_copier)
->fetchOne()->datecompleted;
$commande->companyproductidentifier = $pidentifier;
list($dummy, $session_id, $transaction_identifier) =
explode(':', $commande->companyproductidentifier);
$commande->sessionid = $session_id;
$commande->transactionidentifier = $transaction_identifier;
$commande->user = $login;
$commande->mode = $mode;
$commande->Country = Doctrine_Query::create()
->from('Country')
->where('graydon_country = ?', $pays)
->fetchOne();
$commande->save();
// Detail de la commande
$commandeDetail = new CommandesDetail();
$commandeDetail->eName = $name;
$commandeDetail->eIdentifiers = $identifier;
$commandeDetail->ePays = $pays;
$commandeDetail->commandes_id = $commande->id;
$commandeDetail->eLanguageCode = 'F';
$commandeDetail->eCreditOpinionCurrency = 'EUR';
$commandeDetail->save();
// Copie des rapports
$rapports = Doctrine_Query::create()
->from('Report')
->where('order_id = ?', $commande_a_copier)
->orderby('id')
->execute();
foreach ($rapports as $r) {
$rapport = new Report();
$rapport->identifier = $r->identifier;
$rapport->name = $r->name;
$rapport->content = $r->content;
$rapport->format = $r->format;
$rapport->order_id = $commande->id;
$rapport->save();
}
return $commande->id;
}
// --------------------------------------------------------------------------- //
// setEnquete
// --------------------------------------------------------------------------- //
function setEnquete($pays)
{
global $page, $mode, $graydon, $authentication;
setDbConn('graydon');
// Si la commande existe pour cet utilisateur
$c = Doctrine_Query::create()
->from('Commandes')
->where('companyproductidentifier = ?', $_POST['pidentifier'])
->andWhere('user = ?', $_SESSION['tabInfo']['login'])
->andWhere('not servicespeed = ?', 'Immediate')
->fetchOne();
if ($c != false) {
if ($c->orderstate == 'Delivered') {
header('Location: ?page=international_commandes&id='.$c->id);
print '<a href="?page=international_commandes&id='.$c->id.
'">Veuillez suivre ce lien</a>';
return $c->id;
} else {
print 'Cette commande est en cours<br/>';
return 0;
}
}
// Si on a un rapport pas trop vieux
$rapports = Doctrine_Query::create()
->from('Report')
->where('identifier = ?', $_POST['identifier'])
->orderby('id desc')
->execute();
if ($rapports != false && count($rapports) > 0) {
foreach ($rapports as $rapport) {
$c = Doctrine_Query::create()
->from('Commandes')
->where('id = ?', $rapport->order_id)
->orderby('id desc')
->fetchOne();
if ($c == false || $c->servicespeed == 'Immediate') {
continue;
}
if (strtotime("-2 week") <=
strtotime($c->datecompleted)) {
$commande_id = copieDesRapports($rapport->order_id,
$_POST['identifier'],
$_POST['pidentifier']);
if ($commande_id > 0) {
header('Location: ?page=international_commandes&id='.
$commande_id);
print '<a href="?page=international_commandes&id='.
$commande_id.
'">Veuillez suivre ce lien</a>';
return $commande_id;
}
}
}
}
$serviceSpeed = strtolower($_POST['InfoEnq']['Servicespeed']);
// Prix
$prix = Doctrine_Query::create()
->select('p.'.$serviceSpeed)
->from('Price p')
->leftJoin('p.Country c')
->where('c.graydon_country = ?', $pays)
->fetchOne();
// Sauvegarde des infos dans la base avant le passage de la commande
$commande = new Commandes();
$commande->servicespeed = $serviceSpeed;
$commande->prix = $prix->$serviceSpeed;
$commande->orderstate = '';
$commande->companyproductidentifier = $_POST['pidentifier'];
$commande->user = $_SESSION['tabInfo']['login'];
$commande->mode = $_SESSION['graydon']['mode'];
$country_id = Doctrine_Query::create()
->from('Country')
->where('graydon_country = ?', $pays)
->fetchOne()->id;
$commande->country_id = $country_id;
$commande->save();
$commande_id = $commande->id;
// Enregistrement des détails de la commande
$commandeDetail = new CommandesDetail();
$commandeDetail->dIdentite = $_POST['InfoUser']['Identite'];
$commandeDetail->dTelephone = $_POST['InfoUser']['Tel'];
$commandeDetail->dEmail = $_POST['InfoUser']['Email'];
$commandeDetail->dFax = $_POST['InfoUser']['Fax'];
$commandeDetail->eName = $_POST['InfoEnq']['Name'];
$commandeDetail->eIdentifiers = $_POST['identifier'];
$commandeDetail->eAdresse = $_POST['InfoEnq']['Adresse'];
$commandeDetail->eTelephone = $_POST['InfoEnq']['Telephone'];
$commandeDetail->ePays = $_POST['InfoEnq']['Pays'];
$commandeDetail->eAttentionOf = $_POST['InfoEnq']['AttentionOf'];
$commandeDetail->eSpecialRemarks = $_POST['InfoEnq']['SpecialRemarks'];
$commandeDetail->commandes_id = $commande_id;
$commandeDetail->eLanguageCode = 'F';
$commandeDetail->eCreditOpinionCurrency = 'EUR';
if (isset($_POST['InfoEnq']['Bankers']) == true) {
$commandeDetail->eBankers = $_POST['InfoEnq']['Bankers'];
}
$commandeDetail->save();
// Passage de la commande chez graydon
$request = new StdClass();
$request->Authentication_Parameters = $authentication;
if (!isset($_POST['pidentifier'])) {
$request->OrderCreatorEmail = EMAIL_SUPPORTDEV;
$request->Order->LanguageCode = 'F';
$request->Order->Name = $_POST['InfoEnq']['Name'];
$request->Order->ServiceSpeed = $_POST['InfoEnq']['Servicespeed'];
$request->Order->Country = $_POST['InfoEnq']['Pays'];
$request->Order->Address->EntireAddress =
$_POST['InfoEnq']['Adresse'];
if (count($_POST['InfoEnq']['Identifiers']) > 1) {
$count = 0;
foreach ($_POST['InfoEnq']['Identifiers'] as $key => $value) {
$request->Order->CompanyIdentifier[$count]->Identifier = $value;
$request->Order->CompanyIdentifier[$count]->Type = $key;
$count++;
}
} else {
foreach ($_POST['InfoEnq']['Identifiers'] as $key => $value){
$request->Order->CompanyIdentifier->Identifier = $value;
$request->Order->CompanyIdentifier->Type = $key;
}
}
$request->Order->AttentionOf = $_POST['InfoEnq']['AttentionOf'];
$request->Order->Bankers = $_POST['InfoEnq']['Bankers'];
$request->Order->SpecialRemarks = $_POST['InfoEnq']['SpecialRemarks'];
$request->Order->Telephone = $_POST['InfoEnq']['Telephone'];
} else {
$request->OrderCreatorEmail = 'mricois@scores-decisions.com';
$request->CompanyProductIdentifier = $_POST['pidentifier'];
$request->PartnerData = '';
}
$request->PartnerData = '';
try {
$placeOrderResult = $graydon->placeOrder($request);
} catch (SoapFault $e) {
$code = $e->detail->GraydonCompanyData_Fault->FaultReturnCode;
$text = $e->detail->GraydonCompanyData_Fault->FaultMessage;
require_once 'graydon/graydon_error.php';
$error = graydon_error($code, $text);
if ($error == false) {
print graydon_processSoapFault($graydon, $e, $_SESSION['tabInfo']);
} else {
print graydon_messageSoapFault();
//envoieCourriel("SoapFault, identifiant : ".$commande_id);
}
return 0;
}
// setLog
$client = new SoapClient(null, array(
'trace' => 1,
'soap_version' => SOAP_1_1,
'location' => WEBSERVICE_URL,
'uri' => WEBSERVICE_URI,
'login' => $_SESSION['tabInfo']['login'],
'password' => $_SESSION['tabInfo']['password']));
$client->setLog('international_enquete', $commande_id, 0, $prix);
// Enregistrement de l'action dans les logs
$transactionIdentifier =
$placeOrderResult->Service_Log->TransactionIdentifier;
$sessionID = $placeOrderResult->Service_Log->SessionID;
graydonRequeteLog($_SESSION['tabInfo']['login'], $page, 'placeOrder',
$transactionIdentifier, $sessionID);
// Log de la requete dans la bdd
$log = new Requetelog();
$log->login = $_SESSION['tabInfo']['login'];
$log->action = 'placeOrder';
$log->request = serialize($request);
$log->transactionIdentifier = $transactionIdentifier;
$log->sessionID = $sessionID;
$log->mode = $mode;
$log->save();
// Enregistrement de la commande dans la bdd
$commande = new Commandes();
$commande->assignIdentifier($commande_id);
$commande->reference = $placeOrderResult->OrderStatus->OrderReference;
$commande->servicespeed =
$placeOrderResult->OrderStatus->Order->ServiceSpeed;
$commande->prix = $prix->$serviceSpeed;
$commande->orderstate = $placeOrderResult->OrderStatus->OrderState;
$commande->dateordered = $placeOrderResult->OrderStatus->DateOrdered;
if (isset($placeOrderResult->OrderStatus->DateCompleted) == true) {
$commande->datecompleted =
$placeOrderResult->OrderStatus->DateCompleted;
}
if (isset($placeOrderResult->OrderStatus->DateDue) == true) {
$commande->datedue = $placeOrderResult->OrderStatus->DateDue;
}
$commande->sessionid = $sessionID;
$commande->transactionidentifier = $transactionIdentifier;
$commande->user = $_SESSION['tabInfo']['login'];
$commande->mode = $_SESSION['graydon']['mode'];
$commande->country_id = $country_id;
$commande->save();
$commande_id = $commande->id;
// Enregistrement des détails de la commande
// Déjà fait avant le passage de la commande chez graydon
// Envoi d'un mail pour le passage de la commande
envoieCourriel("Reference commande : ".$commande->reference);
return $commande_id;
}
?>