[-] BO : voucher creation in the order detail fixed
This commit is contained in:
+11
-2
@@ -692,10 +692,19 @@ class CartCore extends ObjectModel
|
|||||||
|
|
||||||
public function addCartRule($id_cart_rule)
|
public function addCartRule($id_cart_rule)
|
||||||
{
|
{
|
||||||
return Db::getInstance()->insert('cart_cart_rule', array(
|
// You can't add a cart rule that does not exist
|
||||||
|
$cartRule = new CartRule($id_cart_rule, Context::getContext()->lang->id);
|
||||||
|
if (!Validate::isLoadedObject($cartRule))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// Add the cart rule to the cart
|
||||||
|
if (!Db::getInstance()->insert('cart_cart_rule', array(
|
||||||
'id_cart_rule' => (int)$id_cart_rule,
|
'id_cart_rule' => (int)$id_cart_rule,
|
||||||
'id_cart' => (int)$this->id
|
'id_cart' => (int)$this->id
|
||||||
));
|
)))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function containsProduct($id_product, $id_product_attribute = 0, $id_customization = false, $id_address_delivery = 0)
|
public function containsProduct($id_product, $id_product_attribute = 0, $id_customization = false, $id_address_delivery = 0)
|
||||||
|
|||||||
@@ -477,8 +477,6 @@ class CartRuleCore extends ObjectModel
|
|||||||
if ($this->minimum_amount_currency != Configuration::get('PS_CURRENCY_DEFAULT'))
|
if ($this->minimum_amount_currency != Configuration::get('PS_CURRENCY_DEFAULT'))
|
||||||
{
|
{
|
||||||
$minimumAmountCurrency = new Currency($this->minimum_amount_currency);
|
$minimumAmountCurrency = new Currency($this->minimum_amount_currency);
|
||||||
//p($this->minimum_amount_currency);
|
|
||||||
|
|
||||||
if ($this->minimum_amount == 0 || $minimumAmountCurrency->conversion_rate == 0)
|
if ($this->minimum_amount == 0 || $minimumAmountCurrency->conversion_rate == 0)
|
||||||
$minimum_amount = 0;
|
$minimum_amount = 0;
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -930,33 +930,63 @@ class AdminOrdersControllerCore extends AdminController
|
|||||||
$this->applyDiscountOnInvoice($order_invoice, $cart_rules[$order_invoice->id]['value_tax_incl'], $cart_rules[$order_invoice->id]['value_tax_excl']);
|
$this->applyDiscountOnInvoice($order_invoice, $cart_rules[$order_invoice->id]['value_tax_incl'], $cart_rules[$order_invoice->id]['value_tax_excl']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$cart_rules[0]['value_tax_incl'] = $order->total_shipping_tax_incl;
|
||||||
|
$cart_rules[0]['value_tax_excl'] = $order->total_shipping_tax_excl;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
$this->errors[] = Tools::displayError('Discount type is invalid');
|
$this->errors[] = Tools::displayError('Discount type is invalid');
|
||||||
}
|
}
|
||||||
|
|
||||||
$res = true;
|
$res = true;
|
||||||
foreach ($cart_rules as $id_order_invoice => $cart_rule)
|
foreach ($cart_rules as &$cart_rule)
|
||||||
{
|
{
|
||||||
// Create OrderCartRule
|
$cartRuleObj = new CartRule();
|
||||||
$order_cart_rule = new OrderCartRule();
|
$cartRuleObj->date_from = date('Y-m-d H:i:s', strtotime('-1 hour', strtotime($order->date_add)));
|
||||||
$order_cart_rule->id_order = $order->id;
|
$cartRuleObj->date_to = date('Y-m-d H:i:s', strtotime('+1 hour'));
|
||||||
$order_cart_rule->id_order_invoice = $id_order_invoice;
|
$cartRuleObj->name[Configuration::get('PS_LANG_DEFAULT')] = Tools::getValue('discount_name');
|
||||||
$order_cart_rule->name = Tools::getValue('discount_name');
|
$cartRuleObj->quantity = 0;
|
||||||
$order_cart_rule->value = $cart_rule['value_tax_incl'];
|
$cartRuleObj->quantity_per_user = 1;
|
||||||
$order_cart_rule->value_tax_excl = $cart_rule['value_tax_excl'];
|
if (Tools::getValue('discount_type') == 1)
|
||||||
$res &= $order_cart_rule->add();
|
$cartRuleObj->reduction_percent = Tools::getValue('discount_value');
|
||||||
|
elseif (Tools::getValue('discount_type') == 2)
|
||||||
$order->total_discounts += $order_cart_rule->value;
|
$cartRuleObj->reduction_amount = $cart_rule['value_tax_excl'];
|
||||||
$order->total_discounts_tax_incl += $order_cart_rule->value;
|
elseif (Tools::getValue('discount_type') == 3)
|
||||||
$order->total_discounts_tax_excl += $order_cart_rule->value_tax_excl;
|
$cartRuleObj->free_shipping = 1;
|
||||||
$order->total_paid -= $order_cart_rule->value;
|
$cartRuleObj->active = 0;
|
||||||
$order->total_paid_tax_incl -= $order_cart_rule->value;
|
if ($res = $cartRuleObj->add())
|
||||||
$order->total_paid_tax_excl -= $order_cart_rule->value_tax_excl;
|
$cart_rule['id'] = $cartRuleObj->id;
|
||||||
|
else
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($res)
|
||||||
|
{
|
||||||
|
foreach ($cart_rules as $id_order_invoice => $cart_rule)
|
||||||
|
{
|
||||||
|
// Create OrderCartRule
|
||||||
|
$order_cart_rule = new OrderCartRule();
|
||||||
|
$order_cart_rule->id_order = $order->id;
|
||||||
|
$order_cart_rule->id_cart_rule = $cart_rule['id'];
|
||||||
|
$order_cart_rule->id_order_invoice = $id_order_invoice;
|
||||||
|
$order_cart_rule->name = Tools::getValue('discount_name');
|
||||||
|
$order_cart_rule->value = $cart_rule['value_tax_incl'];
|
||||||
|
$order_cart_rule->value_tax_excl = $cart_rule['value_tax_excl'];
|
||||||
|
$res &= $order_cart_rule->add();
|
||||||
|
|
||||||
// Update Order
|
$order->total_discounts += $order_cart_rule->value;
|
||||||
$res &= $order->update();
|
$order->total_discounts_tax_incl += $order_cart_rule->value;
|
||||||
|
$order->total_discounts_tax_excl += $order_cart_rule->value_tax_excl;
|
||||||
|
$order->total_paid -= $order_cart_rule->value;
|
||||||
|
$order->total_paid_tax_incl -= $order_cart_rule->value;
|
||||||
|
$order->total_paid_tax_excl -= $order_cart_rule->value_tax_excl;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update Order
|
||||||
|
$res &= $order->update();
|
||||||
|
}
|
||||||
|
|
||||||
if ($res)
|
if ($res)
|
||||||
Tools::redirectAdmin(self::$currentIndex.'&id_order='.$order->id.'&vieworder&conf=4&token='.$this->token);
|
Tools::redirectAdmin(self::$currentIndex.'&id_order='.$order->id.'&vieworder&conf=4&token='.$this->token);
|
||||||
|
|||||||
Reference in New Issue
Block a user