POST
/api/mod/comercial/{espacio}/reglas/evaluarQué beneficios aplican
Le das el subtotal y lo que sepas del cliente, y te dice qué beneficios configurados aplican y cuánto descuentan. Con eso cotizas el envío.
- PERMISOescribe
- CRÉDITOSno gasta
- AUTENTICACIÓNBearer bth_…
PARÁMETROS
| CAMPO | TIPO | REQUERIDO | QUÉ ES |
|---|---|---|---|
| espacio | string | SÍ | El id del espacio (sale en GET /api/companies). Tiene que tener el módulo Comercial. |
CUERPO · JSON
| CAMPO | TIPO | REQUERIDO | QUÉ ES |
|---|---|---|---|
| subtotal | string | SÍ | El subtotal de los productos, con los precios de Productos. |
| es_primera_compra | boolean | null | no | Si es su primera compra. Sin él (null), los beneficios de primera compra salen igual, como condicionales. |
| metodo_pago | string | null | no | contra, transferencia o mixto. Sin él no se filtra por método: el cliente ve el beneficio antes de elegir. |
RESPUESTA 200
| CAMPO | TIPO | QUÉ ES |
|---|---|---|
| beneficios[] | { codigo, nombre, efecto_tipo, envio_gratis, descuento, prosa } | Los que aplican, con su efecto ya calculado: descuento es el monto (0 si es envío gratis). |
| requiere_primera_compra | boolean | true si alguno depende de que sea su primera compra y no lo dijiste. Díselo al cliente en condicional: «si es tu primera compra…». |
ERRORES DE ESTA RUTA · SIEMPRE {"detail": …}
| STATUS | CUÁNDO | DETAIL LITERAL |
|---|---|---|
| 403 | El espacio no tiene el módulo Comercial | módulo no habilitado para este espacio. |
| 403 | La clave es de solo lectura | Tu cuenta es de solo lectura en este espacio. |
| 422 | Falta un campo obligatorio o uno no es de su tipo (detail es una lista) | — |
Y los de cualquier ruta —clave inválida, cuenta no al día, IP, límites—, en Errores, límites y créditos.
CONVIENE SABER
- Solo calcula: no guarda nada. Aun así pide una clave
escribe, porque es un POST. - Comercial no sabe quién es el cliente ni guarda su historial: si es su primera compra lo decides tú.
- Si aplican varios, suma sus
descuentoy pásalos juntos a cotizar; con uno de envío gratis, mandaenvio_gratis: true.