多应用+插件架构,代码干净,支持一键云编译,码云点赞13K star,4.8-4.12 预售价格198元 广告
### 订单的发货 **位置:** Common\Lib\FlowLib.class.php **参数:** * @param $id int 订单ID * @param $order_type int 订单类型 * @return array 订单发货返回信息 **调用:** * $flow = new FlowLib(); * $order_arr = $flow->orderOut($id, $order_type); **完整代码:** ~~~ /** * 发货单发货 * @param $id int 订单ID * @param $order_type int 订单类型 * @return array 返回检查信息数组 * whz 2018-01-30 * */ public function orderOut($id, $order_type) { //1、查询订单发起类型 $type_id = M('wms_flow') ->where(array('id' => $id)) ->find(); $type = $type_id['type']; //1、商品部发起,2、仓库发起 //2、商品部发起需要检查SKU数量是否达到 $no_count = M('wms_no') ->where(array('order_id'=>$id, 'is_delete'=>0)) ->count(); if ($no_count == 0) { return array('success'=>false, 'code'=>201, 'msg'=>'没有扫描唯一码,请先扫描唯一码!'); } if ($type == 1) { //查询当前订单下SKU需要配的数量 $sku_num = M('wms_flow as r') ->field('u.id as goods_id,u.num') ->join('coscia_wms_sku as u on r.id = u.order_id', 'left') ->where(array('r.id' => $id)) ->select(); //循环判断每一条SKU数量是否达标 foreach ($sku_num as $key => $value) { $count = M('wms_no') ->where(array('goods_id'=>$value['goods_id'], 'is_delete'=>0)) ->count(); //判断SKU数量是否达到 if ($value['num'] > $count) { $is_ok = 1; //只要有一个SKU没有达到数量就就提示发货数量不够 if ($is_ok == 1) { return array('success'=>false, 'code'=>201, 'msg'=>'发货数量没有达到,发货失败!'); } } } }elseif ($type == 2) { //自主新建订单商品部是否已经审批通过 if ($type_id['status'] != 2) { return array('success'=>false, 'code'=>201, 'msg'=>'订单商品部未审批,发货失败!'); } } M()->startTrans(); //3、保存发货人和时间到订单 $data = array( 'out_uid' => $_SESSION['userInfo']['id'], 'out_time' => time(), 'status' => 5 ); $edit = M('wms_flow') ->where(array('id'=>$id)) ->save($data); if ($edit === false) { M()->rollback(); return array('success'=>false, 'code'=>202, 'msg'=>'记录发货人和时间失败!'); } //4、发货单发货之后改变商品的物流状态 $goods_arr = M('wms_no') ->field('no_id') ->where(array('order_id'=>$id, 'is_delete'=>0, 'status'=>1)) ->select(); $delivery_status = $this->deliveryStatus($order_type); //循环唯一码表改变发货的商品的状态: 6、待收货 foreach ($goods_arr as $key => $value){ $status = M('goods_no') ->where(array('id' => $value['no_id'])) ->save(array('delivery_status'=>$delivery_status[1])); if ($status === false) { M()->rollback(); return array('success'=>false, 'code'=>203, 'msg'=>'发货商品状态改变失败!'); } } //5、确认发货记录日志 $add_log['description'] = '发货成功!'; $add_log['order_id'] = $id; $add_log['type'] = $order_type; $addlog = $this->addLog($add_log); if(!$addlog){ M()->rollback(); return array('success'=>false, 'code'=>202,'msg'=>'日志记录添加失败!'); } M()->commit(); return array('success'=>true, 'code'=>200,'msg'=>'发货成功!'); } ~~~