wso_g002($dateFrom, $dateTo); $xmlObject = Xml::parseToObject($response->getResponse()); $isOkResponse = false; if(isset($xmlObject) && isOkGetResult($response->getCode())){ foreach($xmlObject->Stock_Article as $xmlStockArticleObject) { $quantity = $xmlStockArticleObject['Stock_Dispo']; $ref = $xmlStockArticleObject['Reference']; $dao->setStock($ref, $quantity); $dao->setStockAttributes($ref, $quantity); Log::write("Treatment for reference = ".$xmlStockArticleObject['Reference'], "info"); } $isOkResponse = true; } if($isOkResponse && !ForceRequest::isForcedRequest()){ Configuration::updateValue($CONF_LastrequestLbl.$wsName, Scheduler::getTimeOnInit()); } Log::write("End request ".$wsName." ------

", "info"); break; /* * WSO-G003 * GET /expedition/colis */ case "WSO-G003": Log::write("Do request ".$wsName." ------", "info"); $response = $getOSIReq->wso_g003($dateFrom, $dateTo); $xmlObject = Xml::parseToObject($response->getResponse()); $isOkResponse = false; if(isset($xmlObject) && isOkGetResult($response->getCode())){ foreach($xmlObject->Colis_Expedition as $xmlColisExpeditionObject) { $orderId = $xmlColisExpeditionObject['Num_Com_Web']; $trackingCode = $xmlColisExpeditionObject['Num_Colis']; $dao->setOrderTrackingCode($orderId, $trackingCode); Log::write("Treatment for order = ".$orderId, "info"); } $isOkResponse = true; } if($isOkResponse && !ForceRequest::isForcedRequest()){ Configuration::updateValue($CONF_LastrequestLbl.$wsName, Scheduler::getTimeOnInit()); } Log::write("End request ".$wsName." ------

", "info"); break; /* * WSO-G008 * GET /affaire/commande/etat */ case "WSO-G008": Log::write("Do request ".$wsName." ------", "info"); $response = $getOSIReq->wso_g008($dateFrom, $dateTo); $xmlObject = Xml::parseToObject($response->getResponse()); $isOkResponse = false; if(isset($xmlObject) && isOkGetResult($response->getCode())){ foreach($xmlObject->Etat_Commande as $xmlStateObject) { $payState = $xmlStateObject['Statut_Paiement']; $logisticState = $xmlStateObject['Statut_Logistique']; $orderState = $xmlStateObject['Etat']; $orderNumWeb = $xmlStateObject['Num_Com_Web']; $idState = Mapping::osiState2PsStateId($logisticState, $payState, $orderState); if(isset($idState)){ $dateAdd = Date::timestamp2DateTimeBdd(time()); if($payState == 'P' || $payState == 'T') { Db::getInstance()->Execute(' UPDATE `'._DB_PREFIX_.'opensi_order` set paid = "1", date_paid = "'.date('Y-m-d H:i:s').'" WHERE id_order = "'.$orderNumWeb.'" and paid = "0" '); } $alwaysInserted = $dao->isAlwaysInThisState($orderNumWeb, $idState); if(!$alwaysInserted){ $dao->setState($orderNumWeb, $idState, $dateAdd); } } Log::write("Treatment for num webOrder = ".$orderNumWeb, "info"); } $isOkResponse = true; } if($isOkResponse && !ForceRequest::isForcedRequest()){ Configuration::updateValue($CONF_LastrequestLbl.$wsName, Scheduler::getTimeOnInit()); } Log::write("End request ".$wsName." ------

", "info"); /* After state orders, invoices are recovered if OpenSi invoices are enabled */ if(Configuration::get('OSI_INVOICE') == 1) { /* * WSO-G037 * GET /article/stock */ Log::write("Do request WSO-G037 ------", "info"); $response = $getOSIReq->wso_g037($dateFrom, $dateTo); $xmlObject = Xml::parseToObject($response->getResponse()); if(isset($xmlObject) && isOkGetResult($response->getCode())){ foreach($xmlObject->Numero_Facture_Vente as $xmlInvoiceObject) { $invoice_number = $xmlInvoiceObject['Numero']; $type = $xmlInvoiceObject['Type']; // F = Facturé, A = Avoir $order = $xmlInvoiceObject['Num_Com_Web']; $dao->setInvoiceNumber(GlobalConfig::getServiceCode(), $order, $invoice_number, $type); Log::write("Treatment for number invoice = ".$xmlInvoiceObject['Numero']." (Order : ".$xmlInvoiceObject['Num_Com_Web'].")", "info"); } } Log::write("End request WSO-G037 ------

", "info"); } break; /* * WSO-G009 * GET /article/prix */ case "WSO-G009": Log::write("Do request ".$wsName." ------", "info"); $response = $getOSIReq->wso_g009($dateFrom, $dateTo); $xmlObject = Xml::parseToObject($response->getResponse()); $isOkResponse = false; if(isset($xmlObject) && isOkGetResult($response->getCode())){ foreach($xmlObject->Prix_Article as $xmlPriceObject) { // values $ref = $xmlPriceObject['Reference']; $priceTtc = $xmlPriceObject['Tarif_TTC_'.GlobalConfig::getDefaultPrice()]; $priceTtc = doubleval($priceTtc); $rate = $xmlPriceObject["Taux_TVA"]; $rate = doubleval($rate); $purchaseHt = $xmlPriceObject['Prix_Achat']; $purchaseHt = doubleval($purchaseHt); $priceHt = $priceTtc/(1+($rate/100)); /* * Prestashop 1.3 => $tax = id_tax * Prestashop 1.4 => $tax = id_tax_rules_group */ if(substr(_PS_VERSION_, 0, 3) > 1.3) { $tax = $dao->getTaxRuleGroupId($rate, GlobalConfig::getDefaultCountryId()); if($tax == null){ $dao->addTax($rate, GlobalConfig::getDefaultCountryId()); $tax = $dao->getTaxRuleGroupId($rate, GlobalConfig::getDefaultCountryId()); } } else { $tax = $dao->getTaxId($rate); if($tax == null){ $dao->addTax($rate); $tax = $dao->getTaxId($rate); } } /* Update of the prices */ $dao->setPrice($ref, $priceHt, $purchaseHt, $tax); $dao->setPriceAttribute($ref, $priceTtc, $priceHt, $purchaseHt, $tax, GlobalConfig::getDefaultCountryId()); Log::write("Treatment for reference = ".$ref, "info"); } $isOkResponse = true; } if($isOkResponse && !ForceRequest::isForcedRequest()){ Configuration::updateValue($CONF_LastrequestLbl.$wsName, Scheduler::getTimeOnInit()); } Log::write("End request ".$wsName." ------

", "info"); break; } } function isOkGetResult($codeResult) { /* * Result code 200 => Ok */ if($codeResult == 200){ return true; } else { Log::write("The HTTP response code is not ok (valid => 200). result code = ".$codeResult, "warn"); return false; } }