[-] BO : add a validation on name of discount in order page
This commit is contained in:
@@ -771,40 +771,33 @@ class AdminOrdersControllerCore extends AdminController
|
|||||||
{
|
{
|
||||||
if ($this->tabAccess['edit'] === '1')
|
if ($this->tabAccess['edit'] === '1')
|
||||||
{
|
{
|
||||||
$order = new Order(Tools::getValue('id_order'));
|
if (!Tools::getValue('discount_name'))
|
||||||
if (!Validate::isLoadedObject($order))
|
$this->_errors[] = Tools::displayError('You must specify a name in order to create a new discount');
|
||||||
throw new PrestashopException('Can\'t load Order object');
|
else
|
||||||
|
|
||||||
if ($order->hasInvoice())
|
|
||||||
{
|
{
|
||||||
// If the discount is for only one invoice
|
$order = new Order(Tools::getValue('id_order'));
|
||||||
if (!Tools::isSubmit('discount_all_invoices'))
|
if (!Validate::isLoadedObject($order))
|
||||||
|
throw new PrestashopException('Can\'t load Order object');
|
||||||
|
|
||||||
|
if ($order->hasInvoice())
|
||||||
{
|
{
|
||||||
$order_invoice = new OrderInvoice(Tools::getValue('discount_invoice'));
|
// If the discount is for only one invoice
|
||||||
if (!Validate::isLoadedObject($order_invoice))
|
if (!Tools::isSubmit('discount_all_invoices'))
|
||||||
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))
|
$order_invoice = new OrderInvoice(Tools::getValue('discount_invoice'));
|
||||||
{
|
if (!Validate::isLoadedObject($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);
|
throw new PrestashopException('Can\'t load Order Invoice object');
|
||||||
$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
|
$cart_rules = array();
|
||||||
$this->applyDiscountOnInvoice($order_invoice, $cart_rules[$order_invoice->id]['value_tax_incl'], $cart_rules[$order_invoice->id]['value_tax_excl']);
|
switch (Tools::getValue('discount_type'))
|
||||||
}
|
{
|
||||||
elseif ($order->hasInvoice())
|
// Percent type
|
||||||
|
case 1:
|
||||||
|
if (Tools::getValue('discount_value') < 100)
|
||||||
{
|
{
|
||||||
$order_invoices_collection = $order->getInvoicesCollection();
|
if (isset($order_invoice))
|
||||||
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_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);
|
$cart_rules[$order_invoice->id]['value_tax_excl'] = Tools::ps_round($order_invoice->total_paid_tax_excl * Tools::getValue('discount_value') / 100, 2);
|
||||||
@@ -812,38 +805,33 @@ class AdminOrdersControllerCore extends AdminController
|
|||||||
// Update OrderInvoice
|
// Update OrderInvoice
|
||||||
$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']);
|
||||||
}
|
}
|
||||||
}
|
elseif ($order->hasInvoice())
|
||||||
else
|
{
|
||||||
{
|
$order_invoices_collection = $order->getInvoicesCollection();
|
||||||
$cart_rules[0]['value_tax_incl'] = Tools::ps_round($order->total_paid_tax_incl * Tools::getValue('discount_value') / 100, 2);
|
foreach($order_invoices_collection as $order_invoice)
|
||||||
$cart_rules[0]['value_tax_excl'] = Tools::ps_round($order->total_paid_tax_excl * Tools::getValue('discount_value') / 100, 2);
|
{
|
||||||
}
|
$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);
|
||||||
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
|
// Update OrderInvoice
|
||||||
$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'] = Tools::ps_round($order->total_paid_tax_incl * Tools::getValue('discount_value') / 100, 2);
|
||||||
|
$cart_rules[0]['value_tax_excl'] = Tools::ps_round($order->total_paid_tax_excl * Tools::getValue('discount_value') / 100, 2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
else
|
||||||
elseif ($order->hasInvoice())
|
$this->_errors[] = Tools::displayError('Discount value is invalid');
|
||||||
{
|
break;
|
||||||
$order_invoices_collection = $order->getInvoicesCollection();
|
// Amount type
|
||||||
foreach($order_invoices_collection as $order_invoice)
|
case 2:
|
||||||
|
if (isset($order_invoice))
|
||||||
{
|
{
|
||||||
if (Tools::getValue('discount_value') > $order_invoice->total_paid_tax_incl)
|
if (Tools::getValue('discount_value') > $order_invoice->total_paid_tax_incl)
|
||||||
$this->_errors[] = Tools::displayError('Discount value is superior than the order invoice total (Invoice: ').$order_invoice->getInvoiceNumberFormatted(Context::getContext()->language->id).')';
|
$this->_errors[] = Tools::displayError('Discount value is superior than the order invoice total');
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$cart_rules[$order_invoice->id]['value_tax_incl'] = Tools::ps_round(Tools::getValue('discount_value'), 2);
|
$cart_rules[$order_invoice->id]['value_tax_incl'] = Tools::ps_round(Tools::getValue('discount_value'), 2);
|
||||||
@@ -853,77 +841,94 @@ 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']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
elseif ($order->hasInvoice())
|
||||||
else
|
{
|
||||||
{
|
$order_invoices_collection = $order->getInvoicesCollection();
|
||||||
if (Tools::getValue('discount_value') > $order->total_paid_tax_incl)
|
foreach($order_invoices_collection as $order_invoice)
|
||||||
$this->_errors[] = Tools::displayError('Discount value is superior than the order total');
|
{
|
||||||
|
if (Tools::getValue('discount_value') > $order_invoice->total_paid_tax_incl)
|
||||||
|
$this->_errors[] = Tools::displayError('Discount value is superior than the order invoice total (Invoice: ').$order_invoice->getInvoiceNumberFormatted(Context::getContext()->language->id).')';
|
||||||
|
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
|
||||||
|
$this->applyDiscountOnInvoice($order_invoice, $cart_rules[$order_invoice->id]['value_tax_incl'], $cart_rules[$order_invoice->id]['value_tax_excl']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$cart_rules[0]['value_tax_incl'] = Tools::ps_round(Tools::getValue('discount_value'), 2);
|
if (Tools::getValue('discount_value') > $order->total_paid_tax_incl)
|
||||||
$cart_rules[0]['value_tax_excl'] = Tools::ps_round(Tools::getValue('discount_value') / (1 + ($order->getTaxesAverageUsed() / 100)), 2);
|
$this->_errors[] = Tools::displayError('Discount value is superior than the order total');
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$cart_rules[0]['value_tax_incl'] = Tools::ps_round(Tools::getValue('discount_value'), 2);
|
||||||
|
$cart_rules[0]['value_tax_excl'] = Tools::ps_round(Tools::getValue('discount_value') / (1 + ($order->getTaxesAverageUsed() / 100)), 2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
break;
|
||||||
break;
|
// Free shipping type
|
||||||
// Free shipping type
|
case 3:
|
||||||
case 3:
|
if (isset($order_invoice))
|
||||||
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;
|
if ($order_invoice->total_shipping_tax_incl > 0)
|
||||||
$cart_rules[$order_invoice->id]['value_tax_excl'] = $order_invoice->total_shipping_tax_excl;
|
{
|
||||||
|
$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
|
// Update OrderInvoice
|
||||||
$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']);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
elseif ($order->hasInvoice())
|
||||||
elseif ($order->hasInvoice())
|
|
||||||
{
|
|
||||||
$order_invoices_collection = $order->getInvoicesCollection();
|
|
||||||
foreach($order_invoices_collection as $order_invoice)
|
|
||||||
{
|
{
|
||||||
if ($order_invoice->total_shipping_tax_incl <= 0)
|
$order_invoices_collection = $order->getInvoicesCollection();
|
||||||
continue;
|
foreach($order_invoices_collection as $order_invoice)
|
||||||
$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;
|
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
|
// Update OrderInvoice
|
||||||
$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']);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
break;
|
||||||
break;
|
default:
|
||||||
default:
|
$this->_errors[] = Tools::displayError('Discount type is invalid');
|
||||||
$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');
|
||||||
}
|
}
|
||||||
|
|
||||||
$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
|
else
|
||||||
$this->_errors[] = Tools::displayError('You do not have permission to edit here.');
|
$this->_errors[] = Tools::displayError('You do not have permission to edit here.');
|
||||||
|
|||||||
@@ -426,6 +426,7 @@ $_ERRORS['f8a19b1a94a0625cf7640c18e45ff349'] = 'Impossible de charger la facture
|
|||||||
$_ERRORS['6be4d7beb4c4e0261b1bdf289e000d9a'] = 'Vous ne pouvez pas changer la devise';
|
$_ERRORS['6be4d7beb4c4e0261b1bdf289e000d9a'] = 'Vous ne pouvez pas changer la devise';
|
||||||
$_ERRORS['b37ad9280cb571455ff98bb80ddfd170'] = 'Cette commande a déjà une facture';
|
$_ERRORS['b37ad9280cb571455ff98bb80ddfd170'] = 'Cette commande a déjà une facture';
|
||||||
$_ERRORS['4e89fbb8dfa4d1d9f8dcd5ed9245847b'] = 'Impossible d\'éditer cette règle de prix panier pour cette commande';
|
$_ERRORS['4e89fbb8dfa4d1d9f8dcd5ed9245847b'] = 'Impossible d\'éditer cette règle de prix panier pour cette commande';
|
||||||
|
$_ERRORS['a551c1b1a24beff63aa3cc70ea172351'] = 'Vous devez spécifier un nom afin de créer un bon de réduction';
|
||||||
$_ERRORS['221cbaf37b5e5d712e9d100c75e7477a'] = 'La valeur de la remise est invalide';
|
$_ERRORS['221cbaf37b5e5d712e9d100c75e7477a'] = 'La valeur de la remise est invalide';
|
||||||
$_ERRORS['af73fac5b8c832cae5e6e70eb70ab886'] = 'La valeur de la remise est supérieure au montant totale de la facture';
|
$_ERRORS['af73fac5b8c832cae5e6e70eb70ab886'] = 'La valeur de la remise est supérieure au montant totale de la facture';
|
||||||
$_ERRORS['d5440008a3bd5b061072af8724ba2941'] = 'La valeur de la remise est supérieure au montant totale de la facture (Facture:';
|
$_ERRORS['d5440008a3bd5b061072af8724ba2941'] = 'La valeur de la remise est supérieure au montant totale de la facture (Facture:';
|
||||||
|
|||||||
Reference in New Issue
Block a user