diff --git a/com.twin.app.shoptime/src/views/DetailPanel/components/BuyOption.jsx b/com.twin.app.shoptime/src/views/DetailPanel/components/BuyOption.jsx index d2b4afa9..8e0ce034 100644 --- a/com.twin.app.shoptime/src/views/DetailPanel/components/BuyOption.jsx +++ b/com.twin.app.shoptime/src/views/DetailPanel/components/BuyOption.jsx @@ -1502,6 +1502,7 @@ const BuyOption = ({ productInfo={productInfo || productData} selectedOptions={selectedOptions} patncNm={patncNm || productData?.patncNm || productInfo?.patncNm} + quantity={quantity} />
{ +const BuyOptionPriceBlock = ({ patncNm, productInfo, selectedOptions, quantity, className }) => { const productData = useSelector((state) => state.main.productData); const sourceProduct = productInfo || productData; const { shippingCharge } = sourceProduct || {}; @@ -23,6 +23,26 @@ const BuyOptionPriceBlock = ({ patncNm, productInfo, selectedOptions, className return $L('Price'); }, [patncNm]); + // 가격에서 통화 기호와 숫자 분리 + const extractPriceInfo = (priceString) => { + if (!priceString) return { currencySymbol: '', numericPrice: 0 }; + + const numericPrice = parseFloat(priceString.replace(/[^0-9.]/g, '')); + const currencySymbol = priceString.replace(/[0-9.]/g, '').trim(); + + return { + currencySymbol: currencySymbol || '', + numericPrice: isNaN(numericPrice) ? 0 : numericPrice + }; + }; + + // quantity를 곱한 총 가격 계산 + const totalPrice = useMemo(() => { + const { currencySymbol, numericPrice } = extractPriceInfo(discountedPrice); + const total = numericPrice * (quantity || 1); + return `${currencySymbol}${total.toFixed(2)}`; + }, [discountedPrice, quantity]); + const showDiscountBadge = discountedPrice && originalPrice && discountedPrice !== originalPrice; if (!discountedPrice && !shippingCharge) { @@ -35,7 +55,7 @@ const BuyOptionPriceBlock = ({ patncNm, productInfo, selectedOptions, className
{priceLabel}
- {discountedPrice} + {totalPrice}
)}