function fn_rma_update_details($data) { fn_set_hook('rma_update_details_pre', $data); $change_return_status = $data['change_return_status']; $_data = array(); $show_confirmation_page = false; if (isset($data['comment'])) { $_data['comment'] = $data['comment']; } $is_refund = fn_is_refund_action($change_return_status['action']); $confirmed = isset($data['confirmed']) ? $data['confirmed'] : ''; $st_inv = fn_get_statuses(STATUSES_RETURN); $show_confirmation = false; if (($change_return_status['recalculate_order'] == 'M' && $is_refund == 'Y' || $change_return_status['recalculate_order'] == 'R') && $change_return_status['status_to'] != $change_return_status['status_from'] && !($st_inv[$change_return_status['status_from']]['params']['inventory'] == 'D' && $change_return_status['status_to'] == RMA_DEFAULT_STATUS) && !($st_inv[$change_return_status['status_to']]['params']['inventory'] == 'D' && $change_return_status['status_from'] == RMA_DEFAULT_STATUS)) { $show_confirmation = true; } if ($show_confirmation == true) { if ($confirmed == 'Y') { fn_rma_recalculate_order($change_return_status['order_id'], $change_return_status['recalculate_order'], $change_return_status['return_id'], $is_refund, $change_return_status); $_data['status'] = $change_return_status['status_to']; } else { $change_return_status['inventory_to'] = $st_inv[$change_return_status['status_to']]['params']['inventory']; $change_return_status['inventory_from'] = $st_inv[$change_return_status['status_from']]['params']['inventory']; $_SESSION['change_return_status'] = $change_return_status; $show_confirmation_page = true; } } else { $_data['status'] = $change_return_status['status_to']; } if (!empty($_data)) { db_query("UPDATE ?:rma_returns SET ?u WHERE return_id = ?i", $_data, $change_return_status['return_id']); } if (($show_confirmation == false || $show_confirmation == true && $confirmed == 'Y') && $change_return_status['status_from'] != $change_return_status['status_to']) { $order_items = db_get_hash_single_array("SELECT item_id, extra FROM ?:order_details WHERE ?:order_details.order_id = ?i", array('item_id', 'extra'), $change_return_status['order_id']); foreach ($order_items as $item_id => $extra) { $extra = @unserialize($extra); if (isset($extra['returns'][$change_return_status['return_id']])) { $extra['returns'][$change_return_status['return_id']]['status'] = $change_return_status['status_to']; db_query('UPDATE ?:order_details SET ?u WHERE item_id = ?i AND order_id = ?i', array('extra' => serialize($extra)), $item_id, $change_return_status['order_id']); } } $return_info = fn_get_return_info($change_return_status['return_id']); $order_info = fn_get_order_info($change_return_status['order_id']); fn_send_return_mail($return_info, $order_info, fn_get_notification_rules($change_return_status)); } fn_set_hook('rma_update_details_post', $data, $show_confirmation_page, $show_confirmation, $is_refund, $_data, $confirmed); return $show_confirmation_page; }
$change_return_status = $_REQUEST['change_return_status']; $_data = array(); if (isset($_REQUEST['comment'])) { $_data['comment'] = $_REQUEST['comment']; } $is_refund = fn_is_refund_action($change_return_status['action']); $confirmed = isset($_REQUEST['confirmed']) ? $_REQUEST['confirmed'] : ''; $st_inv = fn_get_statuses(STATUSES_RETURN); $show_confirmation = false; if (($change_return_status['recalculate_order'] == 'M' && $is_refund == 'Y' || $change_return_status['recalculate_order'] == 'R') && $change_return_status['status_to'] != $change_return_status['status_from'] && !($st_inv[$change_return_status['status_from']]['params']['inventory'] == 'D' && $change_return_status['status_to'] == RMA_DEFAULT_STATUS) && !($st_inv[$change_return_status['status_to']]['params']['inventory'] == 'D' && $change_return_status['status_from'] == RMA_DEFAULT_STATUS)) { $show_confirmation = true; } $suffix = ".details?return_id={$change_return_status['return_id']}"; if ($show_confirmation == true) { if ($confirmed == 'Y') { fn_rma_recalculate_order($change_return_status['order_id'], $change_return_status['recalculate_order'], $change_return_status['return_id'], $is_refund, $change_return_status); $_data['status'] = $change_return_status['status_to']; } else { $change_return_status['inventory_to'] = $st_inv[$change_return_status['status_to']]['params']['inventory']; $change_return_status['inventory_from'] = $st_inv[$change_return_status['status_from']]['params']['inventory']; $_SESSION['change_return_status'] = $change_return_status; $suffix = ".confirmation"; } } else { $_data['status'] = $change_return_status['status_to']; } if (!empty($_data)) { db_query("UPDATE ?:rma_returns SET ?u WHERE return_id = ?i", $_data, $change_return_status['return_id']); } if (($show_confirmation == false || $show_confirmation == true && $confirmed == 'Y') && $change_return_status['status_from'] != $change_return_status['status_to']) { //Update order details