diff --git a/app/Domains/Cart/Resources/CartItemResource.php b/app/Domains/Cart/Resources/CartItemResource.php index b1990f9..a742acd 100644 --- a/app/Domains/Cart/Resources/CartItemResource.php +++ b/app/Domains/Cart/Resources/CartItemResource.php @@ -22,8 +22,8 @@ class CartItemResource extends JsonResource return [ 'id' => $this->id, 'cantidad' => $this->cantidad, - 'precio_unitario' => $this->formatMoney($variant?->precio), - 'subtotal' => $this->formatMoney(($variant?->precio ?? 0) * $this->cantidad), + 'precio_unitario' => $this->formatMoney($product?->precio), + 'subtotal' => $this->formatMoney(($product?->precio ?? 0) * $this->cantidad), 'product' => $product === null ? null : [ 'id' => $product->id, 'nombre' => $product->nombre, @@ -31,8 +31,6 @@ class CartItemResource extends JsonResource ], 'variant' => $variant === null ? null : [ 'id' => $variant->id, - 'nombre' => $variant->nombre, - 'slug' => $variant->slug, 'definitions' => ProductVariantDefinitionResource::collection($variant->definitions), ], ]; diff --git a/app/Domains/Cart/Resources/CartResource.php b/app/Domains/Cart/Resources/CartResource.php index 2bd53f4..36defee 100644 --- a/app/Domains/Cart/Resources/CartResource.php +++ b/app/Domains/Cart/Resources/CartResource.php @@ -20,7 +20,7 @@ class CartResource extends JsonResource : collect(); $subtotal = $items->reduce( - fn (float $carry, $item): float => $carry + ((float) ($item->variant?->precio ?? 0) * $item->cantidad), + fn (float $carry, $item): float => $carry + ((float) ($item->variant?->product?->precio ?? 0) * $item->cantidad), 0.0, ); diff --git a/app/Domains/Catalog/Models/ProductVariant.php b/app/Domains/Catalog/Models/ProductVariant.php index 1d6b812..559c0f2 100644 --- a/app/Domains/Catalog/Models/ProductVariant.php +++ b/app/Domains/Catalog/Models/ProductVariant.php @@ -12,11 +12,7 @@ use Illuminate\Database\Eloquent\Relations\HasMany; #[Fillable([ 'producto_id', - 'slug', - 'nombre', 'stock', - 'descripcion', - 'precio', ])] class ProductVariant extends Model { @@ -29,7 +25,6 @@ class ProductVariant extends Model return [ 'producto_id' => 'integer', 'stock' => 'integer', - 'precio' => 'decimal:2', ]; } diff --git a/app/Domains/Catalog/Requests/StoreProductVariantRequest.php b/app/Domains/Catalog/Requests/StoreProductVariantRequest.php index b2a9ddb..72fead8 100644 --- a/app/Domains/Catalog/Requests/StoreProductVariantRequest.php +++ b/app/Domains/Catalog/Requests/StoreProductVariantRequest.php @@ -18,22 +18,8 @@ class StoreProductVariantRequest extends FormRequest */ public function rules(): array { - /** @var \App\Domains\Catalog\Models\Product|null $product */ - $product = $this->route('producto'); - return [ - 'slug' => [ - 'nullable', - 'string', - 'max:255', - Rule::unique('productos_variantes', 'slug')->where( - fn ($query) => $query->where('producto_id', $product?->id) - ), - ], - 'nombre' => ['nullable', 'string', 'max:255'], 'stock' => ['sometimes', 'integer', 'min:0'], - 'descripcion' => ['nullable', 'string'], - 'precio' => ['required', 'numeric', 'min:0'], 'definitions' => ['sometimes', 'array'], 'definitions.*.attribute_id' => [ 'required', diff --git a/app/Domains/Catalog/Requests/UpdateProductVariantRequest.php b/app/Domains/Catalog/Requests/UpdateProductVariantRequest.php index 496ae65..190fa51 100644 --- a/app/Domains/Catalog/Requests/UpdateProductVariantRequest.php +++ b/app/Domains/Catalog/Requests/UpdateProductVariantRequest.php @@ -2,7 +2,6 @@ namespace App\Domains\Catalog\Requests; -use App\Domains\Catalog\Models\ProductVariant; use App\Domains\Shared\Rules\ImageOrBase64Rule; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Validation\Rule; @@ -19,24 +18,8 @@ class UpdateProductVariantRequest extends FormRequest */ public function rules(): array { - /** @var ProductVariant|null $productVariant */ - $productVariant = $this->route('productVariant'); - /** @var \App\Domains\Catalog\Models\Product|null $product */ - $product = $this->route('producto'); - return [ - 'slug' => [ - 'nullable', - 'string', - 'max:255', - Rule::unique('productos_variantes', 'slug') - ->ignore($productVariant?->id) - ->where(fn ($query) => $query->where('producto_id', $product?->id)), - ], - 'nombre' => ['nullable', 'string', 'max:255'], 'stock' => ['sometimes', 'integer', 'min:0'], - 'descripcion' => ['nullable', 'string'], - 'precio' => ['required', 'numeric', 'min:0'], 'definitions' => ['sometimes', 'array'], 'definitions.*.attribute_id' => [ 'required', diff --git a/app/Domains/Catalog/Resources/ProductVariantResource.php b/app/Domains/Catalog/Resources/ProductVariantResource.php index beff12c..3cd3ba1 100644 --- a/app/Domains/Catalog/Resources/ProductVariantResource.php +++ b/app/Domains/Catalog/Resources/ProductVariantResource.php @@ -18,10 +18,7 @@ class ProductVariantResource extends JsonResource return [ 'id' => $this->id, 'producto_id' => $this->producto_id, - 'slug' => $this->slug, - 'nombre' => $this->nombre, - 'descripcion' => $this->descripcion, - 'precio' => $this->precio, + 'stock' => $this->stock, 'product' => ProductResource::make($this->whenLoaded('product')), 'definitions' => ProductVariantDefinitionResource::collection($this->whenLoaded('definitions')), 'images' => $this->whenLoaded('attachments', function () { diff --git a/app/Domains/Purchase/Controllers/PurchaseController.php b/app/Domains/Purchase/Controllers/PurchaseController.php index 1892b4e..53b38f3 100644 --- a/app/Domains/Purchase/Controllers/PurchaseController.php +++ b/app/Domains/Purchase/Controllers/PurchaseController.php @@ -104,7 +104,7 @@ class PurchaseController extends Controller /** @var ProductVariant $variant */ $variant = $variants->get((int) $item['producto_variante_id']); $quantity = (int) $item['cantidad']; - $unitPrice = (float) $variant->precio; + $unitPrice = (float) ($variant->product?->precio ?? 0); return [ 'producto_variante_id' => $variant->getKey(), diff --git a/app/Domains/Purchase/Resources/PurchaseItemResource.php b/app/Domains/Purchase/Resources/PurchaseItemResource.php index 8394001..688bc8c 100644 --- a/app/Domains/Purchase/Resources/PurchaseItemResource.php +++ b/app/Domains/Purchase/Resources/PurchaseItemResource.php @@ -31,8 +31,6 @@ class PurchaseItemResource extends JsonResource ], 'variant' => $variant === null ? null : [ 'id' => $variant->id, - 'nombre' => $variant->nombre, - 'slug' => $variant->slug, 'definitions' => ProductVariantDefinitionResource::collection($variant->definitions), ], ]; diff --git a/database/migrations/2026_06_24_000200_create_productos_variantes_table.php b/database/migrations/2026_06_24_000200_create_productos_variantes_table.php index 426406b..3288e24 100644 --- a/database/migrations/2026_06_24_000200_create_productos_variantes_table.php +++ b/database/migrations/2026_06_24_000200_create_productos_variantes_table.php @@ -14,11 +14,7 @@ return new class extends Migration Schema::create('productos_variantes', function (Blueprint $table) { $table->id(); $table->unsignedBigInteger('producto_id'); - $table->string('slug')->nullable(); - $table->string('nombre')->nullable(); $table->unsignedInteger('stock')->default(0); - $table->text('descripcion')->nullable(); - $table->decimal('precio', 10, 2); $table->timestamps(); $table->foreign('producto_id') diff --git a/database/seeders/ProductCatalogFromImagesSeeder.php b/database/seeders/ProductCatalogFromImagesSeeder.php index 4d2000b..2c96e47 100644 --- a/database/seeders/ProductCatalogFromImagesSeeder.php +++ b/database/seeders/ProductCatalogFromImagesSeeder.php @@ -200,11 +200,7 @@ class ProductCatalogFromImagesSeeder extends Seeder ]; $this->productService->createVariant($product, [ - 'slug' => $metadata['product_slug'].'-'.Str::slug((string) $size), - 'nombre' => $metadata['product_name'].' - Talle '.$size, 'stock' => $pricing['stock'], - 'descripcion' => $metadata['description'], - 'precio' => $pricing['price'], 'definitions' => $definitions, 'images' => $images, ]);