From 4bac265bf958d67dfbd584fd524d661287661368 Mon Sep 17 00:00:00 2001
From: Rafi Zadanly <zadanlyr@gmail.com>
Date: Thu, 22 Feb 2024 16:29:01 +0700
Subject: Improve render on checkout page

---
 src/lib/checkout/components/Checkout.jsx | 58 ++++++++++++++++++--------------
 1 file changed, 33 insertions(+), 25 deletions(-)

(limited to 'src/lib/checkout/components/Checkout.jsx')

diff --git a/src/lib/checkout/components/Checkout.jsx b/src/lib/checkout/components/Checkout.jsx
index 85eda80b..52edbd05 100644
--- a/src/lib/checkout/components/Checkout.jsx
+++ b/src/lib/checkout/components/Checkout.jsx
@@ -1,36 +1,36 @@
-import Alert from '@/core/components/elements/Alert/Alert';
-import Divider from '@/core/components/elements/Divider/Divider';
-import Link from '@/core/components/elements/Link/Link';
-import useAuth from '@/core/hooks/useAuth';
-import { getItemAddress } from '@/core/utils/address';
-import addressesApi from '@/lib/address/api/addressesApi';
+import { Skeleton, Spinner } from '@chakra-ui/react';
 import {
   BanknotesIcon,
   ChevronLeftIcon,
   ClockIcon,
   ExclamationCircleIcon,
 } from '@heroicons/react/24/outline';
+import axios from 'axios';
+import { AnimatePresence, motion } from 'framer-motion';
+import { useRouter } from 'next/router';
 import React, { useEffect, useMemo, useRef, useState } from 'react';
-import _ from 'lodash';
-import { deleteItemCart } from '@/core/utils/cart';
-import currencyFormat from '@/core/utils/currencyFormat';
 import { toast } from 'react-hot-toast';
-import getFileBase64 from '@/core/utils/getFileBase64';
-import { useRouter } from 'next/router';
-import axios from 'axios';
+import { useQuery } from 'react-query';
+import snakecaseKeys from 'snakecase-keys';
+
+import Alert from '@/core/components/elements/Alert/Alert';
+import Divider from '@/core/components/elements/Divider/Divider';
 import Image from '@/core/components/elements/Image/Image';
-import MobileView from '@/core/components/views/MobileView';
-import DesktopView from '@/core/components/views/DesktopView';
-import ExpedisiList from '../api/ExpedisiList';
-import whatsappUrl from '@/core/utils/whatsappUrl';
+import Link from '@/core/components/elements/Link/Link';
 import BottomPopup from '@/core/components/elements/Popup/BottomPopup';
-import { useQuery } from 'react-query';
+import DesktopView from '@/core/components/views/DesktopView';
+import MobileView from '@/core/components/views/MobileView';
+import useAuth from '@/core/hooks/useAuth';
+import { getItemAddress } from '@/core/utils/address';
+import { deleteItemCart } from '@/core/utils/cart';
+import currencyFormat from '@/core/utils/currencyFormat';
+import getFileBase64 from '@/core/utils/getFileBase64';
 import { gtagPurchase } from '@/core/utils/googleTag';
-import { findVoucher, getVoucher } from '../api/getVoucher';
-import { Spinner } from '@chakra-ui/react';
-import { AnimatePresence, motion } from 'framer-motion';
-import snakecaseKeys from 'snakecase-keys';
+import whatsappUrl from '@/core/utils/whatsappUrl';
+import addressesApi from '@/lib/address/api/addressesApi';
 import CartItem from '~/modules/cart/components/Item.tsx';
+import ExpedisiList from '../api/ExpedisiList';
+import { findVoucher, getVoucher } from '../api/getVoucher';
 
 const SELF_PICKUP_ID = 32;
 
@@ -773,7 +773,10 @@ const Checkout = () => {
           <PickupAddress label='Alamat Pickup' />
         )}
         {selectedCarrierId != SELF_PICKUP_ID && (
-          <>
+          <Skeleton
+            isLoaded={!!selectedAddress.invoicing && !!selectedAddress.shipping}
+            minHeight={320}
+          >
             <SectionAddress
               address={selectedAddress.shipping}
               label='Alamat Pengiriman'
@@ -785,7 +788,7 @@ const Checkout = () => {
               label='Alamat Penagihan'
               url='/my/address?select=invoice'
             />
-          </>
+          </Skeleton>
         )}
         <Divider />
         <SectionValidation address={selectedAddress.invoicing} />
@@ -1056,7 +1059,12 @@ const Checkout = () => {
                 <PickupAddress label='Alamat Pickup' />
               )}
               {selectedCarrierId != SELF_PICKUP_ID && (
-                <>
+                <Skeleton
+                  isLoaded={
+                    !!selectedAddress.invoicing && !!selectedAddress.shipping
+                  }
+                  minHeight={290}
+                >
                   <SectionAddress
                     address={selectedAddress.shipping}
                     label='Alamat Pengiriman'
@@ -1068,7 +1076,7 @@ const Checkout = () => {
                     label='Alamat Penagihan'
                     url='/my/address?select=invoice'
                   />
-                </>
+                </Skeleton>
               )}
               <Divider />
               <SectionValidation address={selectedAddress.invoicing} />
-- 
cgit v1.2.3


From c8cb137354ec569b4a13e180bc9cac2cab90c470 Mon Sep 17 00:00:00 2001
From: "HATEC\\SPVDEV001" <tri.susilo@altama.co.id>
Date: Sat, 6 Apr 2024 12:31:45 +0700
Subject: add voucher minus

---
 src/lib/checkout/components/Checkout.jsx | 38 +++++++++++++++++++++-----------
 1 file changed, 25 insertions(+), 13 deletions(-)

(limited to 'src/lib/checkout/components/Checkout.jsx')

diff --git a/src/lib/checkout/components/Checkout.jsx b/src/lib/checkout/components/Checkout.jsx
index 52edbd05..7a456d70 100644
--- a/src/lib/checkout/components/Checkout.jsx
+++ b/src/lib/checkout/components/Checkout.jsx
@@ -111,6 +111,7 @@ const Checkout = () => {
   const [checkoutValidation, setCheckoutValidation] = useState(false);
   const [loadingVoucher, setLoadingVoucher] = useState(true);
   const [loadingRajaOngkir, setLoadingRajaOngkir] = useState(false);
+  const [grandTotal, setGrandTotal] = useState(0);
 
   const expedisiValidation = useRef(null);
 
@@ -295,6 +296,14 @@ const Checkout = () => {
 
   const [isLoading, setIsLoading] = useState(false);
 
+  useEffect(() => {
+    const GT =
+      cartCheckout?.grandTotal +
+      Math.round(parseInt(biayaKirim * 1.1) / 1000) * 1000;
+    const finalGT = GT < 0 ? 0 : GT;
+    setGrandTotal(finalGT);
+  }, [biayaKirim, cartCheckout?.grandTotal, activeVoucher]);
+
   const checkout = async () => {
     const file = poFile.current.files[0];
     if (typeof file !== 'undefined' && file.size > 5000000) {
@@ -352,11 +361,20 @@ const Checkout = () => {
 
     const midtrans = async () => {
       for (const product of products) deleteItemCart({ productId: product.id });
-      const payment = await axios.post(
-        `${process.env.NEXT_PUBLIC_SELF_HOST}/api/shop/midtrans-payment?transactionId=${isCheckouted.id}`
-      );
-      setIsLoading(false);
-      window.location.href = payment.data.redirectUrl;
+      if (grandTotal > 0) {
+        const payment = await axios.post(
+          `${process.env.NEXT_PUBLIC_SELF_HOST}/api/shop/midtrans-payment?transactionId=${isCheckouted.id}`
+        );
+        setIsLoading(false);
+        window.location.href = payment.data.redirectUrl;
+      } else {
+        window.location.href = `${
+          process.env.NEXT_PUBLIC_SELF_HOST
+        }/shop/checkout/success?order_id=${isCheckouted.name.replace(
+          /\//g,
+          '-'
+        )}`;
+      }
     };
 
     gtag('event', 'conversion', {
@@ -913,10 +931,7 @@ const Checkout = () => {
             <div className='flex gap-x-2 justify-between mb-4'>
               <div>Grand Total</div>
               <div className='font-semibold text-gray_r-12'>
-                {currencyFormat(
-                  cartCheckout?.grandTotal +
-                    Math.round(parseInt(biayaKirim * 1.1) / 1000) * 1000
-                )}
+                {currencyFormat(grandTotal)}
               </div>
             </div>
           )}
@@ -1208,10 +1223,7 @@ const Checkout = () => {
                   <div className='flex gap-x-2 justify-between mb-4'>
                     <div>Grand Total</div>
                     <div className='font-semibold text-gray_r-12'>
-                      {currencyFormat(
-                        cartCheckout?.grandTotal +
-                          Math.round(parseInt(biayaKirim * 1.1) / 1000) * 1000
-                      )}
+                      {currencyFormat(grandTotal)}
                     </div>
                   </div>
                 )}
-- 
cgit v1.2.3


From 1bb3f91f27db4db6a16a1ed3fe59016268ba3d44 Mon Sep 17 00:00:00 2001
From: "HATEC\\SPVDEV001" <tri.susilo@altama.co.id>
Date: Wed, 8 May 2024 13:23:10 +0700
Subject: change wa number

---
 src/lib/checkout/components/Checkout.jsx | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'src/lib/checkout/components/Checkout.jsx')

diff --git a/src/lib/checkout/components/Checkout.jsx b/src/lib/checkout/components/Checkout.jsx
index 7a456d70..0090acee 100644
--- a/src/lib/checkout/components/Checkout.jsx
+++ b/src/lib/checkout/components/Checkout.jsx
@@ -1454,7 +1454,7 @@ const SectionExpedisi = ({
           dengan menghubungi admin melalui{' '}
           <a
             className='text-danger-500 inline'
-            href='https://api.whatsapp.com/send?phone=628128080622'
+            href='https://api.whatsapp.com/send?phone=6281717181922'
           >
             tautan ini
           </a>
-- 
cgit v1.2.3

