|
@@ -89,7 +89,8 @@ class Sale extends Base
|
|
|
}
|
|
|
}
|
|
|
if($goodinfo['is_stock']==1){
|
|
|
- $stock =Db::name("good_stock")->where(["spuCode"=>$spuCode,"is_del"=>0])->find();
|
|
|
+ $stock =Db::name("good_stock")->alias("a")->leftJoin("warehouse_info b","a.wsm_code=b.wsm_code")->where
|
|
|
+ (["spuCode"=>$spuCode, "a.is_del"=>0,"a.status"=>1,"b.companyNo"=>$supplierNo])->field("a.id,a.usable_stock,a.wait_out_stock")->find();
|
|
|
if($stock==false||$stock['usable_stock']<$good_num){
|
|
|
return error_show(1003,"库存数量不足");
|
|
|
}
|
|
@@ -192,6 +193,11 @@ class Sale extends Base
|
|
|
"is_activity"=>$is_activity===""?0:$is_activity,
|
|
|
"order_type"=>$order_type,
|
|
|
// "poNo"=>$poNo,
|
|
|
+ 'good_weight'=>$ct['weight'],
|
|
|
+ 'gold_price'=>$ct['cgd_gold_price'],
|
|
|
+ 'cost_price'=>$ct['cost_fee'],
|
|
|
+ 'diff_weight'=>0,
|
|
|
+ 'diff_fee'=>0,
|
|
|
"workNo"=>$workNo,
|
|
|
"addtime"=>date("Y-m-d H:i:s"),
|
|
|
"updatetime"=>date("Y-m-d H:i:s"),
|
|
@@ -219,22 +225,28 @@ class Sale extends Base
|
|
|
return error_show(1002,"订单创建失败");
|
|
|
}
|
|
|
}else{
|
|
|
- $dd=[
|
|
|
- "orderCode"=>$orderCode,
|
|
|
- "spuCode"=>$spuCode,
|
|
|
- "total_num"=>$good_num,
|
|
|
- "merge_num"=>0,
|
|
|
- "balance_num"=>$good_num,
|
|
|
- "status"=>1,
|
|
|
- "is_del"=>0,
|
|
|
- "addtime"=>date("Y-m-d H:i:s"),
|
|
|
- "updatetime"=>date("Y-m-d H:i:s"),
|
|
|
- ];
|
|
|
- $db=Db::name("sale_bk")->insert($dd);
|
|
|
- if($db==false){
|
|
|
+ $bol =$this->RelaCgd(['orderCode'=>$orderCode,"good_num"=>$good_num,"spuCode"=>$spuCode,"companyNo"=>$supplierNo]);
|
|
|
+ if($bol==false){
|
|
|
Db::rollback();
|
|
|
- return error_show(1002,"咨询订单创建失败");
|
|
|
+ return error_show(1002,"库存商品关联采购单失败");
|
|
|
+ }
|
|
|
+ if(isset($stock)){
|
|
|
+ $stck = [
|
|
|
+ "usable_stock"=>$stock['usable_stock']-$good_num,
|
|
|
+ "wait_out_stock"=>$stock['wait_out_stock']+$good_num,
|
|
|
+ "updatetime"=>date("Y-m-d H:i:s")
|
|
|
+ ];
|
|
|
+ $upad=Db::name("good_stock")->where($stock)->update($stck);
|
|
|
+ if($upad==false){
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1002,"库存商品更新库存失败");
|
|
|
+ }
|
|
|
+ //商品变动日志表,good_log_code字段存储采购单号
|
|
|
+ $good_data[] = ['good_log_code' => $orderCode, "stock_id" => $datainfo, "type" => 2,'stock'=>$good_num, "stock_name" => "usable_stock"];
|
|
|
+ $good_data[] = ['good_log_code' => $orderCode, "stock_id" => $datainfo, "type" => 1,'stock'=>$good_num, "stock_name" => "wait_out_stock"];
|
|
|
+ GoodLog::LogAdd($this->post['token'],$good_data,"XSQRD");
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
if($sendtype==1){
|
|
|
foreach ($addrlist as $value){
|
|
@@ -262,38 +274,25 @@ class Sale extends Base
|
|
|
$temp['arrive_time']=$arrtime;
|
|
|
$vmp = Db::name('order_addr')->insert($temp,true);
|
|
|
if($vmp>0){
|
|
|
- if($is_stock==0) {
|
|
|
- $order = Db::name("order_num")->where(["orderCode" => $orderCode, "status" => 1])->where([["wsend_num", ">=", 0]])
|
|
|
- ->select()->toArray();
|
|
|
- if (empty($order)) {
|
|
|
- return error_show(1004, "未找到可以发货得采购单数据");
|
|
|
- }
|
|
|
- $num = $value['receipt_quantity'];
|
|
|
- $orsend = [];
|
|
|
- foreach ($order as $val) {
|
|
|
- $outCode = makeNo("DF");
|
|
|
- $tep = [];
|
|
|
- $ornum = 0;
|
|
|
- if ($val['wsend_num'] >= $num) {
|
|
|
- $val['wsend_num'] -= $num;
|
|
|
- $val['send_num'] += $num;
|
|
|
- $ornum = $num;
|
|
|
- $num = 0;
|
|
|
- } else {
|
|
|
- $num -= $val['wsend_num'];
|
|
|
- $val['send_num'] += $val['wsend_num'];
|
|
|
- $ornum = $val['wsend_num'];
|
|
|
- $val['wsend_num'] = 0;
|
|
|
+ if($is_stock==1) {
|
|
|
+ $order = Db::name("order_num")->where(["orderCode" => $orderCode, "status" => 1])->where([["wsend_num", ">=", 0]])
|
|
|
+ ->lock(true)->find();
|
|
|
+ if ($order==false) {
|
|
|
+ return error_show(1004, "未找到可以发货得采购单数据");
|
|
|
}
|
|
|
- $or = Db::name("order_num")->save($val);
|
|
|
+ $num = $value['receipt_quantity'];
|
|
|
+ $outCode = makeNo("DF");
|
|
|
+ $order['wsend_num']-=$num;
|
|
|
+ $order['send_num']+=$num;
|
|
|
+ $or = Db::name("order_num")->save($order);
|
|
|
if ($or == false) {
|
|
|
Db::rollback();
|
|
|
return error_show(1002, "发货地址添加创建失败");
|
|
|
}
|
|
|
$tep = [
|
|
|
- "cgdNo" => $val['cgdNo'],
|
|
|
+ "cgdNo" => $order['cgdNo'],
|
|
|
"outCode" => $outCode,
|
|
|
- "send_num" => $ornum,
|
|
|
+ "send_num" => $num,
|
|
|
"status" => 1,
|
|
|
"addtime" => date("Y-m-d H:i:s"),
|
|
|
"updatetime" => date("Y-m-d H:i:s")
|
|
@@ -303,7 +302,7 @@ class Sale extends Base
|
|
|
Db::rollback();
|
|
|
return error_show(1002, "发货地址添加创建失败");
|
|
|
}
|
|
|
- $cgdinfo = Db::name("purchease_order")->where(["cgdNo" => $val['cgdNo']])->find();
|
|
|
+ $cgdinfo = Db::name("purchease_order")->where(["cgdNo" => $order['cgdNo']])->find();
|
|
|
if ($cgdinfo == false) {
|
|
|
Db::rollback();
|
|
|
return error_show(1002, "未匹配到采购数据");
|
|
@@ -318,12 +317,12 @@ class Sale extends Base
|
|
|
"post_code" => "",
|
|
|
"post_fee" => 0,
|
|
|
"sendtime" => date("Y-m-d H:i:s"),
|
|
|
- "send_num" => $ornum,
|
|
|
+ "send_num" => $num,
|
|
|
"check_num" => 0,
|
|
|
"error_num" => 0,
|
|
|
"wsm_code" => $cgdinfo['wsm_code'],
|
|
|
"order_type" =>1,
|
|
|
- "status" => 0,
|
|
|
+ "status" => 1,
|
|
|
"addtime" => date("Y-m-d H:i:s"),
|
|
|
"updatetime" => date("Y-m-d H:i:s")
|
|
|
];
|
|
@@ -348,7 +347,6 @@ class Sale extends Base
|
|
|
]);
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
}else{
|
|
|
Db::rollback();
|
|
|
return error_show(1002,"发货地址添加创建失败");
|
|
@@ -807,6 +805,11 @@ class Sale extends Base
|
|
|
"is_activity"=>0,
|
|
|
"proof_id"=>0,
|
|
|
"order_type"=>3,
|
|
|
+ 'good_weight'=>$zxinfo['good_weight'],
|
|
|
+ 'gold_price'=>$zxinfo['sale_price'],
|
|
|
+ 'cost_price'=>$zxinfo['sale_cost_fee'],
|
|
|
+ 'diff_weight'=>0,
|
|
|
+ 'diff_fee'=>0,
|
|
|
"addtime"=>date("Y-m-d H:i:s"),
|
|
|
"updatetime"=>date("Y-m-d H:i:s"),
|
|
|
'total_price' => round($sale_price * $good_num, 2),
|
|
@@ -1071,6 +1074,7 @@ class Sale extends Base
|
|
|
$good['addrlist'] = $value['addrlist'];
|
|
|
}
|
|
|
if($feedback['data_source']==1){
|
|
|
+
|
|
|
$feed=$this->project_good($good);
|
|
|
}else{
|
|
|
$feed=$this->project_zx($good);
|
|
@@ -1203,6 +1207,11 @@ class Sale extends Base
|
|
|
"is_activity"=>0,
|
|
|
"proof_id"=>0,
|
|
|
"order_type"=>4,
|
|
|
+ 'good_weight'=>$goodinfo['good_weight'],
|
|
|
+ 'gold_price'=>$goodinfo['sale_price'],
|
|
|
+ 'cost_price'=>$goodinfo['sale_cost_fee'],
|
|
|
+ 'diff_weight'=>0,
|
|
|
+ 'diff_fee'=>0,
|
|
|
"addtime"=>date("Y-m-d H:i:s"),
|
|
|
"updatetime"=>date("Y-m-d H:i:s"),
|
|
|
'total_price'=>round($data['sale_price']*$data['good_num'],2),
|
|
@@ -1365,18 +1374,18 @@ class Sale extends Base
|
|
|
->find();
|
|
|
|
|
|
if($good==false){
|
|
|
- return false;
|
|
|
+ return 4; //商品信息未找到
|
|
|
}
|
|
|
$goodlass = Db::name("good_ladder")->where(["skuCode"=>$data['skuCode'],"is_del"=>0,"status"=>1])->where([["min_num",
|
|
|
"<=",$data['good_num']]])->order("min_num desc")->find();
|
|
|
if($goodlass==false){
|
|
|
- return false;
|
|
|
+ return 4;//商品信息未找到
|
|
|
}
|
|
|
$sale_price = $goodlass['sale_price'];
|
|
|
$origin = Db::name("good_nake")->where([["spuCode","=",$data['spuCode']],["min_num","<=",$data['good_num']],
|
|
|
["is_del","=",0]])->order("min_num desc")->find();
|
|
|
if($origin==false){
|
|
|
- return false;
|
|
|
+ return 4;//商品信息未找到
|
|
|
}
|
|
|
$origin_price = $origin['nake_total'];
|
|
|
$orderCode=makeNo("QR");
|
|
@@ -1409,6 +1418,11 @@ class Sale extends Base
|
|
|
"is_activity"=>0,
|
|
|
"proof_id"=>0,
|
|
|
"order_type"=>2,
|
|
|
+ 'good_weight'=>$good['weight'],
|
|
|
+ 'gold_price'=>$good['cgd_gold_price'],
|
|
|
+ 'cost_price'=>$good['cost_fee'],
|
|
|
+ 'diff_weight'=>0,
|
|
|
+ 'diff_fee'=>0,
|
|
|
"addtime"=>date("Y-m-d H:i:s"),
|
|
|
"updatetime"=>date("Y-m-d H:i:s"),
|
|
|
'total_price'=>round($sale_price*$data['good_num'],2),
|
|
@@ -1440,32 +1454,38 @@ class Sale extends Base
|
|
|
if($good['is_stock']==0) {
|
|
|
$bol = $this->createCgd($cgd);
|
|
|
if ($bol == false) {
|
|
|
- return false;
|
|
|
+ return 3;//关联采购失败
|
|
|
}
|
|
|
}else{
|
|
|
|
|
|
- $dd=[
|
|
|
- "orderCode"=>$orderCode,
|
|
|
- "spuCode"=>$good['spuCode'],
|
|
|
- "total_num"=>$data['good_num'],
|
|
|
- "merge_num"=>0,
|
|
|
- "balance_num"=>$data['good_num'],
|
|
|
- "status"=>1,
|
|
|
- "is_del"=>0,
|
|
|
- "addtime"=>date("Y-m-d H:i:s"),
|
|
|
- "updatetime"=>date("Y-m-d H:i:s"),
|
|
|
+ $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.companyNo"=>$data['companyNo']])->field("a.id,a.usable_stock,a.wait_out_stock")->find();
|
|
|
+ if($stock==false||$stock['usable_stock']<$data['good_num']){
|
|
|
+ return 1; //库存不足
|
|
|
+ }
|
|
|
+
|
|
|
+ $bol =$this->RelaCgd(['orderCode'=>$orderCode,"good_num"=>$data['good_num'],"spuCode"=>$good['spuCode'],"companyNo"=>$data['companyNo']]);
|
|
|
+ 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")
|
|
|
];
|
|
|
- $db=Db::name("sale_bk")->insert($dd);
|
|
|
- if($db==false){
|
|
|
- return false;
|
|
|
+ $upad=Db::name("good_stock")->where($stock)->update($stck);
|
|
|
+ if($upad==false){
|
|
|
+ return 2; //库存更新失败
|
|
|
}
|
|
|
+ //商品变动日志表,good_log_code字段存储采购单号
|
|
|
+ $good_data[] = ['good_log_code' => $orderCode, "stock_id" => $datainfo, "type" => 2,'stock'=>$data['good_num'], "stock_name" => "usable_stock"];
|
|
|
+ $good_data[] = ['good_log_code' => $orderCode, "stock_id" => $datainfo, "type" => 1,'stock'=>$data['good_num'], "stock_name" => "wait_out_stock"];
|
|
|
+ GoodLog::LogAdd($this->post['token'],$good_data,"XSQRD");
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
if ($data['sendtype']==1&&!empty($data['addrlist'])) {
|
|
|
-// $order = Db::name("order_num")->where(["orderCode" => $orderCode, "status" => 1])->where([["wsend_num", ">=", 0]])
|
|
|
-// ->find();
|
|
|
-// if ($order == false) {
|
|
|
-// return false;
|
|
|
-// }
|
|
|
foreach ($data['addrlist'] as $value) {
|
|
|
$temp = [];
|
|
|
$addrs = [];
|
|
@@ -1491,54 +1511,80 @@ class Sale extends Base
|
|
|
$temp['arrive_time'] = $data['arrtime'];
|
|
|
$vmp = Db::name('order_addr')->insert($temp, true);
|
|
|
if ($vmp > 0) {
|
|
|
-// if($good['is_stock']!=1){
|
|
|
-// $outCode = makeNo("CK");
|
|
|
-// $out = [
|
|
|
-// "orderCode" => $orderCode,
|
|
|
-// "outCode" => $outCode,
|
|
|
-// "apply_id"=>$data['rm'],
|
|
|
-// "apply_name"=>$data['ri'],
|
|
|
-// "addrid" => $vmp,
|
|
|
-// "post_name" => "",
|
|
|
-// "post_code" => "",
|
|
|
-// "post_fee" => 0,
|
|
|
-// "sendtime" => date("Y-m-d H:i:s"),
|
|
|
-// "send_num" => $value['receipt_quantity'],
|
|
|
-// "check_num" => 0,
|
|
|
-// "error_num" => 0,
|
|
|
-// "wsm_code" => "",
|
|
|
-// "order_type" => 4,
|
|
|
-// "status" => 0,
|
|
|
-// "addtime" => date("Y-m-d H:i:s"),
|
|
|
-// "updatetime" => date("Y-m-d H:i:s")
|
|
|
-// ];
|
|
|
-// $ou = Db::name("order_out")->insert($out);
|
|
|
-// if ($ou == false) {
|
|
|
-// return false;
|
|
|
-// }
|
|
|
-// $order['send_num'] += $value['receipt_quantity'];
|
|
|
-// $order['wsend_num'] -= $value['receipt_quantity'];
|
|
|
-// if ($order['wsend_num'] < 0) {
|
|
|
-// return false;
|
|
|
-// }
|
|
|
-// $ups = Db::name("order_num")->save($order);
|
|
|
-// if ($ups) {
|
|
|
-// $tep = [
|
|
|
-// "cgdNo" => $order['cgdNo'],
|
|
|
-// "outCode" => $outCode,
|
|
|
-// "send_num" => $value['receipt_quantity'],
|
|
|
-// "status" => 1,
|
|
|
-// "addtime" => date("Y-m-d H:i:s"),
|
|
|
-// "updatetime" => date("Y-m-d H:i:s")
|
|
|
-// ];
|
|
|
-// $sen = Db::name("order_send")->insert($tep);
|
|
|
-// if ($sen == false) {
|
|
|
-// return false;
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
- } else {
|
|
|
- return false;
|
|
|
+ if ($good['is_stock'] == 1) {
|
|
|
+ $order = Db::name("order_num")->where(["orderCode" => $orderCode, "status" => 1])->where([["wsend_num", ">=", 0]])
|
|
|
+ ->lock(true)->find();
|
|
|
+ if ($order == false) {
|
|
|
+ return 3;
|
|
|
+ }
|
|
|
+ $num = $value['receipt_quantity'];
|
|
|
+ $outCode = makeNo("DF");
|
|
|
+ $order['wsend_num'] -= $num;
|
|
|
+ $order['send_num'] += $num;
|
|
|
+ $or = Db::name("order_num")->save($order);
|
|
|
+ if ($or == false) {
|
|
|
+
|
|
|
+ return 3;
|
|
|
+ }
|
|
|
+ $tep = [
|
|
|
+ "cgdNo" => $order['cgdNo'],
|
|
|
+ "outCode" => $outCode,
|
|
|
+ "send_num" => $num,
|
|
|
+ "status" => 1,
|
|
|
+ "addtime" => date("Y-m-d H:i:s"),
|
|
|
+ "updatetime" => date("Y-m-d H:i:s")
|
|
|
+ ];
|
|
|
+ $sen = Db::name("order_send")->save($tep);
|
|
|
+ if ($sen == false) {
|
|
|
+
|
|
|
+ return 3;
|
|
|
+ }
|
|
|
+ $cgdinfo = Db::name("purchease_order")->where(["cgdNo" => $order['cgdNo']])->find();
|
|
|
+ if ($cgdinfo == false) {
|
|
|
+
|
|
|
+ return 4;
|
|
|
+ }
|
|
|
+ $out = [
|
|
|
+ "orderCode" => $orderCode,
|
|
|
+ "outCode" => $outCode,
|
|
|
+ "apply_id" => $data['rm'],
|
|
|
+ "apply_name" => $data['ri'],
|
|
|
+ "addrid" => $vmp,
|
|
|
+ "post_name" => "",
|
|
|
+ "post_code" => "",
|
|
|
+ "post_fee" => 0,
|
|
|
+ "sendtime" => date("Y-m-d H:i:s"),
|
|
|
+ "send_num" => $num,
|
|
|
+ "check_num" => 0,
|
|
|
+ "error_num" => 0,
|
|
|
+ "wsm_code" => $cgdinfo['wsm_code'],
|
|
|
+ "order_type" => 1,
|
|
|
+ "status" => 1,
|
|
|
+ "addtime" => date("Y-m-d H:i:s"),
|
|
|
+ "updatetime" => date("Y-m-d H:i:s")
|
|
|
+ ];
|
|
|
+ $ou = Db::name("order_out")->insert($out);
|
|
|
+ if ($ou == false) {
|
|
|
+ return 0;
|
|
|
+ } else {
|
|
|
+ //修改状态,添加待办
|
|
|
+ ActionLog::logAdd($this->post['token'], [
|
|
|
+ "order_code" => $outCode,//出库单号
|
|
|
+ "status" => 0,//这里的status是之前的值
|
|
|
+ "action_remark" => '',//备注
|
|
|
+ "action_type" => "create"//新建create,编辑edit,更改状态status
|
|
|
+ ], "CKD", 0, $out);
|
|
|
+
|
|
|
+ ProcessOrder::AddProcess($this->post['token'], [
|
|
|
+ "order_type" => 'CKD',
|
|
|
+ "order_code" => $outCode,//出库单号
|
|
|
+ "order_id" => 0,
|
|
|
+ "order_status" => 0
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -2848,12 +2894,18 @@ class Sale extends Base
|
|
|
$ri = isset($apply_id["data"]['nickname']) ? $apply_id["data"]['nickname'] : "";
|
|
|
$sendtime = isset($this->post['sendtime']) && $this->post['sendtime'] !== "" ? $this->post['sendtime'] : date("Y-m-d H:i:s");
|
|
|
$order =Db::name("order_num")->where(["orderCode"=>$orderCode,"status"=>1])->where([["wsend_num",">=",0]])
|
|
|
- ->select()->toArray();
|
|
|
+ ->find();
|
|
|
if(empty($order)){
|
|
|
return error_show(1004,"未找到可以发货得采购单数据");
|
|
|
}
|
|
|
Db::startTrans();
|
|
|
try {
|
|
|
+ $order =Db::name("order_num")->where(["orderCode"=>$orderCode,"status"=>1])->where([["wsend_num",">=",0]])
|
|
|
+ ->lock(true)->find();
|
|
|
+ if($order==false){
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1004,"未找到可以发货得采购单数据");
|
|
|
+ }
|
|
|
$addrlst =[
|
|
|
"orderCode"=>$orderCode,
|
|
|
"addr"=>$addr,
|
|
@@ -2880,33 +2932,24 @@ class Sale extends Base
|
|
|
Db::rollback();
|
|
|
return error_show(1002,"出库单新建失败");
|
|
|
}
|
|
|
- $num = $send_num;
|
|
|
- $data=[];
|
|
|
- foreach ($order as $val){
|
|
|
+
|
|
|
$outCode = makeNo("DF");
|
|
|
- $cgd =Db::name("purchease_order")->where(["cgdNo"=>$val['cgdNo']])->find();
|
|
|
- $tep=[];
|
|
|
- $ornum=0;
|
|
|
- if($val['wsend_num']>=$num){
|
|
|
- $val['wsend_num']-=$num;
|
|
|
- $val['send_num']+=$num;
|
|
|
- $ornum =$num;
|
|
|
- $num=0;
|
|
|
- }else{
|
|
|
- $num-=$val['wsend_num'];
|
|
|
- $val['send_num']+=$val['wsend_num'];
|
|
|
- $ornum =$val['wsend_num'];
|
|
|
- $val['wsend_num']=0;
|
|
|
+ $cgd =Db::name("purchease_order")->where(["cgdNo"=>$order['cgdNo']])->find();
|
|
|
+ if($cgd==false){
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1002,"未找到对应的采购单数据");
|
|
|
}
|
|
|
- $or =Db::name("order_num")->save($val);
|
|
|
+ $order['wsend_num']-=$send_num;
|
|
|
+ $order['send_num']+=$send_num;
|
|
|
+ $or =Db::name("order_num")->save($order);
|
|
|
if($or==false){
|
|
|
Db::rollback();
|
|
|
return error_show(1002,"发货地址添加创建失败");
|
|
|
}
|
|
|
$tep=[
|
|
|
- "cgdNo"=>$val['cgdNo'],
|
|
|
+ "cgdNo"=>$order['cgdNo'],
|
|
|
"outCode"=>$outCode,
|
|
|
- "send_num"=>$ornum,
|
|
|
+ "send_num"=>$send_num,
|
|
|
"status"=>1,
|
|
|
"addtime"=>date("Y-m-d H:i:s"),
|
|
|
"updatetime"=>date("Y-m-d H:i:s")
|
|
@@ -2916,7 +2959,7 @@ class Sale extends Base
|
|
|
Db::rollback();
|
|
|
return error_show(1002,"发货地址添加创建失败");
|
|
|
}
|
|
|
- $data[] = [
|
|
|
+ $data = [
|
|
|
"wsm_code" => isset($cgd['wsm_code'])? $cgd['wsm_code']:"",
|
|
|
"orderCode" => $orderCode,
|
|
|
"outCode" => $outCode,
|
|
@@ -2928,63 +2971,58 @@ class Sale extends Base
|
|
|
"post_code" =>"",
|
|
|
"post_fee" => "",
|
|
|
"sendtime" => $sendtime,
|
|
|
- "send_num" => $ornum,
|
|
|
+ "send_num" => $send_num,
|
|
|
"check_num" => 0,
|
|
|
"error_num" => 0,
|
|
|
"status" => 1,
|
|
|
"addtime" => date("Y-m-d H:i:s"),
|
|
|
"updatetime" => date("Y-m-d H:i:s")
|
|
|
];
|
|
|
- //维护商品所在仓库的库存 --- start
|
|
|
- $temp = Db::name('good_stock')
|
|
|
- ->field('id,usable_stock,wait_out_stock')
|
|
|
- ->where(['spuCode' => $val['spuCode'], 'wsm_code' => $cgd['wsm_code']])
|
|
|
- ->find();
|
|
|
- if ($temp == false) {
|
|
|
- Db::rollback();
|
|
|
- return error_show(1004, '库存不足');
|
|
|
- }
|
|
|
+ if($der['is_stock']==0){
|
|
|
+ //维护商品所在仓库的库存 --- start
|
|
|
+ $temp = Db::name('good_stock')
|
|
|
+ ->field('id,usable_stock,wait_out_stock')
|
|
|
+ ->where(['spuCode' => $der['spuCode'], 'wsm_code' => $cgd['wsm_code']])
|
|
|
+ ->find();
|
|
|
+ if ($temp == false) {
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1004, '库存不足');
|
|
|
+ }
|
|
|
|
|
|
- if (($temp['usable_stock'] - $ornum) < 0) {
|
|
|
- Db::rollback();
|
|
|
- return error_show(1004, '库存不足');
|
|
|
- }
|
|
|
+ if (($temp['usable_stock'] - $send_num) < 0) {
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1004, '库存不足');
|
|
|
+ }
|
|
|
|
|
|
- $up =Db::name('good_stock')
|
|
|
- ->where('id', $temp['id'])
|
|
|
- ->update([
|
|
|
- 'usable_stock' => $temp['usable_stock'] - $ornum,
|
|
|
- 'wait_out_stock' => $temp['wait_out_stock'] + $ornum,
|
|
|
- 'updatetime' => date('Y-m-d H:i:s'),
|
|
|
- ]);
|
|
|
- if($up==false){
|
|
|
- Db::rollback();
|
|
|
- return error_show(1004, '库存更新失败');
|
|
|
- }
|
|
|
- if($num==0){
|
|
|
- break;
|
|
|
+ $up =Db::name('good_stock')
|
|
|
+ ->where('id', $temp['id'])
|
|
|
+ ->update([
|
|
|
+ 'usable_stock' => $temp['usable_stock'] - $send_num,
|
|
|
+ 'wait_out_stock' => $temp['wait_out_stock'] + $send_num,
|
|
|
+ 'updatetime' => date('Y-m-d H:i:s'),
|
|
|
+ ]);
|
|
|
+ if($up==false){
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1004, '库存更新失败');
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- $datainfo = Db::name('order_out')->insertAll($data);
|
|
|
- if($datainfo>0){
|
|
|
|
|
|
- foreach ($data as $k => $v_data) {
|
|
|
+ $datainfo = Db::name('order_out')->insert($data,true);
|
|
|
+ if($datainfo>0){
|
|
|
//修改状态,添加待办
|
|
|
ActionLog::logAdd($this->post['token'], [
|
|
|
- "order_code" => $v_data['outCode'],//出库单号
|
|
|
- "status" => $v_data['status'],//这里的status是之前的值
|
|
|
+ "order_code" => $data['outCode'],//出库单号
|
|
|
+ "status" => $data['status'],//这里的status是之前的值
|
|
|
"action_remark" => '',//备注
|
|
|
"action_type" => "create"//新建create,编辑edit,更改状态status
|
|
|
- ], "CKD", $v_data['status'], $v_data);
|
|
|
+ ], "CKD", $data['status'], $data);
|
|
|
|
|
|
ProcessOrder::AddProcess($this->post['token'], [
|
|
|
"order_type" => 'CKD',
|
|
|
- "order_code" => $v_data['outCode'],//出库单号
|
|
|
- "order_id" => 0,
|
|
|
- "order_status" => $v_data['status']
|
|
|
+ "order_code" => $data['outCode'],//出库单号
|
|
|
+ "order_id" => $datainfo,
|
|
|
+ "order_status" => $data['status']
|
|
|
]);
|
|
|
- }
|
|
|
-
|
|
|
Db::commit();
|
|
|
return app_show(0,"出库单新建成功");
|
|
|
}
|
|
@@ -3062,7 +3100,7 @@ class Sale extends Base
|
|
|
return error_show(1002, "超出库存数量");
|
|
|
}
|
|
|
$stokc['wait_out_stock']-=$outinfo['send_num'];
|
|
|
- $stokc['intra_stock']+=$outinfo['send_num'];
|
|
|
+ // $stokc['intra_stock']+=$outinfo['send_num'];
|
|
|
$stokc['updatetime']=date("Y-m-d H:i:s");
|
|
|
}
|
|
|
$stoc= Db::name("good_stock")->save($stokc);
|
|
@@ -3083,113 +3121,35 @@ class Sale extends Base
|
|
|
|
|
|
}
|
|
|
public function RelaCgd($outinfo){
|
|
|
- $der = Db::name('sale')->where(['orderCode' => $outinfo['orderCode']])->find();
|
|
|
- if ($der == "") {
|
|
|
- return false;
|
|
|
- }
|
|
|
- if($der['is_stock']==1){
|
|
|
- $cgd = Db::name("order_bk")->where([["spuCode","=",$der['spuCode']],["is_del","=",0],["balance_num",">",0]])
|
|
|
- ->select()->toArray();
|
|
|
- if(empty($cgd)){
|
|
|
- return false;
|
|
|
- }
|
|
|
- $send =$outinfo['send_num'];
|
|
|
- $outsend=[];
|
|
|
- foreach ($cgd as $value){
|
|
|
- $temp=[];
|
|
|
- if($value['balance_num']>=$send){
|
|
|
- $value['balance_num']-=$send;
|
|
|
- $value['merge_num']+=$send;
|
|
|
- $send=0;
|
|
|
- $temp['send_num'] =$send;
|
|
|
- }else{
|
|
|
- $value['balance_num'] =0;
|
|
|
- $value['merge_num']+=$value['balance_num'];
|
|
|
- $send -= $value['balance_num'];
|
|
|
- $temp['send_num'] =$value['balance_num'];
|
|
|
- }
|
|
|
- $value['status'] = $value['balance_num']==0 ?2:$value['merge_num']==0?0:1 ;
|
|
|
- $value['updatetime'] = date("Y-m-d H:i:s");
|
|
|
- $bk = Db::name("order_bk")->save($value);
|
|
|
- if($bk==false){
|
|
|
- return false;
|
|
|
- }
|
|
|
- $temp['cgdNo'] = $value['cgdNo'];
|
|
|
- $temp['outCode'] = $outinfo['outCode'];
|
|
|
- $temp['status'] = 1;
|
|
|
- $temp['addtime']=date("Y-m-d H:i:s");
|
|
|
- $temp['updatetime']=date("Y-m-d H:i:s");
|
|
|
- $outsend[]=$temp;
|
|
|
- $order = Db::name("order_num")->where(["orderCode"=>$der['orderCode'],"cgdNo"=>$value['cgdNo'],"spuCode"=>$der['spuCode'],"status"=>1])->find();
|
|
|
- if($order==false){
|
|
|
- $order=[
|
|
|
- "orderCode"=>$der['orderCode'],
|
|
|
- "cgdNo"=>$value['cgdNo'],
|
|
|
- "spuCode"=>$der['spuCode'],
|
|
|
- "good_num"=>$der['good_num'],
|
|
|
- "wsend_num"=>$der['good_num']-$temp['send_num'],
|
|
|
- "send_num"=>$temp['send_num'],
|
|
|
- "status"=>1,
|
|
|
- "source"=>1
|
|
|
- ];
|
|
|
- }else{
|
|
|
- $order['wsend_num']-=$temp['send_num'];
|
|
|
- $order['send_num']+=$temp['send_num'];
|
|
|
- }
|
|
|
- if($order['wsend_num']<0){
|
|
|
- return false;
|
|
|
- }
|
|
|
- $up =Db::name("order_num")->save($order);
|
|
|
- if($up==false){
|
|
|
- return false;
|
|
|
- }
|
|
|
- if($send==0){
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- if(empty($temp)){
|
|
|
+ $cgd = Db::name("order_bk")->where([["spuCode","=",$outinfo['spuCode']],["is_del","=",0],["balance_num",">=",
|
|
|
+ $outinfo['good_num']],['companyNo',"=",$outinfo['companyNo']]])->lock(true)->find();
|
|
|
+ if($cgd==false){
|
|
|
return false;
|
|
|
}
|
|
|
- $insert = Db::name("order_send")->insertAll($outsend);
|
|
|
- if($insert){
|
|
|
- return true;
|
|
|
- }else{
|
|
|
+ $cgd['balance_num']-=$outinfo['good_num'];
|
|
|
+ $cgd['merge_num']+=$outinfo['good_num'];
|
|
|
+ $cgd['updatetime']=date("Y-m-d H:i:s");
|
|
|
+ $up=Db::name("order_bk")->save($cgd);
|
|
|
+ if($up==false){
|
|
|
return false;
|
|
|
}
|
|
|
- }else{
|
|
|
- $order = Db::name("order_num")->where(["orderCode"=>$der['orderCode'],"spuCode"=>$der['spuCode'],
|
|
|
- "status"=>1])->find();
|
|
|
+ $data=[
|
|
|
+ "orderCode"=>$outinfo['orderCode'],
|
|
|
+ "cgdNo"=>$cgd['cgdNo'],
|
|
|
+ "spuCode"=>$outinfo['spuCode'],
|
|
|
+ "companyNo"=>$outinfo['companyNo'],
|
|
|
+ "good_num"=>$outinfo['good_num'],
|
|
|
+ "wsend_num"=>$outinfo['good_num'],
|
|
|
+ "send_num"=>0,
|
|
|
+ "wait_num"=>$outinfo['good_num'],
|
|
|
+ "status"=>1,
|
|
|
+ "source"=>1,
|
|
|
+ ];
|
|
|
+ $order =Db::name("order_num")->save($data);
|
|
|
if($order==false){
|
|
|
return false;
|
|
|
- }else{
|
|
|
- if($outinfo['send_num']> $order['wsend_num']){
|
|
|
- return false;
|
|
|
- }
|
|
|
- $order['wsend_num']-=$outinfo['send_num'];
|
|
|
- $order['send_num']+=$outinfo['send_num'];
|
|
|
- if($order['wsend_num']<0){
|
|
|
- return false;
|
|
|
- }
|
|
|
- $up =Db::name("order_num")->save($order);
|
|
|
- if($up==false){
|
|
|
- return false;
|
|
|
- }
|
|
|
- $temp=[];
|
|
|
- $temp['cgdNo'] = $order['cgdNo'];
|
|
|
- $temp['outCode'] = $outinfo['outCode'];
|
|
|
- $temp['send_num'] =$outinfo['send_num'];
|
|
|
- $temp['status'] = 1;
|
|
|
- $temp['addtime']=date("Y-m-d H:i:s");
|
|
|
- $temp['updatetime']=date("Y-m-d H:i:s");
|
|
|
- $insert = Db::name("order_send")->insert($temp);
|
|
|
- if($insert){
|
|
|
- return true;
|
|
|
- }else{
|
|
|
- return false;
|
|
|
- }
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
+ return true;
|
|
|
}
|
|
|
|
|
|
public function addother(){
|