diff --git a/lib/services/medipost.service.ts b/lib/services/medipost.service.ts index c19970e..a32b624 100644 --- a/lib/services/medipost.service.ts +++ b/lib/services/medipost.service.ts @@ -736,20 +736,38 @@ export async function sendOrderToMedipost({ try { await sendPrivateMessage(orderXml); - await createMedipostActionLog({ - action: 'send_order_to_medipost', - xml: orderXml, - hasAnalysisResults: false, - medusaOrderId, - }); } catch (e) { const isMedipostError = e instanceof MedipostValidationError; - await logMedipostDispatch({ - medusaOrderId, - isSuccess: false, - isMedipostError, - errorMessage: isMedipostError ? e.response : undefined, - }); + if (isMedipostError) { + await logMedipostDispatch({ + medusaOrderId, + isSuccess: false, + isMedipostError, + errorMessage: e.response, + }); + await createMedipostActionLog({ + action: 'send_order_to_medipost', + xml: orderXml, + hasAnalysisResults: false, + medusaOrderId, + responseXml: e.response, + hasError: true, + }); + } else { + await logMedipostDispatch({ + medusaOrderId, + isSuccess: false, + isMedipostError, + }); + await createMedipostActionLog({ + action: 'send_order_to_medipost', + xml: orderXml, + hasAnalysisResults: false, + medusaOrderId, + hasError: true, + }); + } + throw e; } await logMedipostDispatch({ @@ -757,6 +775,12 @@ export async function sendOrderToMedipost({ isSuccess: true, isMedipostError: false, }); + await createMedipostActionLog({ + action: 'send_order_to_medipost', + xml: orderXml, + hasAnalysisResults: false, + medusaOrderId, + }); await updateOrderStatus({ medusaOrderId, orderStatus: 'PROCESSING' }); } @@ -830,6 +854,8 @@ export async function createMedipostActionLog({ xml, hasAnalysisResults = false, medusaOrderId, + responseXml, + hasError = false, }: { action: | 'send_order_to_medipost' @@ -839,6 +865,8 @@ export async function createMedipostActionLog({ xml: string; hasAnalysisResults?: boolean; medusaOrderId?: string | null; + responseXml?: string | null; + hasError?: boolean; }) { await getSupabaseServerAdminClient() .schema('medreport') @@ -848,6 +876,8 @@ export async function createMedipostActionLog({ xml, has_analysis_results: hasAnalysisResults, medusa_order_id: medusaOrderId, + response_xml: responseXml, + has_error: hasError, }) .select('id') .throwOnError(); diff --git a/packages/supabase/src/database.types.ts b/packages/supabase/src/database.types.ts index df517ea..1963dbf 100644 --- a/packages/supabase/src/database.types.ts +++ b/packages/supabase/src/database.types.ts @@ -1196,18 +1196,24 @@ export type Database = { has_analysis_results: boolean created_at: string medusa_order_id: string + response_xml: string + has_error: boolean } Insert: { action: string xml: string has_analysis_results: boolean medusa_order_id: string + response_xml: string + has_error: boolean } Update: { action?: string xml?: string has_analysis_results?: boolean medusa_order_id?: string + response_xml?: string + has_error?: boolean } } medreport_product_groups: { diff --git a/supabase/migrations/20250828121900_medipost_actions_extra_fields.sql b/supabase/migrations/20250828121900_medipost_actions_extra_fields.sql new file mode 100644 index 0000000..6c1f9df --- /dev/null +++ b/supabase/migrations/20250828121900_medipost_actions_extra_fields.sql @@ -0,0 +1,2 @@ +ALTER TABLE medreport.medipost_actions ADD COLUMN response_xml VARCHAR(131072); +ALTER TABLE medreport.medipost_actions ADD COLUMN has_error BOOLEAN NOT NULL DEFAULT FALSE;