with(['material' => function ($query) { $query->selectRaw('id, name, unit, price'); }, 'purchaseRequestManualDetails' => function ($query) { $query->with(['unitPrice' => function ($query) { $query->selectRaw('id, name, unit, prices'); }]); }])->whereHas('purchaseRequest', function ($query) use ($purchaseRequestId) { $query->where('purchase_request_id', $purchaseRequestId); })->get(); $purchaseRequestManual->map(function ($query) { $remaining_qty = (float) str_replace(",", ".", $query->qty) - (float) str_replace(",", ".", $query->used_qty); $query->remaining_qty = (string) $remaining_qty; $query->purchaseRequestManualDetails->map(function ($q){ $q->remaining_qty = (float) str_replace(",", ".", $q->qty) - (float) str_replace(",", ".", $q->used_qty); return $q; }); return $query; }); return $purchaseRequestManual; } public function updateUsedQtyDetail($create, $detail, $isUpdated=false) { $updt = PurchaseRequestManualDetail::whereHas('purchaseRequestManual', function ($q) use ($create){ $q->where([ ['purchase_request_id', '=' , $create->ref_pr], ['material_id', '=', $create->manual_id] ]); // })->where('unit_price_id', $detail->unit_price_id)->get(); })->where('unit_price_id', $detail->unit_price_id)->first(); $qty = $isUpdated ? (float)$detail->qty : (float)$updt->used_qty + (float)$detail->qty; $updt->update([ "used_qty" => $qty ]); } }