Factuarea APIDevelopers

Vista previa de la sustitución por cambio de unidad base

Calcula, sin escribir nada, qué ocurre cuando un producto se sustituye por otro nuevo con una unidad base distinta, y genera el impact_token que confirma ESE cambio exacto.

  • La unidad base de un producto con historial (stock, movimientos, presentaciones, ofertas de proveedor o variantes con stock) no se puede editar en el sitio: su base_unit_change.mode es replacement y la forma de cambiarla es sustituir el producto.
  • Es una LECTURA —pedirla dos veces sobre el mismo catálogo devuelve el mismo token—, pero exige products:write, porque lo único que hace su respuesta es autorizar una escritura irreversible.
  • Envía target_base_unit (una de las nueve unidades de medida; una unidad de embalaje como XPK o XBX solo puede ser una presentación), equivalence (cuántas unidades de la base ACTUAL equivalen a UNA unidad de la base NUEVA, p. ej. 0.001 al pasar de kg a g porque 1 g = 0.001 kg; obligatoria entre una unidad de recuento y una de medida, en cualquier sentido; se calcula sola dentro de la misma familia de medida; entre dos familias de medida distintas no existe), un base_price opcional para confirmar, y presentations con una decisión keep o retire por cada presentación del producto antiguo (las que omitas reciben la decisión propuesta).
  • La respuesta lista en items cada elemento del plan, con su before, su after, su group (review, converted o carried) y sus flags (precision_loss, no_equivalence, fraction); items[].ref es el id público del elemento afectado, y null para el propio producto y para las entradas de tarifa y los componentes de pack, que no tienen id público.
  • pending_documents lista los documentos de venta sin emitir que seguirán apuntando al producto antiguo.
  • El token es una huella del plan, no una credencial: si el catálogo, las tarifas o los packs cambian antes de confirmar, la confirmación se rechaza con 422 base_unit_replacement_preview_stale y se pide una vista previa nueva.
  • Un producto de otra empresa devuelve 404 product_not_found.
POST
/products/{product}/base_unit_replacement/preview
AuthorizationBearer <token>

En: header

Parámetros de ruta

product*string

Headers

Factuarea-Version?string

Fija la versión de la API (YYYY-MM-DD, versionado por fecha estilo Stripe) para esta petición; omítelo para usar la versión fijada de la clave, o la última si no hay ninguna. Versión no soportada → 400 unsupported_api_version; malformada → 400 parameter_invalid_format. La versión efectiva se refleja en la cabecera de respuesta Factuarea-Version. Consulta la guía de Versioning.

Formatodate
X-Active-Profile?string

Opera en nombre de una empresa hija (API key maestra de gestoría): pasa su id público (UUID v7) y la petición se ejecuta contra los datos de esa hija sin cambiar el scope, el tier ni el environment de la clave (omítelo para usar la propia empresa de la clave). UUID inválido → 400 parameter_invalid_uuid; id desconocido o no propio → 404 profile_not_found. Consulta la guía de Acting on behalf.

Formatouuid

Cuerpo de la petición

application/json

Definiciones de TypeScript

Usa el tipo request body en TypeScript.

Cuerpo de la respuesta

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json