getOrders(); //orders $orderObjectIds = array(); foreach($orders as $order_id => $orderInfo) { foreach($orderInfo['items'] as $itemInfo) { $obj_id = $itemInfo['obj_id']; //check if($itemInfo['split_num'] == 0){ $orderObjectIds[$order_id][$obj_id] = $obj_id; } } } //check $store_code = ''; $storeCodes = array(); $objectIds = array(); foreach($orders as $order_id => $orderInfo) { foreach($orderInfo['objects'] as $objectInfo) { $obj_id = $objectInfo['obj_id']; //check if(empty($orderObjectIds[$order_id][$obj_id])){ continue; } if(empty($objectInfo['store_code'])){ continue; } //取第一个store_code $store_code = $objectInfo['store_code']; break 2; } } //check if(empty($store_code)) { return array(false, '没有指定仓,无需拆单'); } //获取仓库 $appointBranch = kernel::single('ome_branch_type')->isAppointBranch($orderInfo); $arrBranch = kernel::single('ome_branch_type')->getBranchIdByStoreCode($store_code, $appointBranch); if(!$arrBranch){ return array(true, '未配置指定仓[' . $store_code . ']', 'no branch'); } //获取仓库ID $branch_id = $arrBranch[$store_code]; if(empty($branch_id)) { return array(false, '没有指定仓库ID,无需拆单'); } //format $splitOrder = array(); $splitOrderId = array(); foreach ($orders as $order_id => $order) { $splitOrderId[] = $order['order_id']; $objects = $order['objects']; $itemList = $order['items']; //unset unset($order['objects']); unset($order['items']); //objects(按子单的指定仓拆单) $obj_ids = array(); foreach($objects as $obj_id => $object) { //check if($object['store_code'] != $store_code) { continue; } //初始化订单信息 if(empty($splitOrder[$order_id])) { $splitOrder[$order_id] = $order; } //objects $splitOrder[$order_id]['objects'][$obj_id] = $object; //obj_ids $obj_ids[] = $object['obj_id']; } //check if(empty($itemList)){ continue; } //items foreach ($itemList as $item_id => $itemInfo) { //按子单的指定仓拆单 if (in_array($itemInfo['obj_id'], $obj_ids)) { //items $splitOrder[$order_id]['items'][$item_id] = $itemInfo; } } } $group->setSplitOrderId($splitOrderId); $group->updateOrderInfo($splitOrder); $group->setBranchId(array($branch_id)); return array(true, '按子单指定仓拆单成功'); } }