unitEquivalences() ->with('unitOfMeasure') ->get() ->map(function ($eq) use ($inventory) { $basePrice = $inventory->price?->retail_price ?? 0; return [ 'id' => $eq->id, 'unit_of_measure_id' => $eq->unit_of_measure_id, 'unit_name' => $eq->unitOfMeasure->name, 'unit_abbreviation' => $eq->unitOfMeasure->abbreviation, 'conversion_factor' => $eq->conversion_factor, 'retail_price' => $eq->retail_price ?? round($basePrice * $eq->conversion_factor, 2), 'is_active' => $eq->is_active, 'created_at' => $eq->created_at, ]; }); return ApiResponse::OK->response([ 'equivalences' => $equivalences, 'base_unit' => $inventory->unitOfMeasure, ]); } public function store(UnitEquivalenceStoreRequest $request, Inventory $inventory) { $equivalence = $inventory->unitEquivalences()->create($request->validated()); $equivalence->load('unitOfMeasure'); return ApiResponse::CREATED->response([ 'message' => 'Equivalencia creada correctamente.', 'equivalence' => $equivalence, ]); } public function update(UnitEquivalenceUpdateRequest $request, Inventory $inventory, UnitEquivalence $equivalencia) { $equivalencia->update($request->validated()); return ApiResponse::OK->response([ 'message' => 'Equivalencia actualizada correctamente.', 'equivalence' => $equivalencia->fresh('unitOfMeasure'), ]); } public function destroy(Inventory $inventory, UnitEquivalence $equivalencia) { $equivalencia->delete(); return ApiResponse::OK->response([ 'message' => 'Equivalencia eliminada correctamente.', ]); } }