Cómo eliminar una ficha fiscal
Borra de forma definitiva una ficha fiscal de la ubicación activa mediante `DELETE /api/app/{orgId}/{locationId}/billing-details/{id}`. En la app nativa revisada no hay una pantalla que ejecute este borrado, así que la guía lo presenta como operación interna o de soporte.
En este artículo
Este artículo sirve para equipos internos o soporte. En la app nativa revisada no se encontró una pantalla que permita pulsar “eliminar ficha fiscal”; la operación existe en la API privada y debe tratarse como una acción controlada.
El borrado no es lógico: elimina la entidad `billing_details`. Además, queda aislado a la ubicación actual; si el `id` pertenece a otra ubicación, la API responde como si la ficha no existiera.
Antes de empezar
- Sesión autenticada en la API privada `/api/app`.
- Contexto activo con `orgId` y `locationId` de la ubicación correcta, por ejemplo `Grupo Marea Demo` y `Marea Gran Via`.
- Permiso `customer:manage` en la ubicación actual; `customer:view` permite consultar, pero no borrar.
- Identificador `id` de una ficha fiscal existente dentro de la misma ubicación.
- Confirmación operativa previa de que la ficha puede retirarse, porque el borrado es definitivo.
Instrucciones
- 1.
Comprueba ubicación y permiso
Antes de ejecutar el borrado, confirma que estás trabajando en la ubicación correcta y que la sesión tiene `customer:manage`. La ubicación efectiva sale de la ruta y del contexto, no de un payload enviado por el cliente.
- 2.
Identifica la ficha fiscal
Localiza la ficha que se va a retirar desde el listado o el detalle de fichas fiscales. El `id` debe existir, no puede estar vacío y la ficha debe pertenecer a la ubicación activa.
- 3.
Revisa referencias antes de borrar
La acción elimina la fila de `billing_details` y no actualiza explícitamente clientes, facturas ni configuración TPV que puedan referenciar esa ficha. Si la base de datos bloquea el borrado por una relación activa, la API puede devolver conflicto.
- 4.
Ejecuta el DELETE sin body
Envía `DELETE /api/app/{orgId}/{locationId}/billing-details/{id}` sin payload. La ruta debe incluir exactamente un segmento `id` después de `billing-details`; no funciona sobre la colección ni con subrutas extra.
- 5.
Verifica el listado de la ubicación
Actualiza el listado de fichas fiscales de la ubicación y comprueba que el registro eliminado ya no aparece. Una consulta posterior al detalle del mismo `id` debe tratarse como no encontrada.
Validaciones y límites
- La respuesta correcta en éxito es `204 NoContent` sin payload.
- El servicio recorta `id`; si falta, está vacío o solo contiene espacios, la acción se trata como no encontrada.
- Si falta `locationId` en el contexto, la acción se trata como no encontrada.
- Una ficha fiscal de otra ubicación devuelve 404 aunque se conozca su `id`.
- `customer:view` no habilita el borrado; se requiere `customer:manage`.
- El handler no acepta body ni campos de confirmación para el DELETE.
- El handler no soporta `DELETE /billing-details` sin `id` ni subrutas adicionales después del `id`.
- Si Postgres bloquea el DELETE por una FK o constraint, la API puede responder 409.
- No documentar esta acción como botón o menú de la app nativa: no se encontró una pantalla app-native que la invoque.
Resultado esperado
La ficha fiscal queda eliminada de la ubicación actual y desaparece del listado filtrado por `locationId`. Si permisos, ubicación, existencia del `id` o relaciones de base de datos no cumplen las condiciones, la operación no borra el registro.