Uecko_ERP/docs/customer-invoices/proforma-delete-contract.md

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, rejected e issued devuelven conflicto
  • rejected no se borra; queda reservado para una futura operacion de archivado
  • el borrado es logico mediante deleted_at
  • el borrado de draft no depende de archived_at
  • una proforma draft archivada puede borrarse directamente
  • una proforma rejected archivada no puede borrarse
  • la numeracion no se reutiliza
  • no se decrementa document_series.next_number
  • no se borran fisicamente proforma_items ni proforma_taxes

Validaciones defensivas

  • si linked_invoice_id tiene 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 Found si no existe, no pertenece a la empresa activa o ya esta borrada
  • 409 Conflict si existe pero no cumple las reglas de borrado

Efecto operativo

  • GET /proformas/:id debe tratar la proforma borrada como inexistente
  • GET /proformas no debe incluir proformas borradas
  • PUT /proformas/:id no debe editar proformas borradas
  • POST /proformas/:id/issue no debe emitir proformas borradas

UI

  • la accion Eliminar solo debe mostrarse para proformas draft
  • en la vista de archivadas, Eliminar tambien debe mostrarse para draft
  • 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