import { CheckIcon, ClockIcon, EllipsisVerticalIcon, MagnifyingGlassIcon, } from '@heroicons/react/24/outline'; import { Skeleton } from '@chakra-ui/react'; import { div, toQuery } from 'lodash-contrib'; import _ from 'lodash'; import { useRouter } from 'next/router'; import { useState, useEffect } from 'react'; import useInvoices from '../../invoice/hooks/useInvoices'; import Spinner from '@/core/components/elements/Spinner/Spinner'; import Alert from '@/core/components/elements/Alert/Alert'; import Pagination from '@/core/components/elements/Pagination/Pagination'; import Link from '@/core/components/elements/Link/Link'; import currencyFormat from '@/core/utils/currencyFormat'; import BottomPopup from '@/core/components/elements/Popup/BottomPopup'; import { downloadInvoice, downloadTaxInvoice, } from '../../invoice/utils/invoices'; import MobileView from '@/core/components/views/MobileView'; import DesktopView from '@/core/components/views/DesktopView'; import Menu from '@/lib/auth/components/Menu'; import odooApi from '@/core/api/odooApi'; import { getAuth } from '@/core/utils/auth'; import FooterBanner from '~/modules/footer-banner'; import Image from '~/components/ui/image'; import useDevice from '@/core/hooks/useDevice'; import { Tooltip } from '@chakra-ui/react'; import { InfoIcon } from 'lucide-react'; const Tempo = () => { const auth = getAuth(); const router = useRouter(); const { q = '', page = 1, limit = 15, status = '' } = router.query; const { isDesktop, isMobile } = useDevice(); const [pageNew, setPageNew] = useState(page); const [limitNew, setLimitNew] = useState(limit); const [statusNew, setStatusNew] = useState(status); const query = { name: q, offset: (pageNew - 1) * limitNew, limit: limitNew, status: statusNew, }; const { invoices } = useInvoices({ query }); const [isLoading, setIsLoading] = useState(true); const [tempo, setTempo] = useState([]); const [inputQuery, setInputQuery] = useState(q); const [toOthers, setToOthers] = useState(null); const pageCount = Math.ceil(invoices?.data?.invoiceTotal / limitNew); let pageQuery = _.omit(query, ['limitNew', 'offset']); pageQuery = _.pickBy(pageQuery, _.identity); pageQuery = toQuery(pageQuery); const handleSubmit = (e) => { e.preventDefault(); router.push(`/my/tempo?q=${inputQuery}`); }; useEffect(() => { const loadTempo = async () => { setIsLoading(true); const dataTempo = await odooApi( 'GET', `/api/v1/check/${auth.partnerId}/tempo` ); setTempo(dataTempo); setIsLoading(false); }; loadTempo(); }, []); const limitTempo = Math.round( parseInt(tempo.amountDue + tempo.remainingLimit) ); const amountDue = Math.round(parseInt(tempo.amountDue + tempo.amountDueSale)); const startItem = 1 + (pageNew - 1) * limitNew; const endItem = Math.min( limitNew * pageNew, invoices?.data?.invoiceTotal + (statusNew === 0 || statusNew === 2 || statusNew === 4 ? invoices?.data?.saleOrderTotal : 0) ); const getDueDate = (invoice) => { const [day, month, year] = invoice.split('/'); const dueDate = new Date(year, month - 1, day); // Konversi ke objek Date return dueDate; }; const formatTanggal = (tanggalInput) => { const [day, month, year] = tanggalInput.split('/'); const date = new Date(year, month - 1, day); const formattedDate = new Intl.DateTimeFormat('id-ID', { day: '2-digit', month: 'short', year: 'numeric', }).format(date); return formattedDate; }; const handleClick = () => { setStatusNew((prevStatus) => (prevStatus === 4 ? 0 : 4)); // Toggle antara 4 dan 0 }; const handleClickInvoice = () => { setStatusNew((prevStatus) => (prevStatus === 1 ? 0 : 1)); // Toggle antara 4 dan 0 }; return ( <>

Pembayaran Tempo

Kredit Limit Anda {limitTempo ? currencyFormat(limitTempo) : '-'}

Status Detail Tempo Pembayaran Anda adalah{' '} {tempo.paymentTerm ? tempo.paymentTerm : 'Review'}

Sisa Kredit Limit

{limitTempo && amountDue ? currencyFormat( Math.round(parseInt(limitTempo - amountDue)) ) : '-'}

Kredit Limit Terpakai

{amountDue ? currencyFormat(amountDue) : '-'}
{tempo.amountDueTotal ? tempo.amountDueTotal + tempo.amountDueSaleTotal + ` Transaksi` : ''}

Jatuh Tempo

{tempo.amountJatuhTempo ? currencyFormat(tempo.amountJatuhTempo) : '-'}
{tempo.amountJatuhTempoTotal ? tempo.amountJatuhTempoTotal + ` Invoice` : ''}
{/*

Jatuh Tempo

{tempo.amountJatuhTempo ? currencyFormat(tempo.amountJatuhTempo) : '-'}
*/}
{auth && auth?.tempoProgres == 'review' && !tempo.paymentTerm ? (
Registrasi Tempo
) : (
setInputQuery(e.target.value)} />
{!invoices.isLoading && (

Menampilkan {startItem}-{endItem} dari{' '} {invoices?.data?.invoiceTotal + (statusNew === 0 || statusNew === 2 || statusNew === 4 ? invoices?.data?.saleOrderTotal : 0)}

)}
{/* {invoices.isLoading && ( )} */} {/* {!invoices.isLoading && (!invoices?.data?.saleOrders || invoices?.data?.saleOrders?.length == 0) && ( )} */} {(statusNew == 0 || statusNew == 2 || statusNew == 4) && invoices.data?.saleOrders?.map((orders) => ( ))} {invoices.isLoading && ( )} {!invoices.isLoading && (!invoices?.data?.invoices || invoices?.data?.invoices?.length == 0) && ( )} {invoices.data?.invoices?.map((invoice) => ( ))}
No. Invoice No. Transaksi Salesperson Tanggal Jatuh Tempo Status Total
Tidak ada orders
{orders.salesOrder || '-'} {orders.name} {orders.sales} {orders.dateOrder.split(' ')[0]} - {
Belum Jatuh Tempo
}
{currencyFormat(orders.amountTotal)}
Tidak ada Invoice
{invoice.name} {invoice.salesOrder || '-'} {invoice.sales} {invoice.invoiceDate} {invoice.invoiceDateDue} {invoice.amountResidual > 0 ? ( new Date() > getDueDate(invoice.invoiceDateDue) ? (
Jatuh Tempo
) : (
Belum Jatuh Tempo
) ) : (
Lunas
)}
{currencyFormat(invoice.amountTotal)}
)}

Kredit Limit Anda :{' '} {limitTempo ? currencyFormat(limitTempo) : '-'}

Status Detail Tempo Pembayaran Anda adalah : {tempo.paymentTerm ? tempo.paymentTerm : 'Review'}

Sisa Kredit Limit

{limitTempo && amountDue ? currencyFormat( Math.round(parseInt(limitTempo - amountDue)) ) : '-'}
{' '}

Kredit Limit Terpakai

{amountDue ? currencyFormat(amountDue) : '-'}

Jatuh Tempo

{tempo.amountJatuhTempo ? currencyFormat(tempo.amountJatuhTempo) : '-'}
{auth && (!auth?.tempoProgres == 'review' || tempo.paymentTerm) && (
setInputQuery(e.target.value)} />
)} {invoices.isLoading && (
)} {auth && auth?.tempoProgres == 'review' && !tempo.paymentTerm ? ( // // Tidak ada invoice //
Registrasi Tempo
) : (
{(statusNew == 0 || statusNew == 2 || statusNew == 4) && invoices.data?.saleOrders?.map((invoice, index) => (
No. Transaksi

{invoice.name}

Belum Jatuh Tempo
{/* setToOthers(invoice)} /> */}

{invoice.dateOrder.split(' ')[0]}

Jatuh Tempo: -


No. Invoice

-

Total Belanja

{currencyFormat(invoice.amountTotal)}

{/* {invoice.efaktur ? (
Faktur Pajak
) : (
Faktur Pajak
)} */}
))} {invoices.data?.invoices?.map((invoice, index) => (
No. Transaksi

{invoice.salesOrder}

{invoice.amountResidual > 0 ? ( new Date() > getDueDate(invoice.invoiceDateDue) ? (
Jatuh Tempo
) : (
Belum Jatuh Tempo
) ) : (
Lunas
)} {/* setToOthers(invoice)} /> */}

{formatTanggal(invoice.invoiceDate)}

Jatuh Tempo: {formatTanggal(invoice.invoiceDateDue)}


No. Invoice

{invoice.name || '-'}

Total Belanja

{currencyFormat(invoice.amountTotal)}

{/* {invoice.efaktur ? (
Faktur Pajak
) : (
Faktur Pajak
)} */}
))}
)} setToOthers(null)} >
); }; export default Tempo;