gate('采购管理-采购-查询'); $paginateParams=$request->input(); $owner_ids=app('UserService')->getPermittingOwnerIds(auth()->user()); $procurements = Procurement::query() ->filter($filters) ->with(['initiator','ownerMaterial.material','ownerMaterial.owner'=>function($query)use($owner_ids){ $query->with('customer')->whereIn('id',$owner_ids); }])->paginate($param['paginate'] ?? 50); /** @var OwnerMaterialService $ownerMaterialService*/ $ownerMaterialService=app(OwnerMaterialService::class); $owners=$ownerMaterialService->getOwnerPermittingWithMaterial(); $materials=Material::query()->select('id','name')->get(); return view('procurement/procurement/index',compact('procurements','owners','materials','paginateParams')); } public function create() { $this->gate('采购管理-采购-新建'); /** @var OwnerMaterialService $ownerMaterialService*/ $ownerMaterialService=app(OwnerMaterialService::class); $owners=$ownerMaterialService->getOwnerPermittingWithMaterial(); return view('procurement/procurement/create',compact('owners')); } public function store(Request $request) { $this->gate('采购管理-采购-新建'); $param=$request->all(['owner_material_id','quantity','amount','unit_price']); $procurement=new Procurement([ 'owner_material_id'=>$param['owner_material_id'], 'quantity'=>$param['quantity'], 'amount'=>$param['amount'], 'unit_price'=>$param['unit_price'], 'initiator'=>Auth::user()['id'], ]); $procurement->save(); $number_id=$procurement['id']; $procurement_code='BSHC'; $procurement_code .= date ("ymd").str_pad($number_id>99999?$number_id%99999:$number_id,4,"0",STR_PAD_LEFT); $procurement->update(['code'=>$procurement_code]); return redirect('procurement/procurement/index')->with('successTip','新采购单“'.$procurement_code.'”添加成功'); } public function createProcurement(Request $request) { $this->gate('采购管理-采购-新建'); $param=$request->all(['owner_material_id','quantity','amount','unit_price']); try { $procurement=new Procurement([ 'owner_material_id'=>$param['owner_material_id'], 'quantity'=>$param['quantity'], 'amount'=>$param['amount'], 'unit_price'=>$param['unit_price'], 'initiator'=>Auth::user()['id'], ]); $procurement->save(); $number_id=$procurement['id']; $procurement_code='BSHC'; $procurement_code .= date ("ymd").str_pad($number_id>99999?$number_id%99999:$number_id,4,"0",STR_PAD_LEFT); $procurement->update(['code'=>$procurement_code]); $procurement = $procurement->loadMissing(['initiator','ownerMaterial.material','ownerMaterial.owner.customer']); if ($procurement) return ['success' => true,'data' => $procurement]; else return ['success' => false, 'message' => '添加失败']; } catch (\Exception $e) { return ['success' => false,'message' => $e->getMessage()]; } } public function show(Procurement $procurement) { // } public function edit(Procurement $procurement) { // } public function update(Request $request, Procurement $procurement) { // } public function destroy(Procurement $procurement) { // } public function checkBill(Request $request) { $this->gate('采购管理-财务-对账单'); $paginateParams=$request->input(); $procurementCheckSheets=ProcurementCheckSheet::query() ->with(['procurementDelivery.procurement.supplier','procurementDelivery.procurement.ownerMaterial.material','procurementDelivery.receiver',]) ->paginate($param['paginate'] ?? 50); $suppliers=Supplier::query()->select('id','name')->get(); $materials=Material::query()->select('id','name')->get(); return view('procurement/finance/checkBill',compact('procurementCheckSheets','suppliers','paginateParams','materials')); } public function procurementBill(Request $request,ProcurementFilters $filters) { $this->gate('采购管理-财务-采购账单'); $paginateParams=$request->input(); $owner_ids=app('UserService')->getPermittingOwnerIds(auth()->user()); $owners=app("OwnerService")->getIntersectPermitting(); $materials=Material::query()->select('id','name')->get(); $suppliers=Supplier::query()->select('id','name')->get(); $procurements = Procurement::query() ->filter($filters) ->with(['initiator','supplier','ownerMaterial.material','ownerMaterial.owner'=>function($query)use($owner_ids){ $query->with('customer')->whereIn('id',$owner_ids); }])->paginate($param['paginate'] ?? 50); return view('procurement/finance/procurementBill',compact('suppliers','materials','owners','paginateParams','procurements')); } public function monthlyBillReport(Request $request) { $this->gate('采购管理-财务-月账单报表'); $paginateParams=$request->input(); $procurementTotalBills=ProcurementTotalBill::query()->with('supplier')->paginate($param['paginate'] ?? 50); $suppliers=Supplier::query()->select('id','name')->get(); return view('procurement/finance/monthlyBillReport',compact('suppliers','procurementTotalBills','paginateParams')); } }