<?php

class Shipment_OrdersController extends Ec_Controller_Action
{
    /*初始化*/
    public function preDispatch()
    {
        $this->tplDirectory = "shipment/views/order/";
        $this->serviceClass = new Service_Orders();
    }

    /*订单下架列表*/
    public function listAction()
    {
        $orderPickType = Common_Type::pickType('auto');
        $orderPickType[2] = '一票多件';
        $status = Common_Status::orderStatus('auto');
        if ($this->_request->isPost()) {
            $page = $this->_request->getParam('page', 1);
            $pageSize = $this->_request->getParam('pageSize', 20);

            $page = $page ? $page : 1;
            $pageSize = $pageSize ? $pageSize : 20;

            $return = array(
                "state" => 0,
                "message" => "No Data"
            );

            $params = $this->_request->getParams();
            $operationType = isset($params['operationType']) ? $params['operationType'] : '';
            $operationCode = isset($params['operationCode']) ? $params['operationCode'] : '';
            if (!empty($operationCode)) {
                $params[$operationType] = $operationCode;
            }
            $condition = $this->serviceClass->getMatchFields($params);

            if ($condition['customer_code'] == 'E0693') {
                $condition['has_ref_tracking_number'] = 1;
            }
            $addTime = Common_Common::getStartAndEndTime($params['dateFor'], $params['dateTo']);
            $condition['dateFor'] = $addTime[0];
            $condition['dateTo'] = $addTime[1];
            $condition['product_category'] = isset($params['product_category']) ? $params['product_category'] : '';
            $condition['product_sku'] = isset($params['product_sku']) ? $params['product_sku'] : '';
            unset($params);

            foreach ($condition as $k => $v) {
                $condition[$k] = trim($v);
            }
            $condition['order_status'] = 4;//已提交
            if (isset($condition['order_pick_type']) && $condition['order_pick_type'] == '0') {
                $condition['order_pick_type'] = array('0');
            } else {
                $condition['order_pick_type'] = array('1', '2');
            }
            $condition['order_mode_type'] = "0";
            $count = $this->serviceClass->getShipmentInnerJoinProductByCondition($condition, 'count(*)');
            $return['total'] = $count;
            if ($count) {
                $showFields = array(
                    'order_code',
                    'customer_code',
                    'warehouse_id',
                    'order_type',
                    'sm_code',
                    'order_status',
                    'problem_status',
                    'underreview_status',
                    'add_time',
                    'order_pick_type',
                    'reference_no',
                    'picker_id',
                    'remark',
                    'order_id',
                    'ref_tracking_number',
                    'platform',
                );
                $showFields = $this->serviceClass->getFieldsAlias($showFields);

                $rows = $this->serviceClass->getShipmentInnerJoinProductByCondition($condition, $showFields, $pageSize, $page, array(new Zend_Db_Expr("remark !='' desc"), "order_id desc"));
                $return['data'] = $rows;
                $return['state'] = 1;
                $return['orderPickType'] = $orderPickType;
                $return['orderStatus'] = $status;
                $return['warehouse'] = Common_DataCache::getWarehouseSimple();
                $return['message'] = "";
            }
            die(Zend_Json::encode($return));
        }
        $this->view->plateForm = Service_OrderProcess::getPlateForm();
        $this->view->orderPickType = $orderPickType;
        $this->view->SM = Common_DataCache::getShippingMethodSimple();
        $this->view->SP = Common_DataCache::getProductCategory();
        //         print_r(Common_DataCache::getProductCategory());exit;
        echo Ec::renderTpl($this->tplDirectory . "orders_index.tpl", 'layout');
    }

    /*
     * @订单出货
     */
    public function deliveryAction()
    {
        $this->view->ob_no = '';
        $this->view->sm_code = '';
        $this->view->order_num = 0;
        $this->view->total_weight = 0;
        $ob_no = trim($this->_request->getParam('ob_no'));
        $shipMethodConditon = array();
        if ($ob_no) {
            $row = Service_OutboundBag::getByField($ob_no, 'ob_no');
            if ($row && $row['ob_status'] == 0) {
                $this->view->sm_code = $row['sm_code'];
                $this->view->ob_no = $ob_no;
                $data = Service_OutboundBagDetail::getByField($ob_no, 'ob_no', 'count(*) as num,sum(so_weight) as weight');
                $this->view->order_num = $data['num'];
                $this->view->total_weight = floatval($data['weight']);
                $shipMethod = Service_ShippingMethod::getByField($row['sm_code'], 'sm_code');
                $shipMethodConditon['sm_channel'] = $shipMethod['sm_channel'];
                $this->view->bagshipMethod = $shipMethod;
            }
        }
        $shipMethodConditon['sm_status'] = '1';
        $warehouseAll = Common_DataCache::getWarehouse();
        if (!empty($warehouseAll)) {
            foreach ($warehouseAll as $keyw => $warehouse) {
                if ($warehouse['warehouse_scope'] == '1') {
                    $warehouseIds[] = $warehouse['warehouse_id'];
                }
            }
            /* if(!empty($warehouseIds)){
                $shipMethodConditon['warehouse_id_arr'] = $warehouseIds;
            } */
        }
        $warehouseIds[] = '0';
        $shippingMethod = Service_ShippingMethod::getByCondition($shipMethodConditon, array('sm_id', 'sm_code', 'sm_name_cn', 'warehouse_id', 'sm_status', 'sm_channel'), 0, 0, array('sm_code', 'sm_sort'));
        foreach ($shippingMethod as $key => $value) {
            if (!in_array($value['warehouse_id'], $warehouseIds)) {
                unset($shippingMethod[$key]);
            }
        }
        $this->view->shippingMethod = Zend_Json::encode($shippingMethod);
        $this->view->kvCodeClass = Zend_Json::encode(Service_ShippingMethod::getCodeClassKV());
        echo Ec::renderTpl($this->tplDirectory . "delivery.tpl", 'layout');
    }

    /**
     * 扫单号
     */
    public function scanAction()
    {
        $response = array('state' => 0, 'message' => '');
        $sm_code = trim($this->_request->getParam('sm_code'));
        $ob_no = trim($this->_request->getParam('ob_no'));
        $order_code = trim($this->_request->getParam('order_code'));
        $tracking_number = trim($this->_request->getParam('ship_code'));
        $o_weight = trim($this->_request->getParam('o_weight'));
        $sm_channel = $this->_request->getParam('change_single');
        $sm_piece = trim($this->_request->getParam('sm_piece'));
        $lengthArr = $this->_request->getParam('length', '');
        $widthArr = $this->_request->getParam('width', '');
        $heightArr = $this->_request->getParam('height', '');
        $weightArr = $this->_request->getParam('weight', '');
        $opIdArr = $this->_request->getParam("op_id", "");
        $opieces = $this->_request->getParam("o_pieces");
        if ($opieces > 0) {
            $sm_piece = $opieces;
        }
        $volArr = array();
        /*$volArr = array(
        	'length'=>$length,
        	'width'=>$width,
        	'height'=>$height
        );*/

        $aOutboundBag = Service_OutboundBag::getByField($ob_no, 'ob_no');
        $aOutboundBagDetail = Service_OutboundBagDetail::getByCondition(array('ob_no' => $ob_no), '*');
        if (!empty($aOutboundBag) && $aOutboundBag['ob_status'] == 0) {
            $shipMethod = Service_ShippingMethod::getByField($aOutboundBag['sm_code'], 'sm_code');
            $sm_channel = $shipMethod['sm_channel'];
        }
        if (!($sm_channel == '0' || $sm_channel == '1')) {
            exit(Zend_Json::encode(array('state' => 0, 'message' => '自有渠道必须选择')));
        }
        if (empty($sm_code)) exit(Zend_Json::encode(array('state' => 0, 'message' => '请选择运输方式')));
        $aShipMethod = Service_ShippingMethod::getByField($sm_code, 'sm_code');
        if (empty($aShipMethod)) exit(Zend_Json::encode(array('state' => 0, 'message' => '找不到运输方式')));
        if (empty($ob_no)) exit(Zend_Json::encode(array('state' => 0, 'message' => '请输入包袋号')));
        //if(empty($order_code)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'请输入订单号')));
        //冻结判断
        if (!empty($order_code)) {
            $order = Service_Orders::getByField($order_code, 'order_code', array('customer_code'));
            if (empty($order)) {
                die(json_encode(array('state' => 0, 'message' => '订单不存在')));
            }
            $customerData = Service_Customer::getByField($order['customer_code'], 'customer_code', array('is_frozen', 'frozen_reason'));
            if ($customerData['is_frozen']) {
                exit(Zend_Json::encode(array('state' => 0, 'message' => '订单[' . $order_code . ']-客户[' . $order['customer_code'] . ']已冻结，冻结原因：' . $customerData['frozen_reason'])));
            }
        }
        $piece_num = 1;
        /*if($sm_code === 'HKDHL') {
            if(empty($tracking_number)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'请输入服务商单号')));
            $aShipOrderDetail = Service_ShipOrderDetail::getByField($tracking_number, 'sub_tracking_number');

            $ordersRow = Service_Orders::getByField($aShipOrderDetail['order_code'], 'order_code');
            if($ordersRow['intercept_status']=='1'||$ordersRow['intercept_status']=='2'||$ordersRow['intercept_status']=='3'){
                exit(Zend_Json::encode(array('state'=>0, 'message'=>'订单已拦截不能出货,拦截原因:'.$ordersRow['intercept_reason'])));
            }

            if(empty($aShipOrderDetail)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'输入的服务商单号不存在')));
            if($aShipOrderDetail['is_scaned']==1)
                 exit(Zend_Json::encode(array('state'=>0, 'message'=>'服务商单号['.$tracking_number.']已经扫描过了')));
            $aLicensePlate = $this->_request->getParam('license_plates', array());
            if(in_array($tracking_number, $aLicensePlate)) {
                exit(Zend_Json::encode(array('state'=>0, 'message'=>'服务商单号['.$tracking_number.']已经扫描过了')));
            }
            $so_code = $this->_request->getParam('so_code');
            if(empty($so_code)) $so_code = $aShipOrderDetail['so_code'];
            $aSubTrackingNumber = Service_ShipOrderDetail::getSubTrackingNumbers($so_code);
            if(!in_array($tracking_number, $aSubTrackingNumber)) {
                exit(Zend_Json::encode(array('state'=>0, 'message'=>'不是同一个单的服务商单号')));
            }
            $aLicensePlate[] = $tracking_number;
            $total = count($aSubTrackingNumber);
            $current = count($aLicensePlate);
            if($current === $total) {
                $order_code = $aShipOrderDetail['order_code'];
                $aShipOrder = Service_ShipOrder::getByField($so_code, 'so_code');
                $o_weight = $aShipOrder['so_weight'];
                $tracking_number = $aShipOrder['tracking_number'];
                $piece_num = $total;
            } else {
                $aReturn['current'] = $current;
                $aReturn['total'] = $total;
                $aReturn['so_code'] = $so_code;
                $aReturn['license_plate'] = $tracking_number;
                $aReturn['weight'] = $aShipOrderDetail['sod_weight'];
                $aReturn['state'] = 3;
                exit(Zend_Json::encode($aReturn));
            }
        } else if($sm_code === 'Other') {
            if(empty($tracking_number)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'请输入服务商单号')));
             $ordersRow = Service_Orders::getByField($tracking_number, 'ref_tracking_number');
            if(empty($ordersRow)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'输入的服务商单号不存在')));
            $aShipOrder = Service_ShipOrder::getByField($tracking_number, 'tracking_number');
            if(empty($aShipOrder)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'输入的服务商单号不存在')));
            $ordersRow = Service_Orders::getByField($aShipOrder['order_code'], 'order_code');
            if($ordersRow['intercept_status']=='1'||$ordersRow['intercept_status']=='2'||$ordersRow['intercept_status']=='3'){
                exit(Zend_Json::encode(array('state'=>0, 'message'=>'订单已拦截不能出货,拦截原因:'.$ordersRow['intercept_reason'])));
            }
            $order_code = $ordersRow['order_code'];
            $o_weight = 0;
        } else {
            if($aShipMethod['sm_class_code']=='CRE') {
                if(empty($order_code)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'请输入订单号')));
                if(empty($tracking_number)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'请输入服务商单号')));
                //订单验证
                $ordersRow = Service_Orders::getByField($order_code, 'order_code');
                if($ordersRow['intercept_status']=='1'||$ordersRow['intercept_status']=='2'||$ordersRow['intercept_status']=='3'){
                    exit(Zend_Json::encode(array('state'=>0, 'message'=>'订单已拦截不能出货,拦截原因:'.$ordersRow['intercept_reason'])));
                }
                if(empty($ordersRow)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'输入的订单号不存在')));
                /* if($ordersRow['ref_tracking_number']!=$tracking_number)
                    exit(Zend_Json::encode(array('state'=>0, 'message'=>'输入的服务商单号不正确')));
            } else if($aShipMethod['sm_class_code']=='CRP' || $aShipMethod['sm_class_code']=='CPS') {
                if(empty($tracking_number)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'请输入服务商单号')));
                $aShipOrder = Service_ShipOrder::getByField($tracking_number, 'tracking_number');
                if(empty($aShipOrder)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'输入的服务商单号不存在')));
                $ordersRow = Service_Orders::getByField($aShipOrder['order_code'], 'order_code');
                $order_code = $ordersRow['order_code'];
                if($ordersRow['intercept_status']=='1'||$ordersRow['intercept_status']=='2'||$ordersRow['intercept_status']=='3'){
                    exit(Zend_Json::encode(array('state'=>0, 'message'=>'订单已拦截不能出货,拦截原因:'.$ordersRow['intercept_reason'])));
                }
            }
            //验证重量
            if(empty($o_weight)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'请输入重量')));
            if(!is_numeric($o_weight)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'重量只能是数字')));
            $o_weight = floatval($o_weight);
            if($o_weight <= 0) exit(Zend_Json::encode(array('state'=>0, 'message'=>'重量必须大于0')));
        }*/

        if ($sm_channel == '1') {
            //自有渠道
            if (empty($tracking_number)) exit(Zend_Json::encode(array('state' => 0, 'message' => '请输入服务商单号')));
            $ordersRow = Service_Orders::getByField($tracking_number, 'ref_tracking_number');
            $refTrackingCondition = array(
                //	'sm_code'=>$sm_code,
                'ref_tracking_number' => $tracking_number,
                //	'order_status'=>'7',
                'order_status_neq' => 0, // 排除已删除状态的订单
            );

            $ordersRows = Service_Orders::getByCondition($refTrackingCondition, '*');
            if (count($ordersRows) == 0) {
                exit(Zend_Json::encode(array('state' => 0, 'message' => '输入的服务商单号不存在')));
            } else {
                if (count($ordersRows) == 1) {
                    $ordersRow = $ordersRows[0];
                } else {
                    exit(Zend_Json::encode(array('state' => 0, 'message' => '存在服务商单号重复数据')));
                }
            }
            if (empty($ordersRow)) exit(Zend_Json::encode(array('state' => 0, 'message' => '输入的服务商单号不存在')));

            // 运输方式与包袋运输方式不一致
            if (strtoupper(trim($sm_code)) !== strtoupper(trim($ordersRow['sm_code']))) {
                exit(Zend_Json::encode(array('state' => 0, 'message' => '订单运输方式与包袋运输方式不一致')));
            }

            // 符合订单装袋同时进行收货条件
            if (Service_BR::isBrMode($aShipMethod, $ordersRow)) {
                if (Service_BR::receive()) { // 收货完成，更新订单信息
                    $ordersRow = Service_BR::getOrderInfo();
                }
            }

            // 符合小包但订单状态不为7
            if (Service_BR::isPacket($aShipMethod) && 7 !== (int)$ordersRow['order_status']) {
                exit(Zend_Json::encode(array('state' => 0, 'message' => '订单不是已提交或已打包状态')));
            } // 订单不是已打包状态
            elseif (7 !== (int)$ordersRow['order_status']) {
                exit(Zend_Json::encode(array('state' => 0, 'message' => '订单不是已打包状态')));
            }

            $order_code = $ordersRow['order_code'];
            //$o_weight = 0;
            if (empty($o_weight)) exit(Zend_Json::encode(array('state' => 0, 'message' => '请输入重量')));
            if (!is_numeric($o_weight)) exit(Zend_Json::encode(array('state' => 0, 'message' => '重量只能是数字')));
            $o_weight = floatval($o_weight);
            if ($o_weight <= 0) exit(Zend_Json::encode(array('state' => 0, 'message' => '重量必须大于0')));
            $cShipMethod = Service_ShippingMethod::getByCondition(array('warehouse_id' => $ordersRow['warehouse_id'], 'sm_code' => $sm_code));
            if ($cShipMethod[0]['sm_is_piece'] == '1') {
                if (empty($sm_piece)) exit(Zend_Json::encode(array('state' => 0, 'message' => '请输入件数')));
                if (!preg_match("/^[1-9]{1,}[0-9]{0,}$/", $sm_piece)) {
                    exit(Zend_Json::encode(array('state' => 0, 'message' => '件数只能是正整数')));
                }
            }

        } else {
            if (in_array($sm_code, array('HKDHL', 'CNDHL', 'BH-3HPA', 'BH-3H', 'BH-UKECSLTYD', 'BH-UKECSLTRM', 'BH-CORREOS', 'BH-19EURDPDDE', 'BH-DAC', 'BH-SL018', 'BH-IESLTANPOST', 'DHL-TH', 'WWDHLP', 'WWDHLU'))) {
                if (empty($tracking_number)) exit(Zend_Json::encode(array('state' => 0, 'message' => '请输入服务商单号')));
                $aShipOrderDetail = Service_ShipOrderDetail::getByField($tracking_number, 'sub_tracking_number');
                if (empty($aShipOrderDetail)) exit(Zend_Json::encode(array('state' => 0, 'message' => '输入的服务商单号不存在')));
                if ($aShipOrderDetail['is_scaned'] == 1)
                    exit(Zend_Json::encode(array('state' => 0, 'message' => '服务商单号[' . $tracking_number . ']已经扫描过了')));
                $aLicensePlate = $this->_request->getParam('license_plates', array());
                if (in_array($tracking_number, $aLicensePlate)) {
                    exit(Zend_Json::encode(array('state' => 0, 'message' => '服务商单号[' . $tracking_number . ']已经扫描过了')));
                }
                $so_code = $this->_request->getParam('so_code');
                if (empty($so_code)) $so_code = $aShipOrderDetail['so_code'];
                $aSubTrackingNumber = Service_ShipOrderDetail::getSubTrackingNumbers($so_code);
                if (!in_array($tracking_number, $aSubTrackingNumber)) {
                    exit(Zend_Json::encode(array('state' => 0, 'message' => '不是同一个单的服务商单号')));
                }
                $aLicensePlate[] = $tracking_number;
                $total = count($aSubTrackingNumber);
                $current = count($aLicensePlate);
                $aShipOrder = Service_ShipOrder::getByField($so_code, 'so_code');
                $HKDHLSoWeight = $aShipOrder['so_weight'];
                if ($current === $total) {
                    $order_code = $aShipOrderDetail['order_code'];
                    $ordersRow = Service_Orders::getByField($order_code, 'order_code');
                    $so_weight = $aShipOrder['so_weight'];
                    $so_volWeight = $aShipOrder['so_vol_weight'];
                    $o_weight = $so_weight > $so_volWeight ? $so_weight : $so_volWeight;
                    $tracking_number = $aShipOrder['tracking_number'];
                    $piece_num = $total;
                } else {
                    $aReturn['current'] = $current;
                    $aReturn['total'] = $total;
                    $aReturn['so_code'] = $so_code;
                    $aReturn['license_plate'] = $tracking_number;
                    $aReturn['weight'] = $aShipOrderDetail['sod_weight'];
                    $aReturn['state'] = 3;
                    exit(Zend_Json::encode($aReturn));
                }
            } else if (in_array($sm_code, array('BH-HKDHL'))) {
                if (empty($tracking_number)) exit(Zend_Json::encode(array('state' => 0, 'message' => '请输入服务商单号')));
                $aShipOrderDetail = Service_ShipOrderDetail::getByField($tracking_number, 'sub_tracking_number');
                if (empty($aShipOrderDetail)) {
                    exit(Zend_Json::encode(array('state' => 0, 'message' => '输入的服务商单号不存在')));
                }

                $order_code = $aShipOrderDetail['order_code'];
                $ordersRow = Service_Orders::getByField($order_code, 'order_code');
                $ship_order = Service_ShipOrder::getByField($order_code, 'order_code');
                if ($ship_order['tracking_number'] != $tracking_number) {
                    exit(Zend_Json::encode(array('state' => 0, 'message' => '输入的服务商单号不存在')));
                }
                $so_code = $this->_request->getParam('so_code');
                if (empty($so_code)) $so_code = $aShipOrderDetail['so_code'];
                $aShipOrder = Service_ShipOrder::getByField($so_code, 'so_code');
                $so_weight = $aShipOrder['so_weight'];
                $so_volWeight = $aShipOrder['so_vol_weight'];
                $o_weight = $so_weight > $so_volWeight ? $so_weight : $so_volWeight;
            } else {
                if ($sm_code == 'SZY-EUB' || $sm_code == 'WG-EUB' || $sm_code == 'WG-EUB-EBAY') {
                    $ordersRow = Service_Orders::getByField($tracking_number, 'ref_tracking_number');
                    if (!empty($ordersRow)) {
                        $order_code = $ordersRow['order_code'];
                    } else {
                        exit(Zend_Json::encode(array('state' => 0, 'message' => '服务商单号不存在')));
                    }
                }

                if (empty($order_code)) exit(Zend_Json::encode(array('state' => 0, 'message' => '请输入订单号')));
                if (($aShipMethod['sm_class_code'] == 'CRE' || $aShipMethod['sm_class_code'] == 'CRP') && empty($tracking_number)) {
                    exit(Zend_Json::encode(array('state' => 0, 'message' => '请输入服务商单号')));
                }
                if (empty($o_weight)) exit(Zend_Json::encode(array('state' => 0, 'message' => '请输入重量')));
                if (!is_numeric($o_weight)) exit(Zend_Json::encode(array('state' => 0, 'message' => '重量只能是数字')));
                $o_weight = floatval($o_weight);
                if ($o_weight <= 0) exit(Zend_Json::encode(array('state' => 0, 'message' => '重量必须大于0')));
                //订单验证
                $ordersRow = Service_Orders::getByField($order_code, 'order_code');
                if (empty($ordersRow)) exit(Zend_Json::encode(array('state' => 0, 'message' => '输入的订单号不存在')));
                $cShipMethod = Service_ShippingMethod::getByCondition(array('warehouse_id' => $ordersRow['warehouse_id'], 'sm_code' => $sm_code));
                if ($cShipMethod[0]['sm_is_piece'] == '1') {
                    if (empty($sm_piece)) exit(Zend_Json::encode(array('state' => 0, 'message' => '请输入件数')));
                    if (!preg_match("/^[1-9]{1,}[0-9]{0,}$/", $sm_piece)) {
                        exit(Zend_Json::encode(array('state' => 0, 'message' => '件数只能是正整数')));
                    }
                }
            }
        }

        // 截单不能出货
        if ($ordersRow['intercept_status'] == '1' || $ordersRow['intercept_status'] == '2' || $ordersRow['intercept_status'] == '3') {
            exit(Zend_Json::encode(array('state' => 0, 'message' => '订单已拦截不能出货,拦截原因:' . $ordersRow['intercept_reason'])));
        }

        if (empty($tracking_number)) {
            $ship_order = Service_ShipOrder::getByField($order_code, 'order_code');
            $tracking_number = $ship_order['tracking_number'];
        }
        $shipMethod = Service_ShippingMethod::getByField($sm_code, 'sm_code', "*");
        if ($shipMethod['sm_is_volume'] == "1" && !in_array($shipMethod['sm_code'], array('HKDHL', 'CNDHL', 'DHL-TH', 'WWDHLP', 'WWDHLU'))) {
            for ($i = 0; $i < count($lengthArr); $i++) {
                $lwh = array(
                    'length' => $lengthArr[$i],
                    'width' => $widthArr[$i],
                    'height' => $heightArr[$i],
                    'weight' => $weightArr[$i],
                    'op_id' => $opIdArr[$i],
                );
                $volArr['volArr'][] = $lwh;
            }
        }
        //货件周长[最长边+2*（宽+高）]＜300cm，且最长边＜175cm； 最小尺寸不得小于：23.5cm x 9.5cm x 1cm
        /*if($sm_code == 'BH-DPD'){
            foreach ($lengthArr as $index=> $item)
            {
                $spanVolForBH = array( $item , $widthArr[$index] , $heightArr[$index]);
                sort($spanVolForBH , SORT_NUMERIC);
                if( (($spanVolForBH[2] + 2 * ($spanVolForBH[0] + $spanVolForBH[1])) > 300) ||
                    ($spanVolForBH[2] > 175) ){
                    exit(Zend_Json::encode(array(
                        'state'=>0, 'message'=>'运输渠道货件周长[最长边+2*（宽+高）]＜300cm，且最长边＜175cm； 最小尺寸不得小于：23.5cm x 9.5cm x 1cm',
                    )));
                }
            }
        }*/
        $isValidAup = TRUE;
        if ($sm_code == 'AUP') {
            foreach ($lengthArr as $index => $item) {
                if ($lengthArr[$index] > 105 || $widthArr[$index] > 105 || $heightArr[$index] > 105) {
                    $isValidAup = FALSE;
                    break;
                }
                /*
                elseif ($lengthArr[$index] + $widthArr[$index] > 70)
                {
                    $isValidAup = FALSE;
                    break;
                }*/

            }
            if (!$isValidAup) {
                exit(Zend_Json::encode(array(
                    'state' => 0, 'message' => '运输渠道任意单边不能超过105CM',
                )));
            }
        }
        if (in_array($sm_code, array('ALBP-G', 'ALBP-P', 'BH-BPG', 'BH-BPP', 'ALBP-EU', 'BH-BPEU'))) {
            foreach ($lengthArr as $index => $item) {
                if (($lengthArr[$index] > 60 || $widthArr[$index] > 60 || $heightArr[$index] > 60) || $lengthArr[$index] + $widthArr[$index] + $heightArr[$index] > 90) {
                    $isValidAup = FALSE;
                    break;
                }

            }
            if (!$isValidAup) {
                exit(Zend_Json::encode(array(
                    'state' => 0, 'message' => '运输渠道[' . $sm_code . ']任意单边不能超过60CM,且三边之和不能大于90',
                )));
            }
        }
        if ($sm_code == "BH-AZAT-G") {
            foreach ($lengthArr as $index => $item) {
                $lwhArr[] = $lengthArr[$index];
                $lwhArr[] = $widthArr[$index];
                $lwhArr[] = $heightArr[$index];
                sort($lwhArr);
                if ($lwhArr[0] + $lwhArr[1] + $lwhArr[2] > 90 || $lwhArr[0] < 9 || ($lwhArr[2] < 14 || $lwhArr[2] > 60)) {
                    $isValidAup = FALSE;
                    break;
                }

            }
            if (!$isValidAup) {
                exit(Zend_Json::encode(array(
                    'state' => 0, 'message' => '运输渠道[' . $sm_code . ']任意单边不能超过60CM,且三边之和不能大于90,至少有一面的长度>14cm，宽度>9cm',
                )));
            }
        }

        if (strtoupper($sm_code) == 'DGM-US') {
            foreach ($lengthArr as $index => $item) {
                if ($lengthArr[$index] > 36) {
                    $isValidAup = FALSE;
                    break;
                }
            }
            if (!$isValidAup) {
                exit(Zend_Json::encode(array(
                    'state' => 0, 'message' => '运输渠道[' . $sm_code . '],包裹长度：必须小于等于36CM',
                )));
            }
            foreach ($lengthArr as $index => $item) {
                if (($widthArr[$index] > 23) || ($heightArr[$index] > 23)) {
                    $isValidAup = FALSE;
                    break;
                }
            }
            if (!$isValidAup) {
                exit(Zend_Json::encode(array(
                    'state' => 0, 'message' => '运输渠道[' . $sm_code . '],包裹高度和宽度：必须小于等于23CM',
                )));
            }
        }

        /*switch($sm_code){
        	case "SZY-EMS":
        		if(empty($length)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'请输入长度')));
        		if(!is_numeric($length)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'长度只能是数字')));
        		if(empty($width)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'请输入宽度')));
        		if(!is_numeric($width)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'宽度只能是数字')));
        		if(empty($height)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'请输入高度')));
        		if(!is_numeric($height)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'高度只能是数字')));
        		break;
            case "UKTL":
                if(empty($length)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'请输入长度')));
                if(!is_numeric($length)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'长度只能是数字')));
                if(empty($width)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'请输入宽度')));
                if(!is_numeric($width)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'宽度只能是数字')));
                if(empty($height)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'请输入高度')));
                if(!is_numeric($height)) exit(Zend_Json::encode(array('state'=>0, 'message'=>'高度只能是数字')));
                if($o_weight>=3&&$height>60||$width>60||$length>60) exit(Zend_Json::encode(array('state'=>0, 'message'=>'单边长度不能超过60')));
                if($o_weight<3&&$o_weight>0){
                    if($length>20) exit(Zend_Json::encode(array('state'=>0, 'message'=>'长不能超过20')));
                    if($width>30) exit(Zend_Json::encode(array('state'=>0, 'message'=>'宽不能超过30')));
                    if($height>40) exit(Zend_Json::encode(array('state'=>0, 'message'=>'高不能超过40')));
                }
                break;
        	default:
        		break;	
        }*/
        //检查订单
        $aTestAccount = array('E0110', 'E0207', 'E0659');    //测试账号
        /*if(in_array($ordersRow['customer_code'], $aTestAccount)) {
            exit(Zend_Json::encode(array('state'=>0, 'message'=>'这是测试账号的订单，不能出货')));
        }*/

        $checkSmCodeArray = array('HKDHL', 'CNDHL', 'BH-HKDHL', 'BH-3HPA', 'BH-3H', 'BH-UKECSLTYD', 'BH-UKECSLTRM', 'BH-CORREOS', 'BH-19EURDPDDE', 'BH-DAC', 'BH-SL018', 'BH-IESLTANPOST', 'DHL-TH', 'WWDHLP', 'WWDHLU');
        if (in_array($sm_code, $checkSmCodeArray) && intval($ordersRow['order_status']) !== 14) {
            exit(Zend_Json::encode(array('state' => 0, 'message' => '订单不是已录单状态，不能出货')));
        } else if (!in_array($sm_code, $checkSmCodeArray) && intval($ordersRow['order_status']) !== 7) {
            exit(Zend_Json::encode(array('state' => 0, 'message' => '订单不是已打包状态，不能出货')));
        }
        $session = new Zend_Session_Namespace('userAuthorization');
        $warehouseId = $session->warehouseId;
        if ($ordersRow['warehouse_id'] != $warehouseId) {
            exit(Zend_Json::encode(array('state' => 0, 'message' => '不是当前仓储订单')));
        }
        //包袋验证
        //$aOutboundBag = Service_OutboundBag::getByField($ob_no, 'ob_no');
        if ($aOutboundBag) {
            if (intval($aOutboundBag['ob_status']) !== 0)
                exit(Zend_Json::encode(array('state' => 0, 'message' => '包袋号不是草稿状态')));
            else if ($aOutboundBag['sm_code'] != $ordersRow['sm_code'])
                exit(Zend_Json::encode(array('state' => 0, 'message' => '订单和包袋的运输方式不一致')));
            /*if($aOutboundBag['ob_trade_mode']!=$ordersRow['trade_mode'])
                exit(Zend_Json::encode(array('state'=>0, 'message'=>"订单监管方式[{$ordersRow['trade_mode']}]和包袋的监管方式[{$aOutboundBag['ob_trade_mode']}]不一致")));*/
            //当前订单与袋子唯一性判断(目的国+互换局)
            if ($sm_code == 'TWPG' || $sm_code == 'TWPP') {
                if ($aOutboundBagDetail && !empty($aOutboundBagDetail)) {
                    //袋子渠道
                    $outBagAddressBook = Service_OrderAddressBook::getByField($aOutboundBagDetail[0]['order_code'], 'order_code');
                    $outBagHjtw = Service_HjtwApi::getCode($outBagAddressBook['oab_country_id'], $outBagAddressBook['oab_postcode'], $sm_code);
                    //订单渠道
                    $ordersAddressBook = Service_OrderAddressBook::getByField($order_code, 'order_code');
                    $ordersHjtw = Service_HjtwApi::getCode($ordersAddressBook['oab_country_id'], $ordersAddressBook['oab_postcode'], $sm_code);
                    if ($outBagAddressBook['oab_country_id'] . $outBagHjtw != $ordersAddressBook['oab_country_id'] . $ordersHjtw) {
                        exit(Zend_Json::encode(array('state' => 0, 'message' => $outBagAddressBook['oab_country_id'] . $outBagHjtw . '该订单与袋子不是同一分区' . $ordersAddressBook['oab_country_id'] . $ordersHjtw)));
                    }
                }
            }
        } else {
            if ($sm_code != $ordersRow['sm_code'])
                exit(Zend_Json::encode(array('state' => 0, 'message' => '订单和包袋的运输方式不一致')));
            $obResult = Service_OutboundBag::create($ob_no, $sm_code, $ordersRow['trade_mode']);
            if (!$obResult) {
                exit(Zend_Json::encode(array('state' => 0, 'message' => '创建新包袋失败，请再试一次')));
            }
        }
        //物流订单
        $aShipOrder = Service_ShipOrder::getByField($order_code, 'order_code');
        if (empty($aShipOrder)) exit(Zend_Json::encode(array('state' => 0, 'message' => '物流订单不存在')));
        if (intval($aShipOrder['so_status']) !== 0) {
            exit(Zend_Json::encode(array('state' => 0, 'message' => '物流订单不是草稿状态')));
        }
        //检查重量
        $is_force = trim($this->_request->getParam('is_force'));
        if (in_array($ordersRow['sm_code'], array('BH-HKDHL', 'HKDHL')) && ($is_force == 0)) {
            $addressCondition = array(
                'order_code' => $ordersRow['order_code'],
                'oab_type' => '0',
            );
            $address = Service_OrderAddressBook::getByWhere($addressCondition);
            $invoceContry = Service_ShippingMethodConfig::getInvoiceContry();
            if (in_array($address['oab_country_id'], $invoceContry)) {
                if ($address['oab_country_id'] != '251') {
                    $message = '该订单需提供正本发票';

                } else {
                    $totaldeclare = Service_OrderProduct::sumPurposeDeclaredValue($ordersRow['order_code']);
                    if ($totaldeclare > Service_ShippingMethodConfig::$purPusDecalar) {
                        $message = '该订单需提供正本发票';
                    }
                }
            }
            if ($message) {
                exit(Zend_Json::encode(array('state' => 4, 'message' => $message)));
            }
        }
        if ($sm_channel != '1' && ($is_force == 0 || $is_force == 4)) {
            $weightRet = Service_ShipOrderProcess::checkWeight($order_code, $aShipOrder['pp_barcode'], $o_weight);
            if ($weightRet['state'] === 0) {
                $message = '输入的重量' . $o_weight . '和系统计算的重量' . $weightRet['order_weight'] . '相差超过' . $weightRet['limit'] . 'KG';
                exit(Zend_Json::encode(array('state' => 2, 'message' => $message)));
            }
        }
        if ($opieces > 0) {
            $piece_num = $opieces;
        }
        $totalWeight = 0;
        if ($sm_code == 'TWPG' || $sm_code == 'TWPP') {
            if ($aOutboundBagDetail && !empty($aOutboundBagDetail)) {
                foreach ($aOutboundBagDetail as $key => $value) {
                    $totalWeight += $value['so_weight'];
                }
                if ($o_weight + $totalWeight > 30) {
                    exit(Zend_Json::encode(array('state' => 0, 'message' => "此订单袋子累计重量超过30KG")));
                }
            }
        }
        if (false === Service_ShipOrderProcess::allowPutIntoBag($ob_no, $order_code, 'gsPlateFormAtBag')) {
            die(json_encode(array('state' => 0, 'message' => "环球的订单不能跟其他平台的订单混装在同一个袋子")));
        }
        //处理
        $soProcess = new Service_ShipOrderProcess();
        $volArr['realWeight'] = $o_weight;
        $result = $soProcess->delivery($ordersRow['order_id'], $order_code, $ob_no, $o_weight, $tracking_number, $aShipOrder['so_code'], $sm_code, $volArr, $sm_piece);
        if ($result['state'] === 1) {
            $detail['E2'] = $order_code;
            if ($sm_code == 'HKDHL') {
                $tracking_number_behind = Service_ShipOrderDetail::getByField($order_code, 'order_code');
                $soRow = Service_ShipOrder::getByField($order_code, 'order_code');
                $tracking_number_behind = $tracking_number_behind['sub_tracking_number'];
            } else {
                $tracking_number_behind = Service_ShipOrder::getByField($order_code, 'order_code');
                $soRow = $tracking_number_behind;
                $tracking_number_behind = $tracking_number_behind['tracking_number'];
            }
            $detail['E3'] = $tracking_number_behind;
            $detail['pieces'] = $soRow['so_piece'];
            $detail['E4'] = isset($HKDHLSoWeight) ? $HKDHLSoWeight : $o_weight;
            $user = Service_User::getLoginUser();
            $detail['E5'] = $user['user_name'];
            $detail['E6'] = date('Y-m-d H:i:s');
            $response['detail'] = $detail;
            $response['weight'] = isset($HKDHLSoWeight) ? $HKDHLSoWeight : $o_weight;
            $response['state'] = 1;
        } else $response['message'] = $result['error'];
        exit(Zend_Json::encode($response));
    }


    /*
     * @订单下架
     * @params 订单号=array()
     * @return array
     */
    public function submitAction()
    {
        $result = array('state' => 0, 'message' => '', 'error' => array('Fail.'), 'pick_code' => '');
        if ($this->_request->isPost()) {
            $orderCodes = $this->_request->getParam('orderCodes');
            if (is_array($orderCodes) && count($orderCodes)) {
                $warehouseId = Service_User::getUserWarehouseId();
                $obj = new Service_OrderProcess();
                $return = $obj->orderArrPickupTransaction($orderCodes, $warehouseId);
                if (isset($return['success_count'])) {
                    $result['state'] = 1;
                    $result['successCount'] = $return['success_count'] ? $return['success_count'] : 0;
                    $result['failCount'] = $return['fail_count'] ? $return['fail_count'] : 0;
                    $result['error'] = array();
                    $result['pick_code'] = $result['successCount'] > 0 ? $return['pick_code'] : '';
                    $result['error'] = $result['failCount'] > 0 ? $return['errors'] : array();
                } else {
                    $result = array('state' => 0, 'message' => '操作失败');
                }
            }
        }
        die(Zend_Json::encode($result));
    }

    /*
     * @订单下架
     * @params 订单号=array()
     * @return array
     */
    public function submitOffshelfAction()
    {
        $result = array('state' => 0, 'message' => '', 'error' => array('Fail.'), 'pick' => array('pickCode' => '', 'message' => ''));
        if ($this->_request->isPost()) {
            $params = $this->_request->getParams();

            $printType = isset($params['printType']) ? $params['printType'] : '0';
            $pickType = isset($params['pickType']) ? $params['pickType'] : '';
            $offShelfQty = isset($params['offShelfQty']) ? $params['offShelfQty'] : '';
            $pickerIdArr = isset($params['pickerId']) ? $params['pickerId'] : array();
            $orderCodes = $params['orderCodes'];
            $orderCodeArr = explode(",", $orderCodes);

            $pickTypeArray = array(
                'orderCodeArr' => $orderCodeArr,
                'printType' => $printType,
                'type' => $pickType,
                'data' => $pickType == '0' ? $pickerIdArr : $offShelfQty,
            );

            /*            $pickTypeArray = array(
                            'printType' => $printType,
                            'type' => $pickType,
                            'data' => $pickType == '0' ? $pickerIdArr : $offShelfQty,
                        );*/

            $warehouseId = Service_User::getUserWarehouseId();
            $obj = new Service_OrderProcess();
            $result = $obj->batchPickupTransaction($pickTypeArray, $warehouseId);
        }
        die(Zend_Json::encode($result));
    }

    /**
     * @author william-fan
     * @todo 用于计算体积重
     */
    public function getVolAction()
    {
        $length = $this->_request->getParam('length', '');
        $width = $this->_request->getParam('width', '');
        $height = $this->_request->getParam('height', '');
        $sm_code = $this->_request->getParam('sm_code', '');
        $shipMethods = Service_ShippingMethod::getByCondition(array('sm_code' => $sm_code));
        $shipMethod = array();
        foreach ($shipMethods as $key => $value) {
            if ($value['warehouse_id'] == '3') {
                continue;
            }
            $shipMethod = $value;
        }
        $result = array(
            'state' => '0',
            'message' => '',
            'volWeight' => '0'
        );
        if (!empty($shipMethod)) {
            if ($length > 0 && $width > 0 && $height > 0 && $shipMethod['sm_vol_rate'] > 0) {
                $volWeight = ($length * $width * $height) / $shipMethod['sm_vol_rate'];
                $volWeight = sprintf('%.2f', $volWeight);
                $result['state'] = '1';
                $result['volWeight'] = $volWeight;
            } else {
                if (!$shipMethod['sm_vol_rate'] > 0) {
                    $result['message'] = '运输方式体积转换率必须大于0';
                }
            }
        } else {
            $result['message'] = "运输方式无效";
        }
        die(Zend_Json::encode($result));
    }

    public function getProductAction()
    {
        $order_code = $this->_request->getParam('order_code', '');
        $order = Service_Orders::getByField($order_code, "order_code", "*");
        if (empty($order)) {
            $error = array('ask' => 0, 'message' => '输入订单不存在');
            die(json_encode($error));
        } elseif ($order['order_status'] != '7' && $order['order_status'] != '14') {
            $error = array('ask' => 0, 'message' => '订单不是已打包或已录单状态');
            die(json_encode($error));
        } else {
            $pices = $this->_request->getParam('pices');
            $orderProduct = Service_OrderProduct::getByCondition(array('order_code' => $order_code), "*");
            $countProduct = count($orderProduct);
            $ename = array();
            if ($pices > $countProduct) {
                //pices数大于产品数 最后一个产品做一直填充
                for ($i = 0; $i < $pices; $i++) {
                    if ($i < $countProduct - 1) {
                        $title_en = $orderProduct[$i]['product_title_en'];
                        $op_id = $orderProduct[$i]['op_id'];
                    } else {
                        $title_en = $orderProduct[$countProduct - 1]['product_title_en'];
                        $op_id = $orderProduct[$countProduct - 1]['op_id'];
                    }
                    $productArr = array(
                        'title_en' => $title_en,
                        'op_id' => $op_id
                    );
                    $ename[$i] = $productArr;
                }
            } elseif ($pices <= $countProduct) {
                for ($i = 0; $i < $pices; $i++) {
                    $title_en = $orderProduct[$i]['product_title_en'];
                    $op_id = $orderProduct[$i]['op_id'];
                    $productArr = array(
                        'title_en' => $title_en,
                        'op_id' => $op_id
                    );
                    $ename[$i] = $productArr;
                }
            }
            $orderInfo['ename'] = $ename;
            $return = array('ask' => 1, 'orderInfo' => $orderInfo);
            die(json_encode($return));
        }
    }

    /**
     * 通过运单号获取订单号 BH-DPD
     * @return [type]        [description]
     * @author luffyzhao
     */
    public function getByOrdercodeAction()
    {
        $orderRow = array('order_code' => '');
        $shipCode = trim($this->_request->getParam('ship_code', ''));
        $smCode = trim($this->_request->getParam('sm_code', ''));

        $condition = array('sm_code' => $smCode, 'ref_tracking_number' => $shipCode);

        $orderRows = Service_Orders::getByCondition($condition, array('order_code'), 1, 1);

        if ($orderRows) {
            $orderRow = $orderRows['0'];
            die(json_encode($orderRow));
        }
        die(json_encode($orderRow));
    }

    public function batchBagAction()
    {
        $sm_code = $this->_request->getParam("shipping_method", "");
        $ob_no = $this->_request->getParam("outbound_no", "");
        $xlsData = Service_Product::getXLSData($_FILES, 'uploadfilename');
        //var_dump($xlsData);
        //echo "XXXXXXXXXXXXXX";
        //echo "$sm_code=".$sm_code;
        //echo "$ob_no=".$ob_no;
        //exit;
        $result = array("ask" => 1, "message" => "", 'error' => array(), 'data' => array(), 'detail' => array());
        $soProcess = new Service_ShipOrderProcess();
        //$volArr['realWeight'] = $o_weight;        
        $user = Service_User::getLoginUser();
        foreach ($xlsData as $key => $value) {
            if ($key == 0) continue;
            $order_code = $value[0];
            $sm_code = $value[1];
            $o_weight = $value[2];
            $sm_piece = $value[3];
            $data = array(
                'ask' => '1',
                'message' => '',
                'order_code' => $order_code,
                'sm_code' => $sm_code,
                'o_weight' => $o_weight,
                'sm_piece' => $sm_piece,
                'message' => '',
            );
            if ($order_code == "") {
                $data['ask'] = 0;
                $data['message'] = "订单号必填";
                $result['data'][] = $data;
                continue;
            }
            $ordersRow = Service_Orders::getByField($order_code, 'order_code', "*");
            if (empty($ordersRow)) {
                $data['ask'] = 0;
                $data['message'] = "订单号[" . $order_code . "]不存在";
                $result['data'][] = $data;
                continue;
            }
            if ($ordersRow['sm_code'] != 'THHK') {
                $data['ask'] = 0;
                $data['message'] = "订单号[" . $order_code . "]渠道不是THHK";
                $result['data'][] = $data;
                continue;
            }
            if ($ordersRow['order_status'] != 7) {
                $data['ask'] = 0;
                $data['message'] = "订单号[" . $order_code . "]不是已打包状态";
                $result['data'][] = $data;
                continue;
            }
            if (!preg_match("/^[1-9]\d*(.\d+)*$|^0.\d*[1-9]+\d*$/", $o_weight)) {
                $data['ask'] = 0;
                $data['message'] = "重量必须是大于0的数值";
                $result['data'][] = $data;
                continue;
            }
            if (!preg_match("/^[1-9]\d*(.\d+)*$|^0.\d*[1-9]+\d*$/", $sm_piece)) {
                $data['ask'] = 0;
                $data['message'] = "件数不是大于0的正整数";
                $result['data'][] = $data;
                continue;
            }
            $data['sm_code'] = $ordersRow['sm_code'];
            $aOutboundBag = Service_OutboundBag::getByField($ob_no, 'ob_no');
            if ($aOutboundBag) {
                if (intval($aOutboundBag['ob_status']) !== 0) {
                    $data['ask'] = 0;
                    $data['message'] = "包袋号不是草稿状态";
                    break;
                }
            } else {
                $obResult = Service_OutboundBag::create($ob_no, $sm_code, $ordersRow['trade_mode']);
                if (!$obResult) {
                    //exit(Zend_Json::encode(array('state'=>0, 'message'=>'创建新包袋失败，请再试一次')));
                    $data['ask'] = 0;
                    $data['message'] = "创建新包袋失败，请再试一次";
                    break;
                }
            }
            $aShipOrder = Service_ShipOrder::getByField($order_code, 'order_code', "*");
            $volArr = array();
            $ret = $soProcess->delivery($ordersRow['order_id'], $order_code, $ob_no, $o_weight, $order_code, $aShipOrder['so_code'], $ordersRow['sm_code'], $volArr, $sm_piece);
            if ($ret['state'] === 1) {
                $detail = array();
                $data['message'] = "装袋成功!";
                $detail['E2'] = $order_code;
                $detail['E3'] = $order_code;
                $detail['pieces'] = 1;
                $detail['E4'] = $o_weight;
                $detail['E5'] = $user['user_name'];
                $detail['E6'] = date('Y-m-d H:i:s');
                //$response['detail'] = $detail;
                //$response['weight'] = isset($HKDHLSoWeight)?$HKDHLSoWeight:$o_weight;
                $result['detail'][] = $detail;
            } else {
                $data['ask'] = 0;
                $data['message'] = $ret['error'];
            }
            $result['data'][] = $data;
        }
        echo Zend_Json::encode($result);
        //exit;
    }
}