feat(MED-85): update dispatch order to medipost retry

This commit is contained in:
2025-08-27 08:04:37 +03:00
parent da8b5aa59f
commit 2b2a0b8bc4
7 changed files with 141 additions and 6 deletions

View File

@@ -4,6 +4,7 @@ import { RequestStatus } from '@/lib/types/audit';
import { ConnectedOnlineMethodName } from '@/lib/types/connected-online';
import { ExternalApi } from '@/lib/types/external';
import { MedipostAction } from '@/lib/types/medipost';
import { getSupabaseServerAdminClient } from '@/packages/supabase/src/clients/server-admin-client';
import { getSupabaseServerClient } from '@/packages/supabase/src/clients/server-client';
export default async function logRequestResult(
@@ -45,7 +46,7 @@ export async function logMedipostDispatch({
isMedipostError: boolean;
errorMessage?: string;
}) {
const { error } = await getSupabaseServerClient()
const { error } = await getSupabaseServerAdminClient()
.schema('audit')
.from('medipost_dispatch')
.insert({
@@ -59,3 +60,12 @@ export async function logMedipostDispatch({
throw new Error('Failed to insert log entry, error: ' + error.message);
}
}
export async function getMedipostDispatchTries(medusaOrderId: string) {
const { data } = await getSupabaseServerAdminClient()
.schema('medreport')
.rpc('get_medipost_dispatch_tries', { p_medusa_order_id: medusaOrderId })
.throwOnError();
return data;
}

View File

@@ -709,11 +709,12 @@ export async function sendOrderToMedipost({
try {
await sendPrivateMessage(orderXml);
} catch (e) {
const isMedipostError = e instanceof MedipostValidationError;
await logMedipostDispatch({
medusaOrderId,
isSuccess: false,
isMedipostError: e instanceof MedipostValidationError,
errorMessage: e instanceof MedipostValidationError ? e.response : undefined,
isMedipostError,
errorMessage: isMedipostError ? e.response : undefined,
});
throw e;
}

View File

@@ -99,7 +99,10 @@ export async function getOrder({
throw new Error('Either medusaOrderId or orderId must be provided');
}
const { data: order } = await query.single().throwOnError();
const { data: order, error } = await query.single();
if (error) {
throw new Error(`Failed to get order by medusaOrderId=${medusaOrderId} or orderId=${orderId}, message=${error.message}, data=${JSON.stringify(order)}`);
}
return order;
}