Current File : /var/www/vinorea/modules/ipexportimport/classes/import/order/EIAOrderCartRule.php |
<?php
/**
*
* NOTICE OF LICENSE
*
* @author SmartPresta <tehran.alishov@gmail.com>
* @copyright 2024 SmartPresta
* @license Commercial License
*/
if (!defined('_PS_VERSION_')) {
exit;
}
class EIAOrderCartRule
{
public $id_order;
public $name;
public $value;
public $code;
public $value_tax_excl;
public $id_order_cart_rule;
public $id_cart_rule;
public $free_shipping;
public $baseOrderData;
public $row;
public $id_process;
public $validateOnly;
public function __construct($id_order = null, $baseOrderData = null, $row = null, $id_process = null, $validateOnly = false)
{
$this->id_order = (int) $id_order;
$this->baseOrderData = $baseOrderData;
$this->row = $row;
$this->id_process = $id_process;
$this->validateOnly = $validateOnly;
}
public function save()
{
if (empty($this->baseOrderData['cart_rule_name'])) {
return false;
}
foreach ($this->baseOrderData['cart_rule_name'] as $key => $val) {
$this->id_order_cart_rule = $id_order_cart_rule = $this->getOrderCartRule($key);
$obj = new OrderCartRule($id_order_cart_rule);
$this->getObjectVariables($this->baseOrderData, $obj, $key);
$obj->id_cart_rule = $this->id_cart_rule;
$obj->id_order = $this->id_order;
$obj->name = $this->name;
$obj->value = $this->value;
$obj->value_tax_excl = $this->value_tax_excl;
$obj->free_shipping = $this->free_shipping;
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['cart_rule_code'][$key])) {
$this->code = $data['cart_rule_code'][$key] ? $data['cart_rule_code'][$key] : '';
}
if (isset($data['cart_rule_name'][$key])) {
$this->name = $data['cart_rule_name'][$key] ? $data['cart_rule_name'][$key] : '';
} else {
$this->name = $obj->name;
}
if (isset($data['cart_rule_value'][$key])) {
$this->value = $data['cart_rule_value'][$key] ? EIATools::preparePrice($data['cart_rule_value'][$key]) : 0;
} else {
$this->value = $obj->value;
}
if (isset($data['cart_rule_value_tax_excl'][$key])) {
$this->value_tax_excl = $data['cart_rule_value_tax_excl'][$key] ? EIATools::preparePrice($data['cart_rule_value_tax_excl'][$key]) : 0;
} else {
$this->value_tax_excl = $obj->value_tax_excl;
}
if (isset($data['cart_rule_free_shipping'][$key])) {
$this->free_shipping = $data['cart_rule_free_shipping'][$key] ? (int) $data['cart_rule_free_shipping'][$key] : 0;
} else {
$this->free_shipping = $obj->free_shipping;
}
if (!$this->id_order_cart_rule) {
$this->id_cart_rule = $this->getCartRule($key);
} else {
$this->id_cart_rule = $obj->id_cart_rule;
}
}
private function getOrderCartRule($key)
{
$name = '';
if (isset($this->baseOrderData['cart_rule_name'][$key]) && $this->baseOrderData['cart_rule_name'][$key]) {
$name = " AND o.name = '" . pSQL($this->baseOrderData['cart_rule_name'][$key]) . "'";
}
if (!$name) {
return false;
}
$sql = "
SELECT *
FROM " . _DB_PREFIX_ . "order_cart_rule as o
WHERE o.id_order = " . (int) $this->id_order . "
" . $name . "
";
$order_cart_rule = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow($sql);
if (isset($order_cart_rule['id_order_cart_rule']) && $order_cart_rule['id_order_cart_rule']) {
return $order_cart_rule['id_order_cart_rule'];
}
return false;
}
private function getCartRule($key)
{
$code = '';
if (isset($this->baseOrderData['cart_rule_code'][$key]) && $this->baseOrderData['cart_rule_code'][$key]) {
$code = " AND c.code = '" . pSQL($this->baseOrderData['cart_rule_code'][$key]) . "'";
}
if (!$code) {
return false;
}
$sql = "
SELECT *
FROM " . _DB_PREFIX_ . "cart_rule as c
WHERE 1
" . $code . "
";
$cart_rule = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow($sql);
if (isset($cart_rule['id_cart_rule']) && $cart_rule['id_cart_rule']) {
return $cart_rule['id_cart_rule'];
}
return false;
}
}