mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-20 13:32:00 +00:00
refactor(FE): Remove unused invoice download functionality from
PurchaseTable
This commit is contained in:
@@ -17,7 +17,6 @@ import RowCollapseOptions from '@/components/table/RowCollapseOptions';
|
||||
import RowOptionsMenuWrapper from '@/components/table/RowOptionsMenuWrapper';
|
||||
import RequirePermission from '@/components/helper/RequirePermission';
|
||||
import StatusBadge from '@/components/helper/StatusBadge';
|
||||
import PurchaseOrderInvoice from '@/components/pages/purchase/order/PurchaseOrderInvoice';
|
||||
|
||||
import { cn, formatDate } from '@/lib/helper';
|
||||
import { isResponseSuccess } from '@/lib/api-helper';
|
||||
@@ -159,27 +158,6 @@ const PurchaseTable = () => {
|
||||
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 =====
|
||||
const purchaseColumns: ColumnDef<Purchase>[] = [
|
||||
{
|
||||
@@ -190,38 +168,7 @@ const PurchaseTable = () => {
|
||||
},
|
||||
},
|
||||
{
|
||||
accessorKey: 'po_expedition',
|
||||
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',
|
||||
accessorKey: 'supplier',
|
||||
header: 'Vendor',
|
||||
cell: (props) => props.row.original.supplier.name,
|
||||
},
|
||||
@@ -505,15 +452,6 @@ const PurchaseTable = () => {
|
||||
onClick: confirmationModalDeleteClickHandler,
|
||||
}}
|
||||
/>
|
||||
|
||||
{invoicePurchaseData && (
|
||||
<div className='hidden'>
|
||||
<PurchaseOrderInvoice
|
||||
data={invoicePurchaseData}
|
||||
triggerDownloadOnMount={true}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use client';
|
||||
|
||||
import { useMemo, useState, useEffect, useCallback, useRef } from 'react';
|
||||
import { useMemo, useState } from 'react';
|
||||
import {
|
||||
Page,
|
||||
Text,
|
||||
@@ -235,16 +235,11 @@ const pdfStyles = StyleSheet.create({
|
||||
interface PurchaseOrderInvoiceProps {
|
||||
data?: Purchase;
|
||||
className?: string;
|
||||
triggerDownloadOnMount?: boolean;
|
||||
}
|
||||
|
||||
const PurchaseOrderInvoice = ({
|
||||
data,
|
||||
triggerDownloadOnMount,
|
||||
}: PurchaseOrderInvoiceProps) => {
|
||||
const PurchaseOrderInvoice = ({ data }: PurchaseOrderInvoiceProps) => {
|
||||
const [, setIsGeneratingPDF] = useState(false);
|
||||
const purchaseData = data;
|
||||
const hasDownloadedRef = useRef(false);
|
||||
|
||||
const grandTotal = useMemo(() => {
|
||||
return (
|
||||
@@ -255,7 +250,7 @@ const PurchaseOrderInvoice = ({
|
||||
);
|
||||
}, [purchaseData?.items]);
|
||||
|
||||
const handleDownloadPDF = useCallback(async () => {
|
||||
const handleDownloadPDF = async () => {
|
||||
if (!purchaseData) {
|
||||
toast.error('No purchase order data available');
|
||||
return;
|
||||
@@ -515,20 +510,7 @@ const PurchaseOrderInvoice = ({
|
||||
} finally {
|
||||
setIsGeneratingPDF(false);
|
||||
}
|
||||
}, [purchaseData]);
|
||||
|
||||
useEffect(() => {
|
||||
if (triggerDownloadOnMount && purchaseData && !hasDownloadedRef.current) {
|
||||
hasDownloadedRef.current = true;
|
||||
handleDownloadPDF();
|
||||
}
|
||||
}, [triggerDownloadOnMount, purchaseData]);
|
||||
|
||||
useEffect(() => {
|
||||
if (!triggerDownloadOnMount) {
|
||||
hasDownloadedRef.current = false;
|
||||
}
|
||||
}, [triggerDownloadOnMount]);
|
||||
};
|
||||
|
||||
if (!purchaseData) {
|
||||
return (
|
||||
@@ -538,10 +520,6 @@ const PurchaseOrderInvoice = ({
|
||||
);
|
||||
}
|
||||
|
||||
if (triggerDownloadOnMount) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return purchaseData?.po_number &&
|
||||
purchaseData.po_number !== 'Belum dibuat' ? (
|
||||
<Button
|
||||
|
||||
Reference in New Issue
Block a user