$_item = $order_items[$item_id]; $extra = @unserialize($_item['extra']); $_data = array('return_id' => $return_id, 'item_id' => $item_id, 'product_id' => $v['product_id'], 'reason' => !empty($v['reason']) ? $v['reason'] : '', 'amount' => $v['amount'], 'product_options' => !empty($extra['product_options_value']) ? serialize($extra['product_options_value']) : '', 'price' => fn_format_price((!isset($extra['exclude_from_calculate']) ? $_item['price'] : 0) * $_item['amount'] / $_item['amount']), 'product' => !empty($extra['product']) ? $extra['product'] : fn_get_product_name($v['product_id'], $oder_lang_code)); db_query('INSERT INTO ?:rma_return_products ?e', $_data); if (!isset($extra['returns'])) { $extra['returns'] = array(); } $extra['returns'][$return_id] = array('amount' => $v['amount'], 'status' => RMA_DEFAULT_STATUS); db_query('UPDATE ?:order_details SET ?u WHERE item_id = ?i AND order_id = ?i', array('extra' => serialize($extra)), $item_id, $order_id); } } } //Send mail $return_info = fn_get_return_info($return_id); $order_info = fn_get_order_info($order_id); fn_send_return_mail($return_info, $order_info, array('C' => true, 'A' => true, 'S' => true)); } return array(CONTROLLER_STATUS_OK, 'rma.details?return_id=' . $return_id); } } if (empty($auth['user_id']) && !isset($auth['order_ids']) && AREA == 'C') { return array(CONTROLLER_STATUS_REDIRECT, 'auth.login_form?return_url=' . urlencode(Registry::get('config.current_url'))); } if ($mode == 'details' && !empty($_REQUEST['return_id'])) { $return_id = intval($_REQUEST['return_id']); // [Breadcrumbs] if (AREA != 'A') { fn_add_breadcrumb(__('return_requests'), "rma.returns"); fn_add_breadcrumb(__('return_info')); } // [/Breadcrumbs]
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; }
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 $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']); } } //Send mail $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)); } return array(CONTROLLER_STATUS_OK, "rma{$suffix}"); } if ($mode == 'bulk_slip_print' && !empty($_REQUEST['return_ids'])) { fn_rma_print_packing_slips($_REQUEST['return_ids'], $auth); exit; } if ($mode == 'm_delete_returns' && !empty($_REQUEST['return_ids'])) { foreach ($_REQUEST['return_ids'] as $return_id) { fn_delete_return($return_id); } $suffix = ".returns"; } if ($mode == 'decline_products') { if (!empty($_REQUEST['accepted'])) {