108 lines
2.8 KiB
JavaScript
108 lines
2.8 KiB
JavaScript
import moment from "moment";
|
|
import {
|
|
exportToCSV,
|
|
exportToExcel,
|
|
exportToPDF,
|
|
printTable,
|
|
} from "../../utils/tableExportUtils";
|
|
import { FREQUENCY_FOR_RECURRING } from "../../utils/constants";
|
|
import ExpenseRepository from "../../repositories/ExpsenseRepository";
|
|
|
|
const HandleRecurringExpenseExport = async (
|
|
type,
|
|
filters = {},
|
|
searchString = "",
|
|
tableRef = null,
|
|
setLoading = null
|
|
) => {
|
|
try {
|
|
if (setLoading) setLoading(true);
|
|
|
|
const safeSearchString =
|
|
typeof searchString === "string" ? searchString : "";
|
|
let allRecurringExpense = [];
|
|
let pageNumber = 1;
|
|
const pageSize = 1000;
|
|
let hasMore = true;
|
|
|
|
while (hasMore) {
|
|
const response = await ExpenseRepository.GetRecurringExpenseList(
|
|
pageSize,
|
|
pageNumber,
|
|
filters,
|
|
true, // isActive
|
|
safeSearchString
|
|
);
|
|
|
|
const currentPageData = response?.data?.data || [];
|
|
allRecurringExpense = allRecurringExpense.concat(currentPageData);
|
|
|
|
if (currentPageData.length < pageSize) {
|
|
hasMore = false;
|
|
} else {
|
|
pageNumber += 1;
|
|
}
|
|
}
|
|
|
|
if (!allRecurringExpense.length) {
|
|
console.warn("No payment requests found!");
|
|
return;
|
|
}
|
|
|
|
const exportData = allRecurringExpense.map((item) => ({
|
|
Category: item?.expenseCategory?.name ?? "-",
|
|
Title: item?.title ?? "-",
|
|
Payee: item?.payee ?? "-",
|
|
Frequency:
|
|
item?.frequency !== undefined && item?.frequency !== null
|
|
? FREQUENCY_FOR_RECURRING[item?.frequency] ?? "-"
|
|
: "-",
|
|
Amount: item?.amount ? item.amount.toLocaleString() : "-",
|
|
Currency: item?.currency?.symbol ?? "-",
|
|
"Next Generation Date": item?.nextGenerationDate
|
|
? moment(item.nextGenerationDate).format("DD-MMM-YYYY")
|
|
: "-",
|
|
Status: item?.status?.name ?? "-",
|
|
"Created At": item?.createdAt
|
|
? moment(item.createdAt).format("DD-MMM-YYYY")
|
|
: "-",
|
|
}));
|
|
|
|
// COLUMN ORDER
|
|
const columns = [
|
|
"Category",
|
|
"Title",
|
|
"Payee",
|
|
"Frequency",
|
|
"Amount",
|
|
"Currency",
|
|
"Next Generation Date",
|
|
"Status",
|
|
"Created At",
|
|
];
|
|
|
|
switch (type) {
|
|
case "csv":
|
|
exportToCSV(exportData, "recurring-expense", columns);
|
|
break;
|
|
case "excel":
|
|
exportToExcel(exportData, "recurring-expense", columns);
|
|
break;
|
|
case "pdf":
|
|
exportToPDF(exportData, "recurring-expense", columns);
|
|
break;
|
|
case "print":
|
|
if (tableRef?.current) printTable(tableRef.current);
|
|
break;
|
|
default:
|
|
console.warn("Unknown export type:", type);
|
|
}
|
|
} catch (err) {
|
|
console.error("Export failed:", err);
|
|
} finally {
|
|
if (setLoading) setLoading(false);
|
|
}
|
|
};
|
|
|
|
export default HandleRecurringExpenseExport;
|