/** * WaveBuildAct::waveBuild() * 生成配货单入口 * @param mixed $shipOrderId 发货单ID * @param mixed $is_wave 该发货单是否单独生成配货单 * @return */ public function waveBuild($shipOrderId, $is_wave = 0) { $shipOrderId = intval(trim($shipOrderId)); //格式化发货单ID if (!$shipOrderId) { self::$errCode = 109; self::$errMsg = '发货单ID不合法!'; return FALSE; } $order_status = WhShippingOrderModel::get_order_info('is_wave', array('id' => $shipOrderId)); if ($order_status[0]['is_wave'] == 1) { self::$errCode = 110; self::$errMsg = '该发货单已经分配过波次!'; return FALSE; } /** 获取订单详情**/ $order_detail = WhShippingOrderdetailModel::getShipDetails($shipOrderId); if (empty($order_detail)) { return FALSE; } //$order_detail = self::sort_order_detail($order_detail); $order_limit = self::get_order_limit_info($order_detail); //获取当前订单的重量、料号数量、体积信息 //print_r($order_limit);exit; $is_wave = $is_wave ? $is_wave : self::judge_single_shiporder($order_limit, 1); //判断是否满足单发货单生成配货单条件 //var_dump($is_wave);exit; if ($is_wave === TRUE) { //需要生成配货单 $is_split = self::judge_is_split($order_limit); //判断满足生成单个配货单的发货单是否需要拆分成多个配货单 if ($is_split === TRUE) { //满足拆分 self::split_signle_shipOrder($shipOrderId, $order_detail); //将一个发货单拆分成多个配货单 } else { self::make_wave($shipOrderId, 0, 1, $order_detail, 1); //生成单独一个配货单 } } else { //不需单独生成一个配货单 $waveType = count($order_detail) == 1 ? 2 : 3; //判断单料号还是多料号 if ($waveType == 2) { //单料号发货单 $sku = $order_detail['0']['sku']; //判断该料号的配货单是否有未完成配货的 $waveinfo = WhWaveInfoModel::get_wave_info('id', array('sku' => $sku, 'waveStatus' => 0, 'waveType' => 2, 'is_delete' => 0)); $wave_id = empty($waveinfo) ? 0 : $waveinfo[0]['id']; //if($wave_id){ // echo '<font style="color:red;">'.$shipOrderId.'---'.$wave_id.'</font>'."<br />"; // } self::make_wave($shipOrderId, $wave_id, 0, $order_detail, $waveType); } else { //多料号发货单 self::process_multi_sku_shipOrder($shipOrderId, $order_detail); //处理多料号订单 } } }
/** * OrderPrintAct::act_check_order() * 检查发货单信息 * @return void */ public function act_check_order() { $shipOrderId = intval($_REQUEST['order']); $is_preview = isset($_REQUEST['is_preview']) ? $_REQUEST['is_preview'] : 0; if (!$shipOrderId) { self::$errCode = '201'; self::$errMsg = '请输入发货单'; return FALSE; } $shipOrderInfo = WhShippingOrderModel::get_order_info(array('orderStatus', 'transportId', 'accountId'), $shipOrderId); if (empty($shipOrderInfo)) { self::$errCode = 202; self::$errMsg = '发货单' . $shipOrderInfo . ':没有该发货单信息!'; return FALSE; } if (!$is_preview) { //打印模式 if ($shipOrderInfo[0]['orderStatus'] != PKS_PRINT_SHIPPING_INVOICE) { self::$errCode = 203; self::$errMsg = '发货单' . $shipOrderInfo . ':不是待打印面单状态!'; return FALSE; } } //得到非快递的运输方式ID $arr_transportId = C('flat_transport'); $arr_transportId = array_keys($arr_transportId); $res = self::orderPrint($shipOrderId, $shipOrderInfo[0]['transportId'], $shipOrderInfo[0]['accountId']); if ($res) { $partion = WhOrderPartionRecordsModel::get_OrderPartionRecords($shipOrderId); //获取分区记录 $partion = empty($partion) ? '' : $partion['partion']; self::$errCode = 200; self::$errMsg = $shipOrderId . '打印面单:' . $partion; $res = str_replace("'", '"', $res); if ($shipOrderInfo[0]['orderStatus'] == PKS_PRINT_SHIPPING_INVOICE && !$is_preview) { $status = in_array($shipOrderInfo[0]['transportId'], $arr_transportId) ? PKS_WAITING_SHIPPING_CHECKING : PKS_WAITING_LOADING; $info = WhShippingOrderModel::update(array('orderStatus' => $status), $shipOrderId); if (!$info) { self::$errCode = 204; self::$errMsg = '更新发货单状态失败!'; $res = $info; } $status = in_array($shipOrderInfo[0]['transportId'], $arr_transportId) ? 'PKS_WAITING_SHIPPING_CHECKING' : 'PKS_WAITING_LOADING'; WhPushModel::pushOrderStatus($shipOrderId, $status, $_SESSION['userId'], time()); //状态推送,需要改为发货组复核(订单系统提供状态常量) } } else { return $res; } return $res; }
/** * pda_shippingGroupReviewAct::act_outReview() * 扫描口袋编号通过AJAX传递口袋编号来对该编号进行操作 * @author cxy * @return boolean array */ public function act_outReview() { $userId = $_SESSION['userId']; $packageId = intval(trim($_POST['packageid'])); //得到发货单分区列表信息 $get_orderPartion = WhOrderPartionPrintModel::get_OrderPartion($packageId); if (empty($get_orderPartion)) { self::$errCode = '202'; self::$errMsg = '该口袋编号不存在分区列表中'; return false; } if ($get_orderPartion['status'] == 0) { self::$errCode = '202'; self::$errMsg = '该口袋编号还没有进行打包!'; return false; } //得到该口袋编号下的发货单 $all_order = WhOrderPartionRecordsModel::get_OrderPartionRecordsByPackageId($packageId); if ($all_order) { foreach ($all_order as $value) { $result_status = WhShippingOrderModel::get_order_info('orderStatus', array('id' => $value['shipOrderId'])); if ($result_status[0]['orderStatus'] != PKS_WAITING_SHIPPING_CHECKING) { self::$errCode = '202'; self::$errMsg = '该口袋编号下有发货单的状态不是在待发货组复核!'; return false; } } } //发货组复核信息 $get_groupReview = WhWaveOrderPartionShippingReviewModel::get_pocket($packageId); if ($get_groupReview) { self::$errCode = '211'; self::$errMsg = '该口袋编号已经在发货组复核中复核过了'; return true; } //分区复核的信息 $get_orderReview = WhWaveOrderPartionScanReviewModel::get_shippingNews($packageId); // print_r($get_orderReview); // echo $get_orderReview['review_weight'];exit; if ($get_orderPartion['totalWeight'] == $get_orderReview['review_weight'] && $get_orderPartion['totalNum'] == $get_orderReview['review_num']) { $is_error = 0; self::$errCode = '200'; self::$errMsg = '请随机扫描一个订单!'; $data = array('packageId' => $packageId, 'is_error' => $is_error, 'userId' => $userId, 'scantime' => time()); $partion_arr = array(); $review_arr = array(); //分区扫描得到的发货单 $get_orderPartion_detail = WhOrderPartionRecordsModel::get_OrderPartionRecordsByPackageId($packageId); //得到分区复核的发货单列表 $get_review_detail = WhWaveOrderPartionScanReviewModel::get_shipping_review($packageId); foreach ($get_orderPartion_detail as $v) { $partion_arr[$v['shipOrderId']] = $v; } foreach ($get_review_detail as $v) { $review_arr[$v['shipOrderId']] = $v; } $diversity_a = array_diff_key($partion_arr, $review_arr); $diversity_b = array_diff_key($review_arr, $partion_arr); if (!empty($diversity_a) || !empty($diversity_b)) { self::$errCode = '500'; self::$errMsg = '分区的发货单与分区复核的发货单不符合'; $order_str = ''; if ($diversity_a) { foreach ($diversity_a as $k => $val) { $order_str .= $k . ','; } } elseif ($diversity_b) { foreach ($diversity_b as $k => $val) { $order_str .= $k . ','; } } return trim($order_str, ','); } $res = array(); WhBaseModel::begin(); $result = WhWaveOrderPartionShippingReviewModel::insert($data); if ($result) { foreach ($get_review_detail as $ks => $val) { //更新发货操作记录表 $update = WhWaveOrderPartionShippingReviewModel::updateOrderRecords($val['shipOrderId'], $userId); if (!$update) { self::$errCode = '206'; self::$errMsg = '更新操作记录失败,请联系负责人!'; WhBaseModel::rollback(); return false; } //更新发货表状态 $ostatus = WhWaveOrderPartionScanReviewModel::updateShippingOrderStatus($val['shipOrderId'], $status = PKS_WAITING_LOADING); if (!$ostatus) { self::$errCode = 608; self::$errMsg = "更新发货单状态失败!"; WhBaseModel::rollback(); return false; } WhPushModel::pushOrderStatus($val['shipOrderId'], 'PKS_WAITING_LOADING', $_SESSION['userId'], time()); //状态推送,需要改为装车扫描(订单系统提供状态常量) } self::$errCode = '200'; self::$errMsg = '该口袋编号正确,请复核下该口袋编号下的发货单!'; $get_orderPartion['totalWeight'] = round($get_orderPartion['totalWeight'] / 1000, 3); $get_orderReview['review_weight'] = round($get_orderReview['review_weight'] / 1000, 3); $res['partion_data'] = $get_orderPartion; $res['review_data'] = $get_orderReview; $res['packageid'] = $packageId; } else { self::$errCode = '206'; self::$errMsg = '该发货组复核口袋编号失败,请联系负责人!'; WhBaseModel::rollback(); return false; } WhBaseModel::commit(); return $res; } else { self::$errCode = '201'; self::$errMsg = '分区和分区复核的数据不一致!'; } $res['partion_data'] = $get_orderPartion; $res['review_data'] = $get_orderReview; $res['packageid'] = $packageId; return $res; }