示例#1
0
function fn_spsr_pre_check_invoice_create($order_id, $section, $spsr_shipments = array())
{
    $shipping = array();
    if (empty($order_id)) {
        return array(CONTROLLER_STATUS_REDIRECT, "orders.manage");
    }
    $order_info = fn_get_order_info($order_id, false, true, true, true);
    if (!empty($order_info)) {
        list($_shipments) = fn_get_shipments_info(array('order_id' => $order_id, 'advanced_info' => true));
        if (!empty($_shipments)) {
            $shipments = array();
            foreach ($_shipments as $shipment) {
                if ($shipment['carrier'] == 'spsr') {
                    if (empty($spsr_shipments) || !empty($spsr_shipments[$shipment['shipment_id']])) {
                        $shipments[$shipment['shipment_id']] = $shipment;
                    }
                }
            }
        }
        if (!empty($shipments)) {
            foreach ($shipments as $shipment_id => $shipment) {
                $shipping = fn_get_shipping_info($shipment['shipping_id'], DESCR_SL);
                $shipping['rate'] = $order_info['shipping_cost'];
                $invoices[$shipment_id] = RusSpsr::preInvoiceByShipments($shipment, $order_info, $shipping);
                $shipping_data[$shipment_id] = $shipping;
            }
        } else {
            return array(CONTROLLER_STATUS_REDIRECT, "orders.details?order_id={$order_id}&selected_section={$section}");
        }
    }
    return array($order_info, $invoices, $shipments, $shipping_data);
}