123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657 |
- <?php
- namespace app\admin\controller;
- use app\BaseController;
- use think\App;
- use think\facade\Db;
- class Sale extends BaseController
- {
- public $post="";
- public function __construct(App $app)
- {
- parent::__construct($app);
- $this->post=$this->request->post();
- }
- public function create(){
- $token = isset($this->post['token']) && $this->post['token'] !=="" ?trim($this->post['token']):"";
- $orderCode=makeNo("CX");
- $good_code = $this->post['good_code'] && $this->post['good_code'] !=="" ? trim($this->post['good_code']) :"";
- if($good_code==""){
- return error_show(1002,"商品code不能为空");
- }
- $ct = Db::name('good')->alias('a')->join('good_type b','b.good_code=a.good_code','left')
- ->where(['b.type_code'=>$good_code])->find();
- if($ct==""){
- return error_show(1002,"未找到商品数据");
- }
- $customer_code= $this->post['customer_code'] && $this->post['customer_code'] !=="" ? trim($this->post['customer_code']) :"";
- if($customer_code==""){
- return error_show(1002,"客户code不能为空");
- }
- $apply_id =GetUserInfo($token);
- if(empty($apply_id)||$apply_id['code']!=0){
- return error_show(1002,"申请人数据不存在");
- }
- $rm= isset($apply_id["data"]['id']) ? $apply_id["data"]['id'] : "";
- $ri= isset($apply_id["data"]['nickname']) ? $apply_id["data"]['nickname'] : "";
- // $good_name=isset($this->post['good_name']) && $this->post['good_name'] !=="" ? trim($this->post['good_name']) :"";
- //$good_num=isset($this->post['good_num']) && $this->post['good_num'] !=="" ? intval($this->post['good_num']) :"";
- // if($good_num==""){
- // return error_show(1002,"参数good_num不能为空");
- //}
- // $origin_price = isset($this->post['origin_price']) && $this->post['origin_price'] !=="" ? intval($this->post['origin_price']) :"";
- //$sale_price=isset($this->post['sale_price']) && $this->post['sale_price'] !=="" ? trim($this->post['sale_price']) :"";
- // $total_price=isset($this->post['total_price']) && $this->post['total_price'] !=="" ? trim($this->post['total_price']) :"";
- $post_fee=isset($this->post['post_fee']) && $this->post['post_fee'] !=="" ? trim($this->post['post_fee']) :"";
- $status = isset($this->post['status']) && $this->post['status'] !=="" ? intval($this->post['status']) :"";
- // $send_num = isset($this->post['send_num']) && $this->post['send_num'] !=="" ? intval($this->post['send_num']) :"";
- // $wsend_num = isset($this->post['wsend_num']) && $this->post['wsend_num'] !=="" ? intval($this->post['wsend_num']) :"";
- // $send_status = isset($this->post['send_status']) && $this->post['send_status'] !=="" ? intval($this->post['send_status']) :"";
- $va= isset($this->post['order_addr']) && $this->post['order_addr'] !=="" ? $this->post['order_addr']:"";
- if($va==""){
- return error_show(1002,"参数order_addr不能为空");
- }
- $vi= isset($this->post['good_stock']) && $this->post['good_stock'] !=="" ? $this->post['good_stock']:"";
- if($vi==""){
- return error_show(1002,"参数good_stock不能为空");
- }
- $good_num = intval(array_sum(array_column($vi,"num")));
- Db::startTrans();
- try {
- $data=[
- "orderCode"=>$orderCode,
- "good_code"=>$good_code,
- "customer_code"=>$customer_code,
- "good_name"=>$ct['good_name'],
- "good_num"=>$good_num,
- "apply_id"=>$rm,
- "apply_name"=>$ri,
- "origin_price"=>$ct['original_price'],
- "sale_price"=>$ct['original_price'],
- "post_fee"=>$post_fee,
- "status"=>$status,
- "send_num"=>0,
- "wsend_num"=>$good_num,
- "send_status"=>1,
- "is_del"=>0,
- "addtime"=>date("Y-m-d H:i:s"),
- "updatetime"=>date("Y-m-d H:i:s"),
- 'total_price'=>$ct['original_price']*$good_num,
- ];
- $datainfo = Db::name('sale')->insert($data,true);
- $vat=[];
- $inn=[];
- if($datainfo>0){
- foreach ($vi as $ion){
- $iten=[];
- $iten['orderCode']=$orderCode;
- $iten['wsm_code']=$ion['wsm_code'];
- $iten['stock_id']="";
- $iten['num']=$ion['num'];
- $iten['status']=0;
- $iten['sale_price']=$ct['original_price'];
- $iten['addtime'] =date("Y-m-d H:i:s");
- $iten['updatetime'] =date("Y-m-d H:i:s");
- $inn[]=$iten;
- }
- // if($vi['usable_stock']<$iten['num']){
- // Db::rollback();
- // return error_show(1002,"超出库存数量");
- // }
- $vp= Db::name('sale_info')->insertAll($inn);
- if($vp==""){
- Db::rollback();
- return error_show(1002,"添加失败");
- }
- foreach ($va as $value){
- $temp=[];
- $addrs=[];
- if($value['addr_code']!==''&&is_array($value['addr_code'])){
- $addrs['provice_code'] = $value['addr_code'][0];
- $addrs['city_code'] = $value['addr_code'][1];
- $addrs['area_code'] = $value['addr_code'][2];
- $addr = json_encode($addrs);
- }else{
- $addr = isset($value['addr_code'])?$value['addr_code']:'';
- }
- $temp['orderCode']=$orderCode;
- $temp['contactor']=$value['contactor'];
- $temp['mobile'] = $value['mobile'];
- $temp['addr'] = $value['addr'];
- $temp['addr_code']=$addr;
- $temp['customer_code'] =$customer_code;
- $temp['receipt_quantity']=$value['receipt_quantity'];
- $temp['post_fee'] =0;
- $temp['is_del'] =0;
- $temp['addtime'] =date("Y-m-d H:i:s");
- $temp['updatetime'] =date("Y-m-d H:i:s");
- $temp['arrive_time']=date("Y-m-d H:i:s");
- $vat[]=$temp;
- }
- $vmp = Db::name('order_addr')->insertAll($vat);
- if($vmp){
- Db::commit();
- return error_show(0,"销售订单创建成功");
- }
- }
- Db::rollback();
- return error_show(1002,"销售订单创建失败");
- }catch(\Exception $e){
- Db::rollback();
- return error_show(1005,$e->getMessage());
- }
- }
- public function list(){
- $page = isset($this->post['page']) && $this->post['page'] !=="" ? intval($this->post['page']):"1";
- $size = isset($this->post['size']) && $this->post['size'] !=="" ? intval($this->post['size']) :"10";
- $where[] = ['is_del',"=",0];
- $orderCode=isset($this->post['orderCode']) && $this->post['orderCode'] !=="" ? intval($this->post['orderCode']):"";
- if($orderCode !==""){
- $where[]=['orderCode',"=",$orderCode];
- }
- $status=isset($this->post['status']) && $this->post['status'] !=="" ? intval($this->post['status']):"";
- if($status !==""){
- $where[]=['orderCode',"=",$status];
- }
- $addtime = isset($this->post['addtime']) && $this->post['addtime'] !=="" ? $this->post['addtime'] :"";
- if($addtime !=""){
- $where[]= ["addtime",'<=',$addtime];
- }
- $count = Db::name('sale')->where($where)->count();
- $total = ceil($count/$size);
- $page = $page >= $total ? $total : $page;
- $list= Db::name('sale')->where($where)->order("addtime desc")->page($page,$size)->select();
- return app_show(0,"获取成功",['list'=>$list,'count'=>$count]);
- }
- public function edit(){
- $token = isset($this->post['token']) && $this->post['token'] !=="" ? trim($this->post['token']) :"";
- $id = isset($this->post['id']) && $this->post['id'] !=="" ? trim($this->post['id']) :"";
- if($id==""){
- return error_show(1002,"参数id不能为空");
- }
- $etid = Db::name("sale")->where(["id"=>$id,"is_del"=>0])->find();
- if(empty($etid)){
- return error_show(1002,"未找到数据");
- }
- // $orderCode=isset($this->post['orderCode']) && $this->post['orderCode'] !=="" ? trim($this->post['orderCode']) :"";
- // if($orderCode==""){
- // return error_show(1002,"销售单code不能为空");
- // }
- $good_code = isset($this->post['good_code']) && $this->post['good_code'] !=="" ? trim($this->post['good_code']) :"";
- if($good_code==""){
- return error_show(1002,"商品code不能为空");
- }
- $customer_code=isset($this->post['customer_code']) && $this->post['customer_code'] !=="" ? intval($this->post['customer_code']):"";
- if($customer_code==""){
- return error_show(1002,"客户code不能为空");
- }
- $apply_id =GetUserInfo($token);
- if(empty($apply_id)||$apply_id['code']!=0){
- return error_show(1002,"申请人数据不存在");
- }
- $rm= isset($apply_id["data"]['id']) ? $apply_id["data"]['id'] : "";
- $ri= isset($apply_id["data"]['nickname']) ? $apply_id["data"]['nickname'] : "";
- $good_name=isset($this->post['good_name']) && $this->post['good_name'] !=="" ? trim($this->post['good_name']) :"";
- $good_num=isset($this->post['good_num']) && $this->post['good_num'] !=="" ? intval($this->post['good_num']) :"";
- $origin_price = isset($this->post['origin_price']) && $this->post['origin_price'] !=="" ? intval($this->post['origin_price']) :"";
- $sale_price=isset($this->post['sale_price']) && $this->post['sale_price'] !=="" ? trim($this->post['sale_price']) :"";
- $total_price=isset($this->post['total_price']) && $this->post['total_price'] !=="" ? trim($this->post['total_price']) :"";
- $post_fee=isset($this->post['post_fee']) && $this->post['post_fee'] !=="" ? trim($this->post['post_fee']) :"";
- $status = isset($this->post['status']) && $this->post['status'] !=="" ? intval($this->post['status']) :"";
- $vr= isset($this->post['order_addr']) && $this->post['order_addr'] !=="" ? $this->post['order_addr']:"";
- if($vr==""){
- return error_show(1002,"参数order_addr不能为空");
- }
- $vi= isset($this->post['good_stock']) && $this->post['good_stock'] !=="" ? $this->post['good_stock']:"";
- if($vi==""){
- return error_show(1002,"参数good_stock不能为空");
- }
- Db::startTrans();
- try {
- $datn=[
- "id"=>$id,
- "good_code"=>$good_code,
- "customer_code"=>$customer_code,
- "good_name"=>$good_name,
- "good_num"=>$good_num,
- "apply_id"=>$rm,
- "apply_name"=>$ri,
- "origin_price"=>$origin_price,
- "sale_price"=>$sale_price,
- "total_price"=>$total_price,
- "post_fee"=>$post_fee,
- "status"=>$status,
- "is_del"=>0,
- "updatetime"=>date("Y-m-d H:i:s")
- ];
- $datninfo = Db::name('sale')->where(['id'=>$id,'is_del'=>0])->save($datn);
- //$vat=[];
- if($datninfo>0){
- foreach ($vi as $ion){
- $iten=[];
- isset($ion['id'])&&$ion['id']!=="" ? $iten['id'] = $ion['id']:'';
- $iten['orderCode']=$etid['orderCode'];
- $iten['wsm_code']=$ion['wsm_code'];
- $iten['stock_id']=$ion['stock_id'];
- $iten['num']=$ion['num'];
- $iten['status']=$ion['status'];
- $iten['sale_price']=$ion['sale_price'];
- isset($ion['id'])&&$ion['id']!=="" ? '' : $iten['addtime'] =date("Y-m-d H:i:s");
- $iten['updatetime'] =date("Y-m-d H:i:s");
- //$inn[]=$iten;
- $vp= Db::name('sale_info')->save($iten);
- }
- foreach ($vr as $value){
- $temp=[];
- isset($value['id'])&&$value['id']!=="" ? $temp['id'] = $value['id']:'';
- $temp['orderCode']=$etid['orderCode'];
- $temp['contactor']=$value['contactor'];
- $temp['mobile'] = $value['mobile'];
- $temp['addr'] = $value['addr'];
- $temp['addr_code'] =$value['addr_code'];
- $temp['customer_code'] =$customer_code;
- $temp['receipt_quantity']=$value['receipt_quantity'];
- $temp['post_fee'] =0;
- $temp['is_del'] =$value['is_del'];
- isset($value['id'])&&$value['id']!=="" ? '' : $temp['addtime'] =date("Y-m-d H:i:s");
- $temp['updatetime'] =date("Y-m-d H:i:s");
- $temp['arrive_time']=date("Y-m-d H:i:s");
- $dat = Db::name('order_addr')->save($temp);
- if($dat==false){
- Db::rollback();
- return error_show(1002,"更新失败");
- }
- }
- Db::commit();
- return error_show(0,"更新成功");
- }
- Db::rollback();
- return error_show(1002,"更新失败");
- }catch(\Exception $e){
- Db::rollback();
- return error_show(1005,$e->getMessage());
- }
- }
- public function info(){
- $id = isset($this->post['id']) && $this->post['id'] !=="" ? intval($this->post['id']):"";
- if($id==""){
- return error_show(1002,"参数id不能为空");
- }
- //->field('good_code,good_name,good_num,customer_code,orderCode')
- $einfo = Db::name('sale')->where(['id'=>$id,'is_del'=>0])->find();
- if(empty($einfo)){
- return error_show(1002,"未找到销售订单数据");
- }
- $in= Db::name('customer_info')->where(['companyNo'=>$einfo['customer_code']])->field('companyName')->find();
- // ->field('addr,contactor,mobile,receipt_quantity,arrive_time')
- $fo = Db::name('order_addr')->where(['orderCode'=>$einfo['orderCode'],'is_del'=>0])->select();
- $bum = Db::name('order_out')->where(['orderCode'=>$einfo['orderCode']])->select();
- $ins=[];
- foreach ($bum as $stn){
- $so = Db::name('order_addr')->where(['id'=>$stn['addrid']])->find();
- $addr = GetAddr($so['addr_code']);
- $stn['addr_info']=$addr;
- $stn['add_code']=json_decode($so['addr_code'],true);
- $stn['addr']=$so['addr'];
- $stn['contact']=$so['contactor'];
- $stn['mobile']=$so['mobile'];
- $wsmcode = Db::name("warehouse_info")->alias("a")->leftJoin("supplier b", "a.supplierNo=b.code")
- ->where(["a.wsm_code" => $stn['wsm_code']])->field("a.name as wsm_name,b.name,b.code")->find();
- $stn['wsm_name'] = isset($wsmcode['wsm_name']) ? $wsmcode['wsm_name'] : "";
- $stn['wsm_supplier'] = isset($wsmcode['name']) ? $wsmcode['name'] : "";
- $stn['wsm_supplierNo'] = isset($wsmcode['code']) ? $wsmcode['code'] : "";
- $ins[]=$stn;
- }
- $addrs=[];
- foreach ($fo as $value){
- $value['addr_info']="";
- $value['send_num']=0;
- if($value['addr_code']!=""){
- $addr=GetAddr($value['addr_code']);
- $value['addr_info'] = $addr;
- $value['addr_code'] = json_decode($value['addr_code'],true);
- $send = Db::name("order_out")->where(['addrid'=>$id,'orderCode' => $einfo['orderCode']])->sum("send_num");
- $value['send_num'] = $send ?? 0;
- }
- $value['wsend_num']=$value['receipt_quantity']-$value['send_num'];
- $addrs[]=$value;
- }
- //->field('num,sale_price,wsm_code,stock_id')
- $st = Db::name('sale_info')->where(['orderCode'=>$einfo['orderCode']])->select();
- $data=[];
- foreach ($st as $value){
- $value['wsm_name']="";
- $value['wsm_supplier']="";
- $value['wsm_supplierNo']="";
- $value['usable_stock']=0;
- $value['send_num']=0;
- if($value['wsm_code']!="") {
- $wsmcode = Db::name("warehouse_info")->alias("a")->leftJoin("supplier b", "a.supplierNo=b.code")
- ->where(["a.wsm_code" => $value['wsm_code']])->field("a.name as wsm_name,b.name,b.code")->find();
- $value['wsm_name'] = isset($wsmcode['wsm_name']) ? $wsmcode['wsm_name'] : "";
- $value['wsm_supplier'] = isset($wsmcode['name']) ? $wsmcode['name'] : "";
- $value['wsm_supplierNo'] = isset($wsmcode['code']) ? $wsmcode['code'] : "";
- $dn = Db::name('good_stock')->where(['wsm_code' => $value['wsm_code'], 'good_type_code' => $einfo['good_code']])->find();
- $value['usable_stock'] = isset($dn['usable_stock']) ? $dn['usable_stock'] : "0";
- $send = Db::name("order_out")->where(["wsm_code" => $value['wsm_code'], 'orderCode' => $einfo['orderCode']])->sum("send_num");
- $value['send_num'] = $send ?? 0;
- }
- $value['wsend_num']=$value['num']-$value['send_num'];
- $data[]=$value;
- }
- $einfo['info']=$data;
- $einfo['companyName']=isset($in['companyName']) ? $in['companyName']:"";
- $einfo['addrs']=$addrs;
- $einfo['bum']=$ins;
- if(empty($einfo)){
- return error_show(1002,"未找到销售订单数据");
- }else{
- return app_show(0,"获取成功",$einfo);
- }
- }
- public function del(){
- $id = isset($this->post['id']) && $this->post['id'] !=="" ? intval($this->post['id']) :"";
- if($id===""){
- return error_show(1002,"参数id不能为空");
- }
- $ed = Db::name('sale')->where(['id'=>$id,'is_del'=>0])->find();
- if(empty($ed)){
- return error_show(1002,"未找到销售订单数据");
- }
- $str =Db::name('sale')->update(['id'=>$id,'is_del'=>1,'updatetime'=>date("Y-m-d H:i:s")]);
- if($str){
- return error_show(0,"删除成功");
- }else{
- return error_show(1002,"删除失败");
- }
- }
- public function status(){
- $id = isset($this->post['id']) && $this->post['id'] !=="" ? intval($this->post['id']) :"";
- if($id==""){
- return error_show(1002,"参数id不能为空");
- }
- $status = isset($this->post['status']) && $this->post['status'] !=="" ? intval($this->post['status']) :"";
- if($status==""){
- return error_show(1002,"订单状态不能为空");
- }
- $dio = Db::name('sale')->where(['id'=>$id,'is_del'=>0])->find();
- if(empty($dio)){
- return error_show(1002,"销售单信息未找到");
- }
- Db::startTrans();
- try {
- $dio['status']=$status;
- $dio['updatetime']=date("Y-m-d H:i:s");
- $st = Db::name('sale')->save($dio);
- if($st) {
- if($status==3){
- $dn = Db::name('sale_info')->where(['orderCode' => $st['orderCode']])->select();
- foreach ($dn as $value) {
- $dm = Db::name('good_stock')->where(['wsm_code' => $value['wsm_code'], 'good_type_code' => $st['good_code']])->find();
- if($dm==""){
- Db::rollback();
- return error_show(1003,"未找到商品数据");
- }
- if($value['num']>$dm['usable_stock']){
- Db::rollback();
- return error_show(1002,"超出库存数量");
- }
- $dm['usable_stock']-=$value['num'];
- $dm['wait_out_stock']+=$value['num'];
- $send =Db::name("order_out")->where(["wsm_code"=>$value['wsm_code']])->sum("send_num");
- $value['send_num'] = $send??0;
- $value['wsend_num']=$value['num']-$value['send_num'];
- $Db = Db::name('good_stock')->update($dm);
- $Db['updatetime']= date('Y-m-d H:i:s');
- if($Db==false){
- Db::rollback();
- return error_show(1002,"状态更新失败");
- }
- }
- }
- }
- Db::commit();
- return error_show(0,"订单状态更新成功");
- }catch (\Exception $e) {
- Db::rollback();
- return error_show(1005, $e->getMessage());
- }
- }
- public function fee(){
- $id = isset($this->post['id']) && $this->post['id'] !=="" ? trim($this->post['id']) :"";
- if($id==""){
- return error_show(1002,"参数id不能为空");
- }
- $etid = Db::name("sale")->where(["id"=>$id,"is_del"=>0])->find();
- if(empty($etid)){
- return error_show(1002,"未找到数据");
- }
- $vr= isset($this->post['order_addr']) && $this->post['order_addr'] !=="" ? $this->post['order_addr']:"";
- if($vr==""){
- return error_show(1002,"参数order_addr不能为空");
- }
- Db::startTrans();
- try {
- $data=[
- "id"=>$id,
- "status"=>2,
- "is_del"=>0,
- "updatetime"=>date("Y-m-d H:i:s")
- ];
- $datainfo = Db::name('sale')->where(['id'=>$id,'is_del'=>0])->save($data);
- if($datainfo){
- foreach ($vr as $value){
- $tm=[];
- $tm['id'] = $value['id'];
- $tm['orderCode']=$etid['orderCode'];
- $tm['post_fee']=$value['post_fee'];
- $tm['updatetime']=date("Y-m-d H:i:s");
- $dn = Db::name('order_addr')->save($tm);
- if($dn==false){
- Db::rollback();
- return error_show(1002,"更新失败");
- }
- }
- Db::commit();
- return error_show(0,"更新成功");
- }
- Db::rollback();
- return error_show(1003,"更新失败");
- }catch(\Exception $e){
- Db::rollback();
- return error_show(1005,$e->getMessage());
- }
- }
- public function out(){
- $token= isset($this->post['token']) && $this->post['token'] !=="" ? trim($this->post['token']) :"";
- $outCode=makeNo("CK");
- $orderCode = isset($this->post['orderCode']) && $this->post['orderCode'] !=="" ? trim($this->post['orderCode']) :"";
- if($orderCode==""){
- return error_show(1002,"参数orderCoder不能为空");
- }
- $der = Db::name('sale')->where(['orderCode'=>$orderCode])->find();
- if($der==""){
- return error_show(1002,"未找到出库订单单号");
- }
- $wsm_code = isset($this->post['wsm_code']) && $this->post['wsm_code'] !=="" ? trim($this->post['wsm_code']) :"";
- if($wsm_code==""){
- return error_show(1002,"参数wsm_code不能为空");
- }
- $wsm= Db::name('sale_info')->where(['wsm_code'=>$wsm_code,'orderCode'=>$der['orderCode']])->find();
- if($wsm==""){
- return error_show(1002,"未找到仓库编码");
- }
- $post_name= isset($this->post['post_name']) && $this->post['post_name'] !=="" ? trim($this->post['post_name']) :"";
- if($post_name==""){
- return error_show(1002,"物流公司不能为空");
- }
- $post_code = isset($this->post['post_code']) && $this->post['post_code'] !=="" ? trim($this->post['post_code']) :"";
- if($post_code==""){
- return error_show(1002,"物流单号不能为空");
- }
- $post_fee = isset($this->post['post_fee']) && $this->post['post_fee'] !=="" ? intval($this->post['post_fee']) :"";
- if($post_fee==""){
- return error_show(1002,"物流费不能为空");
- }
- $send_num = isset($this->post['send_num']) && $this->post['send_num'] !=="" ? $this->post['send_num'] :"";
- if($send_num==""){
- return error_show(1002,"发货数量不能为空");
- }
- if($send_num>$wsm['num']){
- return error_show(1002,"超出可发货数量");
- }
- $apply_id =GetUserInfo($token);
- if(empty($apply_id)||$apply_id['code']!=0){
- return error_show(1002,"申请人数据不存在");
- }
- $rm= isset($apply_id["data"]['id']) ? $apply_id["data"]['id'] : "";
- $ri= isset($apply_id["data"]['nickname']) ? $apply_id["data"]['nickname'] : "";
- $addrid = isset($this->post['addrid']) && $this->post['addrid'] !=="" ? intval($this->post['addrid']) :"";
- $dr = Db::name('order_addr')->where(['id'=>$addrid,'is_del'=>0])->find();
- if(empty($dr)){
- return error_show(1003,"收货人信息未找到");
- }
- if($dr['orderCode']!== $orderCode){
- return error_show(1002,"订单code不存在");
- }
- $sendtime = isset($this->post['sendtime']) && $this->post['sendtime'] !=="" ? $this->post['sendtime']:date("Y-m-d H:i:s");
- // $check_num = isset($this->post['check_num']) && $this->post['check_num'] !=="" ? $this->post['check_num'] :"";
- // $error_num = isset($this->post['error_num']) && $this->post['error_num'] !=="" ? $this->post['error_num'] :"";
- $status = isset($this->post['status']) && $this->post['status'] !=="" ? $this->post['status'] :"1";
- //$dn=Db::name('sale_info')->where(['wsm_code'=>$outCode])->find();
- Db::startTrans();
- try {
- $data=[
- "wsm_code"=>$wsm_code,
- "orderCode"=>$orderCode,
- "outCode"=>$outCode,
- "apply_id"=>$rm,
- "apply_name"=>$ri,
- "addrid"=>$dr['id'],
- "post_name"=>$post_name,
- "post_code"=>$post_code,
- "post_fee"=>$post_fee,
- "sendtime"=>$sendtime,
- "send_num"=>$send_num,
- "check_num"=>0,
- "error_num"=>0,
- "status"=>$status,
- "addtime"=>date("Y-m-d H:i:s"),
- "updatetime"=>date("Y-m-d H:i:s")
- ];
- $datainfo = Db::name('order_out')->insert($data);
- if($datainfo) {
- if ($status==1) {
- $var = Db::name('sale_info')->where(['orderCode' =>$orderCode,'wsm_code'=>$wsm_code])->find();
- //var_dump(Db::name('sale_info')->getLastSql());
- if($var==""){
- return error_show(1002,"未找到数据");
- }
- $send =Db::name("order_out")->where(["wsm_code"=>$wsm_code,'orderCode'=>$orderCode])->sum("send_num");
- $der['send_num']+= $send;
- $der['wsend_num']-=$send ;//($der['send_num'])?$der['wsend_num'] =="" ? $der['send']
- $der['send_status']=$der['send_num']==0 ? 1 :$der['wsend_num']==0?3:2;
- $der['status']=$der['send_num']==0 ? 3 :$der['wsend_num']==0?5:4;
- $der['updatetime'] = date("Y-m-d H:i:s");
- $si = Db::name('sale')->save($der);
- if($si==false){
- Db::rollback();
- return error_show(1003,"更新失败");
- }
- $str = Db::name('good_stock')->where(['wsm_code' => $var['wsm_code'],'good_type_code'=>$der['good_code']])->find();
- if ($str == false) {
- Db::rollback();
- return error_show(1002, "商品数据未找到");
- }
- if ($var['num'] > $str['usable_stock']) {
- Db::rollback();
- return error_show(1002, "超出库存数量");
- }
- $str['wait_out_stock'] -= $var['num'];
- $str['intra_stock'] += $var['num'];
- $str['updatetime'] = date("Y-m-d H:i:s");
- $stre = Db::name('good_stock')->save($str);
- if ($stre == false) {
- Db::rollback();
- return error_show(1002, "状态更新失败");
- }
- }
- Db::commit();
- return error_show(0,"创建成功");
- }else{
- Db::rollback();
- return error_show(1003,"创建失败");
- }
- }catch (\Exception $e) {
- Db::rollback();
- return error_show(1005, $e->getMessage());
- }
- }
- public function customer(){
- $outCode= isset($this->post['outCode']) && $this->post['outCode'] !=="" ? trim($this->post['outCode']) :"";
- if(empty($outCode)){
- return error_show(1002,"销售订单编号不能为空");
- }
- $codeinfo = Db::name('order_out')->where(['outCode'=>$outCode])->find();
- if($codeinfo==""){
- return error_show(1003,"未找到订单数据");
- }
- // $orderCode = isset($this->post['orderCode']) && $this->post['orderCode'] !=="" ? trim($this->post['orderCode']) :"";
- // if($orderCode==""){
- // return error_show(1002,"参数orderCoder不能为空");
- // }
- $dr = Db::name('sale')->where(['orderCode'=>$codeinfo['orderCode']])->find();
- if($dr==""){
- return error_show(1002,"未找到销售订单");
- }
- $status = isset($this->post['status']) && $this->post['status'] !== "" ? $this->post['status'] :"";
- if($status==""){
- return error_show(10002,"状态不能为空");
- }
- Db::startTrans();
- try {
- $codeinfo['status']=$status;
- $codeinfo['updatetime']=date("Y-m-d H:i:s");
- $cust = Db::name('order_out')->save($codeinfo);
- if($cust){
- if($status==2){
- $ct =Db::name('sale_info')->where(['orderCode' => $dr['orderCode'],'wsm_code'=>$codeinfo['wsm_code']])->find();
- if($ct==false){
- return error_show(1002,"未找到数据");
- }
- $var = Db::name('good_stock')->where(['wsm_code'=>$codeinfo['wsm_code'],'good_type_code'=>$dr['good_code']])->find();
- if($var==false){
- Db::rollback();
- return error_show(1002,"未找到商品数据");
- }
- if($ct['num']>$var['intra_stock']){
- Db::rollback();
- return error_show(1003,"超出库存数量");
- }
- $var['intra_stock']-=$codeinfo['send_num'];
- $var['updatetime']=date("Y-m-d H:i:s");
- $stre = Db::name('good_stock')->save($var);
- if ($stre == false) {
- Db::rollback();
- return error_show(1002, "状态更新失败");
- }
- }
- Db::commit();
- return error_show(0,"出库订单更新成功");
- }else{
- Db::rollback();
- return error_show(1003,"出库订单更新失败");
- }
- }catch (\Exception $e) {
- Db::rollback();
- return error_show(1005, $e->getMessage());
- }
- }
- }
|