import style from '../styles/price-action.module.css'; import Image from 'next/image'; import Link from 'next/link'; import { useEffect, useState } from 'react'; import formatCurrency from '~/libs/formatCurrency'; import { IProductDetail } from '~/types/product'; import { useProductDetail } from '../stores/useProductDetail'; import AddToCart from './AddToCart'; import AddToQuotation from './AddToQuotation'; import { getAuth } from '~/libs/auth'; import useDevice from '@/core/hooks/useDevice'; import odooApi from '~/libs/odooApi'; import { Button, Skeleton } from '@chakra-ui/react'; import DesktopView from '@/core/components/views/DesktopView'; import MobileView from '@/core/components/views/MobileView'; // 1. Tambahkan onCompare (Optional) di sini type Props = { product: IProductDetail; onCompare?: () => void; }; const PPN: number = process.env.NEXT_PUBLIC_PPN ? parseFloat(process.env.NEXT_PUBLIC_PPN) : 0; const PriceAction = ({ product, onCompare }: Props) => { const { activePrice, setActive, activeVariantId, quantityInput, setQuantityInput, askAdminUrl, isApproval, setIsApproval, selectedVariant, sla, } = useProductDetail(); const [qtyPickUp, setQtyPickUp] = useState(0); const { isDesktop, isMobile } = useDevice(); useEffect(() => { setActive(selectedVariant); if (product.variants.length > 2 && product.variants[0].price.price === 0) { const variants = product.variants; for (let i = 0; i < variants.length; i++) { if (variants[i].price.price > 0) { setActive(variants[i]); break; } } } }, [product, setActive, selectedVariant]); useEffect(() => { const fetchData = async () => { const qty_available = await odooApi( 'GET', `/api/v1/product_variant/${selectedVariant.id}/qty_available` ); setQtyPickUp(qty_available?.qty); }; fetchData(); }, [selectedVariant]); useEffect(() => { setQuantityInput('1'); }, [selectedVariant]); let voucherPastiHemat = 0; if ( product?.voucher_pasti_hemat ? product?.voucher_pasti_hemat.length : voucherPastiHemat > 0 ) { const stringVoucher = product?.voucher_pasti_hemat[0]; const validJsonString = stringVoucher.replace(/'/g, '"'); voucherPastiHemat = JSON.parse(validJsonString); } const hasPrice = Number(selectedVariant?.price?.price_discount || 0) > 0; const price = selectedVariant?.price; return (