|
@@ -6,7 +6,7 @@ use app\abutment\model\SupplierRelationUser;
|
|
|
use app\abutment\model\SupplierUser;
|
|
|
use app\admin\model\GoodLog;
|
|
|
use app\admin\model\GoodStockInfo;use app\admin\model\ProcessOrder;
|
|
|
-use Exception;
|
|
|
+use app\admin\model\SaleInfo;use Exception;
|
|
|
use think\App;
|
|
|
use think\facade\Cache;
|
|
|
use think\facade\Config;
|
|
@@ -95,7 +95,7 @@ class Sale extends Base
|
|
|
if ($goodinfo['is_stock'] == 1) {
|
|
|
$stock_num = Db::name("good_stock")->alias("a")
|
|
|
->leftJoin("warehouse_info b", "a.wsm_code=b.wsm_code")
|
|
|
- ->leftJoin("good_stock_info c", "a.id=c.stockid")
|
|
|
+ ->leftJoin("good_stock_info c", "a.id=c.stockid and c.balance_num>0")
|
|
|
->where(["spuCode" => $spuCode, "a.is_del" => 0, "a.status" => 1, "b.wsm_type" => 5, "b.companyNo" =>$supplierNo])
|
|
|
->sum('balance_num');
|
|
|
// if ($stock == false || $stock['usable_stock'] < $good_num) {
|
|
@@ -203,11 +203,6 @@ class Sale extends Base
|
|
|
}
|
|
|
$remark = isset($this->post['remark']) && $this->post['remark'] !== "" ? trim($this->post['remark']) : "";
|
|
|
$proof_id = isset($this->post['proof_id']) && $this->post['proof_id'] !== "" ? intval($this->post['proof_id']) : 0;
|
|
|
-
|
|
|
-// $apply_id = GetUserInfo($token);
|
|
|
-// if (empty($apply_id) || $apply_id['code'] != 0) {
|
|
|
-// return error_show(1002, "申请人数据不存在");
|
|
|
-// }
|
|
|
$rm = $this->uid;
|
|
|
$ri = $this->uname;
|
|
|
Db::startTrans();
|
|
@@ -301,36 +296,15 @@ class Sale extends Base
|
|
|
}
|
|
|
} else {
|
|
|
$outstatus = 1;
|
|
|
-// $bol = $this->RelaCgd([
|
|
|
-// 'orderCode' => $orderCode,
|
|
|
-// "good_num" => $good_num,
|
|
|
-// "spuCode" => $spuCode,
|
|
|
-// "companyNo" => $supplierNo,
|
|
|
-// "cost_fee" => isset($good['cost_fee']) ? $good['cost_fee'] : 0,
|
|
|
-// 'order_type' => $data['order_type'],
|
|
|
-// 'order_source' => $data['order_source'],
|
|
|
-// ], $standing_book_da);
|
|
|
-// if ($bol == false) {
|
|
|
-// Db::rollback();
|
|
|
-// return error_show(1002, "库存商品关联采购单失败");
|
|
|
-// }
|
|
|
-
|
|
|
- $stockid= Db::name("good_stock")->alias("a")
|
|
|
+ $stockid= Db::name("good_stock")->alias("a")
|
|
|
->leftJoin("warehouse_info b", "a.wsm_code=b.wsm_code")
|
|
|
- ->leftJoin("good_stock_info c", "a.id=c.stockid")
|
|
|
->where(["spuCode" => $spuCode, "a.is_del" => 0, "a.status" => 1, "b.wsm_type" => 5, "b.companyNo" =>$supplierNo])
|
|
|
->column('a.id');
|
|
|
- $stockinfo =GoodStockInfo::OrderBn($orderCode,$stockid,$good_num);
|
|
|
+ $stockinfo =GoodStockInfo::OrderBn($orderCode,$stockid,$good_num);
|
|
|
if($stockinfo==false){
|
|
|
Db::rollback();
|
|
|
return error_show(1002, "更新库存失败");
|
|
|
}
|
|
|
- //商品变动日志表,good_log_code字段存储采购单号
|
|
|
-// $good_data[] = ['good_log_code' => $orderCode, "stock_id" => $stock['id'], "type" => 2, 'stock' => $good_num, "stock_name" => "usable_stock"];
|
|
|
-// $good_data[] = ['good_log_code' => $orderCode, "stock_id" => $stock['id'], "type" => 1, 'stock' => $good_num, "stock_name" => "wait_out_stock"];
|
|
|
-// GoodLog::LogAdd($this->post['token'], $good_data, "XSQRD");
|
|
|
-
|
|
|
-
|
|
|
}
|
|
|
|
|
|
if ($sendtype == 1) {
|
|
@@ -749,16 +723,16 @@ class Sale extends Base
|
|
|
$status = 1;
|
|
|
}
|
|
|
}else{
|
|
|
- $stockid=Db::name("sale_info")->where(["orderCode"=>$orderCode])->value("stockid","");
|
|
|
- if($stockid==''){
|
|
|
- Db::rollback();
|
|
|
- return error_show(1005,"未找到对应库存仓库");
|
|
|
- }
|
|
|
- $cgdinfo = Db::name("good_stock")->where(["id"=>$stockid])->findOrEmpty();
|
|
|
- if(empty($cgdinfo)){
|
|
|
- Db::rollback();
|
|
|
- return error_show(1005,"未找到对应库存仓库");
|
|
|
- }
|
|
|
+// $stockid=Db::name("sale_info")->where(["orderCode"=>$orderCode])->value("stockid","");
|
|
|
+// if($stockid==''){
|
|
|
+// Db::rollback();
|
|
|
+// return error_show(1005,"未找到对应库存仓库");
|
|
|
+// }
|
|
|
+// $cgdinfo = Db::name("good_stock")->where(["id"=>$stockid])->findOrEmpty();
|
|
|
+// if(empty($cgdinfo)){
|
|
|
+// Db::rollback();
|
|
|
+// return error_show(1005,"未找到对应库存仓库");
|
|
|
+// }
|
|
|
}
|
|
|
|
|
|
$out = [
|
|
@@ -774,7 +748,7 @@ class Sale extends Base
|
|
|
"send_num" => $num,
|
|
|
"check_num" => 0,
|
|
|
"error_num" => 1,
|
|
|
- "wsm_code" => $cgdinfo['wsm_code'],
|
|
|
+ "wsm_code" => $cgdinfo['wsm_code']??'',
|
|
|
"order_type" => $etid['order_type'],
|
|
|
"status" => $status,
|
|
|
"addtime" => date("Y-m-d H:i:s"),
|
|
@@ -1901,38 +1875,40 @@ class Sale extends Base
|
|
|
}
|
|
|
} else {
|
|
|
|
|
|
- $stock = Db::name("good_stock")->alias("a")->leftJoin("warehouse_info b", "a.wsm_code=b.wsm_code")->where
|
|
|
- (["spuCode" => $good['spuCode'], "a.is_del" => 0, "a.status" => 1, "b.wsm_type" => 5, "b.companyNo"
|
|
|
- => $data['companyNo']])->field("a.id,a.usable_stock,a.wait_out_stock,a.wsm_code")->find();
|
|
|
- if ($stock == false || $stock['usable_stock'] < $data['good_num']) {
|
|
|
- return 1; //库存不足
|
|
|
- }
|
|
|
- $stock_num =Db::name("good_stock_info")->where(["stockid"=>$stock['id']])->sum('balance_num');
|
|
|
- if($stock_num < $data['good_num']){
|
|
|
- return 1; //库存不足
|
|
|
- }
|
|
|
+// $stock = Db::name("good_stock")->alias("a")->leftJoin("warehouse_info b", "a.wsm_code=b.wsm_code")->where
|
|
|
+// (["spuCode" => $good['spuCode'], "a.is_del" => 0, "a.status" => 1, "b.wsm_type" => 5, "b.companyNo"
|
|
|
+// => $data['companyNo']])->field("a.id,a.usable_stock,a.wait_out_stock,a.wsm_code")->find();
|
|
|
+// if ($stock == false || $stock['usable_stock'] < $data['good_num']) {
|
|
|
+// return 1; //库存不足
|
|
|
+// }
|
|
|
+// $stock_num =Db::name("good_stock_info")->where(["stockid"=>$stock['id']])->sum('balance_num');
|
|
|
+// if($stock_num < $data['good_num']){
|
|
|
+// return 1; //库存不足
|
|
|
+// }
|
|
|
+ $stock_arr = Db::name("good_stock")->alias("a")
|
|
|
+ ->leftJoin("warehouse_info b", "a.wsm_code=b.wsm_code")
|
|
|
+ ->leftJoin("good_stock_info c", "a.id=c.stockid and c.balance_name>0")
|
|
|
+ ->where(["spuCode" => $good['spuCode'], "a.is_del" => 0, "a.status" => 1, "b.wsm_type" => 5, "b.companyNo" =>$data['companyNo']])
|
|
|
+ ->column('stockid,balance_num');
|
|
|
+ $stock_num = array_sum(array_column($stock_arr,"balance_num"));
|
|
|
+ $stockid = array_unique(array_column($stock_arr,"stockid"));
|
|
|
+ if($stock_num < $data['good_num']){
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
// $bol = $this->RelaCgd(['orderCode' => $orderCode, "good_num" => $data['good_num'], "spuCode" => $good['spuCode'], "companyNo" => $data['companyNo'], "cost_fee" => $goodlass['cost_fee'], 'order_type' => $cgd['order_type'], 'order_source' => $cgd['order_source']], $standing_book_data);
|
|
|
// if ($bol == false) {
|
|
|
// return 3;//关联采购失败
|
|
|
// }
|
|
|
- if (isset($stock)) {
|
|
|
- $stck = [
|
|
|
- "usable_stock" => $stock['usable_stock'] - $data['good_num'],
|
|
|
- "wait_out_stock" => $stock['wait_out_stock'] + $data['good_num'],
|
|
|
- "updatetime" => date("Y-m-d H:i:s")
|
|
|
- ];
|
|
|
- $upad = Db::name("good_stock")->where($stock)->update($stck);
|
|
|
- if ($upad == false) {
|
|
|
- return 2; //库存更新失败
|
|
|
- }
|
|
|
- $stockinfo =GoodStockInfo::OrderBn($orderCode,$stock['id'],$data['good_num']);
|
|
|
+ if (!empty($stockid)) {
|
|
|
+
|
|
|
+ $stockinfo =GoodStockInfo::OrderBn($orderCode,$stockid,$data['good_num']);
|
|
|
if($stockinfo==false){
|
|
|
return 2; //库存不足
|
|
|
}
|
|
|
//商品变动日志表,good_log_code字段存储采购单号
|
|
|
- $good_data[] = ['good_log_code' => $orderCode, "stock_id" => $stock['id'], "type" => 2, 'stock' => $data['good_num'], "stock_name" => "usable_stock"];
|
|
|
- $good_data[] = ['good_log_code' => $orderCode, "stock_id" => $stock['id'], "type" => 1, 'stock' => $data['good_num'], "stock_name" => "wait_out_stock"];
|
|
|
- GoodLog::LogAdd($this->post['token'], $good_data, "XSQRD");
|
|
|
+// $good_data[] = ['good_log_code' => $orderCode, "stock_id" => $stock['id'], "type" => 2, 'stock' => $data['good_num'], "stock_name" => "usable_stock"];
|
|
|
+// $good_data[] = ['good_log_code' => $orderCode, "stock_id" => $stock['id'], "type" => 1, 'stock' => $data['good_num'], "stock_name" => "wait_out_stock"];
|
|
|
+// GoodLog::LogAdd($this->post['token'], $good_data, "XSQRD");
|
|
|
}
|
|
|
|
|
|
}
|
|
@@ -2017,7 +1993,7 @@ class Sale extends Base
|
|
|
"send_num" => $num,
|
|
|
"check_num" => 0,
|
|
|
"error_num" => 0,
|
|
|
- "wsm_code" => $good['is_stock'] == 1 ?$stock['wsm_code']:$cgdinfo['wsm_code'],
|
|
|
+ "wsm_code" => $good['is_stock'] == 1 ?'':$cgdinfo['wsm_code'],
|
|
|
"order_type" => 1,
|
|
|
"status" => $good['is_stock'] == 1 ? 1 : 0,
|
|
|
"addtime" => date("Y-m-d H:i:s"),
|
|
@@ -3369,7 +3345,9 @@ class Sale extends Base
|
|
|
$condition = '';
|
|
|
if (!empty($role['write']) && $this->uid != "") {
|
|
|
// $where[]=["a.apply_id","in",$role['write']];
|
|
|
- $condition .= " (b.is_stock=1 and n.contactor = {$this->uid}) or (b.is_stock=0 and wpo.cgder_id = {$this->uid}) or a.apply_id in (" . implode(',',
|
|
|
+ $cgdArr =\think\facade\Config::get("app");
|
|
|
+ $cgdids =implode(",",$cgdArr['wsm_cgder_role']);
|
|
|
+ $condition .= " (b.is_stock=1 and {$this->roleid} in ($cgdids)) or (b.is_stock=0 and wpo.cgder_id = {$this->uid}) or a.apply_id in (" . implode(',',
|
|
|
$role['write']) . ")";
|
|
|
}
|
|
|
// if(!empty($role['platform']) ){
|
|
@@ -3617,16 +3595,16 @@ class Sale extends Base
|
|
|
return error_show(1002, "发货地址添加创建失败");
|
|
|
}
|
|
|
}else{
|
|
|
- $stockid=Db::name("sale_info")->where(["orderCode"=>$orderCode])->value("stockid","");
|
|
|
- if($stockid==''){
|
|
|
- Db::rollback();
|
|
|
- return error_show(1005,"未找到对应库存仓库");
|
|
|
- }
|
|
|
- $cgd = Db::name("good_stock")->where(["id"=>$stockid])->findOrEmpty();
|
|
|
- if(empty($cgd)){
|
|
|
- Db::rollback();
|
|
|
- return error_show(1005,"未找到对应库存仓库");
|
|
|
- }
|
|
|
+// $stockid=Db::name("sale_info")->where(["orderCode"=>$orderCode])->value("stockid","");
|
|
|
+// if($stockid==''){
|
|
|
+// Db::rollback();
|
|
|
+// return error_show(1005,"未找到对应库存仓库");
|
|
|
+// }
|
|
|
+// $cgd = Db::name("good_stock")->where(["id"=>$stockid])->findOrEmpty();
|
|
|
+// if(empty($cgd)){
|
|
|
+// Db::rollback();
|
|
|
+// return error_show(1005,"未找到对应库存仓库");
|
|
|
+// }
|
|
|
}
|
|
|
|
|
|
$data = [
|
|
@@ -3852,7 +3830,8 @@ class Sale extends Base
|
|
|
'holder_id' => $einfo['apply_id']
|
|
|
]);
|
|
|
|
|
|
- $stokc = Db::name("good_stock")->where(['spuCode' => $einfo['good_code'], "wsm_code" => $outinfo['wsm_code'], "is_del" => 0])->find();
|
|
|
+ if($einfo["order_type"]!=1){
|
|
|
+ $stokc = Db::name("good_stock")->where(['spuCode' => $einfo['good_code'], "wsm_code" => $outinfo['wsm_code'], "is_del" => 0])->find();
|
|
|
if ($stokc == false) {
|
|
|
Db::rollback();
|
|
|
return error_show(1002, "未找到库存数据");
|
|
@@ -3871,7 +3850,6 @@ class Sale extends Base
|
|
|
Db::rollback();
|
|
|
return error_show(1002, "库存更新失败");
|
|
|
}
|
|
|
- if($einfo["order_type"]!=1){
|
|
|
$outsend =Db::name("order_send")->where(["outCode"=> $outCode])->findOrEmpty();
|
|
|
if(empty($outsend)){
|
|
|
Db::rollback();
|
|
@@ -3890,11 +3868,18 @@ class Sale extends Base
|
|
|
Db::rollback();
|
|
|
return error_show(1004,"库存bn库存数更新失败");
|
|
|
}
|
|
|
+
|
|
|
+ $good_data[] = ['good_log_code' => $outCode, "stock_id" => $stokc['id'], "type" => 2, 'stock' => $outinfo['send_num'], "stock_name" => "wait_out_stock"];
|
|
|
+ GoodLog::LogAdd(['id' => $uid, 'nickname' => $uname], $good_data, "CKD");
|
|
|
+ }else{
|
|
|
+ $bnup =SaleInfo::SendStock($outinfo['orderCode'],$outinfo['send_num']);
|
|
|
+ if($bnup==false){
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1004,"库存bn库存数更新失败");
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- $good_data[] = ['good_log_code' => $outCode, "stock_id" => $stokc['id'], "type" => 2, 'stock' => $outinfo['send_num'], "stock_name" => "wait_out_stock"];
|
|
|
|
|
|
- GoodLog::LogAdd(['id' => $uid, 'nickname' => $uname], $good_data, "CKD");
|
|
|
Cache::store("redis")->handler()->lPush("SENDOUT", $outCode);
|
|
|
Db::commit();
|
|
|
|
|
@@ -4576,7 +4561,10 @@ class Sale extends Base
|
|
|
'holder_id' => $sale_infos[$order_out_infos[$value['outCode']]['orderCode']]['apply_id']
|
|
|
]);
|
|
|
|
|
|
- //【库存】
|
|
|
+
|
|
|
+ if($sale_infos[$order_out_infos[$value['outCode']]['orderCode']]["order_type"]!=1){
|
|
|
+ //【库存】
|
|
|
+
|
|
|
$stock = Db::name("good_stock")
|
|
|
->field('id,wait_out_stock,usable_stock,total_stock,updatetime')
|
|
|
->where([
|
|
@@ -4596,7 +4584,6 @@ class Sale extends Base
|
|
|
->where('id', $stock['id'])
|
|
|
->update($stock);
|
|
|
if ($stock_rs == false) throw new Exception($value['outCode'] . '库存更新失败');
|
|
|
- if($sale_infos[$order_out_infos[$value['outCode']]['orderCode']]["order_type"]!=1){
|
|
|
$outsend =Db::name("order_send")->where(["outCode"=> $value['outCode']])->findOrEmpty();
|
|
|
if(empty($outsend)){
|
|
|
Db::rollback();
|
|
@@ -4624,6 +4611,12 @@ class Sale extends Base
|
|
|
'stock_name' => 'wait_out_stock'
|
|
|
];
|
|
|
|
|
|
+ }else{
|
|
|
+ $bnup =SaleInfo::SendStock($order_out_infos[$value['outCode']]['orderCode'],$order_out_infos[$value['outCode']]['send_num']);
|
|
|
+ if($bnup==false){
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1004,"库存bn库存数更新失败");
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|