Documentación / Proformas

Estructura de Respuesta: Proforma

Todas las estructuras JSON de respuesta del módulo de proformas, incluyendo los tipos de cada campo, sus valores posibles y los endpoints que las devuelven, para que el frontend y la generación de PDF usen referencias estables.

ProformaResponseDto — Proforma completa

Esta estructura es devuelta por los endpoints POST /proformas, GET /proformas/:id, PATCH /proformas/:id/pay, PATCH /proformas/:id/cancel y PUT /proformas/:id. La respuesta usa un objeto raíz proforma.

Datos principales

CampoTipoDescripción
prfmaidstringID único (UUID) de la proforma.
prfmaidentificadorstringIdentificador legible generado como `{emcodigo}-{suidentificador}-{cjidentificador}-{secuencia}`.
prfmaestadostringEstado actual. Valores: `emitida`, `pagada`, `anulada`.
prfmafchregistroDateFecha y hora de creación.
prfmafchactualizacionDateFecha de última modificación.

Emisor — Quién emite

empresa

CampoTipoDescripción
emidstringID único de la empresa.
emrucstring | nullRUC de la empresa.
emcodigostring | nullCódigo interno.
emcorreostring | nullCorreo electrónico.
emlogostring | nullURL pública del logo.
emrznsocialstring | nullRazón social.

sucursal

CampoTipoDescripción
suidstringID único de la sucursal.
suidentificadorstring | nullIdentificador (3 dígitos).
sunombrestring | nullNombre de la sucursal.

caja

CampoTipoDescripción
cjidstringID único de la caja.
cjidentificadorstring | nullIdentificador de la caja.

usuario

CampoTipoDescripción
usidstringID único del usuario.
usnombrestring | nullNombre del usuario.
usrolstring | nullRol: `administrador`, `jefe`, `empleado`.

Receptor — Información del cliente

CampoTipoDescripción
clnteidstringID único del cliente.
clnteidentificacionstring | nullCédula o RUC.
clntenombrestring | nullNombre o razón social.
clntecorreostring | nullCorreo electrónico.
clntedireccionstring | nullDirección física.
clntetelefonostring | nullTeléfono.

Método de pago

CampoTipoDescripción
mpidstringID único del método de pago.
mpnombrestring | nullNombre del método de pago.

Total — Resumen monetario

CampoTipoDescripción
prfmasubtotalnumberSuma de totales de todas las líneas.
prfmadescuentonumberDescuento total. Si no hay, vale 0.
prfmatotalnumberTotal final (`subtotal - descuento`).

Detalle — Items

Arreglo de objetos. Cada elemento representa una línea del detalle.

CampoTipoDescripción
dprfmaidstringID único de la línea.
dprfmatipoitemstring`inventariable` o `manual`.
productoobjectDatos del producto (ver abajo).

producto

CampoTipoDescripción
dprfmacodigostring | nullCódigo del producto. `null` si es manual.
dprfmadescripcionstring | nullDescripción del producto o servicio.
dprfmacantidadnumberCantidad. Siempre mayor a 0.
dprfmapreciounitarionumberPrecio unitario.
dprfmapreciototalnumberTotal de la línea.

Documento — PDF asociado

CampoTipoDescripción
docnombrestring | nullNombre del archivo PDF.
docurlstring | nullURL pública completa del PDF.

FindProformasResponseDto — Listado paginado

Devuelto por GET /proformas. Cada elemento de items es un ProformaResponseDto completo.

CampoTipoDescripción
itemsProformaResponseDto[]Arreglo de proformas completas.
pagenumberPágina actual.
pageSizenumberTamaño de página.
totalItemsnumberTotal de proformas.
totalPagesnumberTotal de páginas.

ProformaPdfResponseDto — Referencia del PDF

Devuelto por GET /proformas/:id/pdf. Versión reducida que solo incluye los datos del documento.

CampoTipoDescripción
proforma.prfmaidstringID único de la proforma.
proforma.prfmaidentificadorstringIdentificador legible.
proforma.documento.docnombrestring | nullNombre del archivo PDF.
proforma.documento.docurlstring | nullURL pública del PDF.

Endpoints y respuestas

EndpointMétodoCódigoRespuesta
/proformasPOST201ProformaResponseDto
/proformasGET200FindProformasResponseDto
/proformas/:idGET200ProformaResponseDto
/proformas/:idPUT200ProformaResponseDto
/proformas/:id/payPATCH200ProformaResponseDto
/proformas/:id/cancelPATCH200ProformaResponseDto
/proformas/:id/pdfGET200ProformaPdfResponseDto
/proformas/:id/sendPOST200{ message }

Notas importantes

1

Raíz `proforma`: todas las respuestas envuelven los datos en un objeto con clave `proforma`. Accede siempre como `response.proforma.*`.

2

`emlogo` y `docurl`: son URLs públicas completas. No necesitas concatenar una URL base.

3

`dprfmatipoitem`: se deriva de `dprfmaesinventariable`: `true` → `"inventariable"`, `false` → `"manual"`.

4

`producto.dprfmacodigo`: es `null` para items manuales.

5

Listado paginado: `GET /proformas` devuelve la estructura completa en `items[]`, no un resumen.

6

Fechas: `prfmafchregistro` y `prfmafchactualizacion` son ISO 8601.

7

`prfmaidentificador`: se genera automáticamente al crear la proforma y no cambia.

8

PDF: se genera automáticamente al crear, pagar, anular o reemplazar una proforma.

9

`docnombre` y `docurl`: pueden ser `null` si el PDF no se ha generado.