with('purchaseRequestMaterial.purchaseRequestMaterialDetails') ->whereHas('project', function ($query) use ($projectId) { //Cek dulu jika ada relationship project (dimana ini akan mentrigger SyncBootModel dulu berdasarkan bisnis unit) $query->where('project_id', '=', $projectId) //baru kondisi lain ->where(function ($subQuery) { $subQuery->where('status', '=', 2) ->orWhere('status', '=', 3); }); }) ->where(function($e){ $e->whereHas('purchaseRequestMaterial.purchaseRequestMaterialDetails',function ($query) { $query->whereRaw('CAST(qty AS SIGNED) > CAST(used_qty AS SIGNED)'); })->orWhereHas('purchaseRequestManuals.purchaseRequestManualDetails',function ($query) { $query->whereRaw('CAST(qty AS SIGNED) > CAST(used_qty AS SIGNED)'); })->orWhereHas('purchaseRequestVendors.purchaseRequestVendorDetails',function ($query) { $query->whereRaw('CAST(qty AS SIGNED) > CAST(used_qty AS SIGNED)'); })->orWhereHas('purchaseRequestOtherCosts.purchaseRequestOtherCostDetails',function ($query) { $query->whereRaw('CAST(qty AS SIGNED) > CAST(used_qty AS SIGNED)'); })->orWhereHas('purchaseRequestMachines.purchaseRequestMachineDetails',function ($query) { $query->whereRaw('CAST(qty AS SIGNED) > CAST(used_qty AS SIGNED)'); })->orWhereHas('purchaseRequestVendorManual.purchaseRequestVendorManualDetails',function ($query) { $query->whereRaw('CAST(qty AS SIGNED) > CAST(used_qty AS SIGNED)'); })->orWhereHas('purchaseRequestOtherCostManual.purchaseRequestOtherCostManualDetails',function ($query) { $query->whereRaw('CAST(qty AS SIGNED) > CAST(used_qty AS SIGNED)'); })->orWhereHas('purchaseRequestMachineManual.purchaseRequestMachineManualDetails',function ($query) { $query->whereRaw('CAST(qty AS SIGNED) > CAST(used_qty AS SIGNED)'); }); }); // ->with([ // 'purchaseRequestMaterial' => function ($query) { // $query->whereHas('purchaseRequestMaterialDetails', function ($query) { // $query->whereRaw('purchase_request_materials.qty > purchase_request_material_details.used_qty'); // }); // }, // 'purchaseRequestManuals' => function ($query) { // $query->whereHas('purchaseRequestManualDetails', function ($query) { // $query->whereRaw('purchase_request_manuals.qty > purchase_request_manual_details.used_qty'); // }); // }, // 'purchaseRequestVendors' => function ($query) { // $query->whereHas('purchaseRequestVendorDetails', function ($query) { // $query->whereRaw('purchase_request_vendors.qty > purchase_request_vendor_details.used_qty'); // }); // }, // ]); // dd($purchaseRequest->get()->toArray()); //tempat test responsenya klik dropdown return (new PaginateCollectionAttrBuilder) ->build( $purchaseRequest, (new PaginateBuilderAttr)->setSearchKeyword($search), new PaginateSchemaPurchaseRequest ); } public function getRemainingQtyVendor($purchaseRequestId, $vendorProductId) { return PurchaseRequestVendor::where([ ['purchase_request_id', '=', $purchaseRequestId], ['vendor_product_id', '=', $vendorProductId] ]) ->selectRaw('qty, used_qty') ->first(); } public function updateUsedQtyVendorDetail($createVendor, $vendorDetail, $isUpdated=false) { $updt = PurchaseRequestVendorDetail::whereHas('purchaseRequestVendor', function ($q) use ($createVendor) { $q->where([ ['purchase_request_id', '=', $createVendor->ref_pr], ['vendor_product_id', '=', $createVendor->vendor_product_id] ]); })->where('unit_price_id', $vendorDetail->unit_price_id)->first(); $qty = $isUpdated ? (float)$vendorDetail->qty : (float)$updt->used_qty + (float)$vendorDetail->qty; $updt->update([ "used_qty" => $qty ]); return $updt; } }