|
@@ -253,7 +253,7 @@ class ReorderChild extends Base
|
|
|
|
|
|
$info = Db::name('sale_return_child')
|
|
|
->alias('a')
|
|
|
- ->field('a.id,a.num,a.status,a.returnCode,a.outChildCode,a.return_num,a.return_wsm_code,a.orderCode,a.outCode,a.saleReturnChildCode,a.apply_id,b.good_code spuCode,c.status order_out_status,b.id saleid,d.num thnum,d.id sr_id,d.apply_id sr_apply_id,b.is_stock,b.order_type')
|
|
|
+ ->field('a.id,a.num,a.status,a.returnCode,a.outChildCode,a.return_num,a.return_wsm_code,a.orderCode,a.outCode,a.saleReturnChildCode,a.apply_id,b.good_code spuCode,c.status order_out_status,b.id saleid,d.num thnum,d.id sr_id,d.apply_id sr_apply_id,b.is_stock,b.order_type,d.is_addr')
|
|
|
->leftJoin('sale b', 'b.orderCode=a.orderCode')
|
|
|
->leftJoin('order_out_child c', 'c.outChildCode=a.outChildCode AND c.is_del=0')
|
|
|
->leftJoin('sale_return d', 'd.returnCode=a.returnCode')
|
|
@@ -343,9 +343,7 @@ class ReorderChild extends Base
|
|
|
$old_status = $order['status'];
|
|
|
|
|
|
$thnum = $info['thnum'];//退货总数量
|
|
|
-// $all_loss_num = Db::name('sale_return_child')
|
|
|
-// ->where(['is_del' => 0, 'returnCode' => $info['returnCode']])
|
|
|
-// ->sum('loss_num');
|
|
|
+
|
|
|
// $thnum = $info['thnum'] - $all_loss_num;//退货总数量-丢失总数量
|
|
|
// if ($order['wsend_num'] < $thnum) throw new Exception("销售单未发货数量不足退货");
|
|
|
|
|
@@ -522,7 +520,12 @@ class ReorderChild extends Base
|
|
|
if ($total == 0) break;
|
|
|
}
|
|
|
|
|
|
- if (($info['return_num'] - $info['loss_num']) > 0) {
|
|
|
+ $all_total = Db::name('sale_return_child')
|
|
|
+ ->where(['is_del' => 0, 'returnCode' => $info['returnCode']])
|
|
|
+ ->field('sum(`return_num`) - sum(`loss_num`) total')
|
|
|
+ ->findOrEmpty();
|
|
|
+
|
|
|
+ if ($all_total['total'] > 0) {
|
|
|
$stockid = Db::name('good_stock')
|
|
|
->insertGetId([
|
|
|
'project_code' => '',
|
|
@@ -530,9 +533,9 @@ class ReorderChild extends Base
|
|
|
'wsm_code' => $info['return_wsm_code'],
|
|
|
'wait_in_stock' => 0,
|
|
|
'wait_out_stock' => 0,
|
|
|
- 'usable_stock' => $info['return_num'] - $info['loss_num'],
|
|
|
+ 'usable_stock' => $all_total['total'],
|
|
|
'intra_stock' => 0,
|
|
|
- 'total_stock' => $info['return_num'] - $info['loss_num'],
|
|
|
+ 'total_stock' => $all_total['total'],
|
|
|
'status' => 1,
|
|
|
'is_del' => 0,
|
|
|
'warn_stock' => 0,
|
|
@@ -544,9 +547,9 @@ class ReorderChild extends Base
|
|
|
->insert([
|
|
|
'stockid' => $stockid,
|
|
|
'bnCode' => substr(makeNo("BN"), 0, -2) . str_pad($j++, 2, '0', STR_PAD_LEFT),
|
|
|
- 'total_num' => $info['return_num'] - $info['loss_num'],
|
|
|
+ 'total_num' => $all_total['total'],
|
|
|
'used_num' => 0,
|
|
|
- 'balance_num' => $info['return_num'] - $info['loss_num'],
|
|
|
+ 'balance_num' => $all_total['total'],
|
|
|
'origin_price' => $origin_price,
|
|
|
'addtime' => $date,
|
|
|
'updatetime' => $date,
|
|
@@ -569,32 +572,37 @@ class ReorderChild extends Base
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- //发货工单数量减少
|
|
|
- $tmp = Db::name('order_out_child')
|
|
|
- ->where(['is_del' => 0, 'outChildCode' => $info['outChildCode']])
|
|
|
- ->field('id,num')
|
|
|
- ->findOrEmpty();
|
|
|
- $tmp['num'] -= $thnum;
|
|
|
- $tmp['updatetime'] = $date;
|
|
|
- if ($tmp['num'] <= 0) $tmp['is_del'] = 1;
|
|
|
-
|
|
|
- Db::name('order_out_child')
|
|
|
- ->where(['is_del' => 0, 'id' => $tmp['id']])
|
|
|
- ->update($tmp);
|
|
|
-
|
|
|
- //维护发货单
|
|
|
- $temp = Db::name('order_out')
|
|
|
- ->field('id,send_num')
|
|
|
- ->where(['is_del' => 0, 'outCode' => $info['outCode']])
|
|
|
- ->findOrEmpty();
|
|
|
+ //有地址就会有发货单,继而有发货工单
|
|
|
+ if ($info['is_addr'] == 1) {
|
|
|
+ //发货工单数量减少
|
|
|
+ $tmp = Db::name('order_out_child')
|
|
|
+ ->where(['is_del' => 0, 'outChildCode' => $info['outChildCode']])
|
|
|
+ ->field('id,num')
|
|
|
+ ->findOrEmpty();
|
|
|
+ halt($info['outChildCode']);
|
|
|
+ $tmp['num'] -= $info['return_num'];
|
|
|
+ $tmp['updatetime'] = $date;
|
|
|
+ if ($tmp['num'] <= 0) $tmp['is_del'] = 1;
|
|
|
+
|
|
|
+ Db::name('order_out_child')
|
|
|
+ ->where(['is_del' => 0, 'id' => $tmp['id']])
|
|
|
+ ->update($tmp);
|
|
|
+
|
|
|
+ //维护发货单
|
|
|
+ $temp = Db::name('order_out')
|
|
|
+ ->field('id,send_num')
|
|
|
+ ->where(['is_del' => 0, 'outCode' => $info['outCode']])
|
|
|
+ ->findOrEmpty();
|
|
|
|
|
|
- $temp['send_num'] -= $thnum;
|
|
|
- $temp['updatetime'] = $date;
|
|
|
- if ($temp['send_num'] <= 0) $temp['is_del'] = 1;
|
|
|
+ $temp['send_num'] -= $info['return_num'];
|
|
|
+ $temp['updatetime'] = $date;
|
|
|
+ if ($temp['send_num'] <= 0) $temp['is_del'] = 1;
|
|
|
+
|
|
|
+ Db::name('order_out')
|
|
|
+ ->where('id', $temp['id'])
|
|
|
+ ->update($temp);
|
|
|
+ }
|
|
|
|
|
|
- Db::name('order_out')
|
|
|
- ->where('id', $temp['id'])
|
|
|
- ->update($temp);
|
|
|
|
|
|
//维护bn
|
|
|
if ($info['order_out_status'] == 1) {
|