diff --git a/controllers/admin/AdminStatusesController.php b/controllers/admin/AdminStatusesController.php index f5ae561ee..6958b0735 100644 --- a/controllers/admin/AdminStatusesController.php +++ b/controllers/admin/AdminStatusesController.php @@ -155,7 +155,7 @@ class AdminStatusesControllerCore extends AdminController 'type' => 'bool', 'ajax' => true, 'orderby' => false, - 'class' => 'fixed-width-sm' + 'class' => 'fixed-width-sm state-refunded' ), 'denied' => array( 'title' => $this->l('Denied'), @@ -164,12 +164,12 @@ class AdminStatusesControllerCore extends AdminController 'type' => 'bool', 'ajax' => true, 'orderby' => false, - 'class' => 'fixed-width-sm' + 'class' => 'fixed-width-sm state-denied' ), 'send_email_to_customer' => array( 'title' => $this->l('Send email to customer'), 'align' => 'text-center', - 'active' => 'sendEmailToSuperAdmin', + 'active' => 'sendEmailToCustomer', 'type' => 'bool', 'ajax' => true, 'orderby' => false, @@ -178,7 +178,7 @@ class AdminStatusesControllerCore extends AdminController 'send_email_to_superadmin' => array( 'title' => $this->l('Send email to super admin'), 'align' => 'text-center', - 'active' => 'sendEmailToCustomer', + 'active' => 'sendEmailToSuperAdmin', 'type' => 'bool', 'ajax' => true, 'orderby' => false, @@ -202,12 +202,6 @@ class AdminStatusesControllerCore extends AdminController 'orderby' => false, 'class' => 'fixed-width-sm' ), - // 'customer_template' => array( - // 'title' => $this->l('Customer Email template') - // ), - // 'admin_template' => array( - // 'title' => $this->l('Admin Email template') - // ), ); } @@ -990,8 +984,15 @@ class AdminStatusesControllerCore extends AdminController public function ajaxProcessRefundedOrderReturnState() { $id_order_return_state = (int)Tools::getValue('id_order_return_state'); + $objOrdRtrnState = new OrderReturnState($id_order_return_state); + + $sql = 'UPDATE '._DB_PREFIX_.'order_return_state SET `refunded`= NOT `refunded`'; + // check condition as booth refunded and denied can not be true together + if (!$objOrdRtrnState->refunded && $objOrdRtrnState->denied) { + $sql .= ', `denied`= NOT `denied`'; + } + $sql .= ' WHERE id_order_return_state='.(int)$id_order_return_state; - $sql = 'UPDATE '._DB_PREFIX_.'order_return_state SET `refunded`= NOT `refunded` WHERE id_order_return_state='.(int)$id_order_return_state; $result = Db::getInstance()->execute($sql); if ($result) { @@ -1004,8 +1005,15 @@ class AdminStatusesControllerCore extends AdminController public function ajaxProcessDeniedOrderReturnState() { $id_order_return_state = (int)Tools::getValue('id_order_return_state'); + $objOrdRtrnState = new OrderReturnState($id_order_return_state); + + $sql = 'UPDATE '._DB_PREFIX_.'order_return_state SET `denied`= NOT `denied`'; + // check condition as booth refunded and denied can not be true together + if (!$objOrdRtrnState->denied && $objOrdRtrnState->refunded) { + $sql .= ', `refunded`= NOT `refunded`'; + } + $sql .= ' WHERE id_order_return_state='.(int)$id_order_return_state; - $sql = 'UPDATE '._DB_PREFIX_.'order_return_state SET `denied`= NOT `denied` WHERE id_order_return_state='.(int)$id_order_return_state; $result = Db::getInstance()->execute($sql); if ($result) { @@ -1019,8 +1027,6 @@ class AdminStatusesControllerCore extends AdminController { parent::setMedia(); - if ($this->tabAccess['edit'] == 1 && $this->display == 'edit') { - $this->addJS(_PS_JS_DIR_.'admin/order_states.js'); - } + $this->addJS(_PS_JS_DIR_.'admin/order_states.js'); } } diff --git a/js/admin/order_states.js b/js/admin/order_states.js index e442928d2..5f4711017 100644 --- a/js/admin/order_states.js +++ b/js/admin/order_states.js @@ -24,4 +24,33 @@ $(document).ready(function() { $(this).prop('checked', true); } }); -}); \ No newline at end of file + + // for refunded and denied options we have to load page + // Because both options are changing and default js showing only state change in click action + $(".ajax_table_link").click(function () { + var statusLink = $(this); + if (statusLink.closest('td').hasClass('state-refunded') || statusLink.closest('td').hasClass('state-denied')) { + $(document).off().on('ajaxComplete', function( e, xhr, settings ) { + if (typeof xhr.responseJSON.success !== 'undefined' && xhr.responseJSON.success == 1) { + if (statusLink.hasClass('action-enabled')){ + if (statusLink.closest('td').hasClass('state-refunded')) { + var toChangeStatus = statusLink.closest('tr').find('.state-denied .ajax_table_link'); + } else if (statusLink.closest('td').hasClass('state-denied')) { + var toChangeStatus = statusLink.closest('tr').find('.state-refunded .ajax_table_link'); + } + if (toChangeStatus.hasClass('action-enabled')) { + toChangeStatus.removeClass('action-enabled').addClass('action-disabled'); + toChangeStatus.children().each(function () { + if ($(this).hasClass('hidden')) { + $(this).removeClass('hidden'); + } else { + $(this).addClass('hidden'); + } + }); + } + } + } + }); + } + }); +});