import { useRouter } from 'next/router' import { useState } from 'react' import { toast } from 'react-hot-toast' import { EllipsisVerticalIcon, MagnifyingGlassIcon } from '@heroicons/react/24/outline' import { downloadPurchaseOrder, downloadQuotation } from '../utils/transactions' import useTransactions from '../hooks/useTransactions' import currencyFormat from '@/core/utils/currencyFormat' import cancelTransactionApi from '../api/cancelTransactionApi' import TransactionStatusBadge from './TransactionStatusBadge' import Spinner from '@/core/components/elements/Spinner/Spinner' import Link from '@/core/components/elements/Link/Link' import BottomPopup from '@/core/components/elements/Popup/BottomPopup' import Pagination from '@/core/components/elements/Pagination/Pagination' import { toQuery } from 'lodash-contrib' import _ from 'lodash' import Alert from '@/core/components/elements/Alert/Alert' import MobileView from '@/core/components/views/MobileView' import DesktopView from '@/core/components/views/DesktopView' import Menu from '@/lib/auth/components/Menu' const Transactions = ({ context = '' }) => { const router = useRouter() const { q = '', page = 1 } = router.query const limit = 15 const query = { name: q, offset: (page - 1) * limit, context, limit } const { transactions } = useTransactions({ query }) const [inputQuery, setInputQuery] = useState(q) const [toOthers, setToOthers] = useState(null) const [toCancel, setToCancel] = useState(null) const submitCancelTransaction = async () => { const isCancelled = await cancelTransactionApi({ transaction: toCancel }) if (isCancelled) { toast.success('Berhasil batalkan transaksi') transactions.refetch() } setToCancel(null) } const pageCount = Math.ceil(transactions?.data?.saleOrderTotal / limit) let pageQuery = _.omit(query, ['limit', 'offset', 'context']) pageQuery = _.pickBy(pageQuery, _.identity) pageQuery = toQuery(pageQuery) const handleSubmit = (e) => { e.preventDefault() router.push(`${router.pathname}?q=${inputQuery}`) } return ( <>
setInputQuery(e.target.value)} />
{transactions.isLoading && (
)} {!transactions.isLoading && transactions.data?.saleOrders?.length === 0 && ( Tidak ada transaksi )} {transactions.data?.saleOrders?.map((saleOrder, index) => (
No. Transaksi

{saleOrder.name}

setToOthers(saleOrder)} />
No. Purchase Order

{saleOrder.purchaseOrderName || '-'}

Total Invoice

{saleOrder.invoiceCount} Invoice

Sales

{saleOrder.sales}

Total Harga

{currencyFormat(saleOrder.amountTotal)}

))} setToOthers(null)}>
setToCancel(null)} title='Batalkan Transaksi'>
Apakah anda yakin membatalkan transaksi{' '} {toCancel?.name}?

Daftar Transaksi{' '} {transactions?.data?.saleOrders ? `(${transactions?.data?.saleOrders.length})` : ''}

setInputQuery(e.target.value)} />
{transactions.isLoading && ( )} {!transactions.isLoading && (!transactions?.data?.saleOrders || transactions?.data?.saleOrders?.length == 0) && ( )} {transactions.data?.saleOrders?.map((saleOrder) => ( ))}
No. Transaksi No. PO Tanggal Created By Salesperson Total Status
Tidak ada transaksi
{saleOrder.name} {saleOrder.purchaseOrderName || '-'} {saleOrder.dateOrder || '-'} {saleOrder.address.customer?.name || '-'} {saleOrder.sales} {currencyFormat(saleOrder.amountTotal)}
) } export default Transactions