payments_dashboard_pipedream/payment-display-p_WxCpgo3/calculate/entry.js
2026-03-31 23:46:11 +00:00

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,
};
},
});