summaryrefslogtreecommitdiff
path: root/src/lib/quotation/components/Quotation.jsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/quotation/components/Quotation.jsx')
-rw-r--r--src/lib/quotation/components/Quotation.jsx206
1 files changed, 123 insertions, 83 deletions
diff --git a/src/lib/quotation/components/Quotation.jsx b/src/lib/quotation/components/Quotation.jsx
index 2f4d6c46..189c48ee 100644
--- a/src/lib/quotation/components/Quotation.jsx
+++ b/src/lib/quotation/components/Quotation.jsx
@@ -19,6 +19,8 @@ import Image from '@/core/components/elements/Image/Image';
import { useQuery } from 'react-query';
import CardProdcuctsList from '@/core/components/elements/Product/cartProductsList';
import { Skeleton } from '@chakra-ui/react';
+import { useAddress } from '@/lib/checkout/stores/useAdress';
+import { useQuotation } from '@/lib/checkout/stores/stateQuotation';
import {
PickupAddress,
SectionAddress,
@@ -31,11 +33,13 @@ import {
import addressesApi from '@/lib/address/api/addressesApi';
import { getItemAddress } from '@/core/utils/address';
import ExpedisiList from '../../checkout/api/ExpedisiList';
-import axios from 'axios';
const { checkoutApi } = require('@/lib/checkout/api/checkoutApi');
const { getProductsCheckout } = require('@/lib/checkout/api/checkoutApi');
+import SectionExpedition from '@/lib/checkout/components/SectionExpedition';
+
+
const Quotation = () => {
const PPN = process.env.NEXT_PUBLIC_PPN ? parseFloat(process.env.NEXT_PUBLIC_PPN) : 0;
const router = useRouter();
@@ -51,16 +55,16 @@ const Quotation = () => {
const { setRefreshCart } = useProductCartContext();
const SELF_PICKUP_ID = 32;
- const [products, setProducts] = useState(null);
+ // const [products, setProducts] = useState(null);
const [totalAmount, setTotalAmount] = useState(0);
const [totalDiscountAmount, setTotalDiscountAmount] = useState(0);
//start set up address and carrier
const [selectedCarrierId, setselectedCarrierId] = useState(0);
- const [listExpedisi, setExpedisi] = useState([]);
+ // const [listExpedisi, setExpedisi] = useState([]);
const [selectedExpedisi, setSelectedExpedisi] = useState(0);
- const [checkWeigth, setCheckWeight] = useState(false);
- const [checkoutValidation, setCheckoutValidation] = useState(false);
+ // const [checkWeigth, setCheckWeight] = useState(false);
+ // const [checkoutValidation, setCheckoutValidation] = useState(false);
const [loadingRajaOngkir, setLoadingRajaOngkir] = useState(false);
const [listserviceExpedisi, setListServiceExpedisi] = useState([]);
@@ -69,24 +73,54 @@ const Quotation = () => {
const [selectedCarrier, setselectedCarrier] = useState(0);
const [totalWeight, setTotalWeight] = useState(0);
- const [biayaKirim, setBiayaKirim] = useState(0);
+ // const [biayaKirim, setBiayaKirim] = useState(0);
const [selectedExpedisiService, setselectedExpedisiService] = useState(null);
- const [etd, setEtd] = useState(null);
+ // const [etd, setEtd] = useState(null);
const [etdFix, setEtdFix] = useState(null);
const [isApproval, setIsApproval] = useState(false);
const expedisiValidation = useRef(null);
- const [selectedAddress, setSelectedAddress] = useState({
- shipping: null,
- invoicing: null,
- });
+ // const [selectedAddress, setSelectedAddress] = useState({
+ // shipping: null,
+ // invoicing: null,
+ // });
- const [addresses, setAddresses] = useState(null);
+ // const [addresses, setAddresses] = useState(null);
const [note_websiteText, setselectedNote_websiteText] = useState('');
+ const {
+ selectedAddress,
+ setSelectedAddress,
+ addresses,
+ setAddresses,
+ setAddressMaps,
+ setCoordinate,
+ setPostalCode,
+ } = useAddress();
+
+ const {
+ checkWeigth,
+ setCheckWeight,
+ hasFlashSale,
+ setHasFlashSale,
+ checkoutValidation,
+ setCheckoutValidation,
+ biayaKirim,
+ products,
+ setProducts,
+ etd,
+ unit,
+ selectedCourier,
+ selectedCourierId,
+ selectedService,
+ listExpedisi,
+ setExpedisi,
+ productSla
+ } = useQuotation();
+
useEffect(() => {
if (!auth) return;
@@ -116,62 +150,88 @@ const Quotation = () => {
return addresses[0];
};
+ let ship = matchAddress('shipping');
+
setSelectedAddress({
shipping: matchAddress('shipping'),
invoicing: matchAddress('invoicing'),
});
+ setPostalCode(ship?.zip);
+ if (ship?.addressMap) {
+ setAddressMaps(ship?.addressMap);
+ setCoordinate({
+ destination_latitude: ship?.latitude,
+ destination_longitude: ship?.longtitude,
+ });
+ }
}, [addresses]);
- const loadExpedisi = async () => {
- let dataExpedisi = await ExpedisiList();
- dataExpedisi = dataExpedisi.map((expedisi) => ({
- value: expedisi.id,
- label: expedisi.name,
- carrierId: expedisi.deliveryCarrierId,
- }));
- setExpedisi(dataExpedisi);
- };
+ useEffect(() => {
+ // voucher();
+ const loadExpedisi = async () => {
+ let dataExpedisi = await ExpedisiList();
+ dataExpedisi = dataExpedisi.map((expedisi) => ({
+ value: expedisi.id,
+ label: expedisi.name,
+ carrierId: expedisi.deliveryCarrierId,
+ logo: expedisi.image,
+ }));
+ setExpedisi(dataExpedisi);
+ };
+
+ loadExpedisi();
- const loadServiceRajaOngkir = async () => {
- setLoadingRajaOngkir(true);
- const body = {
- origin: 2127,
- destination: selectedAddress.shipping.rajaongkirCityId,
- weight: totalWeight,
- courier: selectedCarrier,
- originType: 'subdistrict',
- destinationType: 'subdistrict',
+ const handlePopState = () => {
+ router.push('/shop/cart');
};
- setBiayaKirim(0);
- const dataService = await axios(
- '/api/rajaongkir-service?body=' + JSON.stringify(body)
- );
- setLoadingRajaOngkir(false);
- setListServiceExpedisi(dataService.data[0].costs);
- if (dataService.data[0].costs[0]) {
- setBiayaKirim(dataService.data[0].costs[0]?.cost[0].value);
- setselectedExpedisiService(
- dataService.data[0].costs[0]?.description +
- '-' +
- dataService.data[0].costs[0]?.service
- );
- setEtd(dataService.data[0].costs[0]?.cost[0].etd);
- toast.success('Harap pilih tipe layanan pengiriman');
- } else {
- toast.error('Maaf, layanan tidak tersedia. Mohon pilih expedisi lain.');
- }
- };
+
+ window.onpopstate = handlePopState;
+
+ return () => {
+ window.onpopstate = null;
+ };
+ }, []);
+
+ // const loadServiceRajaOngkir = async () => {
+ // setLoadingRajaOngkir(true);
+ // const body = {
+ // origin: 2127,
+ // destination: selectedAddress.shipping.rajaongkirCityId,
+ // weight: totalWeight,
+ // courier: selectedCarrier,
+ // originType: 'subdistrict',
+ // destinationType: 'subdistrict',
+ // };
+ // setBiayaKirim(0);
+ // const dataService = await axios(
+ // '/api/rajaongkir-service?body=' + JSON.stringify(body)
+ // );
+ // setLoadingRajaOngkir(false);
+ // setListServiceExpedisi(dataService.data[0].costs);
+ // if (dataService.data[0].costs[0]) {
+ // setBiayaKirim(dataService.data[0].costs[0]?.cost[0].value);
+ // setselectedExpedisiService(
+ // dataService.data[0].costs[0]?.description +
+ // '-' +
+ // dataService.data[0].costs[0]?.service
+ // );
+ // setEtd(dataService.data[0].costs[0]?.cost[0].etd);
+ // toast.success('Harap pilih tipe layanan pengiriman');
+ // } else {
+ // toast.error('Maaf, layanan tidak tersedia. Mohon pilih expedisi lain.');
+ // }
+ // };
useEffect(() => {
setCheckoutValidation(false);
if (selectedCarrier != 0 && selectedCarrier != 1 && totalWeight > 0) {
- loadServiceRajaOngkir();
+ // loadServiceRajaOngkir();
} else {
setListServiceExpedisi();
- setBiayaKirim(0);
+ // setBiayaKirim(0);
setselectedExpedisiService();
- setEtd();
+ // setEtd();
}
}, [selectedCarrier, selectedAddress, totalWeight]);
@@ -227,7 +287,7 @@ const Quotation = () => {
});
}
};
- loadExpedisi();
+ // loadExpedisi();
// loadProducts()
}, []);
@@ -376,24 +436,11 @@ const Quotation = () => {
<SectionValidation address={selectedAddress.invoicing} />
{!isApproval && (
<>
- <SectionExpedisi
- address={selectedAddress.shipping}
- listExpedisi={listExpedisi}
- setSelectedExpedisi={setSelectedExpedisi}
- checkWeigth={checkWeigth}
- checkoutValidation={checkoutValidation}
- expedisiValidation={expedisiValidation}
- loadingRajaOngkir={loadingRajaOngkir}
- />
+ {/* <SectionExpedition products={products} /> */}
<Divider />
</>
)}
- <SectionListService
- listserviceExpedisi={listserviceExpedisi}
- setSelectedServiceType={setSelectedServiceType}
- />
-
<div className='p-4 flex flex-col gap-y-4'>
{products && (
<VariantGroupCard openOnClick={false} variants={products} />
@@ -401,7 +448,9 @@ const Quotation = () => {
</div>
<Divider />
-
+ {products && products.length > 0 && (
+ <SectionExpedition products={products} listExpedisi={listExpedisi} />
+ )}
<div className='p-4'>
<div className='flex justify-between items-center'>
<div className='font-medium'>Ringkasan Penawaran</div>
@@ -522,23 +571,14 @@ const Quotation = () => {
)}
<Divider />
<SectionValidation address={selectedAddress.invoicing} />
- {!isApproval && (
- <SectionExpedisi
- address={selectedAddress.shipping}
- listExpedisi={listExpedisi}
- setSelectedExpedisi={setSelectedExpedisi}
- checkWeigth={checkWeigth}
- checkoutValidation={checkoutValidation}
- expedisiValidation={expedisiValidation}
- loadingRajaOngkir={loadingRajaOngkir}
- />
- )}
+ {/* {!isApproval && (
+ <SectionExpedition products={products} />
+ )} */}
<Divider />
- <SectionListService
- listserviceExpedisi={listserviceExpedisi}
- setSelectedServiceType={setSelectedServiceType}
- />
+ {products && products.length > 0 && (
+ <SectionExpedition products={products} listExpedisi={listExpedisi} />
+ )}
{/* <div className='p-4'> */}
<div className='font-medium mb-6'>Detail Barang</div>
<CardProdcuctsList