From 293407e9f0b9769f7b151c63d87071c70fd177a6 Mon Sep 17 00:00:00 2001 From: Adrian Pilarczyk Date: Wed, 2 Aug 2023 11:47:24 +0200 Subject: [PATCH] fix: :bug: use "DEFAULT" value of companyCode for commit to work --- apps/taxes/src/modules/avatax/avatax-client.ts | 10 ++-------- .../src/modules/avatax/avatax-connection-schema.ts | 4 ++-- .../order-cancelled/avatax-order-cancelled-adapter.ts | 5 +---- .../avatax-order-fulfilled-payload-transformer.ts | 2 +- apps/taxes/src/pages/api/webhooks/order-cancelled.ts | 2 +- apps/taxes/src/pages/api/webhooks/order-created.ts | 4 ++-- apps/taxes/src/pages/api/webhooks/order-fulfilled.ts | 6 +++--- 7 files changed, 12 insertions(+), 21 deletions(-) diff --git a/apps/taxes/src/modules/avatax/avatax-client.ts b/apps/taxes/src/modules/avatax/avatax-client.ts index f57b8b8..287b17b 100644 --- a/apps/taxes/src/modules/avatax/avatax-client.ts +++ b/apps/taxes/src/modules/avatax/avatax-client.ts @@ -3,8 +3,8 @@ import { DocumentType } from "avatax/lib/enums/DocumentType"; import { AddressLocationInfo as AvataxAddress } from "avatax/lib/models/AddressLocationInfo"; import { CommitTransactionModel } from "avatax/lib/models/CommitTransactionModel"; import { CreateTransactionModel } from "avatax/lib/models/CreateTransactionModel"; +import { LogOptions } from "avatax/lib/utils/logger"; import packageJson from "../../../package.json"; -import { createLogger, Logger } from "../../lib/logger"; import { AvataxClientTaxCodeService } from "./avatax-client-tax-code.service"; import { BaseAvataxConfig } from "./avatax-connection-schema"; @@ -14,11 +14,7 @@ type AvataxSettings = { environment: "sandbox" | "production"; machineName: string; timeout: number; - logOptions?: { - logEnabled: boolean; - logLevel: number; - logRequestAndResponseInfo: boolean; - }; + logOptions?: LogOptions; }; const defaultAvataxSettings: AvataxSettings = { @@ -60,10 +56,8 @@ export type VoidTransactionArgs = { export class AvataxClient { private client: Avatax; - private logger: Logger; constructor(baseConfig: BaseAvataxConfig) { - this.logger = createLogger({ name: "AvataxClient" }); const settings = createAvataxSettings({ isSandbox: baseConfig.isSandbox }); const avataxClient = new Avatax(settings).withSecurity(baseConfig.credentials); diff --git a/apps/taxes/src/modules/avatax/avatax-connection-schema.ts b/apps/taxes/src/modules/avatax/avatax-connection-schema.ts index b9cb731..8352f63 100644 --- a/apps/taxes/src/modules/avatax/avatax-connection-schema.ts +++ b/apps/taxes/src/modules/avatax/avatax-connection-schema.ts @@ -24,7 +24,7 @@ export type BaseAvataxConfig = z.infer; export const avataxConfigSchema = z .object({ name: z.string().min(1, { message: "Name requires at least one character." }), - companyCode: z.string().optional(), + companyCode: z.string(), isAutocommit: z.boolean(), shippingTaxCode: z.string().optional(), isDocumentRecordingEnabled: z.boolean().default(true), @@ -36,7 +36,7 @@ export type AvataxConfig = z.infer; export const defaultAvataxConfig: AvataxConfig = { name: "", - companyCode: "", + companyCode: "DEFAULT", isSandbox: false, isAutocommit: false, isDocumentRecordingEnabled: true, diff --git a/apps/taxes/src/modules/avatax/order-cancelled/avatax-order-cancelled-adapter.ts b/apps/taxes/src/modules/avatax/order-cancelled/avatax-order-cancelled-adapter.ts index 4387660..f3d01cf 100644 --- a/apps/taxes/src/modules/avatax/order-cancelled/avatax-order-cancelled-adapter.ts +++ b/apps/taxes/src/modules/avatax/order-cancelled/avatax-order-cancelled-adapter.ts @@ -15,10 +15,7 @@ export class AvataxOrderCancelledAdapter implements WebhookAdapter const channelSlug = payload.order.channel.slug; const taxProvider = getActiveConnectionService(channelSlug, appMetadata, ctx.authData); - logger.info("Fetched taxProvider"); + logger.info("Cancelling order..."); await taxProvider.cancelOrder(payload); diff --git a/apps/taxes/src/pages/api/webhooks/order-created.ts b/apps/taxes/src/pages/api/webhooks/order-created.ts index c4ef09e..3a43b7d 100644 --- a/apps/taxes/src/pages/api/webhooks/order-created.ts +++ b/apps/taxes/src/pages/api/webhooks/order-created.ts @@ -43,8 +43,6 @@ export default orderCreatedAsyncWebhook.createHandler(async (req, res, ctx) => { const channelSlug = payload.order?.channel.slug; const taxProvider = getActiveConnectionService(channelSlug, appMetadata, ctx.authData); - logger.info("Fetched taxProvider"); - // todo: figure out what fields are needed and add validation if (!payload.order) { return webhookResponse.error(new Error("Insufficient order data")); @@ -54,6 +52,8 @@ export default orderCreatedAsyncWebhook.createHandler(async (req, res, ctx) => { return webhookResponse.error(new Error("Skipping fulfilled order to prevent duplication")); } + logger.info("Creating order..."); + const createdOrder = await taxProvider.createOrder(payload.order); logger.info({ createdOrder }, "Order created"); diff --git a/apps/taxes/src/pages/api/webhooks/order-fulfilled.ts b/apps/taxes/src/pages/api/webhooks/order-fulfilled.ts index b7278f3..29c68d6 100644 --- a/apps/taxes/src/pages/api/webhooks/order-fulfilled.ts +++ b/apps/taxes/src/pages/api/webhooks/order-fulfilled.ts @@ -38,18 +38,18 @@ export default orderFulfilledAsyncWebhook.createHandler(async (req, res, ctx) => const channelSlug = payload.order?.channel.slug; const taxProvider = getActiveConnectionService(channelSlug, appMetadata, ctx.authData); - logger.info("Fetched taxProvider"); - // todo: figure out what fields are needed and add validation if (!payload.order) { return webhookResponse.error(new Error("Insufficient order data")); } + logger.info("Fulfilling order..."); + await taxProvider.fulfillOrder(payload.order); logger.info("Order fulfilled"); return webhookResponse.success(); } catch (error) { - return webhookResponse.error(new Error("Error while fulfilling tax provider order")); + return webhookResponse.error(error); } });