1.7 KiB
1.7 KiB
Proforma Delete Contract
Objetivo
Definir el borrado funcional de proformas sin romper trazabilidad ni numeracion.
Reglas funcionales
- solo se pueden borrar proformas en estado
draft sent,approved,rejectedeissueddevuelven conflictorejectedno se borra; queda reservado para una futura operacion de archivado- el borrado es logico mediante
deleted_at - el borrado de
draftno depende dearchived_at - una proforma
draftarchivada puede borrarse directamente - una proforma
rejectedarchivada no puede borrarse - la numeracion no se reutiliza
- no se decrementa
document_series.next_number - no se borran fisicamente
proforma_itemsniproforma_taxes
Validaciones defensivas
- si
linked_invoice_idtiene valor, el borrado se bloquea - si existe
issued_invoices.source_proforma_id = proforma.id, el borrado se bloquea
Contrato REST
- endpoint:
DELETE /proformas/:proforma_id - respuesta satisfactoria:
204 No Content 404 Not Foundsi no existe, no pertenece a la empresa activa o ya esta borrada409 Conflictsi existe pero no cumple las reglas de borrado
Efecto operativo
GET /proformas/:iddebe tratar la proforma borrada como inexistenteGET /proformasno debe incluir proformas borradasPUT /proformas/:idno debe editar proformas borradasPOST /proformas/:id/issueno debe emitir proformas borradas
UI
- la accion
Eliminarsolo debe mostrarse para proformasdraft - en la vista de archivadas,
Eliminartambien debe mostrarse paradraft - la confirmacion debe advertir que la referencia no se reutilizara
- en esta fase la accion esta disponible en el listado activo y en archivadas para
draft