Current File : /var/www/vinorea/modules/ipexportimport/classes/import/order/EIAOrderCarrier.php |
<?php
/**
*
* NOTICE OF LICENSE
*
* @author SmartPresta <tehran.alishov@gmail.com>
* @copyright 2024 SmartPresta
* @license Commercial License
*/
if (!defined('_PS_VERSION_')) {
exit;
}
class EIAOrderCarrier
{
public $id_order;
public $invoiceObj;
public $id_carrier;
public $baseOrderData;
public $weight;
public $tracking_number;
public $shipping_cost_tax_excl;
public $shipping_cost_tax_incl;
public $id_order_invoice;
public $date_add;
public $row;
public $id_process;
public $validateOnly;
public function __construct($id_order = null, $baseOrderData = null, $row = null, $id_process = null, $validateOnly = false, $invoiceObj = null)
{
$this->id_order = (int) $id_order;
$this->invoiceObj = $invoiceObj;
$this->baseOrderData = $baseOrderData;
$this->row = $row;
$this->id_process = $id_process;
$this->validateOnly = $validateOnly;
}
public function save()
{
$carriers = $this->getOrderCarriers();
if (!$carriers) {
if (!empty($this->baseOrderData['ids_carrier'])) {
$data = $this->baseOrderData['ids_carrier'];
} elseif (!empty($this->baseOrderData['ids_reference'])) {
$data = $this->baseOrderData['ids_reference'];
} elseif (!empty($this->baseOrderData['carrier_names'])) {
$data = $this->baseOrderData['carrier_names'];
} else {
return false;
}
foreach ($data as $key => $val) {
$this->setDataObject($key);
}
} else {
foreach ($carriers as $key => $carrier) {
$this->setDataObject($key, $carrier->id);
}
}
}
private function setDataObject($key, $id_order_carrier = null)
{
if (!$id_order_carrier && !empty($this->baseOrderData['ids_order_carrier'][$key])) {
$id_order_carrier = (int) $this->baseOrderData['ids_order_carrier'][$key];
}
$obj = new OrderCarrier($id_order_carrier);
$this->getObjectVariables($this->baseOrderData, $obj, $key);
$obj->id_order = $this->id_order;
$obj->id_carrier = $this->id_carrier;
$obj->id_order_invoice = $this->id_order_invoice;
$obj->shipping_cost_tax_excl = $this->shipping_cost_tax_excl;
$obj->shipping_cost_tax_incl = $this->shipping_cost_tax_incl;
$obj->tracking_number = $this->tracking_number;
$obj->weight = $this->weight;
$obj->date_add = $this->date_add;
if (($error = $obj->validateFields(false, true)) !== true) {
throw new PrestaShopException("Error: $error. ID: $this->id_order. Row in file: $this->row.");
}
$this->validateOnly || $obj->save();
}
private function getObjectVariables($data, $obj, $key)
{
if (isset($data['ids_carrier'][$key])) {
$this->id_carrier = $data['ids_carrier'][$key] ? $data['ids_carrier'][$key] : 0;
} elseif (!empty($data['carrier_names'][$key])) {
$this->id_carrier = EIAOrdersImport::getCarrierIdByName($data['carrier_names'][$key]);
} elseif (!empty($data['ids_reference'][$key])) {
$this->id_carrier = EIAOrdersImport::getCarrierIdByReference($data['ids_reference'][$key]);
} else {
$this->id_carrier = $obj->id_carrier;
}
if (isset($data['id_order_invoice'][$key])) {
$this->id_order_invoice = $data['id_order_invoice'][$key] ? $data['id_order_invoice'][$key] : 0;
} else {
$this->id_order_invoice = $obj->id_order_invoice;
}
if (isset($data['total_shipping_tax_incl'][$key])) {
$this->shipping_cost_tax_incl = $data['total_shipping_tax_incl'][$key] ? EIATools::preparePrice($data['total_shipping_tax_incl'][$key]) : 0;
} else {
$this->shipping_cost_tax_incl = $obj->shipping_cost_tax_incl;
}
if (isset($data['total_shipping_tax_excl'][$key])) {
$this->shipping_cost_tax_excl = $data['total_shipping_tax_excl'][$key] ? EIATools::preparePrice($data['total_shipping_tax_excl'][$key]) : 0;
} else {
$this->shipping_cost_tax_excl = $obj->shipping_cost_tax_excl;
}
if (isset($data['carrier_tracking_number'][$key])) {
$this->tracking_number = $data['carrier_tracking_number'][$key] ? $data['carrier_tracking_number'][$key] : '';
} else {
$this->tracking_number = $obj->tracking_number;
}
if (isset($data['carrier_weight'][$key])) {
$this->weight = $data['carrier_weight'][$key] ? $data['carrier_weight'][$key] : 0;
} else {
$this->weight = $obj->weight;
}
if (isset($data['carrier_date_add'][$key])) {
$this->date_add = $data['carrier_date_add'][$key] ? $data['carrier_date_add'][$key] : date('Y-m-d H:i:s');
} else {
$this->date_add = $obj->date_add;
}
}
private function getOrderCarriers()
{
$sql = "
SELECT *
FROM " . _DB_PREFIX_ . "order_carrier as o
WHERE o.id_order = " . (int) $this->id_order;
return ObjectModel::hydrateCollection('OrderCarrier', Db::getInstance()->executeS($sql));
}
}