diff options
| author | trisusilo <tri.susilo@altama.co.id> | 2023-10-06 08:16:59 +0000 |
|---|---|---|
| committer | trisusilo <tri.susilo@altama.co.id> | 2023-10-06 08:16:59 +0000 |
| commit | 5bc76488a76f2a1a39a501eba1685e0875f61030 (patch) | |
| tree | c5aee34ead56a09f7d9194da95ccd27b3a53a52d /src | |
| parent | b0333b521a3bc6e526b7c7b06d13680d8b1e9e01 (diff) | |
| parent | 2ac1c3a84032ba819046e1634ca7c46ac0521e3b (diff) | |
Merged in CR/Pricelist (pull request #94)
add condisi if harga tier user lebih rendah dari flash sale
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/components/elements/Product/cartProductsList.jsx | 2 | ||||
| -rw-r--r-- | src/lib/product/components/Product/ProductDesktop.jsx | 4 | ||||
| -rw-r--r-- | src/lib/product/components/Product/ProductMobile.jsx | 4 | ||||
| -rw-r--r-- | src/lib/product/components/ProductCard.jsx | 29 | ||||
| -rw-r--r-- | src/utils/solrMapping.js | 113 |
5 files changed, 78 insertions, 74 deletions
diff --git a/src/core/components/elements/Product/cartProductsList.jsx b/src/core/components/elements/Product/cartProductsList.jsx index 5887b425..32df992b 100644 --- a/src/core/components/elements/Product/cartProductsList.jsx +++ b/src/core/components/elements/Product/cartProductsList.jsx @@ -160,7 +160,7 @@ const CardProdcuctsList = ({ </td> <td className='relative'> <ComponentCanBuy canBuy={product.canBuy} /> - {product?.hasFlashsale ? ( + {product?.hasFlashsale && product?.price?.discountPercentage > 0 ? ( <> <div className='flex gap-x-1 items-center justify-center mt-3'> <div className='text-gray_r-11 line-through text-caption-1'> diff --git a/src/lib/product/components/Product/ProductDesktop.jsx b/src/lib/product/components/Product/ProductDesktop.jsx index 55878a93..cc3cf666 100644 --- a/src/lib/product/components/Product/ProductDesktop.jsx +++ b/src/lib/product/components/Product/ProductDesktop.jsx @@ -203,7 +203,7 @@ const ProductDesktop = ({ products, wishlist, toggleWishlist }) => { <div className='w-full flex flex-wrap'> <div className='w-5/12'> <div className='relative mb-2'> - {product?.flashSale?.remainingTime > 0 && ( + {product?.flashSale?.remainingTime > 0 && lowestPrice?.price.discountPercentage > 0 && ( <div className={`absolute bottom-0 w-full`}> <div className='absolute bottom-0 w-full h-full'> <ImageNext @@ -441,7 +441,7 @@ const ProductDesktop = ({ products, wishlist, toggleWishlist }) => { </div> )} */} - {lowestPrice?.isFlashsale ? ( + {lowestPrice?.isFlashsale && lowestPrice?.price.discountPercentage > 0 ? ( <> <div className='flex gap-x-1 items-center mt-2'> <div className='badge-solid-red text-caption-1'> diff --git a/src/lib/product/components/Product/ProductMobile.jsx b/src/lib/product/components/Product/ProductMobile.jsx index 63b391d5..ffa75f72 100644 --- a/src/lib/product/components/Product/ProductMobile.jsx +++ b/src/lib/product/components/Product/ProductMobile.jsx @@ -161,7 +161,7 @@ const ProductMobile = ({ product, wishlist, toggleWishlist }) => { return ( <MobileView> <div className='relative'> - {product?.flashSale?.remainingTime > 0 && ( + {product?.flashSale?.remainingTime > 0 && activeVariant?.price.discountPercentage > 0 && ( <div className={`absolute bottom-0 w-full`}> <div className='absolute bottom-0 w-full'> <ImageNext @@ -232,7 +232,7 @@ const ProductMobile = ({ product, wishlist, toggleWishlist }) => { <div className='text-gray_r-12/80 text-caption-2 mt-2 mb-1'>Harga mulai dari: </div> )} - {activeVariant.isFlashsale ? ( + {activeVariant.isFlashsale && activeVariant?.price?.discountPercentage > 0 ? ( <> <div className='flex gap-x-1 items-center'> <div className='badge-solid-red'>{activeVariant?.price?.discountPercentage}%</div> diff --git a/src/lib/product/components/ProductCard.jsx b/src/lib/product/components/ProductCard.jsx index 5f213fe9..91c1f40e 100644 --- a/src/lib/product/components/ProductCard.jsx +++ b/src/lib/product/components/ProductCard.jsx @@ -89,17 +89,16 @@ const ProductCard = ({ product, simpleTitle, variant = 'vertical' }) => { > {product?.name} </Link> - {product?.flashSale?.id > 0 ? ( + {product?.flashSale?.id > 0 && product?.lowestPrice.discountPercentage > 0 ? ( <> - {product?.lowestPrice.discountPercentage > 0 && ( - <div className='flex gap-x-1 mb-1 items-center'> - <div className='text-gray_r-11 line-through text-[11px] sm:text-caption-2'> - {currencyFormat(product.lowestPrice.price)} - </div> - <div className='badge-solid-red'>{Math.floor( product?.lowestPrice.discountPercentage)}%</div> + <div className='flex gap-x-1 mb-1 items-center'> + <div className='text-gray_r-11 line-through text-[11px] sm:text-caption-2'> + {currencyFormat(product.lowestPrice.price)} </div> - )} - + <div className='badge-solid-red'> + {Math.floor(product?.lowestPrice.discountPercentage)}% + </div> + </div> <div className='text-danger-500 font-semibold mb-2'> {product?.lowestPrice.priceDiscount > 0 ? ( currencyFormat(product?.lowestPrice.priceDiscount) @@ -114,7 +113,8 @@ const ProductCard = ({ product, simpleTitle, variant = 'vertical' }) => { <> {currencyFormat(product?.lowestPrice.price)} <div className='text-gray_r-9 text-[10px] font-normal mt-2'> - Inc. PPN: {currencyFormat(product.lowestPrice.price * process.env.NEXT_PUBLIC_PPN )} + Inc. PPN:{' '} + {currencyFormat(product.lowestPrice.price * process.env.NEXT_PUBLIC_PPN)} </div> </> ) : ( @@ -192,11 +192,13 @@ const ProductCard = ({ product, simpleTitle, variant = 'vertical' }) => { > {product?.name} </Link> - {product?.flashSale?.id > 0 ? ( + {product?.flashSale?.id > 0 && product?.lowestPrice?.discountPercentage > 0 ? ( <> {product?.lowestPrice.discountPercentage > 0 && ( <div className='flex gap-x-1 mb-1 items-center'> - <div className='badge-solid-red'>{Math.floor(product?.lowestPrice?.discountPercentage)}%</div> + <div className='badge-solid-red'> + {Math.floor(product?.lowestPrice?.discountPercentage)}% + </div> <div className='text-gray_r-11 line-through text-caption-2'> {currencyFormat(product?.lowestPrice?.price)} </div> @@ -217,7 +219,8 @@ const ProductCard = ({ product, simpleTitle, variant = 'vertical' }) => { <> {currencyFormat(product?.lowestPrice.price)} <div className='text-gray_r-9 text-[11px] sm:text-caption-2 font-normal mt-2'> - Inc. PPN: {currencyFormat(product.lowestPrice.price * process.env.NEXT_PUBLIC_PPN)} + Inc. PPN:{' '} + {currencyFormat(product.lowestPrice.price * process.env.NEXT_PUBLIC_PPN)} </div> </> ) : ( diff --git a/src/utils/solrMapping.js b/src/utils/solrMapping.js index c8bd54ea..61816cf8 100644 --- a/src/utils/solrMapping.js +++ b/src/utils/solrMapping.js @@ -1,17 +1,17 @@ export const productMappingSolr = (products, pricelist) => { return products.map((product) => { let price = product.price_tier1_v2_f || 0 - let priceDiscount = product.price_discount_f || 0 - let discountPercentage = product.discount_f || 0 + let priceDiscount = 0 + let discountPercentage = 0 - if (pricelist) { - price = product?.[`price_${pricelist}_f`] || 0 + if (pricelist && product?.[`price_${pricelist}_f`] < price) { + price = product?.[`price_${pricelist}_f`] || 0 } - if (product?.flashsale_id_i > 0) { - price = product?.flashsale_base_price_f || 0 - priceDiscount = product?.flashsale_price_f || 0 - discountPercentage = product?.flashsale_discount_f || 0 + if (product?.flashsale_id_i > 0 ) { + price = product?.flashsale_base_price_f || 0 + priceDiscount = product?.flashsale_price_f || 0 + discountPercentage = product?.flashsale_discount_f || 0 } let productMapped = { @@ -55,59 +55,60 @@ export const productMappingSolr = (products, pricelist) => { } export const variantsMappingSolr = (parent, products, pricelist) => { - return products.map((product) => { - let price = product.price_tier1_v2_f || 0 - let priceDiscount = product.price_discount_f || 0 - let discountPercentage = product.discount_f || 0 - - if (pricelist) { + return products.map((product) => { + let price = product.price_tier1_v2_f || 0 + let priceDiscount = 0 + let discountPercentage = 0 + + if (pricelist) { + if (product?.[`price_${pricelist}_f`] < price) { price = product?.[`price_${pricelist}_f`] || 0 } - - if (product?.flashsale_id_i > 0) { + } + + if (product?.flashsale_id_i > 0 && product?.flashsale_price_f < price) { price = product?.flashsale_base_price_f || 0 priceDiscount = product?.flashsale_price_f || 0 discountPercentage = product?.flashsale_discount_f || 0 + } + + let productMapped = { + attributes: product.attributes || [], + id: product.product_id_i || '', + image: product.image_s || '', + code: product.default_code_s || '', + isFlashsale: flashsaleTime(product?.flashsale_end_date_s)?.isFlashSale, + isFlashsale: flashsaleTime(product?.flashsale_end_date_s)?.isFlashSale, + name: product.display_name_s || '', + price: { price, priceDiscount, discountPercentage }, + variantTotal: product.variant_total_i || 0, + stockTotal: product.stock_total_f || 0, + weight: product.weight_f || 0, + manufacture: {}, + parent: {} + } + + if (product.manufacture_id_i && product.manufacture_name_s) { + productMapped.manufacture = { + id: product.manufacture_id_i || '', + name: product.manufacture_name_s || '' } - - let productMapped = { - attributes: product.attributes || [], - id: product.product_id_i || '', - image: product.image_s || '', - code: product.default_code_s || '', - isFlashsale: flashsaleTime(product?.flashsale_end_date_s)?.isFlashSale, - isFlashsale: flashsaleTime(product?.flashsale_end_date_s)?.isFlashSale, - name: product.display_name_s || '', - price: { price, priceDiscount, discountPercentage }, - variantTotal: product.variant_total_i || 0, - stockTotal: product.stock_total_f || 0, - weight: product.weight_f || 0, - manufacture: {}, - parent: {} - } - - if (product.manufacture_id_i && product.manufacture_name_s) { - productMapped.manufacture = { - id: product.manufacture_id_i || '', - name: product.manufacture_name_s || '' - } - } - productMapped.parent = { - id: parent.product_id_i || '', - image: parent.image_s || '', - name: parent.name_s || '' - } - return productMapped - }) - } + } + productMapped.parent = { + id: parent.product_id_i || '', + image: parent.image_s || '', + name: parent.name_s || '' + } + return productMapped + }) +} const flashsaleTime = (endDate) => { - const flashsaleEndDate = new Date(endDate) - const currentTime = new Date() - - const timeDifferenceInMillis = flashsaleEndDate - currentTime - const timeDifferenceInSeconds = timeDifferenceInMillis / 1000 - - return { remainingTime: timeDifferenceInSeconds, isFlashSale: flashsaleEndDate > currentTime } - } - + const flashsaleEndDate = new Date(endDate) + const currentTime = new Date() + + const timeDifferenceInMillis = flashsaleEndDate - currentTime + const timeDifferenceInSeconds = timeDifferenceInMillis / 1000 + + return { remainingTime: timeDifferenceInSeconds, isFlashSale: flashsaleEndDate > currentTime } +} |
