[+] BO : on order edition, you can add a discount
[+] BO : on order edition, you can delete a discount // Adding two new columns in order_cart_rule table: id_order_invoice, value_tax_excl
This commit is contained in:
@@ -301,14 +301,17 @@ abstract class PaymentModuleCore extends Module
|
||||
foreach ($result as $cart_rule)
|
||||
{
|
||||
$cartRule = $cart_rule['obj'];
|
||||
$value = $cartRule->getContextualValue(true);
|
||||
$values = array(
|
||||
'tax_incl' => $cartRule->getContextualValue(true),
|
||||
'tax_excl' => $cartRule->getContextualValue(false)
|
||||
);
|
||||
// Todo : has not been tested because order processing wasn't functionnal
|
||||
if ($value > $order->total_products_wt && $cartRule->partial_use == 1 && $cartRule->reduction_amount > 0)
|
||||
if ($values['tax_incl'] > $order->total_products_wt && $cartRule->partial_use == 1 && $cartRule->reduction_amount > 0)
|
||||
{
|
||||
$voucher = clone $cartRule;
|
||||
unset($voucher->id);
|
||||
$voucher->code = empty($voucher->code) ? substr(md5($order->id.'-'.$order->id_customer.'-'.$cartRule->id), 0, 16) : $voucher->code.'-2';
|
||||
$voucher->reduction_amount = $value - $order->total_products_wt;
|
||||
$voucher->reduction_amount = $values['tax_incl'] - $order->total_products_wt;
|
||||
$voucher->id_customer = $order->id_customer;
|
||||
$voucher->quantity = 1;
|
||||
if ($voucher->add())
|
||||
@@ -323,7 +326,7 @@ abstract class PaymentModuleCore extends Module
|
||||
}
|
||||
}
|
||||
|
||||
$order->addCartRule($cartRule->id, $cartRule->name, $value);
|
||||
$order->addCartRule($cartRule->id, $cartRule->name, $values);
|
||||
|
||||
if ($id_order_state != Configuration::get('PS_OS_ERROR') AND $id_order_state != Configuration::get('PS_OS_CANCELED'))
|
||||
{
|
||||
@@ -336,7 +339,7 @@ abstract class PaymentModuleCore extends Module
|
||||
$cartRulesList .= '
|
||||
<tr style="background-color:#EBECEE;">
|
||||
<td colspan="4" style="padding:0.6em 0.4em;text-align:right">'.$this->l('Voucher name:').' '.$cartRule->name.'</td>
|
||||
<td style="padding:0.6em 0.4em;text-align:right">'.($value != 0.00 ? '-' : '').Tools::displayPrice($value, $currency, false).'</td>
|
||||
<td style="padding:0.6em 0.4em;text-align:right">'.($values['tax_incl'] != 0.00 ? '-' : '').Tools::displayPrice($values['tax_incl'], $currency, false).'</td>
|
||||
</tr>';
|
||||
}
|
||||
|
||||
|
||||
+24
-9
@@ -976,27 +976,35 @@ class OrderCore extends ObjectModel
|
||||
/**
|
||||
* @deprecated 1.5.0.1
|
||||
* @see Order::addCartRule()
|
||||
* @param $id_cart_rule
|
||||
* @param $name
|
||||
* @param $value
|
||||
* @param int $id_cart_rule
|
||||
* @param string $name
|
||||
* @param float $value
|
||||
* @return bool
|
||||
*/
|
||||
public function addDiscount($id_cart_rule, $name, $value)
|
||||
{
|
||||
Tools::displayAsDeprecated();
|
||||
return Order::addCartRule($id_cart_rule, $name, $value);
|
||||
return Order::addCartRule($id_cart_rule, $name, array('tax_incl' => $value, 'tax_excl' => '0.00'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 1.5.0.1
|
||||
* @param $id_cart_rule
|
||||
* @param $name
|
||||
* @param $value
|
||||
* @param int $id_cart_rule
|
||||
* @param string $name
|
||||
* @param array $values
|
||||
* @param int $id_order_invoice
|
||||
* @return bool
|
||||
*/
|
||||
public function addCartRule($id_cart_rule, $name, $value)
|
||||
public function addCartRule($id_cart_rule, $name, $values, $id_order_invoice = 0)
|
||||
{
|
||||
return Db::getInstance()->AutoExecute(_DB_PREFIX_.'order_cart_rule', array('id_order' => (int)$this->id, 'id_cart_rule' => (int)$id_cart_rule, 'name' => pSQL($name), 'value' => (float)$value), 'INSERT');
|
||||
$order_cart_rule = new OrderCartRule();
|
||||
$order_cart_rule->id_order = $this->id;
|
||||
$order_cart_rule->id_cart_rule = $id_cart_rule;
|
||||
$order_cart_rule->id_order_invoice = $id_order_invoice;
|
||||
$order_cart_rule->name = $name;
|
||||
$order_cart_rule->value = $values['tax_incl'];
|
||||
$order_cart_rule->value_tax_excl = $values['tax_excl'];
|
||||
$order_cart_rule->add();
|
||||
}
|
||||
|
||||
public function getNumberOfDays()
|
||||
@@ -1083,6 +1091,13 @@ class OrderCore extends ObjectModel
|
||||
SET `id_order_invoice` = '.(int)$order_invoice->id.'
|
||||
WHERE `id_order` = '.(int)$order_invoice->id_order);
|
||||
|
||||
// Update order cart rule
|
||||
Db::getInstance()->execute('
|
||||
UPDATE `'._DB_PREFIX_.'order_cart_rule`
|
||||
SET `id_order_invoice` = '.(int)$order_invoice->id.'
|
||||
WHERE `id_order` = '.(int)$order_invoice->id_order);
|
||||
|
||||
// Keep it for backward compatibility, to remove on 1.6 version
|
||||
$this->invoice_date = $order_invoice->date_add;
|
||||
$this->invoice_number = $order_invoice->number;
|
||||
$this->update();
|
||||
|
||||
@@ -36,12 +36,18 @@ class OrderCartRuleCore extends ObjectModel
|
||||
/** @var integer */
|
||||
public $id_cart_rule;
|
||||
|
||||
/** @var integer */
|
||||
public $id_order_invoice;
|
||||
|
||||
/** @var string */
|
||||
public $name;
|
||||
|
||||
/** @var integer */
|
||||
/** @var float value (tax incl.) of voucher */
|
||||
public $value;
|
||||
|
||||
/** @var float value (tax excl.) of voucher */
|
||||
public $value_tax_excl;
|
||||
|
||||
/**
|
||||
* @see ObjectModel::$definition
|
||||
*/
|
||||
@@ -49,10 +55,12 @@ class OrderCartRuleCore extends ObjectModel
|
||||
'table' => 'order_cart_rule',
|
||||
'primary' => 'id_order_cart_rule',
|
||||
'fields' => array(
|
||||
'id_order' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'required' => true),
|
||||
'name' => array('type' => self::TYPE_STRING, 'validate' => 'isGenericName', 'required' => true),
|
||||
'value' => array('type' => self::TYPE_INT, 'validate' => 'isInt', 'required' => true),
|
||||
),
|
||||
'id_order' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'required' => true),
|
||||
'id_order_invoice' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId'),
|
||||
'name' => array('type' => self::TYPE_STRING, 'validate' => 'isGenericName', 'required' => true),
|
||||
'value' => array('type' => self::TYPE_FLOAT, 'validate' => 'isFloat', 'required' => true),
|
||||
'value_tax_excl' => array('type' => self::TYPE_FLOAT, 'validate' => 'isFloat', 'required' => true)
|
||||
)
|
||||
);
|
||||
|
||||
protected $webserviceParameters = array(
|
||||
|
||||
Reference in New Issue
Block a user