From 26ffe304551742074d490a537bab87cb124c116f Mon Sep 17 00:00:00 2001 From: Benjamin Hindman Date: Tue, 12 May 2026 14:52:09 -0500 Subject: [PATCH] fix: Expect header & Update Cashout draft Error types --- src/app/offers/ValidOffer.ts | 4 ++-- src/services/frappe/ErpNext.ts | 12 ++++++------ src/services/frappe/errors.ts | 4 +--- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/app/offers/ValidOffer.ts b/src/app/offers/ValidOffer.ts index a33553137..2eee63347 100644 --- a/src/app/offers/ValidOffer.ts +++ b/src/app/offers/ValidOffer.ts @@ -7,7 +7,7 @@ import { AccountsRepository, WalletsRepository } from "@services/mongoose" import Ibex from "@services/ibex/client" import { CashoutDetails, ValidationInputs } from "./types" import ErpNext, { CashoutId } from "@services/frappe/ErpNext" -import { JournalEntryDraftError, CashoutSubmitError } from "@services/frappe/errors" +import { CashoutDraftError, CashoutSubmitError } from "@services/frappe/errors" import { baseLogger } from "@services/logger" import { IbexError } from "@services/ibex/errors" import { Cashout } from "@config" @@ -43,7 +43,7 @@ class ValidOffer extends Offer { async execute(): Promise { const cashoutId = await ErpNext.draftCashout(this) - if (cashoutId instanceof JournalEntryDraftError) return cashoutId + if (cashoutId instanceof CashoutDraftError) return cashoutId if (!Cashout.SkipPayment) { const resp = await Ibex.payInvoice({ diff --git a/src/services/frappe/ErpNext.ts b/src/services/frappe/ErpNext.ts index 016301e9a..39fe1ba5e 100644 --- a/src/services/frappe/ErpNext.ts +++ b/src/services/frappe/ErpNext.ts @@ -6,9 +6,8 @@ import { recordExceptionInCurrentSpan } from "@services/tracing" import axios, { isAxiosError } from "axios" import { - JournalEntryDraftError, + CashoutDraftError, CashoutSubmitError, - JournalEntryTitleError, JournalEntryDeleteError, UpgradeRequestCreateError, UpgradeRequestQueryError, @@ -47,13 +46,14 @@ class ErpNext { this.headers = { "Content-Type": "application/json", "Authorization": `token ${creds.apiKey}:${creds.apiSecret}`, - "Host": sitename + "Host": sitename, + "Expect": "" } } - async draftCashout(offer: ValidOffer): Promise { + async draftCashout(offer: ValidOffer): Promise { const party = offer.account.erpParty - if (!party) return new JournalEntryDraftError("Account missing erpParty field") + if (!party) return new CashoutDraftError("Account missing erpParty field") const { payment, payout } = offer.details try { @@ -76,7 +76,7 @@ class ErpNext { return response.data.data.name as CashoutId } catch (err) { baseLogger.error({ err }, "Error drafting Cashout in ERPNext") - return new JournalEntryDraftError(err) + return new CashoutDraftError(err) } } diff --git a/src/services/frappe/errors.ts b/src/services/frappe/errors.ts index 504616d51..0bdb3bb89 100644 --- a/src/services/frappe/errors.ts +++ b/src/services/frappe/errors.ts @@ -1,9 +1,7 @@ import { DomainError } from "@domain/shared" export class ErpNextError extends DomainError {} -export class JournalEntryDraftError extends ErpNextError {} -export class JournalEntryTitleError extends JournalEntryDraftError {} -export class JournalEntrySubmitError extends ErpNextError {} +export class CashoutDraftError extends ErpNextError {} export class CashoutSubmitError extends ErpNextError {} export class JournalEntryDeleteError extends ErpNextError {} export class UpgradeRequestCreateError extends ErpNextError {}