|
@@ -6,6 +6,7 @@ use App\Model\Depart;
|
|
use App\Model\Employee;
|
|
use App\Model\Employee;
|
|
use App\Model\InvoiceOrder;
|
|
use App\Model\InvoiceOrder;
|
|
use App\Model\InvoiceOrderInfo;
|
|
use App\Model\InvoiceOrderInfo;
|
|
|
|
+use App\Model\SalesOrder;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
|
|
class InvoiceOrderService extends Service
|
|
class InvoiceOrderService extends Service
|
|
@@ -37,13 +38,16 @@ class InvoiceOrderService extends Service
|
|
foreach ($data['product'] as $value){
|
|
foreach ($data['product'] as $value){
|
|
$sub[] = [
|
|
$sub[] = [
|
|
'order_number' => $data['order_number'],
|
|
'order_number' => $data['order_number'],
|
|
- 'depart_id' => $data['depart_id'],
|
|
|
|
|
|
+ 'depart_id' => $data['depart_id'] ?? 0,
|
|
'product_id' => $value['product_id'],
|
|
'product_id' => $value['product_id'],
|
|
'number' => $value['number'],
|
|
'number' => $value['number'],
|
|
'mark' => $value['mark'] ?? '',
|
|
'mark' => $value['mark'] ?? '',
|
|
];
|
|
];
|
|
}
|
|
}
|
|
InvoiceOrderInfo::insert($sub);
|
|
InvoiceOrderInfo::insert($sub);
|
|
|
|
+
|
|
|
|
+ //锁定库存
|
|
|
|
+ ProductInventoryService::changeLockNumber($msg[0],$msg[1]);
|
|
}
|
|
}
|
|
|
|
|
|
DB::commit();
|
|
DB::commit();
|
|
@@ -81,13 +85,16 @@ class InvoiceOrderService extends Service
|
|
foreach ($data['product'] as $value){
|
|
foreach ($data['product'] as $value){
|
|
$sub[] = [
|
|
$sub[] = [
|
|
'order_number' => $data['order_number'],
|
|
'order_number' => $data['order_number'],
|
|
- 'depart_id' => $data['depart_id'],
|
|
|
|
|
|
+ 'depart_id' => $data['depart_id'] ?? 0,
|
|
'product_id' => $value['product_id'],
|
|
'product_id' => $value['product_id'],
|
|
'number' => $value['number'],
|
|
'number' => $value['number'],
|
|
'mark' => $value['mark'] ?? '',
|
|
'mark' => $value['mark'] ?? '',
|
|
];
|
|
];
|
|
}
|
|
}
|
|
InvoiceOrderInfo::insert($sub);
|
|
InvoiceOrderInfo::insert($sub);
|
|
|
|
+
|
|
|
|
+ //锁定库存
|
|
|
|
+ ProductInventoryService::changeLockNumber($msg[0]);
|
|
}
|
|
}
|
|
|
|
|
|
DB::commit();
|
|
DB::commit();
|
|
@@ -124,6 +131,7 @@ class InvoiceOrderService extends Service
|
|
->where('state','>',InvoiceOrder::STATE_ZERO)->exists();
|
|
->where('state','>',InvoiceOrder::STATE_ZERO)->exists();
|
|
if($bool) return [false,'发货订单已确认,删除失败!'];
|
|
if($bool) return [false,'发货订单已确认,删除失败!'];
|
|
|
|
|
|
|
|
+ $product_save = $this->getSaveDetail($data['order_number']);
|
|
try{
|
|
try{
|
|
DB::beginTransaction();
|
|
DB::beginTransaction();
|
|
InvoiceOrder::where('order_number',$data['order_number'])->update([
|
|
InvoiceOrder::where('order_number',$data['order_number'])->update([
|
|
@@ -132,6 +140,8 @@ class InvoiceOrderService extends Service
|
|
InvoiceOrderInfo::where('order_number',$data['order_number'])->update([
|
|
InvoiceOrderInfo::where('order_number',$data['order_number'])->update([
|
|
'del_time'=>time()
|
|
'del_time'=>time()
|
|
]);
|
|
]);
|
|
|
|
+ //锁定库存释放
|
|
|
|
+ ProductInventoryService::changeLockNumber([],$product_save);
|
|
|
|
|
|
DB::commit();
|
|
DB::commit();
|
|
}catch (\Throwable $e){
|
|
}catch (\Throwable $e){
|
|
@@ -185,16 +195,33 @@ class InvoiceOrderService extends Service
|
|
}
|
|
}
|
|
|
|
|
|
public function orderRule(&$data, $is_check = true){
|
|
public function orderRule(&$data, $is_check = true){
|
|
- if($this->isEmpty($data,'depart_id')) return [false,'部门不能为空!'];
|
|
|
|
if($this->isEmpty($data,'send')) return [false,'发货人不能为空!'];
|
|
if($this->isEmpty($data,'send')) return [false,'发货人不能为空!'];
|
|
if($this->isEmpty($data,'product')) return [false,'产品不能为空!'];
|
|
if($this->isEmpty($data,'product')) return [false,'产品不能为空!'];
|
|
if(! empty($data['send_time'])) $data['send_time'] = $this->changeDateToDateMin($data['send_time']);
|
|
if(! empty($data['send_time'])) $data['send_time'] = $this->changeDateToDateMin($data['send_time']);
|
|
-
|
|
|
|
|
|
+ if(! empty($data['contact_order_number'])) {
|
|
|
|
+ $sales = SalesOrder::where('del_time',0)
|
|
|
|
+ ->where('order_number',$data['contact_order_number'])
|
|
|
|
+ ->first();
|
|
|
|
+ if(empty($sales)) return [false,'合同不存在或已被删除'];
|
|
|
|
+ if($sales['sales_order_type'] != SalesOrder::Order_type_two) return [false,'非快递件合同'];
|
|
|
|
+ }
|
|
|
|
+ $product_submit = $product_save = [];
|
|
foreach ($data['product'] as $value){
|
|
foreach ($data['product'] as $value){
|
|
if(empty($value['number'])) return [false,'产品数量不能为空'];
|
|
if(empty($value['number'])) return [false,'产品数量不能为空'];
|
|
$res = $this->checkNumber($value['number']);
|
|
$res = $this->checkNumber($value['number']);
|
|
if(! $res) return [false,'请输入正确的产品数量'];
|
|
if(! $res) return [false,'请输入正确的产品数量'];
|
|
|
|
+
|
|
|
|
+ if(isset($product_submit[$value['product_id']])){
|
|
|
|
+ $product_submit[$value['product_id']] += $value['number'];
|
|
|
|
+ }else{
|
|
|
|
+ $product_submit[$value['product_id']] = $value['number'];
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
+ list($status,$msg) = (new ProductInventoryService())->compareStock(array_keys($product_submit), [
|
|
|
|
+ 'order_number' => $data['order_number'] ?? "",
|
|
|
|
+ 'product' => $product_submit
|
|
|
|
+ ]);
|
|
|
|
+ if(! $status) return [false, $msg];
|
|
|
|
|
|
if($is_check){
|
|
if($is_check){
|
|
$order_number = (new OrderNoService())->createOrderNumber(InvoiceOrder::prefix);
|
|
$order_number = (new OrderNoService())->createOrderNumber(InvoiceOrder::prefix);
|
|
@@ -202,8 +229,25 @@ class InvoiceOrderService extends Service
|
|
$data['order_number'] = $order_number;
|
|
$data['order_number'] = $order_number;
|
|
}else{
|
|
}else{
|
|
if($this->isEmpty($data,'order_number')) return [false,'发货单号不能为空!'];
|
|
if($this->isEmpty($data,'order_number')) return [false,'发货单号不能为空!'];
|
|
|
|
+ $product_save = $this->getSaveDetail($data['order_number']);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return [true, [$product_submit, $product_save]];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public function getSaveDetail($order_number){
|
|
|
|
+ $product_save = [];
|
|
|
|
+ $sub = InvoiceOrderInfo::where('order_number',$order_number)
|
|
|
|
+ ->where('del_time',0)
|
|
|
|
+ ->get()->toArray();
|
|
|
|
+ foreach ($sub as $value){
|
|
|
|
+ if(isset($product_save[$value['product_id']])){
|
|
|
|
+ $product_save[$value['product_id']] += $value['number'];
|
|
|
|
+ }else{
|
|
|
|
+ $product_save[$value['product_id']] = $value['number'];
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
- return [true, ''];
|
|
|
|
|
|
+ return $product_save;
|
|
}
|
|
}
|
|
}
|
|
}
|