diff --git a/src/services/email/EmailService.ts b/src/services/email/EmailService.ts index ee050e258..b96c46b9c 100644 --- a/src/services/email/EmailService.ts +++ b/src/services/email/EmailService.ts @@ -1,11 +1,9 @@ import sgMail from "@sendgrid/mail" -import { Cashout, SendGridConfig } from "@config" +import { Cashout, FrappeConfig, SendGridConfig } from "@config" import { baseLogger } from "@services/logger" -import { CashoutDetails } from "@app/offers" import { CashoutBody } from "./templates/cashout" -import Offer from "@app/offers/Offer" import { InitiatedCashout } from "@app/offers/ValidOffer" type EmailHeaders = { @@ -21,12 +19,19 @@ sgMail.setApiKey(SendGridConfig.apiKey) class EmailService { sendCashoutInitiatedEmail = async (cashout: InitiatedCashout) => { - const username = cashout.offer.account.username - const offer = cashout.offer.details + const account = cashout.offer.account + + const username = account.username ?? "" + const customerName = account.erpParty ?? username + const cashoutId = cashout.cashoutId + const erpNextLink = `${FrappeConfig.url}/app/cashout/${cashoutId}` const body = CashoutBody({ - ...offer, + ...cashout.offer.details, username, + customerName, + cashoutId, + erpNextLink, formattedDate: new Date().toLocaleString("en-US", { month: "short", day: "numeric", diff --git a/src/services/email/templates/cashout.ts b/src/services/email/templates/cashout.ts index 697335f0c..b538c8c58 100644 --- a/src/services/email/templates/cashout.ts +++ b/src/services/email/templates/cashout.ts @@ -1,11 +1,25 @@ import { CashoutDetails } from "@app/offers" -import { JMDAmount } from "@domain/shared" +import { JMDAmount, USDAmount } from "@domain/shared" -type CashoutBodyArgs = CashoutDetails & { username: Username, formattedDate: string } +type CashoutBodyArgs = CashoutDetails & { + username: string + customerName: string + cashoutId: string + erpNextLink: string + formattedDate: string +} export const CashoutBody = (args: CashoutBodyArgs) => { - const currency = args.payout.amount instanceof JMDAmount ? "JMD" : "USD" - const payoutString = `${args.payout.amount.asDollars()} ${currency}` + const payoutCurrency = args.payout.amount instanceof JMDAmount ? "JMD" : "USD" + const payoutString = `${args.payout.amount.asDollars()} ${payoutCurrency}` + + const serviceFeeString = args.payout.serviceFee instanceof USDAmount + ? args.payout.serviceFee.asDollars() + : null + + const feeDetails = serviceFeeString + ? `Service fee: $${serviceFeeString} USD` + : "" return { html: ` @@ -14,13 +28,13 @@ export const CashoutBody = (args: CashoutBodyArgs) => {
-Received Cashout Transaction
+Cashout Initiated — ${args.cashoutId}
| Cashout ID | +${args.cashoutId} | +|||||
| ERPNext Link | +${args.erpNextLink} | +|||||
| Ibex Payment | -${args.payment.invoice.paymentHash} | +${args.payment.invoice.paymentHash} | ||||
| Owed to user | +Payout Amount | ${payoutString} | ||||
| Service Fee | +$${serviceFeeString} USD | +|||||
| Date & Time | ${args.formattedDate} | @@ -46,7 +73,11 @@ export const CashoutBody = (args: CashoutBodyArgs) => {
| Username | +Customer | +${args.customerName} | +
| Username | ${args.username} | |