Example #1
0
                        $_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]
Example #2
0
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;
}
Example #3
0
         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'])) {