[+] 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:
@@ -43,8 +43,8 @@
|
||||
<textarea name="note" rows="10" cols="10" id="editNote{$document->id}" class="edit-note">{$document->note|escape:'htmlall':'UTF-8'}</textarea>
|
||||
</p>
|
||||
<p class="right">
|
||||
<input type="submit" name="submitEditNote" value="{l s='Save'}" class="button" />
|
||||
<input type="button" name="cancelNote" id="cancelNote" value="{l s='Cancel'}" onclick="$('#invoiceNote{$document->id}').hide();" class="button" />
|
||||
<input type="submit" name="submitEditNote" value="{l s='Save'}" class="button" />
|
||||
<a href="#" id="cancelNote" onclick="$('#invoiceNote{$document->id}').hide();return false;">{l s='Cancel'}</a>
|
||||
</p>
|
||||
</form>
|
||||
</td>
|
||||
|
||||
@@ -544,7 +544,7 @@
|
||||
</div>
|
||||
|
||||
<div style="float:right;">
|
||||
<table class="table" width="300px;" cellspacing="0" cellpadding="0">
|
||||
<table class="table" width="450px;" cellspacing="0" cellpadding="0">
|
||||
<tr id="total_products">
|
||||
<td width="150px;"><b>{l s='Products'}</b></td>
|
||||
<td class="amount" align="right">{displayPrice price=$order->total_products_wt currency=$currency->id}</td>
|
||||
@@ -576,12 +576,13 @@
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
|
||||
{if (sizeof($discounts))}
|
||||
<div style="float:right; width:280px; margin-top:15px;">
|
||||
{if (sizeof($discounts) || $can_edit)}
|
||||
<div style="float:right; width:450px; margin-top:15px;">
|
||||
<table cellspacing="0" cellpadding="0" class="table" style="width:100%;">
|
||||
<tr>
|
||||
<th><img src="../img/admin/coupon.gif" alt="{l s='Discounts'}" />{l s='Discount name'}</th>
|
||||
<th align="center" style="width: 100px">{l s='Value'}</th>
|
||||
{if $can_edit}<th align="center" style="width: 30px">{l s='Action'}</th>{/if}
|
||||
</tr>
|
||||
{foreach from=$discounts item=discount}
|
||||
<tr>
|
||||
@@ -592,8 +593,74 @@
|
||||
{/if}
|
||||
{displayPrice price=$discount['value'] currency=$currency->id}
|
||||
</td>
|
||||
{if $can_edit}
|
||||
<td class="center">
|
||||
<a href="{$currentIndex}&submitDeleteVoucher&id_order_cart_rule={$discount['id_order_cart_rule']}&id_order={$smarty.get.id_order|escape:'htmlall':'UTF-8'}&token={$smarty.get.token|escape:'htmlall':'UTF-8'}"><img src="../img/admin/delete.gif" alt="{l s='Delete voucher'}" /></a>
|
||||
</td>
|
||||
{/if}
|
||||
</tr>
|
||||
{/foreach}
|
||||
{if $can_edit}
|
||||
<tr>
|
||||
<td colspan="3" class="center">
|
||||
<a href="#" id="add_voucher"><img src="../img/admin/add.gif" alt="{l s='Add'}" /> {l s='Add a new discount'}</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="display: none" >
|
||||
<td colspan="3" class="current-edit" id="voucher_form">
|
||||
<form method="POST" action="{$currentIndex}&viewOrder&id_order={$smarty.get.id_order|escape:'htmlall':'UTF-8'}&token={$smarty.get.token|escape:'htmlall':'UTF-8'}">
|
||||
<label>{l s='Name'}</label>
|
||||
<div class="margin-form">
|
||||
<input type="text" name="discount_name" value="" />
|
||||
</div>
|
||||
|
||||
<label>{l s='Type'}</label>
|
||||
<div class="margin-form">
|
||||
<select name="discount_type" id="discount_type">
|
||||
<option value="1">{l s='Percent'}</option>
|
||||
<option value="2">{l s='Amount'}</option>
|
||||
<option value="3">{l s='Free shipping'}</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div id="discount_value_field">
|
||||
<label>{l s='Value'}</label>
|
||||
<div class="margin-form">
|
||||
{if ($currency->format % 2)}
|
||||
<span id="discount_currency_sign" style="display: none;">{$currency->sign}</span>
|
||||
{/if}
|
||||
<input type="text" name="discount_value" size="3" />
|
||||
{if !($currency->format % 2)}
|
||||
<span id="discount_currency_sign" style="display: none;">{$currency->sign}</span>
|
||||
{/if}
|
||||
<span id="discount_percent_symbol">%</span>
|
||||
<p class="preference_description" id="discount_value_help" style="width: 95%;display: none;">
|
||||
{l s='This value must be taxes included.'}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<label>{l s='Invoice'}</label>
|
||||
<div class="margin-form">
|
||||
<select name="discount_invoice">
|
||||
{foreach from=$invoices_collection item=invoice}
|
||||
<option value="{$invoice->id}" selected="selected">#{Configuration::get('PS_INVOICE_PREFIX', $current_id_lang)}{'%06d'|sprintf:$invoice->number} - {displayPrice price=$invoice->total_paid_tax_incl currency=$order->id_currency}</option>
|
||||
{/foreach}
|
||||
</select><br />
|
||||
<input type="checkbox" name="discount_all_invoices" id="discount_all_invoices" value="1" /> <label class="t" for="discount_all_invoices">{l s='Apply on all invoices'}</label>
|
||||
<p class="preference_description" style="width: 95%">
|
||||
{l s='If you select to create this discount for all invoices, one discount will be created per order invoice.'}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<p class="center">
|
||||
<input class="button" type="submit" name="submitNewVoucher" value="{l s='Add'}" />
|
||||
<a href="#" id="cancel_add_voucher">{l s='Cancel'}</a>
|
||||
</p>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
</table>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -734,6 +734,216 @@ class AdminOrdersControllerCore extends AdminController
|
||||
Tools::redirectAdmin(self::$currentIndex.'&id_order='.$order->id.'&vieworder&conf=4&token='.$this->token);
|
||||
}
|
||||
}
|
||||
elseif (Tools::isSubmit('submitDeleteVoucher'))
|
||||
{
|
||||
if ($this->tabAccess['edit'] === '1')
|
||||
{
|
||||
$order_cart_rule = new OrderCartRule(Tools::getValue('id_order_cart_rule'));
|
||||
$order = new Order(Tools::getValue('id_order'));
|
||||
if (Validate::isLoadedObject($order_cart_rule) && Validate::isLoadedObject($order) && $order_cart_rule->id_order == $order->id)
|
||||
{
|
||||
if ($order_cart_rule->id_order_invoice)
|
||||
{
|
||||
$order_invoice = new OrderInvoice($order_cart_rule->id_order_invoice);
|
||||
if (!ValidateCore::isLoadedObject($order_invoice))
|
||||
throw new PrestashopException('Can\'t load Order Invoice object');
|
||||
|
||||
// Update amounts of Order Invoice
|
||||
$order_invoice->total_discount_tax_excl -= $order_cart_rule->value_tax_excl;
|
||||
$order_invoice->total_discount_tax_incl -= $order_cart_rule->value;
|
||||
|
||||
$order_invoice->total_paid_tax_excl += $order_cart_rule->value_tax_excl;
|
||||
$order_invoice->total_paid_tax_incl += $order_cart_rule->value;
|
||||
|
||||
// Update Order Invoice
|
||||
$order_invoice->update();
|
||||
}
|
||||
|
||||
// Update amounts of order
|
||||
$order->total_discounts -= $order_cart_rule->value;
|
||||
$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;
|
||||
|
||||
// Delete Order Cart Rule and update Order
|
||||
$order_cart_rule->delete();
|
||||
$order->update();
|
||||
Tools::redirectAdmin(self::$currentIndex.'&id_order='.$order->id.'&vieworder&conf=4&token='.$this->token);
|
||||
}
|
||||
else
|
||||
$this->_errors[] = Tools::displayError('Can\'t edit this Order Cart Rule');
|
||||
}
|
||||
else
|
||||
$this->_errors[] = Tools::displayError('You do not have permission to edit here.');
|
||||
}
|
||||
elseif (Tools::getValue('submitNewVoucher'))
|
||||
{
|
||||
if ($this->tabAccess['edit'] === '1')
|
||||
{
|
||||
$order = new Order(Tools::getValue('id_order'));
|
||||
if (!Validate::isLoadedObject($order))
|
||||
throw new PrestashopException('Can\'t load Order object');
|
||||
|
||||
// If the discount is for only one invoice
|
||||
if (!Tools::isSubmit('discount_all_invoices'))
|
||||
{
|
||||
$order_invoice = new OrderInvoice(Tools::getValue('discount_invoice'));
|
||||
if (!Validate::isLoadedObject($order_invoice))
|
||||
throw new PrestashopException('Can\'t load Order Invoice object');
|
||||
}
|
||||
|
||||
$cart_rules = array();
|
||||
switch (Tools::getValue('discount_type'))
|
||||
{
|
||||
// Percent type
|
||||
case 1:
|
||||
if (Tools::getValue('discount_value') < 100)
|
||||
{
|
||||
if (isset($order_invoice))
|
||||
{
|
||||
$cart_rules[$order_invoice->id]['value_tax_incl'] = Tools::ps_round($order_invoice->total_paid_tax_incl * Tools::getValue('discount_value') / 100, 2);
|
||||
$cart_rules[$order_invoice->id]['value_tax_excl'] = Tools::ps_round($order_invoice->total_paid_tax_excl * Tools::getValue('discount_value') / 100, 2);
|
||||
|
||||
// Update OrderInvoice
|
||||
$order_invoice->total_discount_tax_incl += $cart_rules[$order_invoice->id]['value_tax_incl'];
|
||||
$order_invoice->total_discount_tax_excl += $cart_rules[$order_invoice->id]['value_tax_excl'];
|
||||
$order_invoice->total_paid_tax_incl -= $cart_rules[$order_invoice->id]['value_tax_incl'];
|
||||
$order_invoice->total_paid_tax_excl -= $cart_rules[$order_invoice->id]['value_tax_excl'];
|
||||
|
||||
$order_invoice->update();
|
||||
}
|
||||
else
|
||||
{
|
||||
$order_invoices_collection = $order->getInvoicesCollection();
|
||||
foreach($order_invoices_collection as $order_invoice)
|
||||
{
|
||||
$cart_rules[$order_invoice->id]['value_tax_incl'] = Tools::ps_round($order_invoice->total_paid_tax_incl * Tools::getValue('discount_value') / 100, 2);
|
||||
$cart_rules[$order_invoice->id]['value_tax_excl'] = Tools::ps_round($order_invoice->total_paid_tax_excl * Tools::getValue('discount_value') / 100, 2);
|
||||
|
||||
// Update OrderInvoice
|
||||
$order_invoice->total_discount_tax_incl += $cart_rules[$order_invoice->id]['value_tax_incl'];
|
||||
$order_invoice->total_discount_tax_excl += $cart_rules[$order_invoice->id]['value_tax_excl'];
|
||||
$order_invoice->total_paid_tax_incl -= $cart_rules[$order_invoice->id]['value_tax_incl'];
|
||||
$order_invoice->total_paid_tax_excl -= $cart_rules[$order_invoice->id]['value_tax_excl'];
|
||||
$order_invoice->update();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
$this->_errors[] = Tools::displayError('Discount value is invalid');
|
||||
break;
|
||||
// Amount type
|
||||
case 2:
|
||||
if (isset($order_invoice))
|
||||
{
|
||||
if (Tools::getValue('discount_value') > $order_invoice->total_paid_tax_incl)
|
||||
$this->_errors[] = Tools::displayError('Discount value is superior than the order invoice total');
|
||||
else
|
||||
{
|
||||
$cart_rules[$order_invoice->id]['value_tax_incl'] = Tools::ps_round(Tools::getValue('discount_value'), 2);
|
||||
$cart_rules[$order_invoice->id]['value_tax_excl'] = Tools::ps_round(Tools::getValue('discount_value') / (1 + ($order->getTaxesAverageUsed() / 100)), 2);
|
||||
|
||||
// Update OrderInvoice
|
||||
$order_invoice->total_discount_tax_incl += $cart_rules[$order_invoice->id]['value_tax_incl'];
|
||||
$order_invoice->total_discount_tax_excl += $cart_rules[$order_invoice->id]['value_tax_excl'];
|
||||
$order_invoice->total_paid_tax_incl -= $cart_rules[$order_invoice->id]['value_tax_incl'];
|
||||
$order_invoice->total_paid_tax_excl -= $cart_rules[$order_invoice->id]['value_tax_excl'];
|
||||
$order_invoice->update();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$order_invoices_collection = $order->getInvoicesCollection();
|
||||
foreach($order_invoices_collection as $order_invoice)
|
||||
{
|
||||
if (Tools::getValue('discount_value') > $order_invoice->total_paid_tax_incl)
|
||||
continue;
|
||||
$cart_rules[$order_invoice->id]['value_tax_incl'] = Tools::ps_round(Tools::getValue('discount_value'), 2);
|
||||
$cart_rules[$order_invoice->id]['value_tax_excl'] = Tools::ps_round(Tools::getValue('discount_value') / (1 + ($order->getTaxesAverageUsed() / 100)), 2);
|
||||
|
||||
// Update OrderInvoice
|
||||
$order_invoice->total_discount_tax_incl += $cart_rules[$order_invoice->id]['value_tax_incl'];
|
||||
$order_invoice->total_discount_tax_excl += $cart_rules[$order_invoice->id]['value_tax_excl'];
|
||||
$order_invoice->total_paid_tax_incl -= $cart_rules[$order_invoice->id]['value_tax_incl'];
|
||||
$order_invoice->total_paid_tax_excl -= $cart_rules[$order_invoice->id]['value_tax_excl'];
|
||||
$order_invoice->update();
|
||||
}
|
||||
}
|
||||
break;
|
||||
// Free shipping type
|
||||
case 3:
|
||||
if (isset($order_invoice))
|
||||
{
|
||||
if ($order_invoice->total_shipping_tax_incl > 0)
|
||||
{
|
||||
$cart_rules[$order_invoice->id]['value_tax_incl'] = $order_invoice->total_shipping_tax_incl;
|
||||
$cart_rules[$order_invoice->id]['value_tax_excl'] = $order_invoice->total_shipping_tax_excl;
|
||||
|
||||
// Update OrderInvoice
|
||||
$order_invoice->total_discount_tax_incl += $cart_rules[$order_invoice->id]['value_tax_incl'];
|
||||
$order_invoice->total_discount_tax_excl += $cart_rules[$order_invoice->id]['value_tax_excl'];
|
||||
$order_invoice->total_paid_tax_incl -= $cart_rules[$order_invoice->id]['value_tax_incl'];
|
||||
$order_invoice->total_paid_tax_excl -= $cart_rules[$order_invoice->id]['value_tax_excl'];
|
||||
$order_invoice->update();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$order_invoices_collection = $order->getInvoicesCollection();
|
||||
foreach($order_invoices_collection as $order_invoice)
|
||||
{
|
||||
if ($order_invoice->total_shipping_tax_incl <= 0)
|
||||
continue;
|
||||
$cart_rules[$order_invoice->id]['value_tax_incl'] = $order_invoice->total_shipping_tax_incl;
|
||||
$cart_rules[$order_invoice->id]['value_tax_excl'] = $order_invoice->total_shipping_tax_excl;
|
||||
|
||||
// Update OrderInvoice
|
||||
$order_invoice->total_discount_tax_incl += $cart_rules[$order_invoice->id]['value_tax_incl'];
|
||||
$order_invoice->total_discount_tax_excl += $cart_rules[$order_invoice->id]['value_tax_excl'];
|
||||
$order_invoice->total_paid_tax_incl -= $cart_rules[$order_invoice->id]['value_tax_incl'];
|
||||
$order_invoice->total_paid_tax_excl -= $cart_rules[$order_invoice->id]['value_tax_excl'];
|
||||
$order_invoice->update();
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
$this->_errors[] = Tools::displayError('Discount type is invalid');
|
||||
}
|
||||
|
||||
$res = true;
|
||||
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_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();
|
||||
|
||||
$order->total_discounts += $order_cart_rule->value;
|
||||
$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)
|
||||
Tools::redirectAdmin(self::$currentIndex.'&id_order='.$order->id.'&vieworder&conf=4&token='.$this->token);
|
||||
else
|
||||
$this->_errors[] = Tools::displayError('An error occured on OrderCartRule creation');
|
||||
}
|
||||
else
|
||||
$this->_errors[] = Tools::displayError('You do not have permission to edit here.');
|
||||
}
|
||||
|
||||
parent::postProcess();
|
||||
}
|
||||
@@ -1050,7 +1260,11 @@ class AdminOrdersControllerCore extends AdminController
|
||||
|
||||
// Add cart rule to cart and in order
|
||||
$cart->addCartRule($cart_rule->id);
|
||||
$order->addCartRule($cart_rule->id, $cart_rule->name[Configuration::get('PS_LANG_DEFAULT')], $cart_rule->getContextualValue(true));
|
||||
$values = array(
|
||||
'tax_incl' => $cart_rule->getContextualValue(true),
|
||||
'tax_excl' => $cart_rule->getContextualValue(false)
|
||||
);
|
||||
$order->addCartRule($cart_rule->id, $cart_rule->name[Configuration::get('PS_LANG_DEFAULT')], $values);
|
||||
}
|
||||
|
||||
$order_invoice->id_order = $order->id;
|
||||
@@ -1332,16 +1546,6 @@ class AdminOrdersControllerCore extends AdminController
|
||||
if ($order_detail->id_order_invoice != 0)
|
||||
{
|
||||
$order_invoice = new OrderInvoice($order_detail->id_order_invoice);
|
||||
|
||||
/*
|
||||
TODO refresh total_discount
|
||||
$order_invoice->total_discount_tax_excl -= ;
|
||||
$order_invoice->total_discount_tax_incl -= ;
|
||||
$order_invoice->total_shipping_tax_excl -= ;
|
||||
$order_invoice->total_shipping_tax_incl -= ;
|
||||
$order_invoice->total_wrapping_tax_excl -= ;
|
||||
$order_invoice->total_wrapping_tax_incl -= ;
|
||||
*/
|
||||
$order_invoice->total_paid_tax_excl -= $order_detail->total_price_tax_incl;
|
||||
$order_invoice->total_paid_tax_incl -= $order_detail->total_price_tax_excl;
|
||||
$order_invoice->total_products -= $order_detail->total_price_tax_incl;
|
||||
@@ -1350,19 +1554,6 @@ class AdminOrdersControllerCore extends AdminController
|
||||
}
|
||||
|
||||
// Update Order
|
||||
/*
|
||||
* TODO
|
||||
$order->total_discounts -= ;
|
||||
$order->total_discounts_tax_incl -= ;
|
||||
$order->total_discounts_tax_excl -= ;
|
||||
$order->total_discounts_tax_excl -= ;
|
||||
$order->total_shipping -= ;
|
||||
$order->total_shipping_tax_incl -= ;
|
||||
$order->total_shipping_tax_excl -= ;
|
||||
$order->total_wrapping -= ;
|
||||
$order->total_wrapping_tax_incl -= ;
|
||||
$order->total_wrapping_tax_excl -= ;
|
||||
*/
|
||||
$order->total_paid -= $order_detail->total_price_tax_incl;
|
||||
$order->total_paid_tax_incl -= $order_detail->total_price_tax_incl;
|
||||
$order->total_paid_tax_excl -= $order_detail->total_price_tax_excl;
|
||||
|
||||
@@ -1133,8 +1133,10 @@ CREATE TABLE `PREFIX_order_cart_rule` (
|
||||
`id_order_cart_rule` int(10) unsigned NOT NULL auto_increment,
|
||||
`id_order` int(10) unsigned NOT NULL,
|
||||
`id_cart_rule` int(10) unsigned NOT NULL,
|
||||
`id_order_invoice` int(10) unsigned DEFAULT 0,
|
||||
`name` varchar(32) NOT NULL,
|
||||
`value` decimal(17,2) NOT NULL default '0.00',
|
||||
`value_tax_excl` decimal(17,2) NOT NULL default '0.00',
|
||||
PRIMARY KEY (`id_order_cart_rule`),
|
||||
KEY `id_order` (`id_order`),
|
||||
KEY `id_cart_rule` (`id_cart_rule`)
|
||||
|
||||
@@ -288,3 +288,5 @@ ALTER TABLE `PREFIX_product` ADD COLUMN `advanced_stock_management` tinyint(1) d
|
||||
DELETE FROM `PREFIX_configuration` WHERE `name` = 'PS_PDF_ENCODING';
|
||||
DELETE FROM `PREFIX_configuration` WHERE `name` = 'PS_PDF_FONT';
|
||||
|
||||
ALTER TABLE `PREFIX_order_cart_rule` ADD `value_tax_excl` DECIMAL(17, 2) NOT NULL DEFAULT '0.00';
|
||||
ALTER TABLE `PREFIX_order_cart_rule` ADD `id_order_invoice` INT NOT NULL DEFAULT '0' AFTER `id_cart_rule`;
|
||||
|
||||
@@ -683,6 +683,51 @@ function init()
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
$('#add_voucher').click(function() {
|
||||
$(this).parent().parent().hide();
|
||||
$('#voucher_form').parent().show();
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
$('#cancel_add_voucher').click(function() {
|
||||
$('#voucher_form').parent().hide();
|
||||
$('#add_voucher').parent().parent().show();
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
$('#discount_type').change(function() {
|
||||
// Percent type
|
||||
if ($(this).val() == 1)
|
||||
{
|
||||
$('#discount_value_field').show();
|
||||
$('#discount_currency_sign').hide();
|
||||
$('#discount_value_help').hide();
|
||||
$('#discount_percent_symbol').show();
|
||||
}
|
||||
// Amount type
|
||||
else if ($(this).val() == 2)
|
||||
{
|
||||
$('#discount_value_field').show();
|
||||
$('#discount_percent_symbol').hide();
|
||||
$('#discount_value_help').show();
|
||||
$('#discount_currency_sign').show();
|
||||
}
|
||||
// Free shipping
|
||||
else if ($(this).val() == 3)
|
||||
{
|
||||
$('#discount_value_field').hide();
|
||||
}
|
||||
});
|
||||
|
||||
$('#discount_all_invoices').change(function() {
|
||||
if ($(this).is(':checked'))
|
||||
$('select[name=discount_invoice]').attr('disabled', true);
|
||||
else
|
||||
$('select[name=discount_invoice]').attr('disabled', false);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user