NS Admin Lab

← Laboratorio

Integraciones

El mismo pedido, dos órdenes

Publicado el

Un sistema externo envía el pedido A-1042 y NetSuite crea la orden. La respuesta no llega por un corte de red. El sistema reintenta… y sin protección, se crea una segunda orden.

La solución es que reintentar sea seguro (idempotencia). Usa el identificador del sistema externo como External ID: NetSuite no permite dos registros del mismo tipo con el mismo External ID.

// RESTlet (SuiteScript 2.1): buscar antes de crear
const previo = query.runSuiteQL({
  query: 'SELECT id FROM transaction WHERE externalid = ?',
  params: [payload.pedidoId]
}).asMappedResults()[0];

if (previo) return { id: previo.id, duplicado: true };

const orden = record.create({ type: record.Type.SALES_ORDER });
orden.setValue({ fieldId: 'externalid', value: payload.pedidoId });

Si el pedido ya existe, devuelves la misma orden. El External ID es la segunda barrera: aunque dos peticiones lleguen a la vez, NetSuite rechaza el duplicado.

Conversemos

¿Comentarios sobre esta nota? Escríbeme por LinkedIn.

Ir a mi LinkedIn ↗