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