From 36601aba6017aeef16f89351eb487238402ab52e Mon Sep 17 00:00:00 2001
From: it-fixcomart <it@fixcomart.co.id>
Date: Tue, 24 Sep 2024 16:12:50 +0700
Subject: <iman> update Perapihan Tag

---
 src/lib/quotation/components/Quotationheader.jsx | 131 +++++++++++++++++------
 1 file changed, 96 insertions(+), 35 deletions(-)

(limited to 'src/lib/quotation/components/Quotationheader.jsx')

diff --git a/src/lib/quotation/components/Quotationheader.jsx b/src/lib/quotation/components/Quotationheader.jsx
index 4529c977..cb7684ed 100644
--- a/src/lib/quotation/components/Quotationheader.jsx
+++ b/src/lib/quotation/components/Quotationheader.jsx
@@ -19,14 +19,22 @@ const Quotationheader = (quotationCount) => {
     context: 'quotation',
     site: auth?.webRole === null && auth?.site ? auth.site : null,
   };
-  
+
   const router = useRouter();
   const [subTotal, setSubTotal] = useState(null);
   const [buttonLoading, SetButtonTerapkan] = useState(false);
   const itemLoading = [1, 2, 3];
   const [countQuotation, setCountQuotation] = useState(null);
-  const { productCart, setProductCart, refreshCart, setRefreshCart, isLoading, setIsloading, productQuotation, setProductQuotation } =
-  useProductCartContext();
+  const {
+    productCart,
+    setProductCart,
+    refreshCart,
+    setRefreshCart,
+    isLoading,
+    setIsloading,
+    productQuotation,
+    setProductQuotation,
+  } = useProductCartContext();
 
   const [isHovered, setIsHovered] = useState(false);
   const [isTop, setIsTop] = useState(true);
@@ -49,34 +57,44 @@ const Quotationheader = (quotationCount) => {
       refreshCartf();
     }
   };
-  let { transactions } = useTransactions({ query });
+  let transactions = null;
+
+  if (auth) {
+    transactions = useTransactions({ query });
+  }
 
   const refreshCartf = useCallback(async () => {
     setIsloading(true);
-    let pendingTransactions = transactions?.data?.saleOrders.filter(transaction => transaction.status === 'draft');
+    let pendingTransactions = transactions?.data?.saleOrders.filter(
+      (transaction) => transaction.status === 'draft'
+    );
     setProductQuotation(pendingTransactions);
-    setCountQuotation(pendingTransactions?.length ? pendingTransactions?.length : pendingTransactions?.length);
+    setCountQuotation(
+      pendingTransactions?.length
+        ? pendingTransactions?.length
+        : pendingTransactions?.length
+    );
     setIsloading(false);
   }, [setProductQuotation, setIsloading]);
 
   useEffect(() => {
-    if (!qotation) return
+    if (!qotation) return;
 
-    let calculateTotalDiscountAmount = 0
+    let calculateTotalDiscountAmount = 0;
     for (const product of qotation) {
-      // if (qotation.quantity == '') continue  
-      calculateTotalDiscountAmount += product.amountUntaxed
+      // if (qotation.quantity == '') continue
+      calculateTotalDiscountAmount += product.amountUntaxed;
     }
-    let subTotal = calculateTotalDiscountAmount
-    setSubTotal(subTotal)
-  }, [qotation])
+    let subTotal = calculateTotalDiscountAmount;
+    setSubTotal(subTotal);
+  }, [qotation]);
 
   useEffect(() => {
     if (refreshCart) {
       refreshCartf();
     }
     setRefreshCart(false);
-  }, [ refreshCartf, setRefreshCart]);
+  }, [refreshCartf, setRefreshCart]);
 
   useEffect(() => {
     setCountQuotation(quotationCount.quotationCount);
@@ -95,7 +113,10 @@ const Quotationheader = (quotationCount) => {
 
   const handleCheckout = async () => {
     SetButtonTerapkan(true);
-    let checkoutAll = await odooApi('POST', `/api/v1/user/${auth.id}/cart/select-all`);
+    let checkoutAll = await odooApi(
+      'POST',
+      `/api/v1/user/${auth.id}/cart/select-all`
+    );
     router.push('/my/quotations');
   };
 
@@ -150,7 +171,9 @@ const Quotationheader = (quotationCount) => {
                 className='w-full max-w-md p-2 bg-white border border-gray-200 rounded-lg shadow overflow-hidden'
               >
                 <div className='p-2 flex justify-between items-center'>
-                  <h5 className='text-base font-semibold leading-none'>Daftar Quotation</h5>
+                  <h5 className='text-base font-semibold leading-none'>
+                    Daftar Quotation
+                  </h5>
                 </div>
                 <hr className='mt-3 mb-3 border border-gray-100' />
                 <div className='flow-root max-h-[250px] overflow-y-auto'>
@@ -158,7 +181,10 @@ const Quotationheader = (quotationCount) => {
                     <div className='justify-center p-4'>
                       <p className='text-gray-500 text-center '>
                         Silahkan{' '}
-                        <Link href='/login' className='text-red-600 underline leading-6'>
+                        <Link
+                          href='/login'
+                          className='text-red-600 underline leading-6'
+                        >
                           Login
                         </Link>{' '}
                         Untuk Melihat Daftar Quotation Anda
@@ -167,7 +193,11 @@ const Quotationheader = (quotationCount) => {
                   )}
                   {isLoading &&
                     itemLoading.map((item) => (
-                      <div key={item} role='status' className='max-w-sm animate-pulse'>
+                      <div
+                        key={item}
+                        role='status'
+                        className='max-w-sm animate-pulse'
+                      >
                         <div className='flex items-center space-x-4 mb- 2'>
                           <div className='flex-shrink-0'>
                             <PhotoIcon className='h-16 w-16 text-gray-500' />
@@ -189,43 +219,70 @@ const Quotationheader = (quotationCount) => {
                   )}
                   {auth && qotation.length > 0 && !isLoading && (
                     <>
-                      <ul role='list' className='divide-y divide-gray-200 dark:divide-gray-700'>
+                      <ul
+                        role='list'
+                        className='divide-y divide-gray-200 dark:divide-gray-700'
+                      >
                         {qotation &&
                           qotation?.map((product, index) => (
                             <>
                               <li className='py-1 sm:py-2'>
                                 <div className='flex justify-between border p-2 flex-col gap-y-2 hover:border-red-500'>
-                                <Link 
+                                  <Link
                                     href={`/my/quotations/${product?.id}`}
-                                    className='hover:border-red-500' 
-                                     >
+                                    className='hover:border-red-500'
+                                  >
                                     <div className='flex justify-between mb-2'>
                                       <div className='flex flex-row items-center'>
-                                      <p className='tanggal text-xs opacity-80 mr-[2px]'>Sales : </p>
-                                      <p className='tanggal text-xs text-red-500 font-semibold'>{product.sales}</p>
+                                        <p className='tanggal text-xs opacity-80 mr-[2px]'>
+                                          Sales :{' '}
+                                        </p>
+                                        <p className='tanggal text-xs text-red-500 font-semibold'>
+                                          {product.sales}
+                                        </p>
                                       </div>
                                       <div className='flex flex-row items-center'>
-                                      <p className='text-xs opacity-80 mr-[2px]'>Status :</p>
-                                      <p className='badge-red h-fit text-xs whitespace-nowrap'>Pending Quotation</p>
+                                        <p className='text-xs opacity-80 mr-[2px]'>
+                                          Status :
+                                        </p>
+                                        <p className='badge-red h-fit text-xs whitespace-nowrap'>
+                                          Pending Quotation
+                                        </p>
                                       </div>
                                     </div>
                                     <div className='flex justify-between mb-2'>
                                       <div className='flex flex-col items-start'>
-                                        <p className=' text-xs opacity-80 mr-[2px]'>No. Transaksi</p>
-                                        <p className=' text-sm text-red-500 font-semibold'> {product.name}</p>
+                                        <p className=' text-xs opacity-80 mr-[2px]'>
+                                          No. Transaksi
+                                        </p>
+                                        <p className=' text-sm text-red-500 font-semibold'>
+                                          {' '}
+                                          {product.name}
+                                        </p>
                                       </div>
                                       <div className='flex flex-col items-end'>
-                                        <p className='text-xs opacity-80 mr-[2px]'>No. Purchase Order</p>
-                                        <p className='font-semibold text-sm text-red-500'> {product.purchaseOrderName ? product.purchaseOrderName : '-'}</p>
+                                        <p className='text-xs opacity-80 mr-[2px]'>
+                                          No. Purchase Order
+                                        </p>
+                                        <p className='font-semibold text-sm text-red-500'>
+                                          {' '}
+                                          {product.purchaseOrderName
+                                            ? product.purchaseOrderName
+                                            : '-'}
+                                        </p>
                                       </div>
                                     </div>
                                     {/* <div className='my-0.5 h-0.5 bg-gray-200'></div> */}
                                     <hr className='mt-3 mb-3 border border-gray-100' />
                                     <div className='bagian bawah flex justify-between mt-2'>
-                                      <p className='font-semibold text-sm'>Total</p>
-                                      <p className='font-semibold text-sm'>{currencyFormat(product.amountUntaxed)}</p>
+                                      <p className='font-semibold text-sm'>
+                                        Total
+                                      </p>
+                                      <p className='font-semibold text-sm'>
+                                        {currencyFormat(product.amountUntaxed)}
+                                      </p>
                                     </div>
-                                </Link>
+                                  </Link>
                                 </div>
                               </li>
                             </>
@@ -238,8 +295,12 @@ const Quotationheader = (quotationCount) => {
                 {auth && qotation.length > 0 && !isLoading && (
                   <>
                     <div className='mt-3 ml-1'>
-                      <span className='text-gray-400 text-caption-2'>Subtotal Sebelum PPN : </span>
-                      <span className='font-semibold text-red-600'>{currencyFormat(subTotal)}</span>
+                      <span className='text-gray-400 text-caption-2'>
+                        Subtotal Sebelum PPN :{' '}
+                      </span>
+                      <span className='font-semibold text-red-600'>
+                        {currencyFormat(subTotal)}
+                      </span>
                     </div>
                     <div className='mt-5 mb-2'>
                       <button
-- 
cgit v1.2.3

