authorizeIe('ie.cpq.view'); $business_id = $request->session()->get('user.business_id'); $configurations = CpqConfiguration::forBusiness($business_id)->with(['contact', 'productPlatform'])->latest('id')->paginate(20); return view('industrialengineering::cpq.index', compact('configurations')); } public function create(Request $request) { $this->authorizeIe('ie.cpq.create'); $business_id = $request->session()->get('user.business_id'); $platforms = ProductPlatform::forBusiness($business_id)->pluck('name', 'id'); return view('industrialengineering::cpq.create', compact('platforms')); } public function configure($platformId, Request $request, CpqService $cpq) { $this->authorizeIe('ie.cpq.create'); $business_id = $request->session()->get('user.business_id'); $configurator = $cpq->getConfigurator($business_id, (int) $platformId); $platform = ProductPlatform::forBusiness($business_id)->findOrFail($platformId); return view('industrialengineering::cpq.configure', compact('configurator', 'platform')); } public function store(Request $request, CpqService $cpq) { $this->authorizeIe('ie.cpq.create'); $business_id = $request->session()->get('user.business_id'); $validated = $request->validate([ 'name' => 'required|string|max:255', 'product_platform_id' => 'nullable|integer', 'contact_id' => 'nullable|integer', 'base_bom_id' => 'nullable|integer', 'selected_options' => 'nullable|array', ]); $selected = $cpq->applyRules($validated['selected_options'] ?? [], $business_id); $validated['selected_options'] = $selected; $config = $cpq->buildConfiguration($business_id, $validated); return redirect()->action([self::class, 'show'], $config->id) ->with('status', ['success' => 1, 'msg' => __('industrialengineering::lang.cpq_created')]); } public function show($id) { $this->authorizeIe('ie.cpq.view'); $business_id = request()->session()->get('user.business_id'); $configuration = CpqConfiguration::forBusiness($business_id)->with(['contact', 'productPlatform'])->findOrFail($id); return view('industrialengineering::cpq.show', compact('configuration')); } public function quote($id, CpqService $cpq) { $this->authorizeIe('ie.cpq.create'); $business_id = request()->session()->get('user.business_id'); $configuration = CpqConfiguration::forBusiness($business_id)->findOrFail($id); $configuration->update(['status' => 'quoted']); return redirect()->back()->with('status', ['success' => 1, 'msg' => __('industrialengineering::lang.cpq_quoted')]); } }