Skip to content

Commit 027de23

Browse files
committed
feat: update variant attribute values and improve product pricing logic
1 parent 9d43502 commit 027de23

File tree

7 files changed

+196
-201
lines changed

7 files changed

+196
-201
lines changed

prisma/initial_data.ts

Lines changed: 51 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -357,74 +357,74 @@ export const products = [
357357

358358
export const variantAttributeValues = [
359359
// --- POLOS (talla: S, M, L) ---
360-
{ attributeId: 1, productId: 1, value: "S", price: 20.0 },
361-
{ attributeId: 1, productId: 1, value: "M", price: 20.0 },
362-
{ attributeId: 1, productId: 1, value: "L", price: 20.0 },
360+
{ attributeId: 1, productId: 1, value: "Small", price: 20.0 },
361+
{ attributeId: 1, productId: 1, value: "Medium", price: 20.0 },
362+
{ attributeId: 1, productId: 1, value: "Large", price: 20.0 },
363363

364-
{ attributeId: 1, productId: 2, value: "S", price: 20.0 },
365-
{ attributeId: 1, productId: 2, value: "M", price: 20.0 },
366-
{ attributeId: 1, productId: 2, value: "L", price: 20.0 },
364+
{ attributeId: 1, productId: 2, value: "Small", price: 20.0 },
365+
{ attributeId: 1, productId: 2, value: "Medium", price: 20.0 },
366+
{ attributeId: 1, productId: 2, value: "Large", price: 20.0 },
367367

368-
{ attributeId: 1, productId: 3, value: "S", price: 20.0 },
369-
{ attributeId: 1, productId: 3, value: "M", price: 20.0 },
370-
{ attributeId: 1, productId: 3, value: "L", price: 20.0 },
368+
{ attributeId: 1, productId: 3, value: "Small", price: 20.0 },
369+
{ attributeId: 1, productId: 3, value: "Medium", price: 20.0 },
370+
{ attributeId: 1, productId: 3, value: "Large", price: 20.0 },
371371

372-
{ attributeId: 1, productId: 4, value: "S", price: 20.0 },
373-
{ attributeId: 1, productId: 4, value: "M", price: 20.0 },
374-
{ attributeId: 1, productId: 4, value: "L", price: 20.0 },
372+
{ attributeId: 1, productId: 4, value: "Small", price: 20.0 },
373+
{ attributeId: 1, productId: 4, value: "Medium", price: 20.0 },
374+
{ attributeId: 1, productId: 4, value: "Large", price: 20.0 },
375375

376-
{ attributeId: 1, productId: 5, value: "S", price: 25.0 },
377-
{ attributeId: 1, productId: 5, value: "M", price: 25.0 },
378-
{ attributeId: 1, productId: 5, value: "L", price: 25.0 },
376+
{ attributeId: 1, productId: 5, value: "Small", price: 25.0 },
377+
{ attributeId: 1, productId: 5, value: "Medium", price: 25.0 },
378+
{ attributeId: 1, productId: 5, value: "Large", price: 25.0 },
379379

380-
{ attributeId: 1, productId: 6, value: "S", price: 25.0 },
381-
{ attributeId: 1, productId: 6, value: "M", price: 25.0 },
382-
{ attributeId: 1, productId: 6, value: "L", price: 25.0 },
380+
{ attributeId: 1, productId: 6, value: "Small", price: 25.0 },
381+
{ attributeId: 1, productId: 6, value: "Medium", price: 25.0 },
382+
{ attributeId: 1, productId: 6, value: "Large", price: 25.0 },
383383

384-
{ attributeId: 1, productId: 7, value: "S", price: 25.0 },
385-
{ attributeId: 1, productId: 7, value: "M", price: 25.0 },
386-
{ attributeId: 1, productId: 7, value: "L", price: 25.0 },
384+
{ attributeId: 1, productId: 7, value: "Small", price: 25.0 },
385+
{ attributeId: 1, productId: 7, value: "Medium", price: 25.0 },
386+
{ attributeId: 1, productId: 7, value: "Large", price: 25.0 },
387387

388-
{ attributeId: 1, productId: 8, value: "S", price: 15.0 },
389-
{ attributeId: 1, productId: 8, value: "M", price: 15.0 },
390-
{ attributeId: 1, productId: 8, value: "L", price: 15.0 },
388+
{ attributeId: 1, productId: 8, value: "Small", price: 15.0 },
389+
{ attributeId: 1, productId: 8, value: "Medium", price: 15.0 },
390+
{ attributeId: 1, productId: 8, value: "Large", price: 15.0 },
391391

392-
{ attributeId: 1, productId: 9, value: "S", price: 15.0 },
393-
{ attributeId: 1, productId: 9, value: "M", price: 15.0 },
394-
{ attributeId: 1, productId: 9, value: "L", price: 15.0 },
392+
{ attributeId: 1, productId: 9, value: "Small", price: 15.0 },
393+
{ attributeId: 1, productId: 9, value: "Medium", price: 15.0 },
394+
{ attributeId: 1, productId: 9, value: "Large", price: 15.0 },
395395

396396
// --- STICKERS (dimensiones: 3x3, 6x6, 9x9) ---
397-
{ attributeId: 2, productId: 10, value: "3x3", price: 2.99 },
398-
{ attributeId: 2, productId: 10, value: "5x5", price: 3.99 },
399-
{ attributeId: 2, productId: 10, value: "10x10", price: 4.99 },
397+
{ attributeId: 2, productId: 10, value: "3x3 cm", price: 2.99 },
398+
{ attributeId: 2, productId: 10, value: "5x5 cm", price: 3.99 },
399+
{ attributeId: 2, productId: 10, value: "10x10 cm", price: 4.99 },
400400

401-
{ attributeId: 2, productId: 11, value: "3x3", price: 2.49 },
402-
{ attributeId: 2, productId: 11, value: "5x5", price: 3.49 },
403-
{ attributeId: 2, productId: 11, value: "10x10", price: 4.49 },
401+
{ attributeId: 2, productId: 11, value: "3x3 cm", price: 2.49 },
402+
{ attributeId: 2, productId: 11, value: "5x5 cm", price: 3.49 },
403+
{ attributeId: 2, productId: 11, value: "10x10 cm", price: 4.49 },
404404

405-
{ attributeId: 2, productId: 12, value: "3x3", price: 3.99 },
406-
{ attributeId: 2, productId: 12, value: "5x5", price: 4.99 },
407-
{ attributeId: 2, productId: 12, value: "10x10", price: 5.99 },
405+
{ attributeId: 2, productId: 12, value: "3x3 cm", price: 3.99 },
406+
{ attributeId: 2, productId: 12, value: "5x5 cm", price: 4.99 },
407+
{ attributeId: 2, productId: 12, value: "10x10 cm", price: 5.99 },
408408

409-
{ attributeId: 2, productId: 13, value: "3x3", price: 2.99 },
410-
{ attributeId: 2, productId: 13, value: "5x5", price: 3.99 },
411-
{ attributeId: 2, productId: 13, value: "10x10", price: 4.99 },
409+
{ attributeId: 2, productId: 13, value: "3x3 cm", price: 2.99 },
410+
{ attributeId: 2, productId: 13, value: "5x5 cm", price: 3.99 },
411+
{ attributeId: 2, productId: 13, value: "10x10 cm", price: 4.99 },
412412

413-
{ attributeId: 2, productId: 14, value: "3x3", price: 2.49 },
414-
{ attributeId: 2, productId: 14, value: "5x5", price: 3.49 },
415-
{ attributeId: 2, productId: 14, value: "10x10", price: 4.49 },
413+
{ attributeId: 2, productId: 14, value: "3x3 cm", price: 2.49 },
414+
{ attributeId: 2, productId: 14, value: "5x5 cm", price: 3.49 },
415+
{ attributeId: 2, productId: 14, value: "10x10 cm", price: 4.49 },
416416

417-
{ attributeId: 2, productId: 15, value: "3x3", price: 2.49 },
418-
{ attributeId: 2, productId: 15, value: "5x5", price: 3.49 },
419-
{ attributeId: 2, productId: 15, value: "10x10", price: 4.49 },
417+
{ attributeId: 2, productId: 15, value: "3x3 cm", price: 2.49 },
418+
{ attributeId: 2, productId: 15, value: "5x5 cm", price: 3.49 },
419+
{ attributeId: 2, productId: 15, value: "10x10 cm", price: 4.49 },
420420

421-
{ attributeId: 2, productId: 16, value: "3x3", price: 2.99 },
422-
{ attributeId: 2, productId: 16, value: "5x5", price: 3.99 },
423-
{ attributeId: 2, productId: 16, value: "10x10", price: 4.99 },
421+
{ attributeId: 2, productId: 16, value: "3x3 cm", price: 2.99 },
422+
{ attributeId: 2, productId: 16, value: "5x5 cm", price: 3.99 },
423+
{ attributeId: 2, productId: 16, value: "10x10 cm", price: 4.99 },
424424

425-
{ attributeId: 2, productId: 17, value: "3x3", price: 2.99 },
426-
{ attributeId: 2, productId: 17, value: "5x5", price: 3.99 },
427-
{ attributeId: 2, productId: 17, value: "10x10", price: .99 },
425+
{ attributeId: 2, productId: 17, value: "3x3 cm", price: 2.99 },
426+
{ attributeId: 2, productId: 17, value: "5x5 cm", price: 3.99 },
427+
{ attributeId: 2, productId: 17, value: "10x10 cm", price: .99 },
428428

429429
// --- TAZAS (no aplica: Único) ---
430430
{ attributeId: 3, productId: 18, value: "Único", price: 14.99 },

src/models/cart.model.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@ import { type Product } from "./product.model";
33
import type {
44
Cart as PrismaCart,
55
CartItem as PrismaCartItem,
6+
VariantAttributeValue
67
} from "@/../generated/prisma/client";
78

89
export type CartItem = PrismaCartItem & {
910
product: Pick<
1011
Product,
1112
"id" | "title" | "imgSrc" | "alt" | "price" | "isOnSale"
1213
>;
14+
variantAttributeValue?: VariantAttributeValue;
1315
};
1416

1517
export type Cart = PrismaCart;
@@ -34,6 +36,7 @@ export type CartItemWithProduct = {
3436
product: CartProductInfo;
3537
quantity: number;
3638
attributeValueId: number;
39+
variantAttributeValue?: VariantAttributeValue;
3740
};
3841

3942
// Tipo para el carrito con items y productos incluidos
Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
1-
import type { VariantAttributeValue as PrismaVariantAttributeValue } from "@/../generated/prisma/client";
2-
export type VariantAttributeValue= PrismaVariantAttributeValue
1+
import type { VariantAttributeValue as PrismaVariantAttributeValue, VariantAttribute } from "@/../generated/prisma/client";
2+
3+
export type VariantAttributeValue = PrismaVariantAttributeValue & {
4+
variantAttribute?: VariantAttribute;
5+
};

src/routes/category/components/product-card/index.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,19 @@ export function ProductCard({ product }: ProductCardProps) {
3434
{isSticker ? (
3535
<div className="text-xs text-muted-foreground">
3636
<p className="text-base font-semibold text-accent-foreground">
37-
Desde
37+
Entre
3838
</p>
3939
<p className="font-medium text-foreground text-base">
4040
S/{product.minPrice} - S/{product.maxPrice}
4141
</p>
4242
</div>
4343
) : (
44-
<p className="mt-auto text-base font-medium">S/{product.price}</p>
44+
<div className="text-xs text-muted-foreground">
45+
<p className="text-base font-semibold text-accent-foreground">
46+
Precio
47+
</p>
48+
<p className="mt-auto text-base font-medium">S/{product.price}</p>
49+
</div>
4550
)}
4651
</div>
4752
{product.isOnSale && (

0 commit comments

Comments
 (0)