34 lines
No EOL
1.1 KiB
JavaScript
34 lines
No EOL
1.1 KiB
JavaScript
export default defineComponent({
|
|
async run({ steps }) {
|
|
const rows = steps.parse.$return_value.rows;
|
|
|
|
if (!rows || !rows.length) {
|
|
throw new Error("No parsed rows found from the parse step.");
|
|
}
|
|
|
|
const parseAmount = (value) => {
|
|
const num = parseFloat(String(value || "0").replace(/,/g, "").trim());
|
|
return isNaN(num) ? 0 : num;
|
|
};
|
|
|
|
const payments = rows.map((row) => ({
|
|
method: (row["Method"] || "").trim(),
|
|
payee: (row["Payee"] || "").trim(),
|
|
invoice_numbers: (row["Invoice Numbers"] || "").trim(),
|
|
send_payment_on: (row["Send Payment On"] || "").trim(),
|
|
amount_usd: parseAmount(row["Amount in USD"]),
|
|
status: (row["Status"] || "").trim(),
|
|
company_subsidiary: (row["Company/Subsidiary"] || "").trim(),
|
|
}));
|
|
|
|
const grand_total = payments.reduce((sum, p) => sum + p.amount_usd, 0);
|
|
|
|
return {
|
|
file_name: steps.parse.$return_value.file_name,
|
|
row_count: payments.length,
|
|
grand_count: payments.length,
|
|
grand_total: Number(grand_total.toFixed(2)),
|
|
payments,
|
|
};
|
|
},
|
|
}); |