|
@@ -3,6 +3,7 @@
|
|
|
|
|
|
namespace app\admin\controller;
|
|
|
|
|
|
+use app\admin\model\GoodLog;
|
|
|
use app\admin\model\ProcessOrder;
|
|
|
use think\facade\Db;
|
|
|
use think\App;
|
|
@@ -97,7 +98,7 @@ class Reorder extends \app\BaseController
|
|
|
}
|
|
|
$temp['returnCode']=$returnCode;
|
|
|
$temp['orderCode']=$ordeCode;
|
|
|
- $temp['outCode']=$send['outCode'];
|
|
|
+ $temp['outCode']=isset($send['outCode'])?$send['outCode']:"";
|
|
|
$temp['addrid']=$val['id'];
|
|
|
$temp['send_num']=$addrinfo['receipt_quantity'];
|
|
|
$temp['return_num']=$val['return_num'];
|
|
@@ -372,30 +373,30 @@ class Reorder extends \app\BaseController
|
|
|
return error_show(1004,"未找到订单数据");
|
|
|
}
|
|
|
if($status==4){
|
|
|
- $cgd=Db::name("order_num")->where(['orderCode'=>$info["orderCode"],"is_del"=>0])->find();
|
|
|
- if(empty($cgd)){
|
|
|
- return error_show(1004,"未找到商品库存数据");
|
|
|
- }
|
|
|
- $wsm =Db::name("purchease_order")->where(["cgdNo"=>$cgd['cgdNo'],"is_del"=>0])->find();
|
|
|
- if(empty($wsm)){
|
|
|
- return error_show(1004,"未找到商品仓库库存数据");
|
|
|
- }
|
|
|
- $good_stock = Db::name("good_stock")->where(["spuCode"=>$orderinfo['good_code'],"wsm_code"=>$wsm,"is_del"=>0])
|
|
|
- ->select()->toArray();
|
|
|
- if(empty($good_stock)){
|
|
|
- return error_show(1004,"未找到商品库存数据");
|
|
|
- }
|
|
|
- if($orderinfo['is_stock']==1){
|
|
|
- $bk =Db::name("purchease_order")->where(["bkcode"=>$cgd['bkcode'],"order_type"=>5,"is_del"=>0])
|
|
|
- ->find();
|
|
|
- if($bk==false){
|
|
|
- return error_show(1004,"未找到备库库存数据");
|
|
|
- }
|
|
|
- $bkorder=Db::name("order_bk")->where(["cgdNo"=>$bk['cgdNo']])->find();
|
|
|
- if($bk==false){
|
|
|
- return error_show(1004,"未找到备库库存数据");
|
|
|
- }
|
|
|
- }
|
|
|
+// $cgd=Db::name("order_num")->where(['orderCode'=>$info["orderCode"],"is_del"=>0])->find();
|
|
|
+// if(empty($cgd)){
|
|
|
+// return error_show(1004,"未找到商品库存数据");
|
|
|
+// }
|
|
|
+// $wsm =Db::name("purchease_order")->where(["cgdNo"=>$cgd['cgdNo'],"is_del"=>0])->find();
|
|
|
+// if(empty($wsm)){
|
|
|
+// return error_show(1004,"未找到商品仓库库存数据");
|
|
|
+// }
|
|
|
+// $good_stock = Db::name("good_stock")->where(["spuCode"=>$orderinfo['good_code'],"wsm_code"=>$wsm,"is_del"=>0])
|
|
|
+// ->select()->toArray();
|
|
|
+// if(empty($good_stock)){
|
|
|
+// return error_show(1004,"未找到商品库存数据");
|
|
|
+// }
|
|
|
+// if($orderinfo['is_stock']==1){
|
|
|
+// $bk =Db::name("purchease_order")->where(["bkcode"=>$cgd['bkcode'],"order_type"=>5,"is_del"=>0])
|
|
|
+// ->find();
|
|
|
+// if($bk==false){
|
|
|
+// return error_show(1004,"未找到备库库存数据");
|
|
|
+// }
|
|
|
+// $bkorder=Db::name("order_bk")->where(["cgdNo"=>$bk['cgdNo']])->find();
|
|
|
+// if($bk==false){
|
|
|
+// return error_show(1004,"未找到备库库存数据");
|
|
|
+// }
|
|
|
+// }
|
|
|
if($info['is_addr']==1){
|
|
|
$addr=Db::name("sale_returnaddr")->where(['returnCode'=>$info['returnCode'],"is_del"=>0])->select()
|
|
|
->toArray();
|
|
@@ -432,75 +433,236 @@ class Reorder extends \app\BaseController
|
|
|
$remark!=""? $info['remark'] =$remark:"";
|
|
|
$info["updatetime"]=date("Y-m-d H:i:s");
|
|
|
$up = Db::name("sale_return")->save($info);
|
|
|
- if($up){
|
|
|
- $process=["order_code"=>$code,"order_id"=>$info['id'],"order_status"=>$status,"order_type"=>$info['order_type'] == 2?"ZXTHD":"QRTHD"];
|
|
|
- ProcessOrder::AddProcess($this->post['token'],$process);
|
|
|
- $ste = ["order_code"=>$code,"status"=>$temp,"action_remark"=>'',"action_type"=>"status"];
|
|
|
- ActionLog::logAdd($this->post['token'],$ste,$info['order_type'] == 2?"ZXTHD":"QRTHD",$status,$info);
|
|
|
- if($status==4){
|
|
|
- if($info['is_addr']==0){
|
|
|
- $orderinfo['wsend_num']-=$info['num'];
|
|
|
- }
|
|
|
-
|
|
|
- $orderinfo['th_num']+=$info['num'];
|
|
|
- $orderinfo['th_fee']+=round($info['num']*$orderinfo['sale_price'],2);
|
|
|
- $orderinfo['send_status'] = $orderinfo['send_num'] == 0 ? 1 : $orderinfo['wsend_num'] == 0 ? 3 : 2;
|
|
|
- $old_status = $orderinfo['status'];
|
|
|
- $orderinfo['status'] = $orderinfo['send_num'] == 0 ?0 : $orderinfo['wsend_num'] == 0 ? 2 : 1;
|
|
|
- $orderinfo['updatetime']=date("Y-m-d H:i:s");
|
|
|
- $return = Db::name("sale")->save($orderinfo);
|
|
|
- if($return==false){
|
|
|
- Db::rollback();
|
|
|
- return error_show(1004,"更新失败");
|
|
|
- }else{
|
|
|
- //修改状态,添加待办
|
|
|
- ActionLog::logAdd($this->post['token'], [
|
|
|
- "order_code" => $orderinfo['orderCode'],//销售单code
|
|
|
- "status" => $old_status,//这里的status是之前的值
|
|
|
- "action_remark" => '',//备注
|
|
|
- "action_type" => "status"//新建create,编辑edit,更改状态status
|
|
|
- ], "XSQRD", $orderinfo['status'], $orderinfo);
|
|
|
-
|
|
|
- ProcessOrder::AddProcess($this->post['token'], [
|
|
|
- "order_type" => 'XSQRD',
|
|
|
- "order_code" => $orderinfo['orderCode'],//销售单code
|
|
|
- "order_id" => $orderinfo['id'],
|
|
|
- "order_status" => $orderinfo['status']
|
|
|
- ]);
|
|
|
+ if($up) {
|
|
|
+ $process = ["order_code" => $code, "order_id" => $info['id'], "order_status" => $status, "order_type" => $info['order_type'] == 2 ? "ZXTHD" : "QRTHD"];
|
|
|
+ ProcessOrder::AddProcess($this->post['token'], $process);
|
|
|
+ $ste = ["order_code" => $code, "status" => $temp, "action_remark" => '', "action_type" => "status"];
|
|
|
+ ActionLog::logAdd($this->post['token'], $ste, $info['order_type'] == 2 ? "ZXTHD" : "QRTHD", $status, $info);
|
|
|
+ if ($status == 4) {
|
|
|
+ if ($info['is_addr'] == 1) {
|
|
|
+ if (isset($addr) && !empty($addr)) {
|
|
|
+ foreach ($addr as $value) {
|
|
|
+ $addrinfo = Db::name("order_addr")->where(['id' => $value['addrid'], "is_del" => 0])->find();
|
|
|
+ if ($addrinfo == false) {
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1004, "地址数据未找到");
|
|
|
+ }
|
|
|
+ if ($addrinfo['receipt_quantity'] < $value['return_num']) {
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1004, "地址发货数量不足");
|
|
|
+ }
|
|
|
+ $addrinfo['receipt_quantity'] -= $value['return_num'];
|
|
|
+ $addrinfo['is_del'] = $addrinfo['receipt_quantity'] <= 0 ? 1 : 0;
|
|
|
+ $addrinfo['updatetime'] = date("Y-m-d H:i:s");
|
|
|
+ $addrup = Db::name("order_addr")->save($addrinfo);
|
|
|
+ if ($addrup == false) {
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1004, "地址发货数量更新失败");
|
|
|
+ }
|
|
|
+ if ($value['outCode'] != "") {
|
|
|
+ $out = Db::name("order_out")->where(["outCode" => $value['outCode'], "is_del" => 0])
|
|
|
+ ->find();
|
|
|
+ if ($out == false) {
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1004, "地址发货单数据未找到");
|
|
|
+ }
|
|
|
+ if ($out['status'] >= 2) {
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1004, "地址发货单已发货");
|
|
|
+ }
|
|
|
+ if ($out['send_num'] < $value['return_num']) {
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1004, "地址发货单发货数量不足");
|
|
|
+ }
|
|
|
+ $out['send_num'] -= $value['return_num'];
|
|
|
+ $out['is_del'] = $out['send_num'] <= 0 ? 1 : 0;
|
|
|
+ $out['updatetime'] = date("Y-m-d H:i:s");
|
|
|
+ $outup = Db::name("order_out")->save($out);
|
|
|
+ if ($outup == false) {
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1004, "地址发货单更新失败");
|
|
|
+ }
|
|
|
+ $ordersend = Db::name("order_send")->where(["outCode" => $value['outCode']])->find();
|
|
|
+ if ($ordersend['send_num'] < $value['return_num']) {
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1004, "发货单发货数量不足");
|
|
|
+ }
|
|
|
+ $ordersend['send_num'] -= $value['return_num'];
|
|
|
+ $ordersend['status'] = $ordersend['send_num'] <= 0 ? 0 : 1;
|
|
|
+ $ordersend['updatetime'] = date("Y-m-d H:i:s");
|
|
|
+ $sendip = Db::name("order_send")->save($ordersend);
|
|
|
+ if ($sendip == false) {
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1004, "发货单更新失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- if($info['is_th']==1 && $orderinfo['is_stock']==0){
|
|
|
-
|
|
|
+ if ($info['is_addr'] == 0) {
|
|
|
+ if ($orderinfo['wsend_num'] < $info['num']) {
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1004, "销售单未发货数量不足退货");
|
|
|
+ }
|
|
|
+ $orderinfo['wsend_num'] -= $info['num'];
|
|
|
+ $orderinfo['send_num'] += $info['num'];
|
|
|
+ } else {
|
|
|
+ if ($orderinfo['send_num'] < $info['num']) {
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1004, "销售单已发货数量不足退货");
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
- foreach ($good_stock as $value){
|
|
|
- if($value['wait_out_stock']>=$info['num']){
|
|
|
- $value['usable_stock']+=$info['num'];
|
|
|
- $value['wait_out_stock']-=$info['num'];
|
|
|
- $value['updatetime']=date("Y-m-d H:i:s");
|
|
|
- $info["num"]=0;
|
|
|
- }else{
|
|
|
- $value['usable_stock']+=$value['wait_out_stock'];
|
|
|
- $value['wait_out_stock']=0;
|
|
|
- $value['updatetime']=date("Y-m-d H:i:s");
|
|
|
- $info["num"]-=$value['wait_out_stock'];
|
|
|
+ if ($orderinfo['is_stock'] == 1) {
|
|
|
+ $orderinfo['th_num'] += $info['num'];
|
|
|
+ $orderinfo['th_fee'] += round($info['num'] * $orderinfo['sale_price'], 2);
|
|
|
+ $orderinfo['updatetime'] = date("Y-m-d H:i:s");
|
|
|
+ $uap = Db::name("sale")->save($orderinfo);
|
|
|
+ if ($uap == false) {
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1005, '销售单订单更新失败');
|
|
|
}
|
|
|
-
|
|
|
- $stock = Db::name("good_stock")->save($value);
|
|
|
- if($stock==false){
|
|
|
+ $ordernum = Db::name("order_num")->where(['orderCode' => $info['orderCode']])->find();
|
|
|
+ if ($ordernum == false) {
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1005, '未找到关联采购单');
|
|
|
+ }
|
|
|
+ $ordernum['send_num'] -= $info['num'];
|
|
|
+ $orderup = Db::name("order_num")->save($ordernum);
|
|
|
+ if ($orderup == false) {
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1005, '关联数据更新失败');
|
|
|
+ }
|
|
|
+ $cgd = Db::name("purchease_order")->where(["cgdNo" => $ordernum['cgdNo'], "is_del" => 0])->find();
|
|
|
+ if ($cgd == false) {
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1005, '未找到采购单数据');
|
|
|
+ }
|
|
|
+ $cgd['th_fee'] += round($cgd['good_price'] * $info['num'], 2);
|
|
|
+ $cgd['th_num'] += $info['num'];
|
|
|
+ $cgd['updatetime'] = date("Y-m-d H:i:s");
|
|
|
+ $cgdup = Db::name("purchease_order")->save($cgd);
|
|
|
+ if ($cgdup == false) {
|
|
|
Db::rollback();
|
|
|
- return error_show(1004,"更新失败");
|
|
|
+ return error_show(1005, '采购单数据更新失败');
|
|
|
}
|
|
|
- if($info['num']==0){
|
|
|
- break;
|
|
|
+ if ($cgd['bkcode'] != "") {
|
|
|
+ $bk = Db::name("purchease_order")->where(["bkcode" => $cgd['bkcode'], "order_type" => 1, "is_del" => 0])
|
|
|
+ ->find();
|
|
|
+ if ($bk == false) {
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1005, '未找到备库单数据');
|
|
|
+ }
|
|
|
+ $orderbk = Db::name("order_bk")->where(['cgdNo' => $bk['cgdNo'], "is_del" => 0])->find();
|
|
|
+ if ($orderbk == false) {
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1005, '备库单未完全入库');
|
|
|
+ }
|
|
|
+ $merge_num = Db::name("purchease_order")->where(["bkcode" => $bk['bkcode'], "order_type" => 5, "is_del" => 0])
|
|
|
+ ->field("sum(send_num)-sum(th_num) as num")->find();
|
|
|
+
|
|
|
+ $orderbk['balance_num'] = $orderbk['total_num'] - $merge_num['num'];
|
|
|
+ $orderbk['merge_num'] = $merge_num['num'];
|
|
|
+ $orderbk['updatetime'] = date("Y-m-d H:i:s");
|
|
|
+ $orderbkup = Db::name("order_bk")->save($orderbk);
|
|
|
+ if ($orderbkup == false) {
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1005, '备库单库存数据释放失败');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+
|
|
|
+ if ($info['is_th'] == 1) {
|
|
|
+ $orderinfo['th_num'] += $info['num'];
|
|
|
+ $orderinfo['th_fee'] += round($info['return_num'] * $orderinfo['sale_price'], 2);
|
|
|
+ $orderinfo['updatetime'] = date("Y-m-d H:i:s");
|
|
|
+ $uap = Db::name("sale")->save($orderinfo);
|
|
|
+ if ($uap == false) {
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1005, '销售单订单更新失败');
|
|
|
+ }
|
|
|
+ $ordernum = Db::name("order_num")->where(['orderCode' => $orderinfo['orderCode']])->find();
|
|
|
+ if ($ordernum == false) {
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1005, '未找到关联采购单');
|
|
|
+ }
|
|
|
+ $ordernum['send_num'] -= $info['num'];
|
|
|
+ $orderup = Db::name("order_num")->save($ordernum);
|
|
|
+ if ($orderup == false) {
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1005, '关联数据更新失败');
|
|
|
+ }
|
|
|
+ $cgd = Db::name("purchease_order")->where(["cgdNo" => $ordernum['cgdNo'], "is_del" => 0])->find();
|
|
|
+ if ($cgd == false) {
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1005, '未找到采购单数据');
|
|
|
+ }
|
|
|
+ $cgd['th_num'] += $info['num'];
|
|
|
+ $cgd['th_fee'] += round($info['num'] * $cgd['good_price'], 2);
|
|
|
+ $cgd['updatetime'] = date("Y-m-d H:i:s");
|
|
|
+ $cgdup = Db::name("purchease_order")->save($cgd);
|
|
|
+ if ($cgdup == false) {
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1005, '采购单数据更新失败');
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+ $orderinfo['th_num'] += $info['num'];
|
|
|
+ $orderinfo['th_fee'] += round($info['num'] * $orderinfo['sale_price'], 2);
|
|
|
+ $orderinfo['updatetime'] = date("Y-m-d H:i:s");
|
|
|
+ $uap = Db::name("sale")->save($orderinfo);
|
|
|
+ if ($uap == false) {
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1005, '销售单订单更新失败');
|
|
|
+ }
|
|
|
+ $ordernum = Db::name("order_num")->where(['orderCode' => $orderinfo['orderCode']])->find();
|
|
|
+ if ($ordernum == false) {
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1005, '未找到关联采购单');
|
|
|
+ }
|
|
|
+ $ordernum['send_num'] -= $info['num'];
|
|
|
+ $ordernum['wsend_num'] = $info['return_num'];
|
|
|
+ $orderup = Db::name("order_num")->save($ordernum);
|
|
|
+ if ($orderup == false) {
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1005, '关联数据更新失败');
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ $wsmcode = $orderinfo['is_stock'] == 1 ? $cgd['wsm_code'] : $info['return_wsm'];
|
|
|
+ if ($wsmcode == "") {
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1005, '未找到退货仓库');
|
|
|
+ }
|
|
|
+ $stock = Db::name("good_stock")->where(["spuCode" => $info['good_code'], 'wsm_code' => $wsmcode])->find();
|
|
|
+ if (empty($stock)) {
|
|
|
+ $stock = [
|
|
|
+ "spuCode" => $info['good_code'],
|
|
|
+ "wsm_code" => $wsmcode,
|
|
|
+ "usable_stock" => 0,
|
|
|
+ "wait_out_stock" => 0,
|
|
|
+ "wait_in_stock" => 0,
|
|
|
+ "total_stock" => 0,
|
|
|
+ "addtime" => date("Y-m-d H:i:s"),
|
|
|
+ "updatetime" => date("Y-m-d H:i:s"),
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ $stock['usable_stock'] += $info['num'];
|
|
|
+ $stock['updatetime'] = date("Y-m-d H:i:s");
|
|
|
+ $st_up = Db::name("good_stock")->save($stock);
|
|
|
+ if ($st_up == false) {
|
|
|
+ return error_show(1005, '可售商品入库失败');
|
|
|
+ }
|
|
|
+ $good_data = ['good_log_code' => $info['returnCode'], "stock_id" => isset($stock['id']) ?
|
|
|
+ $stock['id'] : Db::name
|
|
|
+ ("good_stock")->getLastInsID(), "type" => 1, 'stock' => $info['num'], "stock_name" => "usable_stock"];
|
|
|
+ GoodLog::LogAdd($this->post['token'], $good_data, 'QRTHD');
|
|
|
}
|
|
|
+ }
|
|
|
Db::commit();
|
|
|
return app_show(0,"更新成功");
|
|
|
- }
|
|
|
- Db::rollback();
|
|
|
- return error_show(1004,"更新失败");
|
|
|
+
|
|
|
}catch (\Exception $e){
|
|
|
Db::rollback();
|
|
|
return error_show(1004,"更新失败");
|