| 
					
				 | 
			
			
				@@ -0,0 +1,232 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<?php 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+namespace App\Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+use App\Model\Construction; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+use App\Model\ConstructionOrderSub; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+use App\Model\InOutRecord; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+use App\Model\Inventory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+use App\Model\InventoryInSub; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+use App\Model\InventoryOutSub; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+use App\Model\MaterialCharge; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+use App\Model\MaterialOrder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+use App\Model\MaterialOrderInSub; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+use App\Model\MaterialReturn; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+use App\Model\RollFilmInventory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+use App\Model\Setting; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+use App\Model\Transfer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+use App\Model\TransferInSub; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+use App\Model\TransferOutSub; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+use App\Model\Warranty; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+use App\Service\Oa\OaService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+use Illuminate\Support\Facades\DB; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 所有审批相关与流水 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @package App\Models 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class CheckService extends Service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //审批操作对应的数值 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const one = 1; //领料单申领区域审批 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const two = 2; //领料单发货区域审批 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const three = 3; //领料单收货区域审批 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const four = 4; //领料单入库区域审批 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const five = 5; //施工单审核 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const six = 6; //退料单审核 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const seven = 7; //调拨单详情审核 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const eight = 8; //调拨单入库审核 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const nine = 9; //调拨单出库审核 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const ten = 10; //盘点单详情审核 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const eleven = 11; //盘点单入库审核 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const twl = 12; //盘点单出库审核 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const thirteen = 13; //计费领料单审核 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //中文对照 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public $map = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::one => '领料单申领区域审批', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::two => '领料单发货区域审批', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::three => '领料单收货区域审批', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::four => '领料单入库区域审批', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::five => '施工单审核', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::six => '退料单审核', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::seven => '调拨单详情审核', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::eight => '调拨单入库审核', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::nine => '调拨单出库审核', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::ten => '盘点单详情审核', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::eleven => '盘点单入库审核', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::twl => '盘点单出库审核', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::thirteen => '计费领料单审核', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const TYPE_ONE = 1;//通过 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const TYPE_TWO = 2;//不通过 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //对应具体单子的具体操作数值(将待审批改为通过或者未审批) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public static $opt_case = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::one => 'check_material_order_apply', //领料单申领区域审批 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::two => 'check_material_order_send', //领料单发货区域审批 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::three => 'check_material_order_take', //领料单收货区域审批 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::four => 'check_material_order_In', //领料单入库区域审批 审批通过后有入库流水 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::five => 'check_construction', //施工单审核  审批通过后有出库流水 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::six => 'check_material_return', //退料单审核  审批通过后有出库流水 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::seven => 'check_transfer_sub', //调拨单详情审核 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::eight => 'check_transfer_in_sub', //调拨单入库审核  审批通过后有入库流水 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::nine => 'check_transfer_out_sub', //调拨单出库审核  审批通过后有出库流水 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::ten => 'check_inventory_sub', //盘点单详情审核 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::eleven => 'check_inventory_in_sub', //盘点单入库审核   审批通过后有入库流水 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::twl => 'check_inventory_out_sub', //盘点单出库审核  审批通过后有出库流水 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::thirteen => 'check_material_charge', //计费领料单审核 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //单子审批通过后产生流水 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public static $record = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::four => 'record_material_order_In', //领料单入库区域审批 审批通过后有入库流水 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::five => 'record_construction', //施工单审核  审批通过后有出库流水 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::six => 'record_material_return', //退料单审核  审批通过后有出库流水 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::eight => 'record_transfer_in_sub', //调拨单入库审核  审批通过后有入库流水 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::nine => 'record_transfer_out_sub', //调拨单出库审核  审批通过后有出库流水 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::eleven => 'record_inventory_in_sub', //盘点单入库审核   审批通过后有入库流水 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::twl => 'record_inventory_out_sub', //盘点单出库审核  审批通过后有出库流水 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //将状态改为待审核 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public static $opt_case2 = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::one => 'set_check_material_order_apply', //领料单申领区域审批 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::two => 'set_check_material_order_send', //领料单发货区域审批 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::three => 'set_check_material_order_take', //领料单收货区域审批 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::four => 'set_check_material_order_In', //领料单入库区域审批 审批通过后有入库流水 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::five => 'set_check_construction', //施工单审核  审批通过后有出库流水 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::six => 'set_check_material_return', //退料单审核  审批通过后有出库流水 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::seven => 'set_check_transfer_sub', //调拨单详情审核 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::eight => 'set_check_transfer_in_sub', //调拨单入库审核  审批通过后有入库流水 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::nine => 'set_check_transfer_out_sub', //调拨单出库审核  审批通过后有出库流水 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::ten => 'set_check_inventory_sub', //盘点单详情审核 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::eleven => 'set_check_inventory_in_sub', //盘点单入库审核   审批通过后有入库流水 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::twl => 'set_check_inventory_out_sub', //盘点单出库审核  审批通过后有出库流水 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::thirteen => 'set_check_material_charge', //计费领料单审核 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public static $opt_case3 = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self::five => 'create_warranty', //施工单审核 审批产生质保单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //将状态改为待审核 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public function set_status_to_one($data){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $modelOne = MaterialOrder::where('order_number',$data['order_number'])->where('del_time',0)->first(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //待审 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if($modelOne->apply_status >= MaterialOrder::STATE_ONE) return [false,'已待审或审核通过,操作失败!']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $modelOne->apply_status = MaterialOrder::STATE_ONE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $modelOne->save(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return [true,'']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * order_number 单据名称 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * opt_case 审核单据的区域 有已经定义的方法 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public function checkAll($data,$user){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(empty($data['order_number']) || empty($data['opt_case']) || ! isset(self::$opt_case2[$data['opt_case']])) return [false,'必传参数不能为空或者参数值错误!']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //具体方法 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $function = self::$opt_case2[$data['opt_case']]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $function2 = self::$opt_case3[$data['opt_case']] ?? ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            DB::beginTransaction(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //更新单据的状态 从待审变成已审核 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            list($bool,$msg) = $this->$function($data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(! $bool){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                DB::rollBack(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return [false, $msg]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if($function2){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                $this->$function2($data,$user); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //创建审批流 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            $args = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                'order_no' => $data['order_number'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                'menu_id' => $data['menu_id'] ?? 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                'type' => $data['opt_case'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            $oa = new OaService(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            $bool = $oa->createOaOrder($args); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            DB::commit(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return [true, '']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }catch (\Throwable $exception){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            DB::rollBack(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return [false, $exception->getMessage()]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //创建审批流 将状态改为待审核  结束 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //将待审核状态改为审批通过或者驳回 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public function check_status($data){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //产生流水 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public function record_create($data){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $result = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //写入流水 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        InOutRecord::insert($result); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 业务单据审核统一入库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * order_number 订单编号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * type 1 =》 通过  2  =》 驳回 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * opt_case 具体审核类型 已定义同名静态变量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public function createRecordAndInventory($data = []){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(empty($data['order_number']) || empty($data['type']) || empty($data['opt_case']) || ! isset(self::$opt_case[$data['opt_case']])) return [false,config('response.FAILED')]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //具体方法 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $function = self::$opt_case[$data['opt_case']]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            DB::beginTransaction(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //更新单据的状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            $bool = $this->$function($data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if($bool && $data['type'] == self::TYPE_ONE && isset(self::$record[$data['opt_case']])){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //审批通过 创建流水 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                $function_record = self::$record[$data['opt_case']]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                $boolean = $this->$function_record($data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(! $boolean) { //创建流水失败 数据库回滚 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    DB::rollBack(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return [false, config('response.FAILED')]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //更新库存 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                $inventy = new InventoryService(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                $boole = $inventy->changeInventory($data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(! $boole){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    DB::rollBack(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return [false, config('response.FAILED')]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            DB::commit(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return [true, config('response.SUCCESS')]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }catch (\Throwable $exception){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            DB::rollBack(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return [false, config('response.FAILED')]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |