$data['name'], 'sku' => $data['sku'], 'barcode' => $data['barcode'] ?? null, 'category_id' => $data['category_id'], 'stock' => $data['stock'] ?? 0, ]); $price = Price::create([ 'catalog_item_id' => $catalogItem->id, 'cost' => $data['cost'], 'retail_price' => $data['retail_price'], 'tax' => $data['tax'] ?? 16.00, ]); return $catalogItem->load(['category', 'price']); }); } public function updateProduct(CatalogItem $catalogItem, array $data) { return DB::transaction(function () use ($catalogItem, $data) { // Actualizar campos de CatalogItem solo si están presentes $catalogItemData = array_filter([ 'name' => $data['name'] ?? null, 'sku' => $data['sku'] ?? null, 'barcode' => $data['barcode'] ?? null, 'category_id' => $data['category_id'] ?? null, 'stock' => $data['stock'] ?? null, ], fn($value) => $value !== null); if (!empty($catalogItemData)) { $catalogItem->update($catalogItemData); } // Actualizar campos de Price solo si están presentes $priceData = array_filter([ 'cost' => $data['cost'] ?? null, 'retail_price' => $data['retail_price'] ?? null, 'tax' => $data['tax'] ?? null, ], fn($value) => $value !== null); if (!empty($priceData)) { $catalogItem->price()->updateOrCreate( ['catalog_item_id' => $catalogItem->id], $priceData ); } return $catalogItem->fresh(['category', 'price']); }); } }