Пример #1
0
 public static function getShipOrderPay($select, $where)
 {
     self::initDB();
     $sql = "select {$select} from `wh_shipping_order` as a left join \n\t\t\t\t`wh_shipping_order_group_distribution` as b on a.id=b.shipOrderId {$where} ";
     $query = self::$dbConn->query($sql);
     if ($query) {
         $ret = self::$dbConn->fetch_array_all($query);
         return $ret;
     } else {
         self::$errCode = "003";
         self::$errMsg = "error";
         return false;
     }
 }
Пример #2
0
 function act_checkSku()
 {
     $userId = $_SESSION['userId'];
     $starttime = time();
     $Msg = '';
     $res_data = array();
     $state_status = array(402);
     //准备状态
     $final_status = array(403);
     //配货完成状态
     $no_express_delivery = array('中国邮政平邮', '中国邮政挂号', '香港小包平邮', '香港小包挂号', '德国邮政', '新加坡邮政', 'EUB', 'Global Mail');
     $order_id = $_POST['ebay_id'];
     //先核对订单
     //兼容 EUB或者 包裹 扫描的是 trackno 而非ebayid
     $p_real_ebayid = '#^\\d+$#';
     $p_trackno_eub = '#^(LK|RA|RB|RC|RR|RF|LN)\\d+(CN|HK|DE200)$#';
     $is_eub_package_type = false;
     if (preg_match($p_real_ebayid, $order_id)) {
     } else {
         if (preg_match($p_trackno_eub, $order_id)) {
             $is_eub_package_type = true;
         } else {
             self::$errCode = "001";
             self::$errMsg = "订单号[" . $order_id . "]格式有误";
             return false;
         }
     }
     if ($is_eub_package_type === true) {
         $ordercheck = ShippingOrderModel::getShippingOrderInfo("b.*", "where a.tracknumber='{$order_id}' and a.is_delete=0");
     } else {
         $ordercheck = ShippingOrderModel::getShippingOrder("*", "where id='{$order_id}'");
     }
     if (empty($ordercheck)) {
         self::$errCode = '001';
         self::$errMsg = '未找到订单/跟踪号[' . $order_id . ']';
         return false;
     } else {
         $ebay_carrier = CommonModel::getShipingNameById($ordercheck[0]['transportId']);
         if (!in_array($ebay_carrier, $no_express_delivery)) {
             self::$errCode = '001';
             self::$errMsg = '请选择非快递订单!';
             return false;
         }
     }
     if ($ordercheck[0]['orderStatus'] == 900) {
         self::$errCode = '002';
         self::$errMsg = "该发货单[{$order_id}][已经废弃]!";
         return false;
     } else {
         if (in_array($ordercheck[0]['orderStatus'], $final_status)) {
             self::$errCode = '005';
             self::$errMsg = "该发货单已经扫描完成!";
             return false;
         }
     }
     if (!in_array($ordercheck[0]['orderStatus'], $state_status)) {
         self::$errCode = '002';
         self::$errMsg = "该发货单[{$order_id}][不在待配货]!";
         return false;
     }
     //配货单所有料号及数量
     $skuinfos = array();
     $key_skuinfos = array();
     $skuinfo = GroupRouteModel::getOrderPositionID($ordercheck[0]['id']);
     foreach ($skuinfo as $info) {
         //$s_key = $info['sku']."-".$info['pName'];
         $s_key = $info['id'];
         $skuinfos[$s_key] = $info['amount'];
         $key_skuinfo[$info['sku']] = $info['amount'];
     }
     //print_r($skuinfos);die;
     $eosr_arr2 = OrderPickingRecordsModel::getPickingRecords("*", "where shipOrderId={$ordercheck[0]['id']} and isScan=0 and is_delete=0");
     if (!$eosr_arr2) {
         self::$errCode = '005';
         self::$errMsg = "该发货单已经扫描完成!";
         return false;
     } else {
         if (count($eosr_arr2) <= count($skuinfos)) {
             //初次和二次配货
             $ebay_sku = trim($_POST['ebay_sku']);
             $ebay_sku = get_goodsSn($ebay_sku);
             $now_sku = trim($_POST['now_sku']);
             $now_pname = trim($_POST['now_pname']);
             $now_detailid = trim($_POST['now_detailid']);
             //$s_key 		  = $now_sku."-".$now_pname;
             $s_key = $now_detailid;
             $detail_info = OmAvailableModel::getTNameList("wh_shipping_orderdetail", "storeId,shipOrderId", "where id={$now_detailid}");
             $arr_eosr = OrderPickingRecordsModel::getPickingRecords("sku", "where shipOrderId={$ordercheck[0]['id']} and sku='{$ebay_sku}' and pName='{$now_pname}' and is_delete=0");
             $key_skuinfos = array_keys($key_skuinfo);
             if ($ebay_sku != $now_sku) {
                 self::$errCode = '011';
                 self::$errMsg = "记录料号与扫描料号不符1!" . $ebay_sku;
                 return $ebay_sku;
             }
             if (!empty($arr_eosr)) {
                 if (!in_array($ebay_sku, $key_skuinfos)) {
                     self::$errCode = '009';
                     self::$errMsg = "记录料号与扫描料号不符2!" . $ebay_sku;
                     return $ebay_sku;
                 } else {
                     if ($skuinfos[$s_key] < 1) {
                         self::$errCode = '021';
                         self::$errMsg = "料号数量小于1!({$key_skuinfos[0]})";
                         return $ebay_sku;
                     } else {
                         if ($skuinfos[$s_key] > 1) {
                             if (isset($_POST['pskunum'])) {
                                 if ($_POST['pskunum'] != $skuinfos[$s_key]) {
                                     self::$errCode = '022';
                                     self::$errMsg = "请输入正确的数量,不要配错数量{$_POST['pskunum']}-{$skuinfos[$s_key]}!";
                                     return $ebay_sku;
                                 }
                             } else {
                                 self::$errCode = '020';
                                 self::$errMsg = "多数量料号需要输入数量!";
                                 return $ebay_sku;
                             }
                         }
                     }
                 }
                 if ($arr_eosr[0]['isScan'] == 0) {
                     //$sku_stock = OrderPickingRecordsModel::getSkuStock("actualStock","where sku='$ebay_sku'");
                     $sku_stock = GroupRouteModel::getSkuPosition("where a.sku='{$ebay_sku}' and c.pName='{$now_pname}' and b.is_delete=0");
                     if ($detail_info[0]['storeId'] == 1) {
                         if (isset($sku_stock[0]['nums'])) {
                             if ($sku_stock[0]['nums'] >= $skuinfos[$s_key]) {
                                 $ssname = $order_id . "," . $ebay_sku;
                                 session_start();
                                 if (isset($_SESSION[$ssname]) && $_SESSION[$ssname] == "yes") {
                                     self::$errCode = '502';
                                     self::$errMsg = "数据同步中!请不要重复提交!";
                                     return false;
                                 }
                                 $u_data = array();
                                 $u_data = array('isScan' => 1, 'scanUserId' => $userId, 'amount' => $skuinfos[$s_key], 'scanTime' => time());
                                 OrderPickingRecordsModel::update($u_data, "and shipOrderId='{$ordercheck[0]['id']}' and sku='{$ebay_sku}' and pName='{$now_pname}' and is_delete=0");
                                 $position_info = OmAvailableModel::getTNameList("wh_position_distribution", "id", "where pName='{$now_pname}' and storeId=1");
                                 $positionId = $position_info[0]['id'];
                                 $skuinfo = whShelfModel::selectSku(" where sku = '{$ebay_sku}'");
                                 $paraArr = array('ordersn' => $ordercheck[0]['id'], 'sku' => $ebay_sku, 'amount' => $skuinfos[$s_key], 'purchaseId' => $skuinfo['purchaseId'], 'ioType' => 1, 'ioTypeId' => 2, 'userId' => $userId, 'reason' => '配货单配货出库', 'positionId' => $positionId);
                                 $WhIoRecordsAct = new WhIoRecordsAct();
                                 $WhIoRecordsAct->act_addIoRecoresForWh($paraArr);
                                 //出库记录
                                 self::$errCode = '300';
                                 $Msg = "实际料号出库扫描成功!" . $ebay_sku;
                                 $eosr_arr2 = OrderPickingRecordsModel::getPickingRecords("*", "where shipOrderId={$ordercheck[0]['id']} and isScan=0 and is_delete=0");
                                 if (!$eosr_arr2) {
                                     //更新订单到复核状态
                                     GroupDistributionModel::updateShipOrder(array('orderStatus' => 403), "and id='{$ordercheck[0]['id']}' and orderStatus=402");
                                     WhPushModel::pushOrderStatus($ordercheck[0]['id'], 'STATESHIPPED_PENDREVIEW', $_SESSION['userId'], time());
                                     //状态推送
                                     self::$errCode = '005';
                                     self::$errMsg = "该订单已经扫描完成!";
                                     return true;
                                 }
                             } else {
                                 self::$errCode = '007';
                                 $Msg = "所需数量大于库存,禁止出库!";
                             }
                         } else {
                             self::$errCode = '008';
                             $Msg = "该料号仓储信息有误!" . $ebay_sku;
                         }
                     } else {
                         $snapStock_info = OmAvailableModel::getTNameList("wh_order_review_records_b", "snapStock,id", "where FIND_IN_SET('{$detail_info[0]['shipOrderId']}',shipOrderId) and status=1 and sku='{$ebay_sku}' order by id desc limit 1");
                         if (empty($snapStock_info)) {
                             self::$errCode = '020';
                             self::$errMsg = "该B仓料号提货未复核";
                             return $ebay_sku;
                         } else {
                             if ($snapStock_info[0]['snapStock'] >= $skuinfos[$s_key]) {
                                 $u_data = array();
                                 $u_data = array('isScan' => 1, 'scanUserId' => $userId, 'amount' => $skuinfos[$s_key], 'scanTime' => time());
                                 OrderPickingRecordsModel::update($u_data, "and shipOrderId='{$ordercheck[0]['id']}' and sku='{$ebay_sku}' and pName='{$now_pname}' and is_delete=0");
                                 ReviewBModel::updateSnapStock($skuinfos[$s_key], $snapStock_info[0]['id']);
                                 self::$errCode = '300';
                                 $Msg = "实际料号出库扫描成功!" . $ebay_sku;
                                 $eosr_arr2 = OrderPickingRecordsModel::getPickingRecords("*", "where shipOrderId={$ordercheck[0]['id']} and isScan=0 and is_delete=0");
                                 if (!$eosr_arr2) {
                                     //更新订单到复核状态
                                     GroupDistributionModel::updateShipOrder(array('orderStatus' => 403), "and id='{$ordercheck[0]['id']}' and orderStatus=402");
                                     WhPushModel::pushOrderStatus($ordercheck[0]['id'], 'STATESHIPPED_PENDREVIEW', $_SESSION['userId'], time());
                                     //状态推送
                                     self::$errCode = '005';
                                     self::$errMsg = "该订单已经扫描完成!";
                                     return true;
                                 }
                             } else {
                                 self::$errCode = '013';
                                 $Msg = "B仓提货数量不够配货,请确认";
                             }
                         }
                     }
                     foreach ($eosr_arr2 as $value) {
                         $goods_sn = array();
                         $eg = GroupRouteModel::getSkuPosition("where a.sku='{$value['sku']}' and c.pName='{$value['pName']}' and b.is_delete=0");
                         $goods_sn['detailId'] = $value['shipOrderdetailId'];
                         $goods_sn['sku'] = $value['sku'];
                         $goods_sn['gl'] = $value['pName'];
                         $goods_sn['nums'] = $value['totalNums'];
                         $goods_sn['goods_count'] = $eg[0]['nums'];
                         $res_data['detail'][] = $goods_sn;
                     }
                     $gl_arr = array();
                     $s_arr = array();
                     foreach ($res_data['detail'] as $value) {
                         $s_arr[] = $value['sku'];
                         $gl_arr[] = $value['gl'];
                     }
                     array_multisort($gl_arr, $s_arr, $res_data['detail']);
                 } else {
                     self::$errCode = '010';
                     $Msg = "请不要重复扫描该订单下的料号!" . $ebay_sku;
                 }
             } else {
                 self::$errCode = '009';
                 $Msg = "记录料号与扫描料号不符!" . $ebay_sku;
             }
         } else {
             self::$errCode = '009';
             $Msg = "记录料号与扫描料号不符!";
         }
     }
     $difftime = time() - $starttime;
     self::$errMsg = $Msg . '--' . $difftime;
     return $res_data;
 }
 function get_valid_order($order_group, $sku, $pName)
 {
     $order_arr = array();
     $car_arr = array();
     $amount_arr = array();
     $sku_amount = 0;
     $valid_order_info = array();
     $goup_sql = GroupDistributionModel::getGroupDistList("*", "where shipOrderGroup='{$order_group}' and sku='{$sku}' and pName='{$pName}' and status=0");
     foreach ($goup_sql as $group) {
         $info = GroupDistributionModel::getShipOrder("orderStatus", "where id='{$group['shipOrderId']}'");
         if ($info && $info[0]['orderStatus'] == 402) {
             $sku_amount += $group['skuAmount'];
             $order_arr[] = $group['shipOrderId'];
             $car_arr[] = $group['carNumber'];
             $amount_arr[] = $group['skuAmount'];
         }
     }
     $valid_order_info['orders'] = $order_arr;
     $valid_order_info['sku_amount'] = $sku_amount;
     $valid_order_info['car_number'] = $car_arr;
     $valid_order_info['sku_number'] = $amount_arr;
     return $valid_order_info;
 }
Пример #4
0
 function act_checkSkuNum()
 {
     $orderId = intval(trim($_POST['orderId']));
     $sku = trim($_POST['sku']);
     $sku = get_goodsSn($sku);
     $sku_num = intval(trim($_POST['sku_num']));
     $log_file = 'pda_orderOutB/' . date('Y-m-d') . '.txt';
     $date = date('Y-m-d-H');
     if (!$orderId) {
         self::$errCode = "001";
         self::$errMsg = "请扫描订单id!";
         return FALSE;
     }
     if (!$sku) {
         self::$errCode = "002";
         self::$errMsg = "请扫描料号!";
         return FALSE;
     }
     if (!$sku_num) {
         self::$errCode = "003";
         self::$errMsg = "请输入料号配货数!";
         return FALSE;
     }
     $skuinfo = whShelfModel::selectSku(" where sku = '{$sku}'");
     //获取sku信息
     $where = array('orderId' => $orderId, 'sku' => $sku);
     $sku_info = Pda_orderOutBModel::selectOrderRecord($where);
     //获取订单下该料号的信息
     if (empty($sku_info)) {
         self::$errCode = "004";
         self::$errMsg = "该订单没有此料号!";
         return FALSE;
     }
     $sku_info = $sku_info[0];
     $sku_onhand = GroupDistributionModel::getSkuPositionStock("and c.sku='{$sku}' and a.storeId = 2");
     //查看该料号的B仓库存
     $now_num = $sku_num + $sku_info['scanNum'];
     //已配货数加上本次配货数
     if (!is_numeric($sku_num) || $now_num <= 0) {
         self::$errCode = "005";
         self::$errMsg = "配货数量必须大于0,请确认!";
         return FALSE;
     }
     if ($sku_info['amount'] < $now_num) {
         self::$errCode = "006";
         self::$errMsg = "配货数量不能大于订单数!";
         return false;
     }
     if ($sku_num > $sku_onhand[0]['nums']) {
         self::$errCode = "007";
         self::$errMsg = "配货数不能大于系统库存,请确认!";
         return false;
     }
     $uid = $_SESSION['userId'];
     $scanTime = time();
     $where = array('orderId' => $orderId, 'sku' => $sku);
     //拼接where条件
     $update = array('scanUser' => $uid, 'scanTime' => $scanTime, 'scanNum' => $now_num);
     //拼接更新字段
     TransactionBaseModel::begin();
     $info = Pda_orderOutBModel::updateOrderRecord($where, $update);
     if ($info) {
         $where = array('sku' => $sku, 'storeId' => 2);
         $update = array('actualStock' => "actualStock - {$sku_num}");
         $info = WhGoodsAssignModel::updateSkuLocation($where, $update);
         //更新wh_sku_location的调拨库存和总库存
         if (!$info) {
             TransactionBaseModel::rollback();
             self::$errCode = "010";
             self::$errMsg = "更新总库存失败!";
             return false;
         }
         $positionInfo = whShelfModel::selectPositionInfo('id', array('pName' => $sku_info['pName']));
         //仓位信息
         $where = array('pId' => $skuinfo['id'], 'positionId' => $positionInfo['id'], 'storeId' => 2);
         $update = array('nums' => "nums - {$sku_num}");
         $info = WhGoodsAssignModel::updateProdcutPosition($where, $update);
         //更新wh_product_position_relation的仓位库存
         if (!$info) {
             TransactionBaseModel::rollback();
             self::$errCode = "011";
             self::$errMsg = "更新仓位库存失败!";
             return false;
         }
         /**** 插入出库记录 *****/
         $paraArr = array('sku' => $sku, 'amount' => $sku_num, 'positionId' => $positionInfo['id'], 'purchaseId' => $skuinfo['purchaseId'], 'ioType' => 1, 'ioTypeId' => 6, 'userId' => $_SESSION['userId'], 'reason' => 'B仓订单配货出库', 'ordersn' => $orderId);
         $record = CommonModel::addIoRecores($paraArr);
         //出库记录
         /** 同步老ERP订单配货记录**/
         $is_scan = $sku_info['amount'] == $now_num ? 1 : 0;
         $info = CommonModel::updateOrderScanRecord($orderId, $sku, $sku_num, $sku_info['amount'], $is_scan, $_SESSION['userCnName']);
         if ($info['errCode'] != 200) {
             TransactionBaseModel::rollback();
             self::$errCode = "012";
             self::$errMsg = "更新ERP配货记录失败!";
             $log_info = sprintf("订单号:%s, 时间:%s, 提示信息:%s, 信息记录: %s \r\n", $orderId, $date, self::$errMsg, is_array($info) ? json_encode($info) : $info);
             write_log($log_file, $log_info);
             return false;
         }
         TransactionBaseModel::commit();
         $where = array('orderId' => $orderId, 'scanUser' => 0);
         $info = Pda_orderOutBModel::selectOrderRecord($where);
         //查看该订单下是否还有未配货料号
         if (empty($info)) {
             self::$errCode = "200";
             self::$errMsg = "该订单已配货完成, 请扫描下一订单号!";
             return TRUE;
         } else {
             self::$errCode = "0";
             self::$errMsg = "配货成功,请扫描下一个料号!";
             $arr['sku'] = $sku;
             $arr['num'] = $sku_info['amount'];
             $arr['assignNum'] = $now_num;
             return $arr;
         }
     } else {
         self::$errCode = "013";
         self::$errMsg = "更新料号状态失败!";
         return false;
     }
 }