|
@@ -11,6 +11,7 @@ use App\Model\InvoiceOrder;
|
|
|
use App\Model\InvoiceOrderInfo;
|
|
|
use App\Model\OrderOperation;
|
|
|
use App\Model\ProductInventory;
|
|
|
+use App\Model\ProductInventorySet;
|
|
|
use App\Model\PurchaseOrder;
|
|
|
use App\Model\PurchaseOrderInfo;
|
|
|
use App\Model\PurchaseOrderSpecial;
|
|
@@ -67,6 +68,11 @@ class CheckService extends Service
|
|
|
const TYPE_TWO = 2;//不通过
|
|
|
const TYPE_THREE = 3;//通过后驳回
|
|
|
|
|
|
+ //改为待审核状态 校验
|
|
|
+ public static $opt_1case_check = [
|
|
|
+ self::five => 'checkConstruction',//施工单
|
|
|
+ ];
|
|
|
+
|
|
|
//改为待审核状态
|
|
|
public static $opt_1case = [
|
|
|
self::two => 'waitInvoice',//发货单
|
|
@@ -133,11 +139,6 @@ class CheckService extends Service
|
|
|
self::three => OrderOperation::fourteen,//采购单入库审核通过
|
|
|
];
|
|
|
|
|
|
- public static $operation_order2 = [
|
|
|
- self::four => OrderOperation::five, // 合同 安装件 合同公司完结
|
|
|
- self::nine => OrderOperation::six, // 合同 安装件 合同客户完结
|
|
|
- ];
|
|
|
-
|
|
|
//旅程日志 驳回
|
|
|
public static $operation_order_reject = [
|
|
|
self::four => OrderOperation::four, //合同弃审
|
|
@@ -147,6 +148,48 @@ class CheckService extends Service
|
|
|
self::seven => OrderOperation::twenty,//采购单确认弃审
|
|
|
];
|
|
|
|
|
|
+ //校验
|
|
|
+ public function checkConstruction($data, $user){
|
|
|
+ $order = Construction::where('del_time',0)
|
|
|
+ ->where('order_number',$data['order_number'])
|
|
|
+ ->first();
|
|
|
+ if(empty($order)) return [false,'施工单不存在或已被删除'];
|
|
|
+ $order = $order->toArray();
|
|
|
+
|
|
|
+ //总社id
|
|
|
+ $head = $user['head'] ?? [];
|
|
|
+ $head = $head['id'] ?? 0;
|
|
|
+ //分社自己的施工单 直接返回
|
|
|
+ if($order['top_depart_id'] != $head) return [true, ''];
|
|
|
+ //不校验库存
|
|
|
+ if($user['is_check_stock'] == ProductInventorySet::type_two) return [true,''];
|
|
|
+
|
|
|
+ //施工单产品
|
|
|
+ $sub = ConstructionProductInfo::where('construction_id',$order['id'])
|
|
|
+ ->where('del_time',0)
|
|
|
+ ->get()->toArray();
|
|
|
+ if(empty($sub)) return [false,'施工单产品不存在或已被删除'];
|
|
|
+ $product_submit = $product_id = [];
|
|
|
+ foreach ($sub as $value){
|
|
|
+ $product_id[] = $value['product_id'];
|
|
|
+ $key = $value['product_id'] . ',' . $value['storehouse_id'];
|
|
|
+ if(isset($product_save[$key])){
|
|
|
+ $product_submit[$key] += $value['number'];
|
|
|
+ }else{
|
|
|
+ $product_submit[$key] = $value['number'];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //比较库存
|
|
|
+ list($status,$msg) = (new ProductInventoryService())->compareStock($user,$product_id, $product_submit, []);
|
|
|
+ if(! $status) return [false, $msg];
|
|
|
+
|
|
|
+ //锁定库存
|
|
|
+ ProductInventoryService::changeLockNumber($user,$product_submit);
|
|
|
+
|
|
|
+ return [true, ''];
|
|
|
+ }
|
|
|
+
|
|
|
//改为待审核---------------------------------
|
|
|
public function waitInvoice($data){
|
|
|
$model = InvoiceOrder::where('id',$data['id'])
|
|
@@ -160,6 +203,7 @@ class CheckService extends Service
|
|
|
|
|
|
return [true, $model->toArray()];
|
|
|
}
|
|
|
+
|
|
|
public function waitPurchaseConfirm($data){
|
|
|
$model = PurchaseOrder::where('id',$data['id'])
|
|
|
->where('del_time',0)
|
|
@@ -171,6 +215,7 @@ class CheckService extends Service
|
|
|
PurchaseOrder::where('id',$data['id'])->update(['state' => PurchaseOrder::STATE_ONE]);
|
|
|
return [true, $model->toArray()];
|
|
|
}
|
|
|
+
|
|
|
public function waitPurchase($data){
|
|
|
$model = PurchaseOrder::where('id',$data['id'])
|
|
|
->where('del_time',0)
|
|
@@ -184,6 +229,7 @@ class CheckService extends Service
|
|
|
|
|
|
return [true, $model->toArray()];
|
|
|
}
|
|
|
+
|
|
|
public function waitConstruction($data){
|
|
|
$model = Construction::where('id',$data['id'])
|
|
|
->where('del_time',0)
|
|
@@ -197,6 +243,7 @@ class CheckService extends Service
|
|
|
|
|
|
return [true, $model->toArray()];
|
|
|
}
|
|
|
+
|
|
|
public function waitReturnExchange($data){
|
|
|
$model = ReturnExchangeOrder::where('id',$data['id'])
|
|
|
->where('del_time',0)
|
|
@@ -210,6 +257,7 @@ class CheckService extends Service
|
|
|
|
|
|
return [true, $model->toArray()];
|
|
|
}
|
|
|
+
|
|
|
public function waitSales($data){
|
|
|
$model = SalesOrder::where('id', $data['id'])
|
|
|
->where('del_time',0)
|
|
@@ -225,6 +273,171 @@ class CheckService extends Service
|
|
|
}
|
|
|
//改为待审核---------------------------------
|
|
|
|
|
|
+ //自动生成-----------------------------------
|
|
|
+ //总社派给分社的合同 完成生成虚拟采购单
|
|
|
+ public function createPurchaseOrder($order,$user){
|
|
|
+ //快递件
|
|
|
+ if($order['sales_order_type'] == SalesOrder::Order_type_two) return [true,''];
|
|
|
+
|
|
|
+ //不是总公司的合同
|
|
|
+ $head = $user['head'] ?? [];
|
|
|
+ $head = $head['id'] ?? 0; //总社id
|
|
|
+ if($head != $order['top_depart_id']) return [true, ''];
|
|
|
+
|
|
|
+ $see = SeeRange::where('del_time',0)
|
|
|
+ ->where('data_id',$order['id'])
|
|
|
+ ->where('data_type',SeeRange::type_seven)
|
|
|
+ ->where('type',SeeRange::data_three)
|
|
|
+ ->first();
|
|
|
+ if(empty($see)) return [false, '未找到指派分社信息'];
|
|
|
+ $depart_id = $see->param_id;//指派的分社
|
|
|
+
|
|
|
+ //总社指派给自己
|
|
|
+ if($depart_id == $head) return [true, ''];
|
|
|
+
|
|
|
+ //获取指派分社时候的金额
|
|
|
+ $fee = SalesOrderOtherFee::where('del_time',0)
|
|
|
+ ->where('sales_order_id',$order['id'])
|
|
|
+ ->first();
|
|
|
+ if(empty($fee)) return [false, '未找到指派分社时填写的金额'];
|
|
|
+ $fee = $fee->toArray();
|
|
|
+
|
|
|
+ $order_number = (new OrderNoService())->createOrderNumber(PurchaseOrderSpecial::prefix);
|
|
|
+ $storehouse = Storehouse::where('depart_id',$head)->value('id');
|
|
|
+ $product = SalesOrderProductInfo::where('del_time',0)
|
|
|
+ ->where('sales_order_id',$order['id'])
|
|
|
+ ->select('product_id','number','retail_price')
|
|
|
+ ->get()->toArray();
|
|
|
+ $product_map = $rate = [];
|
|
|
+ $total = 0;
|
|
|
+ foreach ($product as $value){
|
|
|
+ $total += $value['number'] * $value['retail_price'];
|
|
|
+ if(isset($product_map[$value['product_id']])){
|
|
|
+ $product_map[$value['product_id']] += $value['retail_price'] * $value['number'];
|
|
|
+ }else{
|
|
|
+ $product_map[$value['product_id']] = $value['retail_price'] * $value['number'];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ foreach ($product_map as $key => $value){
|
|
|
+ $rate[$key] = sprintf("%.2f", round($value / $total, 2));
|
|
|
+ }
|
|
|
+
|
|
|
+ $model = new PurchaseOrderSpecial();
|
|
|
+ $model->order_number = $order_number;
|
|
|
+ $model->sales_order_id = $order['id'];
|
|
|
+ $model->depart_id = $head;
|
|
|
+ $model->top_depart_id = $head;
|
|
|
+ $model->crt_id = Employee::SPECIAL_ADMIN;
|
|
|
+ $model->purchase_id = Employee::SPECIAL_ADMIN;
|
|
|
+ $model->purchase_total = $fee['other_fee_1'] ?? 0;
|
|
|
+ $model->storehouse_id = $storehouse ?? 0;
|
|
|
+ $model->save();
|
|
|
+ if(empty($model->id)) return [false,'采购单主信息生成失败'];
|
|
|
+ $purchase_order_id = $model->id;
|
|
|
+
|
|
|
+ $insert = [];$product_total = 0;
|
|
|
+ foreach ($product as $value){
|
|
|
+ $rate_tmp = $rate[$value['product_id']] ?? 0;
|
|
|
+ $price = sprintf("%.2f", round($rate_tmp * $fee['other_fee_1'] / $value['number'], 2));
|
|
|
+ $product_total += $price * $value['number'];
|
|
|
+ $insert[] = [
|
|
|
+ 'purchase_order_special_id' => $purchase_order_id,
|
|
|
+ 'product_id' => $value['product_id'],
|
|
|
+ 'order_number' => $order_number,
|
|
|
+ 'number' => $value['number'],
|
|
|
+ 'price' => $price,
|
|
|
+ 'storehouse_id' => $storehouse,
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ PurchaseOrderSpecialInfo::insert($insert);
|
|
|
+ PurchaseOrderSpecial::where('id',$purchase_order_id)->update(['total' => $product_total]);
|
|
|
+
|
|
|
+ return [true, ''];
|
|
|
+ }
|
|
|
+
|
|
|
+ //分社订货合同
|
|
|
+ public function createPurchaseOrderSales($order,$user){
|
|
|
+ //没有供应商 不创建合同
|
|
|
+ if(empty($order['supplier'])) return [true, ''];
|
|
|
+ //总公司的采购单 不创建合同
|
|
|
+ $head = $user['head'] ?? [];
|
|
|
+ $head = $head['id'] ?? 0; //总社id
|
|
|
+ if($head == $order['top_depart_id']) return [true, ''];
|
|
|
+ //分社公司的采购单 不向总供应商采购 不创建合同
|
|
|
+ $is_create = Supplier::where('id',$order['supplier'])->value('is_main');
|
|
|
+ if(empty($is_create)) return [true, ''];
|
|
|
+
|
|
|
+ $prefix = SalesOrder::$prefix[SalesOrder::Model_type_two];
|
|
|
+ $order_number = OrderNoService::createSalesOrderNumber($prefix);
|
|
|
+ $product = PurchaseOrderInfo::where('del_time',0)
|
|
|
+ ->where('purchase_order_id',$order['id'])
|
|
|
+ ->get()->toArray();
|
|
|
+ if(empty($product)) return [false, '采购订单产品数据不能为空'];
|
|
|
+
|
|
|
+ $time = time();
|
|
|
+ $depart_id = Depart::where('del_time',0)->where('parent_id',0)->where('is_main',1)->value('id');
|
|
|
+ $model = new SalesOrder();
|
|
|
+ $model->model_type = SalesOrder::Model_type_two;
|
|
|
+ $model->sales_order_type = SalesOrder::Order_type_one;
|
|
|
+ $model->order_number = $order_number;
|
|
|
+ $model->crt_id = $order['crt_id'];
|
|
|
+ $model->depart_id = $depart_id;
|
|
|
+ $model->top_depart_id = $depart_id;
|
|
|
+ $model->other_fee = $order['other_fee'];
|
|
|
+ $model->discount_fee = $order['discount_fee'];
|
|
|
+ $model->contract_fee = $order['purchase_total'];
|
|
|
+ $model->sign_time = $time;
|
|
|
+
|
|
|
+ $model->save();
|
|
|
+ $sales_order_id = $model->id;
|
|
|
+
|
|
|
+ //产品字典
|
|
|
+ $product_map = (new ProductService())->getProductDetail(array_column($product,'product_id'));
|
|
|
+
|
|
|
+// //获取产品采购使用金额
|
|
|
+// $map = (new ProductService())->getProductPrice(array_column($product,'product_id'));
|
|
|
+// //获取部门目前使用的分社价
|
|
|
+// $basic_type_id = Depart::where('id',$order['top_depart_id'])->value('basic_type_id');
|
|
|
+// //产品对应的分社价
|
|
|
+// $new_map = [];
|
|
|
+// foreach ($map as $product_id => $value){
|
|
|
+// foreach ($value as $v){
|
|
|
+// if($v['basic_type_id'] == $basic_type_id && ! empty($v['price'])) $new_map[$product_id] = $v['price'];
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+ $insert = [];
|
|
|
+ $product_total = 0;
|
|
|
+ foreach ($product as $value){
|
|
|
+ $tmp = $product_map[$value['product_id']] ?? [];
|
|
|
+// $fs_price = $new_map[$value['product_id']] ?? 0;
|
|
|
+ //有分社价就是分社价格 没有就是零售
|
|
|
+// $price = $fs_price ? $fs_price : $tmp['retail_price'];
|
|
|
+ $product_total += $value['price'] * $value['number'];
|
|
|
+ $insert[] = [
|
|
|
+ 'sales_order_id' => $sales_order_id,
|
|
|
+ 'product_id' => $value['product_id'],
|
|
|
+ 'number' => $value['number'],
|
|
|
+ 'basic_type_id' => $value['basic_type_id'],
|
|
|
+ 'price' => $value['price'],
|
|
|
+ 'cost' => $tmp['cost'] ?? 0,
|
|
|
+ 'retail_price' => $tmp['retail_price'] ?? 0,
|
|
|
+ 'final_amount' => $value['price'] * $value['number'],
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ $bool = SalesOrderProductInfo::insert($insert);
|
|
|
+ if(! $bool) return [false,'合同生成失败!'];
|
|
|
+
|
|
|
+ //反写数据
|
|
|
+ $rate = ($product_total + $order['other_fee'] - $order['discount_fee']) / ($product_total + $order['other_fee'] ?? 1);
|
|
|
+ SalesOrder::where('id',$sales_order_id)->update([
|
|
|
+ 'product_total' => $product_total,
|
|
|
+ 'rate' =>$rate
|
|
|
+ ]);
|
|
|
+
|
|
|
+ return [true,''];
|
|
|
+ }
|
|
|
+ //自动生成-----------------------------------
|
|
|
|
|
|
public function confirmInvoiceOrder($data){
|
|
|
$model = InvoiceOrder::where('order_number',$data['order_number'])
|
|
@@ -353,93 +566,6 @@ class CheckService extends Service
|
|
|
return [true,''];
|
|
|
}
|
|
|
|
|
|
- //分社订货合同
|
|
|
- public function createPurchaseOrderSales($order){
|
|
|
- //没有供应商 不创建合同
|
|
|
- if(empty($order['supplier'])) return [true, ''];
|
|
|
- //总公司的采购单 不创建合同
|
|
|
- $depart = Depart::where('del_time',0)
|
|
|
- ->where('is_main',1)
|
|
|
- ->where('parent_id',0)
|
|
|
- ->first();
|
|
|
- $head = 0;
|
|
|
- if(! empty($depart)) $head = $depart->id;//总社
|
|
|
- if($head == $order['top_depart_id']) return [true, ''];
|
|
|
- //分社公司的采购单 不向总供应商采购 不创建合同
|
|
|
- $is_create = Supplier::where('id',$order['supplier'])->value('is_main');
|
|
|
- if(empty($is_create)) return [true, ''];
|
|
|
-
|
|
|
- $prefix = SalesOrder::$prefix[SalesOrder::Model_type_two];
|
|
|
- $order_number = OrderNoService::createSalesOrderNumber($prefix);
|
|
|
- $product = PurchaseOrderInfo::where('del_time',0)
|
|
|
- ->where('purchase_order_id',$order['id'])
|
|
|
- ->get()->toArray();
|
|
|
- if(empty($product)) return [false, '采购订单产品数据不能为空'];
|
|
|
-
|
|
|
- $time = time();
|
|
|
- $depart_id = Depart::where('del_time',0)->where('parent_id',0)->where('is_main',1)->value('id');
|
|
|
- $model = new SalesOrder();
|
|
|
- $model->model_type = SalesOrder::Model_type_two;
|
|
|
- $model->sales_order_type = SalesOrder::Order_type_one;
|
|
|
- $model->order_number = $order_number;
|
|
|
- $model->crt_id = $order['crt_id'];
|
|
|
- $model->depart_id = $depart_id;
|
|
|
- $model->top_depart_id = $depart_id;
|
|
|
- $model->other_fee = $order['other_fee'];
|
|
|
- $model->discount_fee = $order['discount_fee'];
|
|
|
- $model->contract_fee = $order['purchase_total'];
|
|
|
- $model->sign_time = $time;
|
|
|
-
|
|
|
- $model->save();
|
|
|
- $sales_order_id = $model->id;
|
|
|
-
|
|
|
- //产品字典
|
|
|
- $product_map = (new ProductService())->getProductDetail(array_column($product,'product_id'));
|
|
|
-
|
|
|
-// //获取产品采购使用金额
|
|
|
-// $map = (new ProductService())->getProductPrice(array_column($product,'product_id'));
|
|
|
-// //获取部门目前使用的分社价
|
|
|
-// $basic_type_id = Depart::where('id',$order['top_depart_id'])->value('basic_type_id');
|
|
|
-// //产品对应的分社价
|
|
|
-// $new_map = [];
|
|
|
-// foreach ($map as $product_id => $value){
|
|
|
-// foreach ($value as $v){
|
|
|
-// if($v['basic_type_id'] == $basic_type_id && ! empty($v['price'])) $new_map[$product_id] = $v['price'];
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
- $insert = [];
|
|
|
- $product_total = 0;
|
|
|
- foreach ($product as $value){
|
|
|
- $tmp = $product_map[$value['product_id']] ?? [];
|
|
|
-// $fs_price = $new_map[$value['product_id']] ?? 0;
|
|
|
- //有分社价就是分社价格 没有就是零售
|
|
|
-// $price = $fs_price ? $fs_price : $tmp['retail_price'];
|
|
|
- $product_total += $value['price'] * $value['number'];
|
|
|
- $insert[] = [
|
|
|
- 'sales_order_id' => $sales_order_id,
|
|
|
- 'product_id' => $value['product_id'],
|
|
|
- 'number' => $value['number'],
|
|
|
- 'basic_type_id' => $value['basic_type_id'],
|
|
|
- 'price' => $value['price'],
|
|
|
- 'cost' => $tmp['cost'] ?? 0,
|
|
|
- 'retail_price' => $tmp['retail_price'] ?? 0,
|
|
|
- 'final_amount' => $value['price'] * $value['number'],
|
|
|
- ];
|
|
|
- }
|
|
|
- $bool = SalesOrderProductInfo::insert($insert);
|
|
|
- if(! $bool) return [false,'合同生成失败!'];
|
|
|
-
|
|
|
- //反写数据
|
|
|
- $rate = ($product_total + $order['other_fee'] - $order['discount_fee']) / ($product_total + $order['other_fee'] ?? 1);
|
|
|
- SalesOrder::where('id',$sales_order_id)->update([
|
|
|
- 'product_total' => $product_total,
|
|
|
- 'rate' =>$rate
|
|
|
- ]);
|
|
|
-
|
|
|
- return [true,''];
|
|
|
- }
|
|
|
-
|
|
|
public function confirmConstruction($data){
|
|
|
$model = Construction::where('order_number',$data['order_number'])
|
|
|
->where('del_time',0)
|
|
@@ -632,91 +758,6 @@ class CheckService extends Service
|
|
|
return [true, $model->toArray()];
|
|
|
}
|
|
|
|
|
|
- //总社派给分社的合同 完成生成虚拟采购单
|
|
|
- public function createPurchaseOrder($order){
|
|
|
- //快递件
|
|
|
- if($order['sales_order_type'] == SalesOrder::Order_type_two) return [true,''];
|
|
|
-
|
|
|
- //不是总公司的合同
|
|
|
- $depart = Depart::where('del_time',0)
|
|
|
- ->where('is_main',1)
|
|
|
- ->where('parent_id',0)
|
|
|
- ->first();
|
|
|
- $head = 0;
|
|
|
- if(! empty($depart)) $head = $depart->id;//总社
|
|
|
- if($head != $order['top_depart_id']) return [true, ''];
|
|
|
-
|
|
|
- $see = SeeRange::where('del_time',0)
|
|
|
- ->where('data_id',$order['id'])
|
|
|
- ->where('data_type',SeeRange::type_seven)
|
|
|
- ->where('type',SeeRange::data_three)
|
|
|
- ->first();
|
|
|
- if(empty($see)) return [false, '未找到指派分社信息'];
|
|
|
- $depart_id = $see->param_id;//指派的分社
|
|
|
-
|
|
|
- //总社指派给自己
|
|
|
- if($depart_id == $head) return [true, ''];
|
|
|
-
|
|
|
- //获取指派分社时候的金额
|
|
|
- $fee = SalesOrderOtherFee::where('del_time',0)
|
|
|
- ->where('sales_order_id',$order['id'])
|
|
|
- ->first();
|
|
|
- if(empty($fee)) return [false, '未找到指派分社时填写的金额'];
|
|
|
- $fee = $fee->toArray();
|
|
|
-
|
|
|
- $order_number = (new OrderNoService())->createOrderNumber(PurchaseOrderSpecial::prefix);
|
|
|
- $storehouse = Storehouse::where('depart_id',$head)->value('id');
|
|
|
- $product = SalesOrderProductInfo::where('del_time',0)
|
|
|
- ->where('sales_order_id',$order['id'])
|
|
|
- ->select('product_id','number','retail_price')
|
|
|
- ->get()->toArray();
|
|
|
- $product_map = $rate = [];
|
|
|
- $total = 0;
|
|
|
- foreach ($product as $value){
|
|
|
- $total += $value['number'] * $value['retail_price'];
|
|
|
- if(isset($product_map[$value['product_id']])){
|
|
|
- $product_map[$value['product_id']] += $value['retail_price'] * $value['number'];
|
|
|
- }else{
|
|
|
- $product_map[$value['product_id']] = $value['retail_price'] * $value['number'];
|
|
|
- }
|
|
|
- }
|
|
|
- foreach ($product_map as $key => $value){
|
|
|
- $rate[$key] = sprintf("%.2f", round($value / $total, 2));
|
|
|
- }
|
|
|
-
|
|
|
- $model = new PurchaseOrderSpecial();
|
|
|
- $model->order_number = $order_number;
|
|
|
- $model->sales_order_id = $order['id'];
|
|
|
- $model->depart_id = $head;
|
|
|
- $model->top_depart_id = $head;
|
|
|
- $model->crt_id = Employee::SPECIAL_ADMIN;
|
|
|
- $model->purchase_id = Employee::SPECIAL_ADMIN;
|
|
|
- $model->purchase_total = $fee['other_fee_1'] ?? 0;
|
|
|
- $model->storehouse_id = $storehouse ?? 0;
|
|
|
- $model->save();
|
|
|
- if(empty($model->id)) return [false,'采购单主信息生成失败'];
|
|
|
- $purchase_order_id = $model->id;
|
|
|
-
|
|
|
- $insert = [];$product_total = 0;
|
|
|
- foreach ($product as $value){
|
|
|
- $rate_tmp = $rate[$value['product_id']] ?? 0;
|
|
|
- $price = sprintf("%.2f", round($rate_tmp * $fee['other_fee_1'] / $value['number'], 2));
|
|
|
- $product_total += $price * $value['number'];
|
|
|
- $insert[] = [
|
|
|
- 'purchase_order_special_id' => $purchase_order_id,
|
|
|
- 'product_id' => $value['product_id'],
|
|
|
- 'order_number' => $order_number,
|
|
|
- 'number' => $value['number'],
|
|
|
- 'price' => $price,
|
|
|
- 'storehouse_id' => $storehouse,
|
|
|
- ];
|
|
|
- }
|
|
|
- PurchaseOrderSpecialInfo::insert($insert);
|
|
|
- PurchaseOrderSpecial::where('id',$purchase_order_id)->update(['total' => $product_total]);
|
|
|
-
|
|
|
- return [true, ''];
|
|
|
- }
|
|
|
-
|
|
|
public function reject_sales($data){
|
|
|
$model = SalesOrder::where('order_number', $data['order_number'])
|
|
|
->where('del_time',0)
|
|
@@ -953,27 +994,46 @@ class CheckService extends Service
|
|
|
list($status,$msg) = $this->limitingSendRequestBackgExpire($data['order_number'].$data['opt_case']);
|
|
|
if(! $status) return [false,$msg];
|
|
|
|
|
|
- //单据状态改为待审批方法
|
|
|
+ //走审批流 单据校验
|
|
|
+ $function_check = self::$opt_1case_check[$data['opt_case']] ?? '';
|
|
|
+ //走审批流 单据状态改为待审批方法
|
|
|
$function = self::$opt_1case[$data['opt_case']] ?? '';
|
|
|
+
|
|
|
//单据不走审批流
|
|
|
$function2 = self::$finished[$data['opt_case']] ?? '';
|
|
|
try{
|
|
|
DB::beginTransaction();
|
|
|
|
|
|
+ //不走审批流,更新完直接返回
|
|
|
if($function2) {
|
|
|
list($bool,$msg) = $this->$function2($data);
|
|
|
if($bool) {
|
|
|
$order = $msg;
|
|
|
- $this->createRecordAndInventoryMy($data,$user,$order);
|
|
|
- DB::commit();
|
|
|
- return [true, ''];
|
|
|
+
|
|
|
+ list($bool,$err) = $this->createRecordAndInventoryMy($data,$user,$order);
|
|
|
+ if($bool){
|
|
|
+ DB::commit();
|
|
|
+ return [true, ''];
|
|
|
+ }else{
|
|
|
+ DB::rollBack();
|
|
|
+ return [false, $err];
|
|
|
+ }
|
|
|
}else{
|
|
|
DB::rollBack();
|
|
|
return [false, $msg];
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- //从未审核变成待审核
|
|
|
+ //需要审批流,校验
|
|
|
+ if($function_check){
|
|
|
+ list($bool,$msg) = $this->$function_check($data, $user);
|
|
|
+ if(! $bool){
|
|
|
+ DB::rollBack();
|
|
|
+ return [false, $msg];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //需要审批流,从未审核变成待审核
|
|
|
if($function){
|
|
|
list($bool,$msg) = $this->$function($data);
|
|
|
|
|
@@ -1267,7 +1327,7 @@ class CheckService extends Service
|
|
|
}
|
|
|
|
|
|
if($create) {
|
|
|
- $bool = $this->$create($order);
|
|
|
+ $bool = $this->$create($order,$user);
|
|
|
if(! $bool) {
|
|
|
DB::rollBack();
|
|
|
return [false, $msg];
|