🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### 检查订单录入SKU是否符合发货条件 **位置:** Common\Lib\FlowLib.class.php **参数:** * @param $id int 订单ID * @param $order_type int 订单类型 * @param $shipper_id int 发货位置ID * @param $sku string 录入的SKU * @param $num int 发货数量 * @return 不满足条件提示信息(失败)或 SKU的ID **调用:** * $flow = new FlowLib(); * $order_arr = $flow->checkSku($id, $order_type, $shipper_id, $sku, $num); **完整代码:** ~~~ /** * 检查SKU的正确性和库存 * @param $id int 订单ID * @param $order_type int 订单类型 * @param $shipper_id int 发货位置ID * @param $sku string 发货的SKU * @param $num int 发货数量 * @return array * whz 2018-01-25 * */ public function checkSku($id, $order_type, $shipper_id, $sku, $num) { //1、判断导入SKU不能为空 if ($sku == "") { return array('success'=>false, 'code'=>201, 'msg'=>'导入SKU不能为空!'); } //2、判断导入发货数量不能为空 if ($num == "") { return array('success'=>false, 'code'=>202, 'msg'=>'导入发货数量不能为空!'); } //3、判断导入发货数量必须是数字 if (!is_numeric($num)) { return array('success'=>false, 'code'=>203, 'msg'=>'导入发货数量必须是数字!'); } //4、判断SKU发货数量是否小于0 if ($num <= 0) { return array('success'=>false, 'code'=>204, 'msg'=>$sku.',填写发货数量必须大于0!'); } //5、根据SKU查询SKU的ID,判断SKU是否存在 $sku_id = M('goods_sku') ->field('id') ->where(array('goods_sku'=>$sku, 'is_delete'=>0)) ->find(); if (count($sku_id) == 0) { return array('success'=>false, 'code'=>205, 'msg'=>$sku . ',SKU不存在!'); } $sku_id = $sku_id['id']; //6、判断SKU是否订单已经录入过 $map = array( 'type' => $order_type, 'order_id' => $id, 'sku_id' => $sku_id, 'sku' => $sku, 'is_delete' => 0 ); $exit_sku = M('wms_sku')->where($map)->count(); if ($exit_sku > 0) { return array('success'=>false, 'code'=>206, 'msg'=>$sku . ',当前订单已录入!'); } //7、根据SKU的ID和发货位置ID去商品唯一码表查询可发货的库存 //订单类型:配货单、移库单,发货位置是仓库 if ($order_type == 1 || $order_type == 4) { //查询仓库名 $delivery = get_warehouse($shipper_id); $where['warehouse'] = $shipper_id; //配货、移库的商品必须在仓库 $where['inventory_status'] = array('in',array(1,2,3,5,6)); $where['delivery_status'] = 1; } //订单类型:调拨单、退仓单,发货位置是门店 if ($order_type == 2 || $order_type == 3) { //查询门店名 $delivery = get_shops_name($shipper_id); $where['max_shops_id'] = $shipper_id; //调拨、退仓的商品必须在门店 $where['inventory_status'] = array('in',array(1,2,3,5,6)); $where['delivery_status'] = 2; } //属于同一个SKU的唯一码的sku_id相同 $where['sku_id'] = $sku_id; $where['is_delete'] = 0; //查询SKU库存 $goodcount = M('goods_no') ->where($where) ->count(); //8、判断是否有可发货的库存 if ($goodcount <1) { return array('success'=>false, 'code'=>207, 'msg'=>$delivery . ',未找到SKU为:' . $sku . '相关商品信息!'); } //9、减去已经录入SKU的发货数量() $num_sku = M('wms_flow as r') ->field('u.num') ->join('coscia_wms_sku as u on r.id=u.order_id','left') ->where(array('u.type'=>$order_type, 'u.sku'=>$sku, 'u.is_delete'=>0, 'r.order_type'=>$order_type, 'r.status'=>array('in',array(0,1)))) ->select(); $num_skus = 0; foreach ($num_sku as $key => $value) { $num_skus += $value['num']; } $nums = $goodcount - $num_skus; //10、判断发货数量是否大于发货库存 if ((int)$num > (int)$nums) { return array('success'=>false, 'code'=>208, 'msg'=>$sku . ',原因:库存不足,可发库存为:' . $goodcount . ',减去已经录入SKU的发货数量:' . $num_skus . ',' . $delivery . '库存量为:' . $nums . ' !'); } //11、SKU和发货数量没有问题返回SKU的ID return $sku_id; } ~~~