refactor(FE): Remove unused invoice download functionality from

PurchaseTable
This commit is contained in:
rstubryan
2026-02-07 09:10:39 +07:00
parent 54a6e7e247
commit 5ac958231a
2 changed files with 5 additions and 89 deletions
@@ -17,7 +17,6 @@ import RowCollapseOptions from '@/components/table/RowCollapseOptions';
import RowOptionsMenuWrapper from '@/components/table/RowOptionsMenuWrapper'; import RowOptionsMenuWrapper from '@/components/table/RowOptionsMenuWrapper';
import RequirePermission from '@/components/helper/RequirePermission'; import RequirePermission from '@/components/helper/RequirePermission';
import StatusBadge from '@/components/helper/StatusBadge'; import StatusBadge from '@/components/helper/StatusBadge';
import PurchaseOrderInvoice from '@/components/pages/purchase/order/PurchaseOrderInvoice';
import { cn, formatDate } from '@/lib/helper'; import { cn, formatDate } from '@/lib/helper';
import { isResponseSuccess } from '@/lib/api-helper'; import { isResponseSuccess } from '@/lib/api-helper';
@@ -159,27 +158,6 @@ const PurchaseTable = () => {
PurchaseApi.getAllFetcher PurchaseApi.getAllFetcher
); );
const [isDownloadingInvoice, setIsDownloadingInvoice] = useState(false);
const [invoicePurchaseData, setInvoicePurchaseData] =
useState<Purchase | null>(null);
const handleDownloadInvoice = async (purchaseId: number) => {
setIsDownloadingInvoice(true);
try {
const response = await PurchaseApi.getSingle(purchaseId);
if (isResponseSuccess(response) && response.data) {
setInvoicePurchaseData(response.data);
setTimeout(() => {
setInvoicePurchaseData(null);
}, 1000);
}
} catch {
toast.error('Gagal mengambil data purchase order.');
} finally {
setIsDownloadingInvoice(false);
}
};
// ===== TABLE COLUMNS DEFINITION ===== // ===== TABLE COLUMNS DEFINITION =====
const purchaseColumns: ColumnDef<Purchase>[] = [ const purchaseColumns: ColumnDef<Purchase>[] = [
{ {
@@ -190,38 +168,7 @@ const PurchaseTable = () => {
}, },
}, },
{ {
accessorKey: 'po_expedition', accessorKey: 'supplier',
header: 'PO Ekspedisi',
cell: (props) => {
const purchase = props.row.original;
if (!purchase.po_number || purchase.po_number === 'Belum dibuat') {
return <span>-</span>;
}
return (
<Button
color='primary'
className='w-fit min-w-32 flex items-center justify-start gap-1 px-2 py-1 text-sm font-mono'
onClick={() => handleDownloadInvoice(purchase.id)}
disabled={isDownloadingInvoice}
>
<Icon
icon={
isDownloadingInvoice
? 'eos-icons:loading'
: 'material-symbols:file-open-outline'
}
width={16}
height={16}
/>
{purchase.po_number}
</Button>
);
},
},
{
accessorKey: 'supplier.name',
header: 'Vendor', header: 'Vendor',
cell: (props) => props.row.original.supplier.name, cell: (props) => props.row.original.supplier.name,
}, },
@@ -505,15 +452,6 @@ const PurchaseTable = () => {
onClick: confirmationModalDeleteClickHandler, onClick: confirmationModalDeleteClickHandler,
}} }}
/> />
{invoicePurchaseData && (
<div className='hidden'>
<PurchaseOrderInvoice
data={invoicePurchaseData}
triggerDownloadOnMount={true}
/>
</div>
)}
</> </>
); );
}; };
@@ -1,6 +1,6 @@
'use client'; 'use client';
import { useMemo, useState, useEffect, useCallback, useRef } from 'react'; import { useMemo, useState } from 'react';
import { import {
Page, Page,
Text, Text,
@@ -235,16 +235,11 @@ const pdfStyles = StyleSheet.create({
interface PurchaseOrderInvoiceProps { interface PurchaseOrderInvoiceProps {
data?: Purchase; data?: Purchase;
className?: string; className?: string;
triggerDownloadOnMount?: boolean;
} }
const PurchaseOrderInvoice = ({ const PurchaseOrderInvoice = ({ data }: PurchaseOrderInvoiceProps) => {
data,
triggerDownloadOnMount,
}: PurchaseOrderInvoiceProps) => {
const [, setIsGeneratingPDF] = useState(false); const [, setIsGeneratingPDF] = useState(false);
const purchaseData = data; const purchaseData = data;
const hasDownloadedRef = useRef(false);
const grandTotal = useMemo(() => { const grandTotal = useMemo(() => {
return ( return (
@@ -255,7 +250,7 @@ const PurchaseOrderInvoice = ({
); );
}, [purchaseData?.items]); }, [purchaseData?.items]);
const handleDownloadPDF = useCallback(async () => { const handleDownloadPDF = async () => {
if (!purchaseData) { if (!purchaseData) {
toast.error('No purchase order data available'); toast.error('No purchase order data available');
return; return;
@@ -515,20 +510,7 @@ const PurchaseOrderInvoice = ({
} finally { } finally {
setIsGeneratingPDF(false); setIsGeneratingPDF(false);
} }
}, [purchaseData]); };
useEffect(() => {
if (triggerDownloadOnMount && purchaseData && !hasDownloadedRef.current) {
hasDownloadedRef.current = true;
handleDownloadPDF();
}
}, [triggerDownloadOnMount, purchaseData]);
useEffect(() => {
if (!triggerDownloadOnMount) {
hasDownloadedRef.current = false;
}
}, [triggerDownloadOnMount]);
if (!purchaseData) { if (!purchaseData) {
return ( return (
@@ -538,10 +520,6 @@ const PurchaseOrderInvoice = ({
); );
} }
if (triggerDownloadOnMount) {
return null;
}
return purchaseData?.po_number && return purchaseData?.po_number &&
purchaseData.po_number !== 'Belum dibuat' ? ( purchaseData.po_number !== 'Belum dibuat' ? (
<Button <Button