From 5aeb25b8047456e88afdf48bfb78c7ebf92d5e12 Mon Sep 17 00:00:00 2001
From: rGaillard
Date: Mon, 21 May 2012 17:11:00 +0000
Subject: [PATCH] [*] BO: Add free shipping to BackOffice Order
---
.../template/controllers/orders/form.tpl | 40 +++++++++++++++++--
classes/PaymentModule.php | 2 +
controllers/admin/AdminCartsController.php | 35 +++++++++++++++-
3 files changed, 72 insertions(+), 5 deletions(-)
diff --git a/admin-dev/themes/default/template/controllers/orders/form.tpl b/admin-dev/themes/default/template/controllers/orders/form.tpl
index 022fc0b32..417976c6e 100755
--- a/admin-dev/themes/default/template/controllers/orders/form.tpl
+++ b/admin-dev/themes/default/template/controllers/orders/form.tpl
@@ -150,7 +150,31 @@
useCart($(this).attr('rel'));
return false;
});
-
+ $('#free_shipping').click(function() {
+ var free_shipping = 0;
+ if (this.checked)
+ free_shipping = 1;
+ $.ajax({
+ type:"POST",
+ url: "{$link->getAdminLink('AdminCarts')}",
+ async: true,
+ dataType: "json",
+ data : {
+ ajax: "1",
+ token: "{getAdminToken tab='AdminCarts'}",
+ tab: "AdminCarts",
+ action: "updateFreeShipping",
+ id_cart: id_cart,
+ id_customer: id_customer,
+ 'free_shipping': free_shipping
+ },
+ success : function(res)
+ {
+ displaySummary(res);
+ }
+ });
+ });
+
$('.duplicate_order').live('click', function(e) {
e.preventDefault();
duplicateOrder($(this).attr('rel'));
@@ -669,9 +693,14 @@
$('#carrier_recycled_package').attr('checked', true);
else
$('#carrier_recycled_package').removeAttr('checked');
+ if (jsonSummary.free_shipping)
+ $('#free_shipping').attr('checked', true);
+ else
+ $('#free_shipping').removeAttr('checked');
+
$('#gift_message').html(jsonSummary.cart.gift_message);
if(!changed_shipping_price)
- $('#shipping_price').val(jsonSummary.summary.total_shipping);
+ $('#shipping_price').html(''+jsonSummary.summary.total_shipping+'');
shipping_price_selected_carrier = jsonSummary.summary.total_shipping;
$('#total_vouchers').html(jsonSummary.summary.total_discounts_tax_exc);
@@ -1116,8 +1145,11 @@
-
- {l s='Reset shipping price'}
+
+
+
+
+
diff --git a/classes/PaymentModule.php b/classes/PaymentModule.php
index bf8e2d2eb..683908bbd 100644
--- a/classes/PaymentModule.php
+++ b/classes/PaymentModule.php
@@ -91,6 +91,8 @@ abstract class PaymentModuleCore extends Module
if (!$shop)
$shop = Context::getContext()->shop;
+ if (!$this->active)
+ die(Tools::displayError());
// Does order already exists ?
if (Validate::isLoadedObject($cart) && $cart->OrderExists() == false)
{
diff --git a/controllers/admin/AdminCartsController.php b/controllers/admin/AdminCartsController.php
index 0bab5e98a..5ac612eba 100755
--- a/controllers/admin/AdminCartsController.php
+++ b/controllers/admin/AdminCartsController.php
@@ -415,6 +415,7 @@ class AdminCartsControllerCore extends AdminController
echo Tools::jsonEncode($this->ajaxReturnVars());
}
}
+
public function ajaxProcessDuplicateOrder()
{
if ($this->tabAccess['edit'] === '1')
@@ -444,7 +445,38 @@ class AdminCartsControllerCore extends AdminController
echo Tools::jsonEncode($this->ajaxReturnVars());
}
}
+
+ public function ajaxProcessupdateFreeShipping()
+ {
+ if ($this->tabAccess['edit'] === '1')
+ {
+ if (!$id_cart_rule = CartRule::getIdByCode('BO_ORDER_'.(int)$this->context->cart->id))
+ {
+ $cart_rule = new CartRule();
+ $cart_rule->code = 'BO_ORDER_'.(int)$this->context->cart->id;
+ $cart_rule->name = array(Configuration::get('PS_LANG_DEFAULT') => $this->l('Free Shipping'));
+ $cart_rule->id_customer = (int)$this->context->cart->id_customer;
+ $cart_rule->free_shipping = true;
+ $cart_rule->quantity = 1;
+ $cart_rule->quantity_per_user = 1;
+ $cart_rule->minimum_amount_currency = (int)$this->context->cart->id_currency;
+ $cart_rule->reduction_currency = (int)$this->context->cart->id_currency;
+ $cart_rule->date_from = date('Y-m-d H:i:s', time());
+ $cart_rule->date_to = date('Y-m-d H:i:s', time() + 24 * 36000);
+ $cart_rule->active = 1;
+ $cart_rule->add();
+ }
+ else
+ $cart_rule = new CartRule((int)$id_cart_rule);
+ $this->context->cart->removeCartRule((int)$cart_rule->id);
+ if (Tools::getValue('free_shipping'))
+ $this->context->cart->addCartRule((int)$cart_rule->id);
+
+ echo Tools::jsonEncode($this->ajaxReturnVars());
+ }
+ }
+
public function ajaxProcessAddVoucher()
{
if ($this->tabAccess['edit'] === '1')
@@ -617,7 +649,8 @@ class AdminCartsControllerCore extends AdminController
'link_order' => $this->context->link->getPageLink(
'order', false,
(int)$this->context->cart->id_lang,
- 'step=3&recover_cart='.$id_cart.'&token_cart='.md5(_COOKIE_KEY_.'recover_cart_'.$id_cart))
+ 'step=3&recover_cart='.$id_cart.'&token_cart='.md5(_COOKIE_KEY_.'recover_cart_'.$id_cart)),
+ 'free_shipping' => (bool)CartRule::getIdByCode('BO_ORDER_'.(int)$this->context->cart->id)
);
}