import * as isoly from "isoly" import { Fee } from "../Fee" import { Settlement } from "../Settlement" import * as column from "./column" export type Complete = Record export namespace Complete { export const header = column.order export const defaultValues: Record = column.defaultValues export function from(settlement: Settlement): Complete { const fee = Fee.upgrade(settlement.fee, settlement.currency) return { "Settlement Id": settlement.reference, Merchant: settlement.merchant, "Period From": settlement.period.start, "Period To": settlement.period.end, "Payout Date": typeof settlement.payout == "object" ? settlement.payout.date : settlement.payout, "Payout Amount": typeof settlement.payout == "object" ? settlement.payout.amount.toString() : settlement.reserve?.amount != undefined ? isoly.Currency.subtract(settlement.currency, settlement.net, settlement.reserve.amount).toString() : settlement.net.toString(), "Reserve Release Date": settlement.reserve?.payout ?? "", "Reserve Amount": settlement.reserve?.amount != undefined ? settlement.reserve.amount.toString() : "", Created: settlement.created, "Gross Amount": settlement.gross.toString(), Interchange: fee.interchange.toString(), "Scheme Fee": fee.network != undefined ? fee.network.toString() : "0", "Intergiro Fee": fee.intergiro.toString(), "Total Fee": fee.total.toString(), Fee: fee.total.toString(), "Net Amount": settlement.net.toString(), Currency: settlement.currency, Transactions: settlement.transactions.length.toString(), Processor: settlement.processor, } } export type Csv = { header: typeof header data: Complete[] } export namespace Csv { export function from(data: Complete[]): Csv { return { header: header, data } } } }