Files
2019-11-20 07:44:43 +01:00

654 lines
29 KiB
PHP

<?php
/**
* NOTICE OF LICENSE
*
* This source file is subject to a commercial license from Common-Services Co., Ltd.
* Use, copy, modification or distribution of this source file without written
* license agreement from the SARL SMC is strictly forbidden.
* In order to obtain a license, please contact us: contact@common-services.com
* ...........................................................................
* INFORMATION SUR LA LICENCE D'UTILISATION
*
* L'utilisation de ce fichier source est soumise a une licence commerciale
* concedee par la societe Common-Services Co., Ltd.
* Toute utilisation, reproduction, modification ou distribution du present
* fichier source sans contrat de licence ecrit de la part de la Common-Services Co. Ltd. est
* expressement interdite.
* Pour obtenir une licence, veuillez contacter Common-Services Co., Ltd. a l'adresse: contact@common-services.com
* ...........................................................................
*
* @package SoNice Retour
* @author Alexandre D.
* @copyright Copyright (c) 2011-2015 Common Services Co Ltd - 90/25 Sukhumvit 81 - 10260 Bangkok - Thailand
* @license Commercial license
* Support by mail : support.sonice@common-services.com
*/
require_once(_PS_MODULE_DIR_.'sonice_retour/classes/SoColissimoWebService.php');
require_once(_PS_MODULE_DIR_.'sonice_retour/classes/SoNiceEtiquetageValidate.php');
final class SoNiceRetourPDF extends SoColissimoWebService
{
const FUNCTION_WS = 'getLetterColissimo';
const SCE_TABLE = 'so_return_label';
public $ps15x;
public $id_lang;
public $protocol;
public $url;
public $path;
public $product_list;
public $id_order_details_to_return;
public $order;
public $customer;
public $address;
public $params;
protected $need_cn23 = array(
'FR', 'BE', 'MC', 'AD', 'NL', 'DE', 'GB', 'LU', 'ES', 'PT', 'AT', 'CZ', 'HU', 'SK', 'SI', 'LT', 'LV', 'EE'
);
public function __construct($id_order, $id_order_details)
{
if (!is_null($id_order)) {
$this->order = new Order((int)$id_order);
}
if (!is_null($id_order_details)) {
$this->id_order_details_to_return = $id_order_details;
}
if (Validate::isLoadedObject($this->order)) {
$this->customer = new Customer((int)$this->order->id_customer);
$this->product_list = $this->order->getProductsDetail();
$this->address = new Address((int)$this->order->id_address_delivery);
$relais = false;
if ($this->ps15x && (Module::isEnabled('soflexibilite') || Module::isEnabled('soliberte'))) {
$soflexibilite_relays = Configuration::getMultiple(array(
'SOFLEXIBILITE_A2P_ID',
'SOFLEXIBILITE_BPR_ID',
'SOLIBERTE_A2P_ID',
'SOLIBERTE_BPR_ID'
));
if (strpos($this->address->alias, 'So Colissimo') !== false
&& in_array($this->order->id_carrier, $soflexibilite_relays)) {
$relais = true;
}
}
if ($this->ps15x && Module::isEnabled('chronopost')) {
$chronopost_relais = Configuration::get('CHRONORELAIS_CARRIER_ID');
if (strpos($this->address->alias, 'ChronoRelais') !== false
&& $this->order->id_carrier == $chronopost_relais) {
$relais = true;
}
}
if ($this->ps15x && Module::isEnabled('dpdfrance')) {
$relais = (bool)Db::getInstance()->getValue(
'SELECT `relay_id`
FROM `'._DB_PREFIX_.'dpdfrance_shipping`
WHERE `id_customer` = '.(int)$this->order->id_customer.'
AND `id_cart` = '.(int)$this->order->id_cart.'
AND `id_carrier` = '.(int)$this->order->id_carrier
);
}
if ($relais) {
// si l'adresse de livraison correspond a un relais on utilise l'adresse de facturation sur l'etiquette
$this->address = new Address((int)$this->order->id_address_invoice);
}
Context::getContext()->shop = new Shop($this->order->id_shop);
}
parent::__construct();
$this->path = _PS_MODULE_DIR_.'sonice_retour/';
$this->protocol = Configuration::get('PS_SSL_ENABLED') ? 'https://' : 'http://';
$this->url = $this->protocol.htmlspecialchars($_SERVER['HTTP_HOST'], ENT_COMPAT, 'UTF-8').
__PS_BASE_URI__.'modules/sonice_retour/';
$this->ps15x = version_compare(_PS_VERSION_, '1.5', '>=');
if (version_compare(_PS_VERSION_, '1.5', '>=')) {
$this->id_lang = (int)Context::getContext()->language->id;
$this->context = Context::getContext();
} else {
require_once(dirname(__FILE__).'/../backward_compatibility/backward.php');
$this->context = Context::getContext();
$this->id_lang = (int)Context::getContext()->language->id;
$this->context->shop->id = null;
$this->context->shop->id_shop_group = null;
}
}
public function l($string, $specific = false, $locale = null)
{
if (!$specific) {
$specific = basename(__FILE__, '.php');
}
if (class_exists('Translate')) {
return Translate::getModuleTranslation(get_parent_class(), $string, $specific);
}
return parent::l($string, $specific);
}
/**
* Call Coliposte Web Service
*
* @return bool
*/
public function callWS($login = null, $pwd = null, $params = null)
{
if (!$this->webServiceSupervision()) {
$this->error = new StdClass();
$this->error->errorID = 'SoNiceRetourPDF line '.__LINE__;
$this->error->error = $this->l(
'Network Supervision Failed. The Coliposte web service is currently having some trouble or is in maintenance. Please try again in a moment.'
);
return (false);
}
try {
if (is_array($params) && count($params)) {
$parameters = $params;
} else {
$parameters = $this->_getParams();
if ($login && $pwd) {
$parameters['letter']['password'] = $pwd;
$parameters['letter']['contractNumber'] = $login;
}
}
$this->response = parent::_callWS($parameters);
} catch (Exception $e) {
$this->error = new StdClass();
$this->error->errorID = 'SoNiceRetourPDF line '.__LINE__;
$this->error->error = sprintf('%s : %s', $e->getLine(), $e->getMessage());
return (false);
}
return (true);
}
public function getFormattedResponse()
{
$result = array();
$result['errorID'] = null;
$result['error'] = null;
$result['PdfUrl'] = null;
if (!$this->response instanceof SimpleXMLElement) {
$result['errorID'] = 'SoNiceRetourPDF #'.__LINE__;
$result['error'] = $this->l('The result does not have an XML format.');
return ($result);
}
$elements = $this->response->xpath('//Envelope/Body/generateLabelResponse/*');
if (!isset($elements[0]) || !isset($elements[0]->messages)) {
$result['errorID'] = 'SoNiceRetourPDF line '.__LINE__;
$result['error'] = 'Wrong Message';
if (isset($elements[0]->faultcode) && isset($elements[0]->faultstring)) {
echo '<pre>'.print_r($elements, true).'</pre>';
}
return ($result);
}
if ($elements[0]->messages->type == 'ERROR') {
$result['errorID'] = $elements[0]->messages->id;
$result['error'] = $elements[0]->messages->messageContent;
return ($result);
}
$result['parcelNumber'] = (string)$elements[0]->labelResponse->parcelNumber;
if ($this->demo) {
$result['parcelNumber'] = '8R'.abs(rand(1000000, 9999999)).abs(rand(100, 999));
}
// Download label
if ($this->demo) {
$result['PdfUrl'] = $this->url.'functions/demo_retour.pdf';
} elseif (isset($elements[0]->labelResponse->pdfUrl) && Tools::strlen((string)$elements[0]->labelResponse->pdfUrl)) {
$label = Tools::file_get_contents(str_replace('&amp;', '&', (string)$elements[0]->labelResponse->pdfUrl));
if (file_put_contents($this->path.'download/'.$result['parcelNumber'].'.pdf', $label)) {
$result['PdfUrl'] = str_replace('&amp;', '&', (string)$elements[0]->labelResponse->pdfUrl);
}
} elseif (!isset($elements[0]->labelResponse->pdfUrl)) {
$label = $this->raw_response->parse()->getLabelBinary();
if (!file_put_contents($this->path.'download/'.$result['parcelNumber'].'.pdf', $label)) {
echo $this->l('ERROR, unable to save label on the server. Please check the access permission of the folder ').
_PS_MODULE_DIR_.'sonice_retour/download/';
}
} else {
$result['errorID'] = 'SoNiceRetourPDF line '.__LINE__;
$result['error'] = 'No PDF from Coliposte to download...';
}
return ($result);
}
/**
* Fill the parameters for the web service
*
* @return array
*/
private function _getParams()
{
$date_deposite = new DateTime();
if (!Tools::strlen($this->module_conf['ContractNumber']) || !Tools::strlen($this->module_conf['Password']) ||
!Tools::strlen($this->module_conf['companyName']) || !Tools::strlen($this->module_conf['Line2']) ||
!Tools::strlen($this->module_conf['PostalCode']) || !Tools::strlen($this->module_conf['City'])) {
die($this->l('You need to configure the module with your login and address details.'));
}
if (Tools::strlen($this->module_conf['deposit_date'])) {
$date_deposite->modify('+'.(int)$this->module_conf['deposit_date'].' Day');
}
$order_total_weight = (float)$this->order->getTotalWeight();
if (!$order_total_weight || $order_total_weight < 0.01) {
$order_total_weight = 0.01;
}
if ($order_total_weight > 30) {
$order_total_weight /= 1000;
}
$phone_mobile = $this->address->phone_mobile;
if (!preg_match('/^((\+|00)([0-9]{1,3})\s?|0)[067]{1,2}(\s?\d{2}){4}$/', $phone_mobile)) {
$phone_mobile = $this->address->phone_mobile;
}
// For senderParcelRef
// If no id_return is given then we get the new one that should be created
$parcel_ref = (int)Tools::getValue('id_return') ?: (int)Db::getInstance()->getValue(
'SELECT 1 + IFNULL((
SELECT `id_order_return` AS `id_order_return`
FROM `'._DB_PREFIX_.'order_return`
ORDER BY `id_order_return` DESC
LIMIT 1),
0)'
);
$this->updateSenderAddress();
$this->updateAddresseeAddress();
$total_shipping_fee = version_compare(_PS_VERSION_, '1.5', '>=') ?
$this->order->total_shipping_tax_incl : $this->order->total_shipping;
$total_shipping_fee = Tools::ps_round($total_shipping_fee, 2);
$params = array(
'contractNumber' => SoNiceEtiquetageValidate::sanitize($this->module_conf['ContractNumber'], 'N6', 'contractNumber'),
'password' => SoNiceEtiquetageValidate::sanitize($this->module_conf['Password'], 'AN6..15', 'password'),
'outputFormat' => array(
'x' => 0,
'y' => 0,
'outputPrintingType' => 'PDF_A4_300dpi',
'returnType' => $this->module_conf['returnType']
),
'letter' => array(
'service' => array(
'productCode' => (Tools::strtoupper(Country::getIsoById((int)$this->address->id_country)) == 'FR' ? 'CORE' : 'CORI'),
'depositDate' => $date_deposite->format('Y-m-d'),
'transportationAmount' => SoNiceEtiquetageValidate::sanitize($total_shipping_fee * 100, 'N', 'transportationAmount'),
'totalAmount' => SoNiceEtiquetageValidate::sanitize($total_shipping_fee * 100, 'N', 'totalAmount'), // International
'orderNumber' => SoNiceEtiquetageValidate::sanitize($this->order->id, 'N0..30', 'orderNumber'),
'commercialName' => SoNiceEtiquetageValidate::sanitize($this->module_conf['companyName'], 'AN', 'commercialName'),
),
'parcel' => array(
'insuranceValue' => null,
'weight' => SoNiceEtiquetageValidate::sanitize($order_total_weight, 'N', 'weight'),
'nonMachinable' => false,
'instructions' => null,
'pickupLocationId' => null,
),
'customsDeclarations' => $this->getCustomsDeclarations(),
'sender' => array(
'senderParcelRef' => SoNiceEtiquetageValidate::sanitize('RET'.$parcel_ref, 'AN', 'senderParcelRef'),
'address' => array(
'companyName' => SoNiceEtiquetageValidate::sanitize($this->address->company, 'AN0..35', 'sender::companyName'),
'lastName' => SoNiceEtiquetageValidate::sanitize($this->address->lastname, 'A0..35', 'sender::lastname'),
'firstName' => SoNiceEtiquetageValidate::sanitize($this->address->firstname, 'A0..35', 'sender::firstname'),
'line0' => SoNiceEtiquetageValidate::sanitize($this->address->address2, 'AN0..35', 'sender::line0'),
// OCARAT utilisation de line1 pour indiquer le nom de l'expediteur si son adresse contient un nom de societe
'line1' => SoNiceEtiquetageValidate::sanitize(
(!empty($this->address->company) ?
'(' . $this->address->lastname . ' ' . $this->address->firstname . ')' :
null
),
'AN0..35',
'sender::line1'
),
'line2' => SoNiceEtiquetageValidate::sanitize($this->address->address1, 'AN1..35', 'sender::line2'),
'line3' => null,
'countryCode' => SoNiceEtiquetageValidate::sanitize(Country::getIsoById((int)$this->address->id_country), 'A2', 'sender::countryCode'),
'city' => SoNiceEtiquetageValidate::sanitize($this->address->city, 'AN1..35', 'sender::city'),
'zipCode' => SoNiceEtiquetageValidate::sanitize($this->address->postcode, 'AN0..9', 'sender::zipCode'),
'phoneNumber' => Tools::strlen($this->address->phone) > 5
? SoNiceEtiquetageValidate::sanitize($this->address->phone, 'TP0..15', 'sender::phoneNumber', Country::getIsoById((int)$this->address->id_country))
: null,
'mobileNumber' => $phone_mobile
? SoNiceEtiquetageValidate::sanitize($phone_mobile, 'TP0..15', 'sender::mobileNumber', Country::getIsoById((int)$this->address->id_country))
: SoNiceEtiquetageValidate::sanitize($this->address->phone_mobile, 'TP0..15', 'sender::mobileNumber', Country::getIsoById((int)$this->address->id_country)),
'doorCode1' => null,
'doorCode2' => null,
'email' => SoNiceEtiquetageValidate::sanitize($this->customer->email, 'AN0..80', 'sender::email'),
'intercom' => null
)
),
'addressee' => array(
'address' => array(
'companyName' => SoNiceEtiquetageValidate::sanitize($this->module_conf['companyName'], 'AN0..35', 'addressee::companyName'),
'lastName' => SoNiceEtiquetageValidate::sanitize($this->module_conf['Name'], 'A0..35', 'addressee::lastname'),
'firstName' => SoNiceEtiquetageValidate::sanitize($this->module_conf['Surname'], 'A0..29', 'addressee::firstname'),
'line0' => SoNiceEtiquetageValidate::sanitize($this->module_conf['Line0'], 'AN0..35', 'addressee::line0'),
'line1' => null,
'line2' => SoNiceEtiquetageValidate::sanitize($this->module_conf['Line2'], 'AN1..35', 'addressee::line2'),
'line3' => null,
'countryCode' => Country::getIsoById(Configuration::get('PS_SHOP_COUNTRY_ID')) ?: 'FR',
'city' => SoNiceEtiquetageValidate::sanitize($this->module_conf['City'], 'AN1..35', 'addressee::city'),
'zipCode' => SoNiceEtiquetageValidate::sanitize($this->module_conf['PostalCode'], 'AN0..9', 'addressee::zipCode'),
'phoneNumber' => SoNiceEtiquetageValidate::sanitize($this->module_conf['phoneNumber'], 'TP0..15', 'addressee::phoneNumber'),
'mobileNumber' => null,
'doorCode1' => null,
'doorCode2' => null,
'email' => SoNiceEtiquetageValidate::sanitize($this->module_conf['Mail'], 'AN0..80', 'addressee::email'),
'intercom' => null,
'language' => 'FR',
)
)
)
);
$this->validateParameters($params);
return ($params);
}
private function updateAddresseeAddress()
{
$product = (array)$this->order->getProducts();
$product = reset($product);
$id_warehouse = array_key_exists('id_warehouse', $product) ?
$product['id_warehouse'] : 0;
if (Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT') && $id_warehouse) {
$warehouse = new Warehouse($id_warehouse) ;
if (Validate::isLoadedObject($warehouse)) {
if ($id_address = (int)$warehouse->id_address) {
$address = new Address($id_address);
if (Validate::isLoadedObject($address)) {
$this->module_conf['companyName'] = $warehouse->name;
$this->module_conf['Line2'] = $address->address1;
$this->module_conf['Line0'] = $address->address2;
$this->module_conf['countryCode'] = Country::getIsoById($address->id_country);
$this->module_conf['city'] = $address->city;
$this->module_conf['zipCode'] = $address->postcode;
$this->module_conf['phoneNumber'] = $address->phone;
$this->module_conf['mobileNumber'] = $address->phone_mobile;
}
}
}
}
}
private function updateSenderAddress()
{
$relay = Db::getInstance()->getRow(
'SELECT *
FROM `'._DB_PREFIX_.'socolissimo_delivery_info`
WHERE `id_cart` = '.(int)$this->order->id_cart.'
AND `id_customer` = '.(int)$this->order->id_customer
);
if ($relay && count($relay)) {
$invoice_address = new Address($this->order->id_address_invoice);
if (Validate::isLoadedObject($invoice_address)) {
$this->address = $invoice_address;
// $this->address->company = $relay['cecompanyname'];
// $this->address->firstname = isset($relay['cefirstname']) && $relay['cefirstname'] ?
// Tools::ucfirst($relay['cefirstname']) : Tools::ucfirst($relay['prfirstname']);
// $this->address->lastname = isset($relay['cename']) && $relay['cename'] ?
// Tools::ucfirst($relay['cename']) : Tools::ucfirst($this->address->lastname);
// $this->address->address1 = isset($relay['praddress1']) && $relay['praddress1'] ?
// Tools::ucfirst($relay['praddress1']) : Tools::ucfirst($this->address->address1);
// $this->address->address2 = isset($relay['praddress2']) && $relay['praddress2'] ?
// Tools::ucfirst($relay['praddress2']) : Tools::ucfirst($this->address->address2);
// $this->address->postcode = isset($relay['przipcode']) && $relay['przipcode'] ?
// Tools::ucfirst($relay['przipcode']) : Tools::ucfirst($this->address->postcode);
// $this->address->city = isset($relay['prtown']) && $relay['prtown'] ?
// Tools::ucfirst($relay['prtown']) : Tools::ucfirst($this->address->city);
//
// if (isset($relay['cecountry']) && Tools::strlen($relay['cecountry']) == 2) {
// $id_country = Country::getByIso($relay['cecountry']);
// if ($this->address->id_country !== $id_country) {
// $this->address->id_country = $id_country;
// $this->address->country = Country::getNameById($this->order->id_lang, $id_country);
// }
// }
}
}
}
private function validateParameters(&$params)
{
// Lastname missing
// Marketplace order for instance
if (!isset($params['letter']['sender']['address']['lastName']) || !$params['letter']['sender']['address']['lastName']) {
if (strpos($params['letter']['sender']['address']['firstName'], 'co')) {
$full_name = explode('co', $params['letter']['sender']['address']['firstName']);
$full_name = explode(' ', reset($full_name));
$params['letter']['sender']['address']['firstName'] = array_shift($full_name);
$params['letter']['sender']['address']['lastName'] = implode(' ', $full_name);
} else {
$full_name = explode(' ', $params['letter']['sender']['address']['firstName']);
$params['letter']['sender']['address']['firstName'] = array_shift($full_name);
$params['letter']['sender']['address']['lastName'] = implode(' ', $full_name);
}
}
// Firstname missing
if (!isset($params['letter']['sender']['address']['firstName']) || !$params['letter']['sender']['address']['firstName'] ||
Tools::strlen($params['letter']['sender']['address']['firstName']) < 2) {
if (strpos($params['letter']['sender']['address']['lastName'], ' co ')) {
$full_name = explode('co', $params['letter']['sender']['address']['lastName']);
$full_name = explode(' ', reset($full_name));
$params['letter']['sender']['address']['lastName'] = array_shift($full_name);
$params['letter']['sender']['address']['firstName'] = implode(' ', $full_name);
} else {
$full_name = explode(' ', $params['letter']['sender']['address']['lastName']);
$params['letter']['sender']['address']['lastName'] = array_shift($full_name);
$params['letter']['sender']['address']['firstName'] = implode(' ', $full_name);
}
}
// If COLI and no shipping fee then set it to 1EUR
if (isset($params['letter']['service']['productCode']) &&
in_array($params['letter']['service']['productCode'], array('CORI'))) {
$params['letter']['service']['transportationAmount'] = max(
100,
(int)$params['letter']['service']['transportationAmount']
);
$params['letter']['service']['totalAmount'] = max(
100,
(int)$params['letter']['service']['totalAmount']
);
}
}
private function getCustomsDeclarations()
{
$customs_declarations = null;
$address_country = Tools::strtoupper(Country::getIsoById((int)$this->address->id_country));
$currency = new Currency($this->order->id_currency);
if (in_array($address_country, $this->need_cn23)) {
return $customs_declarations;
}
if (!Validate::isLoadedObject($currency)) {
$currency = new stdClass();
$currency->iso_code = 'EUR';
}
// Invoice number missing fix
// In case of external ERP, etc.
if (!$this->order->invoice_number) {
$this->order->invoice_number = sprintf('%06s', $this->order->id);
}
$articles = array();
foreach ($this->order->getProducts() as $id_product => $product) {
if ($product['product_price'] == 0) {
$product['product_price'] = 1;
}
$articles[$id_product] = array(
'description' => SoNiceEtiquetageValidate::sanitize(
Tools::substr(str_replace(',', '', strip_tags($product['product_name'])), 0, 63),
'AN1..64'
),
'quantity' => (int)SoNiceEtiquetageValidate::sanitize($product['product_quantity'], 'N'),
'weight' => ($product['product_weight'] >= 0.01) ?
(float)SoNiceEtiquetageValidate::sanitize($product['product_weight'], 'N') : 0.01,
'value' => (float)SoNiceEtiquetageValidate::sanitize($product['product_price'], 'N'),
'hsCode' => 123456, // TODO SoNiceEtiquetageHsCode::getProductHsCode($product['product_id']),
'originCountry' => $address_country,
'currency' => $currency->iso_code,
'artref' => $product['product_reference'],
'originalIdent' => 'A'
);
if (isset($this->module_conf['weight_unit']) && $this->module_conf['weight_unit'] == 'g') {
$articles[$id_product]['weight'] /= 1000;
}
}
$articles['category'] = array(
'value' => 6 // Retour de marchandise
);
$articles['original'] = array(
'originalIdent' => 'A',
'originalInvoiceNumber' => $this->order->invoice_number,
'originalInvoiceDate' => date('Y-m-d', strtotime($this->order->invoice_date)),
'originalParcelNumber' => $this->order->shipping_number
);
$invoice_format = '%1$s%2$06d';
if (Configuration::get(
'PS_INVOICE_USE_YEAR',
null,
$this->context->shop->id_shop_group,
$this->context->shop->id
)) {
$invoice_format = Configuration::get(
'PS_INVOICE_YEAR_POS',
null,
$this->context->shop->id_shop_group,
$this->context->shop->id
) ? '%1$s%3$s/%2$06d' : '%1$s%2$06d/%3$s';
}
$customs_declarations = array(
'includeCustomsDeclarations' => true,
'contents' => $articles,
'invoiceNumber' => sprintf(
$invoice_format,
Configuration::get(
'PS_INVOICE_PREFIX',
null,
$this->context->shop->id_shop_group,
$this->context->shop->id
),
$this->order->invoice_number
),
'licenceNumber' => null,
'certificatNumber' => null
);
return ($customs_declarations);
}
public static function getParcelNumberByIdOrder($id_order)
{
if (!is_int($id_order)) {
return (false);
}
return (Db::getInstance()->getValue('SELECT `parcel_number` FROM '._DB_PREFIX_.self::SCE_TABLE.' WHERE `id_order` = '.(int)$id_order));
}
public static function getLabelInformationByIdOrder($id_order)
{
if (!is_int($id_order)) {
return (false);
}
$data = Db::getInstance()->executeS('SELECT * FROM '._DB_PREFIX_.self::SCE_TABLE.' WHERE `id_order` = '.(int)$id_order);
if (!is_array($data) || !count($data) || !$data) {
return (false);
}
return ($data[0]);
}
public static function getIdOrderByParcelNumber($parcel_number)
{
if (!$parcel_number) {
return (false);
}
return ((int)Db::getInstance()->getValue('SELECT `id_order` FROM '._DB_PREFIX_.self::SCE_TABLE.' WHERE `parcel_number` = "'.$parcel_number.'"'));
}
public static function deleteLabelByIdOrder($id_order)
{
if (!$id_order) {
return (false);
}
return (Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'sonice_etq_label WHERE `id_order` = '.(int)$id_order));
}
public static function getIdOrderCarrierByOrderId($id_order)
{
if (!$id_order) {
return (false);
}
return (Db::getInstance()->getValue('SELECT `id_order_carrier` FROM `'._DB_PREFIX_.'order_carrier` WHERE `id_order` = '.(int)$id_order));
}
}