1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- <?php
- declare (strict_types = 1);
- namespace app\admin\model;
- use app\admin\common\YouZan;use think\Model;
- /**
- * @mixin \think\Model
- */
- class OrderOutChild extends Model
- { /**
- * @param array $sale 销售单信息
- * @param string $outCode 发货单信息
- * @param int $num 发货单数量
- * @throws \Exception
- */
- static function makeChild(string $outCode=''){
- if($outCode=='')throw new \Exception("分单发货单单号不能为空");
- $out=self::name("order_out")->where(["outCode"=>$outCode,"is_del"=>0])->findOrEmpty();
- if(empty($out)) throw new \Exception("发货单信息未找到");
- if($out['send_status']!=0) throw new \Exception("发货单拆单状态有误");
- $sale = self::name("sale")->where(["orderCode"=>$out['orderCode'],"is_del"=>0])->findOrEmpty();
- if(empty($sale)) throw new \Exception("订单信息未找到");
- if($sale['wsend_num']<$out['send_num']) throw new \Exception("订单待发货数量不足");
- $num= $out['send_num'];
- $wsmlist = self::name("good_stock")->alias("a")
- ->leftJoin("warehouse_info b","a.wsm_code=b.wsm_code")
- ->field("a.id,a.usable_stock,a.wait_out_stock,b.wsm_code,b.supplierNo,b.supplierName")
- ->where(["spuCode"=>$sale['good_code'],"a.is_del"=>0])->findOrEmpty();
- if($wsmlist['usable_stock']<$num) return false;
- $outinfo = self::name("order_out")->where(["outCode"=>$outCode,"is_del"=>0])->findOrEmpty();
- if(empty($outinfo))throw new \Exception("发货单信息未找到");
- $child=[
- "outChildCode"=>makeNo("TCD"),
- "outCode"=>$outCode,
- "orderCode"=>$sale['orderCode'],
- "companyNo"=>$sale['companyNo'],
- "companyName"=>$sale['companyName'],
- "supplierNo"=>$sale['supplierNo'],
- "supplierName"=>$sale['supplierName'],
- "cutomer_code"=>$sale['cutomer_code'],
- "spuCode"=>$sale['good_code'],
- "skuCode"=>$sale['skuCode'],
- "good_name"=>$sale['good_name'],
- "order_type"=>$sale['order_type'],
- "order_source"=>$sale['order_source'],
- "total_num"=>$num,
- "num"=>$num,
- "wsm_code"=>$wsmlist['wsm_code'],
- "apply_id"=>$outinfo['apply_id'],
- "apply_name"=>$outinfo['apply_name'],
- "addrid"=>$outinfo['addrid'],
- "addtime"=>date("Y-m-d H:i:s"),
- "updatetime"=>date("Y-m-d H:i:s")
- ];
- $childout=self::insert($child);
- if($childout==false)throw new \Exception("分单失败");
- $outup=self::name("order_out")->where(["outCode"=>$outCode,"is_del"=>0])->update(["send_status"=>1,"status"=>1,"updatetime"=>date("Y-m-d H:i:s")]);
- if($outup==false)throw new \Exception("发货单信息更新失败");
- $bnadd = GoodStockInfo::ChildAddBn($child['outChildCode'],$wsmlist['id']);
- if($bnadd==false)throw new \Exception("库存更新失败");
- return true;
- }
- }
|