diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/checkout/api/checkoutApi.js | 2 | ||||
| -rw-r--r-- | src/lib/checkout/components/Checkout.jsx | 8 | ||||
| -rw-r--r-- | src/lib/checkout/components/SectionExpedition.jsx | 47 | ||||
| -rw-r--r-- | src/lib/checkout/utils/functionCheckouit.js | 2 |
4 files changed, 39 insertions, 20 deletions
diff --git a/src/lib/checkout/api/checkoutApi.js b/src/lib/checkout/api/checkoutApi.js index 9d326b10..c30d9631 100644 --- a/src/lib/checkout/api/checkoutApi.js +++ b/src/lib/checkout/api/checkoutApi.js @@ -25,7 +25,5 @@ export const getProductsSla = async ({data}) => { `/api/v1/product/variants/sla`, data ) - - console.log('ini sla - data', dataSLA); return dataSLA } diff --git a/src/lib/checkout/components/Checkout.jsx b/src/lib/checkout/components/Checkout.jsx index d5c370bf..fa8d8aea 100644 --- a/src/lib/checkout/components/Checkout.jsx +++ b/src/lib/checkout/components/Checkout.jsx @@ -71,7 +71,10 @@ const Checkout = () => { source: query, voucher: activeVoucher, voucher_shipping: activeVoucherShipping, - }) + }), + { + keepPreviousData: true, // Menjaga data sebelumnya sampai data baru tersedia + } ); const { @@ -205,6 +208,7 @@ const Checkout = () => { SetFindVoucher(1); return; } + dataVoucher.forEach((addNewLine) => { if (addNewLine.applyType !== 'shipping') { @@ -410,8 +414,6 @@ const Checkout = () => { if (poNumber.current.value) data.po_number = poNumber.current.value; if (typeof file !== 'undefined') data.po_file = await getFileBase64(file); - console.log('ini data', data); - const isCheckouted = await checkoutApi({ data }); if (!isCheckouted?.id) { diff --git a/src/lib/checkout/components/SectionExpedition.jsx b/src/lib/checkout/components/SectionExpedition.jsx index b261cae0..22d8df32 100644 --- a/src/lib/checkout/components/SectionExpedition.jsx +++ b/src/lib/checkout/components/SectionExpedition.jsx @@ -31,7 +31,10 @@ function reverseMappingCourier(couriersOdoo, couriers, includeInstant = false) { const { courier_name, courier_code, courier_service_code } = item; const key = courier_name.toLowerCase(); - if (!includeInstant && ['hours'].includes(item.shipment_duration_unit.toLowerCase())) { + if ( + !includeInstant && + ['hours'].includes(item.shipment_duration_unit.toLowerCase()) + ) { return acc; } @@ -80,7 +83,6 @@ function reverseMappingCourier(couriersOdoo, couriers, includeInstant = false) { }); } - function mappingCourier(couriersOdoo, couriers, notIncludeInstant = false) { const validCourierMap = couriersOdoo.reduce((acc, courier) => { acc[courier.label.toLowerCase()] = courier.carrierId; @@ -137,7 +139,6 @@ function mappingCourier(couriersOdoo, couriers, notIncludeInstant = false) { }, {}); } - // interface CourierService { // courier_name: string; // courier_code: string; @@ -172,6 +173,7 @@ export default function SectionExpedition({ products }) { const [couriers, setCouriers] = useState(null); const [slaProducts, setSlaProducts] = useState(null); const [addHolidays, setAddHolidays] = useState(0); + const [savedServiceOptions, setSavedServiceOptions] = useState([]); const { checkWeigth, @@ -186,7 +188,7 @@ export default function SectionExpedition({ products }) { listExpedisi, productSla, setProductSla, - setSelectedCourierId + setSelectedCourierId, } = useCheckout(); let destination = {}; @@ -207,8 +209,15 @@ export default function SectionExpedition({ products }) { const fetchSlaProducts = async () => { try { - const ids = products.map((p) => p.id).join(',') - const res = await odooApi('GET', `/api/v1/product/variants/sla?ids=${ids}`) + let productsMapped = products.map((item) => ({ + id: item.id, + quantity: item.quantity, + })); + + let data = { + products: JSON.stringify(productsMapped), + } + const res = await odooApi('POST', `/api/v1/product/variants/sla`, data); setSlaProducts(res); } catch (error) { console.error('Failed to fetch expedition rates:', error); @@ -221,13 +230,12 @@ export default function SectionExpedition({ products }) { useEffect(() => { if (slaProducts) { - let productSla = slaProducts?.slaTotal - if(slaProducts.slaUnit === 'jam') { - productSla = 1 + let productSla = slaProducts?.slaTotal; + if (slaProducts.slaUnit === 'jam') { + productSla = 1; } setProductSla(productSla); } - console.log('ini slaProducts', slaProducts, productSla); }, [slaProducts]); const fetchExpedition = async () => { @@ -264,7 +272,11 @@ export default function SectionExpedition({ products }) { useEffect(() => { if (data) { const instant = slaProducts?.includeInstant || false; - const couriers = reverseMappingCourier(listExpedisi, data?.data?.pricing, instant); + const couriers = reverseMappingCourier( + listExpedisi, + data?.data?.pricing, + instant + ); setCouriers(couriers); } }, [data]); @@ -273,13 +285,12 @@ export default function SectionExpedition({ products }) { setIsOpen(false); setOnFocuseSelectedCourier(false); const courier = code; - console.log('ini courier', courier, couriers); setSelectedService(null); setBiayaKirim(0); if (courier !== 0 && courier !== 32) { if (courier.courier) { setSelectedCourier(courier.courier.courier_code); - setSelectedCourierId(courier.carrierId) + setSelectedCourierId(courier.carrierId); setServiceOptions(Object.values(courier.courier.service_type)); } else { if ( @@ -296,6 +307,7 @@ export default function SectionExpedition({ products }) { 'Maaf, layanan tidak tersedia. Mohon pilih expedisi lain.' ); } + setServiceOptions([]); } } else { setSelectedCourier(courier === 32 ? 'SELF PICKUP' : null); @@ -321,6 +333,12 @@ export default function SectionExpedition({ products }) { setIsOpen(false); }; + useEffect(() => { + if (serviceOptions.length > 0) { + setSavedServiceOptions(serviceOptions); + } +}, [serviceOptions]); + return ( <form onSubmit={handleSubmit(onSubmit)}> <div className='px-4 py-2'> @@ -420,7 +438,8 @@ export default function SectionExpedition({ products }) { )} </div> - {serviceOptions.length > 0 && + {(serviceOptions.length > 0 || + selectedService )&& selectedCourier && selectedCourier !== 32 && selectedCourier !== 0 && ( diff --git a/src/lib/checkout/utils/functionCheckouit.js b/src/lib/checkout/utils/functionCheckouit.js index a95e6fb4..a7fa8c5a 100644 --- a/src/lib/checkout/utils/functionCheckouit.js +++ b/src/lib/checkout/utils/functionCheckouit.js @@ -11,7 +11,7 @@ export function formatShipmentRange( } let minRange, maxRange; - console.log('ini masuk', shipmentDurationRange); + console.log('ini masuk format shipment range', shipmentDurationRange, shipmentDurationUnit, productSLA); // Cek apakah durasi berupa range atau angka tunggal if (shipmentDurationRange.includes('-')) { |
