first(); } public function getMaterialWithUnitPrice($purchaseRequestId, $budgetPlanId, $forUpdate) { $purchaseRequestMaterial = PurchaseRequestMaterial::with(['material', 'purchaseRequestMaterialDetails.unitPrice.budgetPlanPrice' => function($e) use ($budgetPlanId) { $e->where("budget_plan_id",$budgetPlanId); } ])->whereHas('purchaseRequestMaterialDetails.unitPrice.budgetPlanPrice',function($e) use ($budgetPlanId) { $e->where("budget_plan_id",$budgetPlanId); })->where("purchase_request_id",$purchaseRequestId); if ($forUpdate == true) { $purchaseRequestMaterial; } else { $purchaseRequestMaterial->whereRaw("used_qty != qty"); } return $purchaseRequestMaterial->get(); } public function getQtyMaterial() { return PurchaseRequestMaterial::selectRaw('id, purchase_request_id, material_id, qty')->first(); } public function getRemainingQty($purchaseRequestId, $materialId) { return PurchaseRequestMaterial::where([ ['purchase_request_id', '=' , $purchaseRequestId], ['material_id', '=', $materialId] ]) ->selectRaw('id, purchase_request_id, material_id, qty, used_qty') ->first(); } public function updateUsedQtyMaterialDetail($createMaterial, $materialDetail, $isUpdated=false) { $updt = PurchaseRequestMaterialDetail::whereHas('purchaseRequestMaterial', function ($q) use ($createMaterial){ $q->where([ ['purchase_request_id', '=' , $createMaterial->ref_pr], ['material_id', '=', $createMaterial->material_id] ]); })->where('unit_price_id', $materialDetail->unit_price_id)->first(); $qty = $isUpdated ? (float)$materialDetail->qty : (float)$updt->used_qty + (float)$materialDetail->qty; $updt->update([ "used_qty" => $qty ]); } }