From 04961a55929017f77ee6801d2b7ada4c05689821 Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Thu, 31 Jul 2025 15:55:05 +0700 Subject: fix repeat order --- src/lib/quotation/components/Quotationheader.jsx | 2 +- .../components/TransactionStatusBadge.jsx | 4 +- src/lib/transaction/components/Transactions.jsx | 461 ++++++++++++--------- src/lib/treckingAwb/component/Manifest.jsx | 76 ---- 4 files changed, 261 insertions(+), 282 deletions(-) (limited to 'src/lib') diff --git a/src/lib/quotation/components/Quotationheader.jsx b/src/lib/quotation/components/Quotationheader.jsx index 6551296a..a035edc7 100644 --- a/src/lib/quotation/components/Quotationheader.jsx +++ b/src/lib/quotation/components/Quotationheader.jsx @@ -243,7 +243,7 @@ const Quotationheader = (quotationCount) => { Status :

- Pesanan Diterima + Pesanan Diproses

diff --git a/src/lib/transaction/components/TransactionStatusBadge.jsx b/src/lib/transaction/components/TransactionStatusBadge.jsx index e061587c..cb8cbcd9 100644 --- a/src/lib/transaction/components/TransactionStatusBadge.jsx +++ b/src/lib/transaction/components/TransactionStatusBadge.jsx @@ -14,11 +14,11 @@ const TransactionStatusBadge = ({ status }) => { break case 'waiting': badgeProps.className.push('badge-yellow') - badgeProps.text = 'Pesanan Diterima' + badgeProps.text = 'Pesanan Diproses' break case 'sale': badgeProps.className.push('badge-yellow') - badgeProps.text = 'Pesanan Diproses' + badgeProps.text = 'Pesanan Dikemas' break case 'shipping': badgeProps.className.push('badge-green') diff --git a/src/lib/transaction/components/Transactions.jsx b/src/lib/transaction/components/Transactions.jsx index c4651119..acb925da 100644 --- a/src/lib/transaction/components/Transactions.jsx +++ b/src/lib/transaction/components/Transactions.jsx @@ -1,5 +1,5 @@ import { useRouter } from 'next/router'; -import { useEffect, useState } from 'react'; +import { useEffect, useState, useRef } from 'react'; import { toast } from 'react-hot-toast'; import { EllipsisVerticalIcon, @@ -34,7 +34,10 @@ import Image from '@/core/components/elements/Image/Image'; import { upsertUserCart } from '~/services/cart'; import { useProductCartContext } from '@/contexts/ProductCartContext'; import { Swiper, SwiperSlide } from 'swiper/react'; +import { Navigation } from 'swiper'; import 'swiper/css'; +import 'swiper/css/navigation'; +import { Calendar } from 'lucide-react'; import DatePicker from 'react-datepicker'; import 'react-datepicker/dist/react-datepicker.css'; import { DateRangePicker } from 'react-date-range'; @@ -45,6 +48,7 @@ import { Popover } from '@headlessui/react'; const Transactions = ({ context = '' }) => { const auth = useAuth(); const router = useRouter(); + const swiperRef = useRef(null); const { q = '', page = 1, @@ -80,11 +84,12 @@ const Transactions = ({ context = '' }) => { const [isOpenCalender, setIsOpenCalender] = useState(false); const [cachedAllData, setCachedAllData] = useState(null); // Simpan data "All" const [currentData, setCurrentData] = useState([]); // Data yang ditampilkan + const calendarRef = useRef(null); + const [isDateSelected, setIsDateSelected] = useState(false); const parseDate = (date) => { - if (null || 'null') return null; - if (!date) return null; - if (date instanceof Date) return date; // Jika sudah Date, langsung return + if (!date || date === 'null') return null; + if (date instanceof Date) return date; const [day, month, year] = date.split('/').map(Number); return new Date(year, month - 1, day); }; @@ -106,7 +111,7 @@ const Transactions = ({ context = '' }) => { sort: sortNew, startDate: state[0].startDate ? state[0].startDate.toLocaleDateString('id-ID') - : state[0].startDate, + : null, endDate: state[0]?.endDate?.toLocaleDateString('id-ID'), site: siteFilter || (auth?.webRole === null && auth?.site ? auth.site : null), @@ -114,8 +119,9 @@ const Transactions = ({ context = '' }) => { const statuses = [ { id: 'all', label: 'Semua' }, { id: 'quotation', label: 'Pending Quotation' }, - { id: 'diterima', label: 'Pesanan Diterima' }, { id: 'diproses', label: 'Pesanan Diproses' }, + { id: 'dikemas', label: 'Pesanan Dikemas' }, + { id: 'partial', label: 'Dikirim Sebagian' }, { id: 'dikirim', label: 'Pesanan Dikirim' }, { id: 'selesai', label: 'Pesanan Selesai' }, { id: 'cancel', label: 'Pesanan Dibatalkan' }, @@ -302,6 +308,22 @@ const Transactions = ({ context = '' }) => { } }; + useEffect(() => { + const handleClickOutside = (event) => { + if ( + calendarRef.current && + !calendarRef.current.contains(event.target) + ) { + setIsOpenCalender(false); + } + }; + + document.addEventListener("mousedown", handleClickOutside); + return () => { + document.removeEventListener("mousedown", handleClickOutside); + }; + }, []); + const startItem = 1 + (pageNew - 1) * limitNew; const endItem = Math.min( limitNew * pageNew, @@ -438,82 +460,82 @@ const Transactions = ({ context = '' }) => { ))} -
-
setIsOpenCalender(true)} - > - - {state[0]?.startDate - ? `${state[0].startDate.toLocaleDateString()} - ${state[0].endDate.toLocaleDateString()}` - : 'Semua Tanggal'} - -
- - {isOpenCalender && ( -
-
- setState([item.selection])} - showSelectionPreview={true} - maxDate={new Date()} - moveRangeOnFirstSelection={false} - months={1} - ranges={state} - direction='horizontal' - className='w-full' - /> - -
- - -
+
+ + {isOpenCalender && ( +
+ {/* Tombol silang di sudut kanan atas */} + + setState([item.selection])} + showSelectionPreview={false} + maxDate={new Date()} + moveRangeOnFirstSelection={false} + months={1} + ranges={state} + className='w-full' + /> + +
+
- )} -
+ )} +
{/*
e.target === document} @@ -643,7 +665,7 @@ const Transactions = ({ context = '' }) => { {saleOrder.products?.length > 1 && (
{saleOrder.products - .slice(1, 6) + .slice(1, 4) .map((product, index) => ( { className='object-contain object-center border border-gray_r-6 h-8 w-8 rounded-md' /> ))} - - {saleOrder.products?.length > 6 - ? 'Lihat ' + - (saleOrder.products?.length - 6) + - ' produk lainnya' - : 'Lihat semua produk'} - + {saleOrder.products.length > 4 ? ( + + +{saleOrder.products.length - 4} lihat semua produk + + ) : ( + + Lihat semua produk + + )}
)}
@@ -880,33 +907,60 @@ const Transactions = ({ context = '' }) => {
-
+
Status - - {statuses.map((status) => ( - - + + {/* Swiper container scrollable */} +
+ - {status.label} - - - ))} - + {statuses.map((status) => ( + + + + ))} + +
+ + {/* Next */} + +
+
@@ -944,86 +998,6 @@ const Transactions = ({ context = '' }) => {
-
- - {isOpenCalender && ( -
- {/* Tombol silang di sudut kanan atas */} - - setState([item.selection])} - showSelectionPreview={true} - maxDate={new Date()} - moveRangeOnFirstSelection={false} - months={1} - ranges={state} - className='w-full' - /> - -
- - -
-
- )} -

Menampilkan {startItem}- @@ -1050,6 +1024,82 @@ const Transactions = ({ context = '' }) => { +

+ + {isOpenCalender && ( +
+ {/* Tombol silang di sudut kanan atas */} + + setState([item.selection])} + showSelectionPreview={false} + maxDate={new Date()} + moveRangeOnFirstSelection={false} + months={1} + ranges={state} + className='w-full' + /> + +
+ +
+
+ )} +
@@ -1140,7 +1190,7 @@ const Transactions = ({ context = '' }) => { {saleOrder.products?.length > 1 && (
{saleOrder.products - .slice(1, 6) + .slice(1, 4) .map((product, index) => ( { className='object-contain object-center border border-gray_r-6 h-16 w-16 rounded-md' /> ))} - - {saleOrder.products?.length > 6 - ? 'Lihat ' + - (saleOrder.products?.length - 6) + - ' produk lainnya' - : 'Lihat semua produk'} - + {saleOrder.products.length > 4 ? ( + + +{saleOrder.products.length - 4} lihat semua produk + + ) : ( + + Lihat semua produk + + )}
)} diff --git a/src/lib/treckingAwb/component/Manifest.jsx b/src/lib/treckingAwb/component/Manifest.jsx index 5b456ccf..acb86f57 100644 --- a/src/lib/treckingAwb/component/Manifest.jsx +++ b/src/lib/treckingAwb/component/Manifest.jsx @@ -135,82 +135,6 @@ const Manifest = ({ idAWB, closePopup }) => { )} -<<<<<<< HEAD -
-

- Estimasi tiba pada{' '} - ({manifests?.eta}) -

-

- Dikirim Menggunakan{' '} - - {manifests?.deliveryOrder.carrier} - -

- {manifests?.waybillNumber && ( -
-

No. Resi

-
-

{manifests?.waybillNumber}

- -
-
- )} -
-
-
-
    - {manifests?.manifests?.map((manifest, index) => ( - <> -
  1. - {manifests.delivered == true && index == 0 ? ( -
    - -
    - ) : ( -
    - )} - {manifests.delivered != true && ( -
    - )} -======= ->>>>>>> new-release -- cgit v1.2.3