import { CheckIcon, ClockIcon, EllipsisVerticalIcon, MagnifyingGlassIcon, } from '@heroicons/react/24/outline'; 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 ProgressBar from '@ramonak/react-progress-bar'; const Tempo = () => { const auth = getAuth(); const router = useRouter(); const { q = '', page = 1 } = router.query; const limit = 15; const query = { name: q, offset: (page - 1) * limit, limit, }; 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 / limit); let pageQuery = _.omit(query, ['limit', 'offset']); pageQuery = _.pickBy(pageQuery, _.identity); pageQuery = toQuery(pageQuery); const handleSubmit = (e) => { e.preventDefault(); router.push(`/my/invoices?q=${inputQuery}`); }; useEffect(() => { const loadTempo = async () => { setIsLoading(true); const dataTempo = await odooApi( 'GET', `/api/v1/check/${auth.parentId}/tempo` ); setTempo(dataTempo); setIsLoading(false); }; loadTempo(); }, []); const limitTempo = Math.round( parseInt(tempo.amountDue + tempo.remainingLimit) ); const amountDue = Math.round(parseInt(tempo.amountDue)); console.log('tempo', tempo); const getLabel = () => { if (Math.round((amountDue / limitTempo) * 100) >= 100) return 'Limit Tempo mencapai batas'; if (Math.round((amountDue / limitTempo) * 100) >= 50) return 'Hampir Habis'; return ''; }; return ( <>

Pembayaran Tempo

Jenis Tempo Pembayaran Anda adalah :{' '} {!isLoading && ( {tempo.paymentTerm} )}

Limit Tempo Terpakai

{!isLoading && currencyFormat(amountDue)}

Limit Tempo

{!isLoading && currencyFormat(limitTempo)}

{getLabel()}
setInputQuery(e.target.value)} />
{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 invoice
{invoice.name} {invoice.purchaseOrderName || '-'} {invoice.sales} {invoice.invoiceDate} {invoice.amountResidual > 0 ? (
Belum Lunas
) : (
Lunas
)}
{invoice.amountResidual > 0 ? (
Belum Lunas
) : (
Lunas
)}
{currencyFormat(invoice.amountTotal)}
setInputQuery(e.target.value)} />
{invoices.isLoading && (
)} {!invoices.isLoading && invoices.data?.invoices?.length === 0 && ( Tidak ada invoice )} {invoices.data?.invoices?.map((invoice, index) => (
No. Invoice

{invoice.name}

{invoice.amountResidual > 0 ? (
Belum Lunas
) : (
Lunas
)} setToOthers(invoice)} />

{invoice.invoiceDate}

{invoice.paymentTerm}


No. Purchase Order

{invoice.purchaseOrderName || '-'}

Total Invoice

{currencyFormat(invoice.amountTotal)}

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