|
@@ -5,6 +5,7 @@ namespace App\Service;
|
|
use App\Model\Construction;
|
|
use App\Model\Construction;
|
|
use App\Model\ConstructionProductInfo;
|
|
use App\Model\ConstructionProductInfo;
|
|
use App\Model\Depart;
|
|
use App\Model\Depart;
|
|
|
|
+use App\Model\Employee;
|
|
use App\Model\InOutRecord;
|
|
use App\Model\InOutRecord;
|
|
use App\Model\InvoiceOrder;
|
|
use App\Model\InvoiceOrder;
|
|
use App\Model\InvoiceOrderInfo;
|
|
use App\Model\InvoiceOrderInfo;
|
|
@@ -24,6 +25,7 @@ use App\Model\SeeRange;
|
|
use App\Model\Setting;
|
|
use App\Model\Setting;
|
|
use App\Model\Storehouse;
|
|
use App\Model\Storehouse;
|
|
use App\Model\Supplier;
|
|
use App\Model\Supplier;
|
|
|
|
+use App\Service\Oa\OaService;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
|
|
class CheckService extends Service
|
|
class CheckService extends Service
|
|
@@ -36,16 +38,18 @@ class CheckService extends Service
|
|
const five = 5; //施工单
|
|
const five = 5; //施工单
|
|
const six = 6; //退换货单
|
|
const six = 6; //退换货单
|
|
const seven = 7; //采购单确认
|
|
const seven = 7; //采购单确认
|
|
|
|
+ const eight = 8; //合同确认
|
|
|
|
|
|
//中文对照
|
|
//中文对照
|
|
public $map = [
|
|
public $map = [
|
|
self::one => '收货单',
|
|
self::one => '收货单',
|
|
self::two => '发货单',//确认后出库
|
|
self::two => '发货单',//确认后出库
|
|
self::three => '采购单',//确认后入库
|
|
self::three => '采购单',//确认后入库
|
|
- self::four => '合同', // 合同完结
|
|
|
|
|
|
+ self::four => '合同', // 安装件 合同完结
|
|
self::five => '施工单',//确认后出库
|
|
self::five => '施工单',//确认后出库
|
|
self::six => '退换货单',//确认后出库或出库入库
|
|
self::six => '退换货单',//确认后出库或出库入库
|
|
self::seven => '采购单确认',
|
|
self::seven => '采购单确认',
|
|
|
|
+ self::eight => '合同确认',
|
|
];
|
|
];
|
|
|
|
|
|
//入库操作
|
|
//入库操作
|
|
@@ -61,6 +65,21 @@ class CheckService extends Service
|
|
|
|
|
|
const TYPE_ONE = 1;//通过
|
|
const TYPE_ONE = 1;//通过
|
|
const TYPE_TWO = 2;//不通过
|
|
const TYPE_TWO = 2;//不通过
|
|
|
|
+ const TYPE_THREE = 3;//通过后驳回
|
|
|
|
+
|
|
|
|
+ //改为待审核状态
|
|
|
|
+ public static $opt_1case = [
|
|
|
|
+ self::two => 'waitInvoice',//发货单
|
|
|
|
+ self::three => 'waitPurchase',//采购单 入库
|
|
|
|
+ self::five => 'waitConstruction',//施工单
|
|
|
|
+ self::six => 'waitReturnExchange',//退换货单
|
|
|
|
+ self::seven => 'waitPurchaseConfirm', //采购单确认
|
|
|
|
+ self::eight => 'waitSales', // 合同安装件 合同确认
|
|
|
|
+ ];
|
|
|
|
+
|
|
|
|
+ public static $finished = [
|
|
|
|
+ self::four => 'confirmSalesOrder', // 合同 安装件 合同完结
|
|
|
|
+ ];
|
|
|
|
|
|
//单据操作
|
|
//单据操作
|
|
public static $opt_case = [
|
|
public static $opt_case = [
|
|
@@ -69,7 +88,7 @@ class CheckService extends Service
|
|
self::five => 'confirmConstruction',
|
|
self::five => 'confirmConstruction',
|
|
self::six => 'confirmReturnExchangeOrder',
|
|
self::six => 'confirmReturnExchangeOrder',
|
|
self::seven => 'confirmPurchaseOrderState',
|
|
self::seven => 'confirmPurchaseOrderState',
|
|
- self::four => 'confirmSalesOrder',
|
|
|
|
|
|
+ self::eight => 'confirmSales', // 合同 安装件 合同确认
|
|
];
|
|
];
|
|
|
|
|
|
//单据库存流水
|
|
//单据库存流水
|
|
@@ -80,20 +99,115 @@ class CheckService extends Service
|
|
self::six => 'recordReturnExchangeOrder'
|
|
self::six => 'recordReturnExchangeOrder'
|
|
];
|
|
];
|
|
|
|
|
|
|
|
+ //自动生成
|
|
public static $create = [
|
|
public static $create = [
|
|
self::seven => 'createPurchaseOrderSales', //分社合同生成
|
|
self::seven => 'createPurchaseOrderSales', //分社合同生成
|
|
self::four => 'createPurchaseOrder', // 派给分社的合同确认以后生成虚拟采购单
|
|
self::four => 'createPurchaseOrder', // 派给分社的合同确认以后生成虚拟采购单
|
|
];
|
|
];
|
|
|
|
|
|
- public function confirmInvoiceOrder($data){
|
|
|
|
|
|
+ //审核通过后 驳回
|
|
|
|
+ public static $opt_case_reject = [
|
|
|
|
+ self::four => 'reject_sales', // 合同
|
|
|
|
+ self::three => 'reject_purchase', //采购
|
|
|
|
+ self::five => 'reject_construction',//施工单
|
|
|
|
+ self::six => 'reject_return_exchange',//退换货
|
|
|
|
+ ];
|
|
|
|
+
|
|
|
|
+ //审核通过后 驳回 产生流水
|
|
|
|
+ public static $reject_record = [
|
|
|
|
+ self::five => 'reject_record_construction', //施工单驳回
|
|
|
|
+ self::three => 'reject_record_purchase', //采购
|
|
|
|
+ self::six => 'reject_record_return_exchange',//退换货
|
|
|
|
+ ];
|
|
|
|
+
|
|
|
|
+ //改为待审核---------------------------------
|
|
|
|
+ public function waitInvoice($data){
|
|
$model = InvoiceOrder::where('id',$data['id'])
|
|
$model = InvoiceOrder::where('id',$data['id'])
|
|
->where('del_time',0)
|
|
->where('del_time',0)
|
|
->first();
|
|
->first();
|
|
if(empty($model)) return [false, '发货单不存在或已被删除'];
|
|
if(empty($model)) return [false, '发货单不存在或已被删除'];
|
|
- if($model->state != InvoiceOrder::STATE_ZERO) return [false, '请确认发货单状态,操作失败'];
|
|
|
|
|
|
+ if($model->state != InvoiceOrder::STATE_ONE) return [false, '请确认发货单状态,操作失败'];
|
|
|
|
|
|
InvoiceOrder::where('del_time',0)->where('id',$data['id'])
|
|
InvoiceOrder::where('del_time',0)->where('id',$data['id'])
|
|
->update(['state' => InvoiceOrder::STATE_ONE]);
|
|
->update(['state' => InvoiceOrder::STATE_ONE]);
|
|
|
|
+
|
|
|
|
+ return [true, $model->toArray()];
|
|
|
|
+ }
|
|
|
|
+ public function waitPurchaseConfirm($data){
|
|
|
|
+ $model = PurchaseOrder::where('id',$data['id'])
|
|
|
|
+ ->where('del_time',0)
|
|
|
|
+ ->first();
|
|
|
|
+ if(empty($model)) return [false,'采购单不存在或已被删除'];
|
|
|
|
+ if($model->state != PurchaseOrder::STATE_ZERO) return [false,'请确认采购单状态,操作失败'];
|
|
|
|
+
|
|
|
|
+ //待确认
|
|
|
|
+ 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)
|
|
|
|
+ ->first();
|
|
|
|
+ if(empty($model)) return [false, '采购订单不存在或已被删除'];
|
|
|
|
+ if($model->state != PurchaseOrder::STATE_TWO) return [false, '请确认采购订单状态,操作失败'];
|
|
|
|
+
|
|
|
|
+ //待入库
|
|
|
|
+ PurchaseOrder::where('del_time',0)->where('id',$data['id'])
|
|
|
|
+ ->update(['state' => PurchaseOrder::STATE_Three]);
|
|
|
|
+
|
|
|
|
+ return [true, $model->toArray()];
|
|
|
|
+ }
|
|
|
|
+ public function waitConstruction($data){
|
|
|
|
+ $model = Construction::where('id',$data['id'])
|
|
|
|
+ ->where('del_time',0)
|
|
|
|
+ ->first();
|
|
|
|
+ if(empty($model)) return [false, '施工单不存在或已被删除'];
|
|
|
|
+ if($model->state != Construction::STATE_ZERO) return [false, '请确认施工单状态,操作失败'];
|
|
|
|
+
|
|
|
|
+ //待确认
|
|
|
|
+ Construction::where('del_time',0)->where('id',$data['id'])
|
|
|
|
+ ->update(['state' => Construction::STATE_ONE]);
|
|
|
|
+
|
|
|
|
+ return [true, $model->toArray()];
|
|
|
|
+ }
|
|
|
|
+ public function waitReturnExchange($data){
|
|
|
|
+ $model = ReturnExchangeOrder::where('id',$data['id'])
|
|
|
|
+ ->where('del_time',0)
|
|
|
|
+ ->first();
|
|
|
|
+ if(empty($model)) return [false, '退换货单不存在或已被删除'];
|
|
|
|
+ if($model->state != ReturnExchangeOrder::State_zero) return [false, '请确认退换货单状态,操作失败'];
|
|
|
|
+
|
|
|
|
+ //待确认
|
|
|
|
+ ReturnExchangeOrder::where('del_time',0)->where('id',$data['id'])
|
|
|
|
+ ->update(['state' => ReturnExchangeOrder::State_one]);
|
|
|
|
+
|
|
|
|
+ return [true, $model->toArray()];
|
|
|
|
+ }
|
|
|
|
+ public function waitSales($data){
|
|
|
|
+ $model = SalesOrder::where('id', $data['id'])
|
|
|
|
+ ->where('del_time',0)
|
|
|
|
+ ->first();
|
|
|
|
+ if(empty($model)) return [false, '合同不存在或已被删除'];
|
|
|
|
+ //安装件
|
|
|
|
+ if($model->state != SalesOrder::State_zero) return [false, '请确认合同状态,操作失败'];
|
|
|
|
+
|
|
|
|
+ SalesOrder::where('del_time',0)->where('id',$data['id'])
|
|
|
|
+ ->update(['state' => SalesOrder::State_one]);
|
|
|
|
+
|
|
|
|
+ return [true, $model->toArray()];
|
|
|
|
+ }
|
|
|
|
+ //改为待审核---------------------------------
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ public function confirmInvoiceOrder($data){
|
|
|
|
+ $model = InvoiceOrder::where('id',$data['id'])
|
|
|
|
+ ->where('del_time',0)
|
|
|
|
+ ->first();
|
|
|
|
+ if(empty($model)) return [false, '发货单不存在或已被删除'];
|
|
|
|
+ if($model->state != InvoiceOrder::STATE_ONE) return [false, '请确认发货单状态,操作失败'];
|
|
|
|
+
|
|
|
|
+ InvoiceOrder::where('del_time',0)->where('id',$data['id'])
|
|
|
|
+ ->update(['state' => InvoiceOrder::STATE_TWO]);
|
|
SalesOrder::where('id',$model->sales_order_id)->update(['state' => SalesOrder::State2_one]);
|
|
SalesOrder::where('id',$model->sales_order_id)->update(['state' => SalesOrder::State2_one]);
|
|
|
|
|
|
return [true, $model->toArray()];
|
|
return [true, $model->toArray()];
|
|
@@ -135,9 +249,10 @@ class CheckService extends Service
|
|
->where('del_time',0)
|
|
->where('del_time',0)
|
|
->first();
|
|
->first();
|
|
if(empty($model)) return [false,'采购单不存在或已被删除'];
|
|
if(empty($model)) return [false,'采购单不存在或已被删除'];
|
|
- if(! empty($model->state)) return [false,'采购单已确认'];
|
|
|
|
|
|
+ if($model->state != PurchaseOrder::STATE_ONE) return [false,'请确认采购单状态,操作失败'];
|
|
|
|
|
|
- PurchaseOrder::where('id',$data['id'])->update(['state' => PurchaseOrder::STATE_ONE]);
|
|
|
|
|
|
+ //未入库
|
|
|
|
+ PurchaseOrder::where('id',$data['id'])->update(['state' => PurchaseOrder::STATE_TWO]);
|
|
return [true, $model->toArray()];
|
|
return [true, $model->toArray()];
|
|
}
|
|
}
|
|
|
|
|
|
@@ -146,10 +261,11 @@ class CheckService extends Service
|
|
->where('del_time',0)
|
|
->where('del_time',0)
|
|
->first();
|
|
->first();
|
|
if(empty($model)) return [false, '采购订单不存在或已被删除'];
|
|
if(empty($model)) return [false, '采购订单不存在或已被删除'];
|
|
- if($model->state != PurchaseOrder::STATE_ONE) return [false, '请确认采购订单状态,操作失败'];
|
|
|
|
|
|
+ if($model->state != PurchaseOrder::STATE_Three) return [false, '请确认采购订单状态,操作失败'];
|
|
|
|
|
|
|
|
+ // 已出库
|
|
PurchaseOrder::where('del_time',0)->where('id',$data['id'])
|
|
PurchaseOrder::where('del_time',0)->where('id',$data['id'])
|
|
- ->update(['state' => PurchaseOrder::STATE_TWO]);
|
|
|
|
|
|
+ ->update(['state' => PurchaseOrder::STATE_Four]);
|
|
|
|
|
|
return [true, $model->toArray()];
|
|
return [true, $model->toArray()];
|
|
}
|
|
}
|
|
@@ -187,12 +303,17 @@ class CheckService extends Service
|
|
}
|
|
}
|
|
|
|
|
|
//todo
|
|
//todo
|
|
- public function createPurchaseOrderSales($order, $user){
|
|
|
|
|
|
+ public function createPurchaseOrderSales($order){
|
|
//没有供应商 不创建合同
|
|
//没有供应商 不创建合同
|
|
if(empty($order['supplier'])) return [true, ''];
|
|
if(empty($order['supplier'])) return [true, ''];
|
|
//总公司的采购单 不创建合同
|
|
//总公司的采购单 不创建合同
|
|
- $top_depart_id = $user['head'] ?? [];
|
|
|
|
- if($top_depart_id['id'] == $order['top_depart_id']) 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');
|
|
$is_create = Supplier::where('id',$order['supplier'])->value('is_main');
|
|
if(empty($is_create)) return [true, ''];
|
|
if(empty($is_create)) return [true, ''];
|
|
@@ -264,11 +385,13 @@ class CheckService extends Service
|
|
->where('del_time',0)
|
|
->where('del_time',0)
|
|
->first();
|
|
->first();
|
|
if(empty($model)) return [false, '施工单不存在或已被删除'];
|
|
if(empty($model)) return [false, '施工单不存在或已被删除'];
|
|
- if($model->state != Construction::STATE_ZERO) return [false, '请确认施工单状态,操作失败'];
|
|
|
|
|
|
+ if($model->state != Construction::STATE_ONE) return [false, '请确认施工单状态,操作失败'];
|
|
|
|
|
|
|
|
+ //已确认
|
|
Construction::where('del_time',0)->where('id',$data['id'])
|
|
Construction::where('del_time',0)->where('id',$data['id'])
|
|
- ->update(['state' => Construction::STATE_ONE]);
|
|
|
|
- SalesOrder::where('id',$model->sales_order_id)->update(['state' => SalesOrder::State_three]);
|
|
|
|
|
|
+ ->update(['state' => Construction::STATE_TWO]);
|
|
|
|
+ //已下施工
|
|
|
|
+ SalesOrder::where('id',$model->sales_order_id)->update(['state' => SalesOrder::State_five]);
|
|
|
|
|
|
return [true, $model->toArray()];
|
|
return [true, $model->toArray()];
|
|
}
|
|
}
|
|
@@ -309,14 +432,14 @@ class CheckService extends Service
|
|
->where('del_time',0)
|
|
->where('del_time',0)
|
|
->first();
|
|
->first();
|
|
if(empty($model)) return [false, '退换货单不存在或已被删除'];
|
|
if(empty($model)) return [false, '退换货单不存在或已被删除'];
|
|
- if($model->state != ReturnExchangeOrder::State_zero) return [false, '请确认退换货单状态,操作失败'];
|
|
|
|
|
|
+ if($model->state != ReturnExchangeOrder::State_one) return [false, '请确认退换货单状态,操作失败'];
|
|
|
|
|
|
ReturnExchangeOrder::where('del_time',0)->where('id',$data['id'])
|
|
ReturnExchangeOrder::where('del_time',0)->where('id',$data['id'])
|
|
- ->update(['state' => ReturnExchangeOrder::State_one]);
|
|
|
|
|
|
+ ->update(['state' => ReturnExchangeOrder::State_two]);
|
|
|
|
|
|
if($data['data_type'] == ReturnExchangeOrder::Order_type){
|
|
if($data['data_type'] == ReturnExchangeOrder::Order_type){
|
|
SalesOrder::where('id',$data['id'])->update([
|
|
SalesOrder::where('id',$data['id'])->update([
|
|
- 'state' => SalesOrder::State_four
|
|
|
|
|
|
+ 'state' => SalesOrder::State_six
|
|
]);
|
|
]);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -386,20 +509,42 @@ class CheckService extends Service
|
|
->where('del_time',0)
|
|
->where('del_time',0)
|
|
->first();
|
|
->first();
|
|
if(empty($model)) return [false, '合同不存在或已被删除'];
|
|
if(empty($model)) return [false, '合同不存在或已被删除'];
|
|
|
|
+ //安装件
|
|
if($model->state == SalesOrder::State_five) return [false, '请确认合同状态,操作失败'];
|
|
if($model->state == SalesOrder::State_five) return [false, '请确认合同状态,操作失败'];
|
|
|
|
|
|
SalesOrder::where('del_time',0)->where('id',$data['id'])
|
|
SalesOrder::where('del_time',0)->where('id',$data['id'])
|
|
- ->update(['state' => SalesOrder::State_five]);
|
|
|
|
|
|
+ ->update(['state' => SalesOrder::State_seven]);
|
|
|
|
+
|
|
|
|
+ return [true, $model->toArray()];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public function confirmSales($data){
|
|
|
|
+ $model = SalesOrder::where('id', $data['id'])
|
|
|
|
+ ->where('del_time',0)
|
|
|
|
+ ->first();
|
|
|
|
+ if(empty($model)) return [false, '合同不存在或已被删除'];
|
|
|
|
+ if($model->state != SalesOrder::State_one) return [false, '请确认合同状态,操作失败'];
|
|
|
|
+
|
|
|
|
+ //已确认
|
|
|
|
+ SalesOrder::where('del_time',0)->where('id',$data['id'])
|
|
|
|
+ ->update(['state' => SalesOrder::State_two]);
|
|
|
|
|
|
return [true, $model->toArray()];
|
|
return [true, $model->toArray()];
|
|
}
|
|
}
|
|
|
|
|
|
//总社派给分社的合同 完成生成虚拟采购单
|
|
//总社派给分社的合同 完成生成虚拟采购单
|
|
- public function createPurchaseOrder($order, $user){
|
|
|
|
|
|
+ public function createPurchaseOrder($order){
|
|
|
|
+ //快递件
|
|
|
|
+ if($order['sales_order_type'] == SalesOrder::Order_type_two) return [true,''];
|
|
|
|
+
|
|
//不是总公司的合同
|
|
//不是总公司的合同
|
|
- $top_depart_id = $user['head'] ?? [];
|
|
|
|
- $top_depart_id = $top_depart_id['id'] ?? 0;
|
|
|
|
- if($top_depart_id != $order['top_depart_id']) 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)
|
|
$see = SeeRange::where('del_time',0)
|
|
->where('data_id',$order['id'])
|
|
->where('data_id',$order['id'])
|
|
@@ -410,7 +555,7 @@ class CheckService extends Service
|
|
$depart_id = $see->param_id;//指派的分社
|
|
$depart_id = $see->param_id;//指派的分社
|
|
|
|
|
|
//总社指派给自己
|
|
//总社指派给自己
|
|
- if($depart_id == $top_depart_id) return [true, ''];
|
|
|
|
|
|
+ if($depart_id == $head) return [true, ''];
|
|
|
|
|
|
//获取指派分社时候的金额
|
|
//获取指派分社时候的金额
|
|
$fee = SalesOrderOtherFee::where('del_time',0)
|
|
$fee = SalesOrderOtherFee::where('del_time',0)
|
|
@@ -420,7 +565,7 @@ class CheckService extends Service
|
|
$fee = $fee->toArray();
|
|
$fee = $fee->toArray();
|
|
|
|
|
|
$order_number = (new OrderNoService())->createOrderNumber(PurchaseOrderSpecial::prefix);
|
|
$order_number = (new OrderNoService())->createOrderNumber(PurchaseOrderSpecial::prefix);
|
|
- $storehouse = Storehouse::where('depart_id',$top_depart_id)->value('id');
|
|
|
|
|
|
+ $storehouse = Storehouse::where('depart_id',$head)->value('id');
|
|
$product = SalesOrderProductInfo::where('del_time',0)
|
|
$product = SalesOrderProductInfo::where('del_time',0)
|
|
->where('sales_order_id',$order['id'])
|
|
->where('sales_order_id',$order['id'])
|
|
->select('product_id','number','retail_price')
|
|
->select('product_id','number','retail_price')
|
|
@@ -442,10 +587,10 @@ class CheckService extends Service
|
|
$model = new PurchaseOrderSpecial();
|
|
$model = new PurchaseOrderSpecial();
|
|
$model->order_number = $order_number;
|
|
$model->order_number = $order_number;
|
|
$model->sales_order_id = $order['id'];
|
|
$model->sales_order_id = $order['id'];
|
|
- $model->depart_id = $top_depart_id;
|
|
|
|
- $model->top_depart_id = $top_depart_id;
|
|
|
|
- $model->crt_id = $user['id'];
|
|
|
|
- $model->purchase_id = $user['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->purchase_total = $fee['other_fee_1'] ?? 0;
|
|
$model->storehouse_id = $storehouse ?? 0;
|
|
$model->storehouse_id = $storehouse ?? 0;
|
|
$model->save();
|
|
$model->save();
|
|
@@ -472,58 +617,76 @@ class CheckService extends Service
|
|
return [true, ''];
|
|
return [true, ''];
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public function reject_sales($data){
|
|
|
|
+ $model = SalesOrder::where('id', $data['id'])
|
|
|
|
+ ->where('del_time',0)
|
|
|
|
+ ->first();
|
|
|
|
+ if(empty($model)) return [false, '合同不存在或已被删除'];
|
|
|
|
+ //安装件
|
|
|
|
+ if($model->state != SalesOrder::State_two) return [false, '请确认合同状态,操作失败'];
|
|
|
|
+
|
|
|
|
+ SalesOrder::where('del_time',0)->where('id',$data['id'])
|
|
|
|
+ ->update(['state' => SalesOrder::State_zero]);
|
|
|
|
+
|
|
|
|
+ return [true, $model->toArray()];
|
|
|
|
+ }
|
|
|
|
+
|
|
public function checkAll($data,$user){
|
|
public function checkAll($data,$user){
|
|
- if(empty($data['id']) || empty($data['opt_case'])) return [false,'必传参数不能为空或者参数值错误!'];
|
|
|
|
|
|
+ if(empty($data['id']) || empty($data['order_number'])|| empty($data['opt_case'])) return [false,'必传参数不能为空或者参数值错误!'];
|
|
|
|
|
|
- //具体方法
|
|
|
|
- $function = self::$opt_case[$data['opt_case']] ?? "";
|
|
|
|
- $record = self::$record[$data['opt_case']] ?? "";
|
|
|
|
- $create = self::$create[$data['opt_case']] ?? "";
|
|
|
|
|
|
+ list($status,$msg) = $this->limitingSendRequestBackgExpire($data['order_number'].$data['opt_case']);
|
|
|
|
+ if(! $status) return [false,$msg];
|
|
|
|
|
|
|
|
+ //单据状态改为待审批方法
|
|
|
|
+ $function = self::$opt_1case[$data['opt_case']] ?? '';
|
|
|
|
+ $function2 = self::$finished[$data['opt_case']] ?? '';
|
|
try{
|
|
try{
|
|
DB::beginTransaction();
|
|
DB::beginTransaction();
|
|
|
|
|
|
|
|
+ if($function2) {
|
|
|
|
+ list($bool,$msg) = $this->$function($data);
|
|
|
|
+ if($bool) {
|
|
|
|
+ DB::commit();
|
|
|
|
+ return [true, ''];
|
|
|
|
+ }else{
|
|
|
|
+ DB::rollBack();
|
|
|
|
+ return [false, $msg];
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //更新单据的状态 从未审核变成待审核
|
|
list($bool,$msg) = $this->$function($data);
|
|
list($bool,$msg) = $this->$function($data);
|
|
|
|
|
|
if(! $bool){
|
|
if(! $bool){
|
|
DB::rollBack();
|
|
DB::rollBack();
|
|
return [false, $msg];
|
|
return [false, $msg];
|
|
}
|
|
}
|
|
- $order = $msg;
|
|
|
|
|
|
|
|
- if($record) {
|
|
|
|
- //流水
|
|
|
|
- $bool = $this->$record($data, $order);
|
|
|
|
- if(! $bool) {
|
|
|
|
- DB::rollBack();
|
|
|
|
- return [false, $msg];
|
|
|
|
- }
|
|
|
|
- //库存
|
|
|
|
- $bool = $this->changeInventory($data, $order, $user);
|
|
|
|
- if(! $bool) {
|
|
|
|
- DB::rollBack();
|
|
|
|
- return [false, $msg];
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ //创建审批流
|
|
|
|
+ $args = [
|
|
|
|
+ 'order_no' => $data['order_number'],
|
|
|
|
+ 'menu_id' => $data['menu_id'] ?? 0,
|
|
|
|
+ 'opt_case' => $data['opt_case'],
|
|
|
|
+ 'order' => $msg,
|
|
|
|
+ ];
|
|
|
|
|
|
- if($create) {
|
|
|
|
- $bool = $this->$create($order, $user);
|
|
|
|
- if(! $bool) {
|
|
|
|
- DB::rollBack();
|
|
|
|
- return [false, $msg];
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ $return_msg = '';
|
|
|
|
+
|
|
|
|
+ $oa = new OaService();
|
|
|
|
+ $bool = $oa->createOaOrder($args);
|
|
|
|
+ if(! $bool) $return_msg = '审批失败!';
|
|
|
|
|
|
DB::commit();
|
|
DB::commit();
|
|
|
|
+ if($return_msg) return [false,$msg];
|
|
return [true, ''];
|
|
return [true, ''];
|
|
}catch (\Throwable $exception){
|
|
}catch (\Throwable $exception){
|
|
DB::rollBack();
|
|
DB::rollBack();
|
|
- return [false, $exception->getMessage().$exception->getLine()];
|
|
|
|
|
|
+ return [false, $exception->getMessage() . $exception->getFile(). $exception->getLine()];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
//更新库存
|
|
//更新库存
|
|
- public function changeInventory($data,$order,$user){
|
|
|
|
|
|
+ public function changeInventory($data,$order){
|
|
$number_symbol = "";
|
|
$number_symbol = "";
|
|
if(in_array($data['opt_case'],self::$in_opt)){
|
|
if(in_array($data['opt_case'],self::$in_opt)){
|
|
$number_symbol = ">";
|
|
$number_symbol = ">";
|
|
@@ -579,7 +742,13 @@ class CheckService extends Service
|
|
|
|
|
|
//是否锁定
|
|
//是否锁定
|
|
$lock = 0;
|
|
$lock = 0;
|
|
- if($user['head']['id'] != $order['top_depart_id']) $lock = DB::table('depart_set')->where('top_depart_id',$order['top_depart_id'])->value('param_one');
|
|
|
|
|
|
+ $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']) $lock = DB::table('depart_set')->where('top_depart_id',$order['top_depart_id'])->value('param_one');
|
|
|
|
|
|
$result = array_values($result);
|
|
$result = array_values($result);
|
|
foreach ($result as $key => $value){
|
|
foreach ($result as $key => $value){
|
|
@@ -607,4 +776,139 @@ class CheckService extends Service
|
|
|
|
|
|
return [true,''];
|
|
return [true,''];
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ //业务单据审批通过后 驳回 更新库存
|
|
|
|
+ public function changeInventoryReject($data){
|
|
|
|
+ $number_symbol = "<";
|
|
|
|
+ if(in_array($data['opt_case'],self::$in_opt)){
|
|
|
|
+ $number_symbol = "<";
|
|
|
|
+ }elseif (in_array($data['opt_case'],self::$out_opt)){
|
|
|
|
+ $number_symbol = ">";
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //获取单据最新数据时间
|
|
|
|
+ $latest = InOutRecord::where('del_time',0)
|
|
|
|
+ ->where('order_number',$data['order_number'])
|
|
|
|
+ ->where('number',$number_symbol,0)
|
|
|
|
+ ->select('crt_time')
|
|
|
|
+ ->orderBy('crt_time', 'desc')
|
|
|
|
+ ->first();
|
|
|
|
+
|
|
|
|
+ $model = InOutRecord::where('del_time',0)
|
|
|
|
+ ->where('order_number',$data['order_number'])
|
|
|
|
+ ->where('number',$number_symbol,0)
|
|
|
|
+ ->select('storehouse_id',DB::raw("sum(number) as number"),'roll_film_id','roll_film_number')
|
|
|
|
+ ->groupby('roll_film_id','roll_film_number','storehouse_id');
|
|
|
|
+ if(! empty($latest)) {
|
|
|
|
+ $t = $latest->toArray();
|
|
|
|
+ $model->where('crt_time',$t['crt_time']);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ $result = $model->get()->toArray();
|
|
|
|
+ if (empty($result)) return false;
|
|
|
|
+
|
|
|
|
+ foreach ($result as $value){
|
|
|
|
+ RollFilmInventory::where('roll_film_id',$value['roll_film_id'])
|
|
|
|
+ ->where('roll_film_number',$value['roll_film_number'])
|
|
|
|
+ ->where('storehouse_id',$value['storehouse_id'])
|
|
|
|
+ ->lockForUpdate()
|
|
|
|
+ ->update([
|
|
|
|
+ 'number' => DB::raw('number + ('. $value['number'] . ')'),
|
|
|
|
+ 'lock_number' => DB::raw('lock_number + ('. $value['number'] . ')')
|
|
|
|
+ ]);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public function createRecordAndInventory($data = []){
|
|
|
|
+ if(empty($data['id']) || empty($data['type']) || empty($data['opt_case'])) return [false, ''];
|
|
|
|
+
|
|
|
|
+ if($data['type'] == self::TYPE_THREE){
|
|
|
|
+ //通过后弃审
|
|
|
|
+ if(! isset(self::$opt_case_reject[$data['opt_case']])) return [false, ''];
|
|
|
|
+ //具体方法
|
|
|
|
+ $function = self::$opt_case_reject[$data['opt_case']];
|
|
|
|
+
|
|
|
|
+ //流水
|
|
|
|
+ $function2 = self::$reject_record[$data['opt_case']] ?? '';
|
|
|
|
+ try{
|
|
|
|
+ DB::beginTransaction();
|
|
|
|
+
|
|
|
|
+ //更新单据的状态
|
|
|
|
+ $bool = $this->$function($data);
|
|
|
|
+ if(! $bool){
|
|
|
|
+ DB::rollBack();
|
|
|
|
+ return [false, ''];
|
|
|
|
+ }
|
|
|
|
+ if($function2) {
|
|
|
|
+ //流水
|
|
|
|
+ $boolean = $this->$function2($data);
|
|
|
|
+ if(! $boolean) {
|
|
|
|
+ DB::rollBack();
|
|
|
|
+ return [false, ''];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //库存
|
|
|
|
+ $bool = $this->changeInventoryReject($data);
|
|
|
|
+ if(! $bool){
|
|
|
|
+ DB::rollBack();
|
|
|
|
+ return [false, ''];
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ DB::commit();
|
|
|
|
+ return [true, ''];
|
|
|
|
+ }catch (\Throwable $exception){
|
|
|
|
+ DB::rollBack();
|
|
|
|
+ return [false, $exception->getLine(). $exception->getMessage()];
|
|
|
|
+ }
|
|
|
|
+ }else{
|
|
|
|
+ //具体方法
|
|
|
|
+ $function = self::$opt_case[$data['opt_case']] ?? "";
|
|
|
|
+ $record = self::$record[$data['opt_case']] ?? "";
|
|
|
|
+ $create = self::$create[$data['opt_case']] ?? "";
|
|
|
|
+
|
|
|
|
+ try{
|
|
|
|
+ DB::beginTransaction();
|
|
|
|
+
|
|
|
|
+ list($bool,$msg) = $this->$function($data);
|
|
|
|
+
|
|
|
|
+ if(! $bool){
|
|
|
|
+ DB::rollBack();
|
|
|
|
+ return [false, $msg];
|
|
|
|
+ }
|
|
|
|
+ $order = $msg;
|
|
|
|
+
|
|
|
|
+ if($record) {
|
|
|
|
+ //流水
|
|
|
|
+ $bool = $this->$record($data, $order);
|
|
|
|
+ if(! $bool) {
|
|
|
|
+ DB::rollBack();
|
|
|
|
+ return [false, $msg];
|
|
|
|
+ }
|
|
|
|
+ //库存
|
|
|
|
+ $bool = $this->changeInventory($data, $order);
|
|
|
|
+ if(! $bool) {
|
|
|
|
+ DB::rollBack();
|
|
|
|
+ return [false, $msg];
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if($create) {
|
|
|
|
+ $bool = $this->$create($order);
|
|
|
|
+ if(! $bool) {
|
|
|
|
+ DB::rollBack();
|
|
|
|
+ return [false, $msg];
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ DB::commit();
|
|
|
|
+ return [true, ''];
|
|
|
|
+ }catch (\Throwable $exception){
|
|
|
|
+ DB::rollBack();
|
|
|
|
+ return [false, $exception->getMessage().$exception->getLine()];
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|