summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authortrisusilo48 <tri.susilo@altama.co.id>2025-03-17 09:06:47 +0700
committertrisusilo48 <tri.susilo@altama.co.id>2025-03-17 09:06:47 +0700
commitf88f457fd1b91298ea8a7f9f396e49660a81e276 (patch)
treefeb01c0c8b0e7c277c1642dd9801b7b7efcbee2a /src/lib
parent00ba9833becbea5b25c6aafcb95b327d8adef4e3 (diff)
handle bug service type kurir
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/checkout/api/checkoutApi.js2
-rw-r--r--src/lib/checkout/components/Checkout.jsx8
-rw-r--r--src/lib/checkout/components/SectionExpedition.jsx47
-rw-r--r--src/lib/checkout/utils/functionCheckouit.js2
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('-')) {