revert(backend): eliminar handlers/endpoints/excepciones de reserva de numero ADM-008

Eliminar SecuenciaComprobante entity, TipoComprobante enum, DeadlockTransientException,
PuntoDeVentaInactivoException, carpetas Reservar/ y ProximoNumero/ de Application,
métodos ReservarNumeroAsync/GetUltimoNumeroAsync del repositorio, endpoints
POST /secuencias/.../reservar y GET /secuencias/.../proximo del controller,
y mapping PuntoDeVentaInactivoException del ExceptionFilter.
This commit is contained in:
2026-04-17 14:16:09 -03:00
parent 40482caf7b
commit 7d432a949a
15 changed files with 0 additions and 281 deletions

View File

@@ -1,34 +0,0 @@
using SIGCM2.Domain.Enums;
namespace SIGCM2.Domain.Entities;
/// <summary>
/// Lleva el correlativo de números de comprobante por (PuntoDeVentaId × TipoComprobante).
/// La reserva atómica la ejecuta usp_ReservarNumeroComprobante directamente en BD.
/// Este objeto es un helper de lectura/proyección.
/// </summary>
public sealed class SecuenciaComprobante
{
public int PuntoDeVentaId { get; }
public TipoComprobante TipoComprobante { get; }
public int UltimoNumero { get; }
public DateTime FechaCreacion { get; }
public DateTime? FechaModificacion { get; }
/// <summary>El próximo número disponible (read-only, sin modificar el estado).</summary>
public int ProximoNumero => UltimoNumero + 1;
public SecuenciaComprobante(
int puntoDeVentaId,
TipoComprobante tipoComprobante,
int ultimoNumero,
DateTime fechaCreacion,
DateTime? fechaModificacion)
{
PuntoDeVentaId = puntoDeVentaId;
TipoComprobante = tipoComprobante;
UltimoNumero = ultimoNumero;
FechaCreacion = fechaCreacion;
FechaModificacion = fechaModificacion;
}
}

View File

@@ -1,16 +0,0 @@
namespace SIGCM2.Domain.Enums;
/// <summary>
/// Tipos de comprobante AFIP soportados por ADM-008.
/// Valor TINYINT persistido en BD (CHECK TipoComprobante BETWEEN 1 AND 6).
/// Migración a tabla maestra diferida a FAC-001.
/// </summary>
public enum TipoComprobante : byte
{
FacturaA = 1,
FacturaB = 2,
FacturaC = 3,
NotaCreditoA = 4,
NotaCreditoB = 5,
NotaCreditoC = 6,
}

View File

@@ -1,14 +0,0 @@
namespace SIGCM2.Domain.Exceptions;
/// <summary>
/// Thrown by Infrastructure when a database deadlock (SQL 1205) is detected.
/// Allows Application handlers to retry without referencing SqlClient.
/// </summary>
public sealed class DeadlockTransientException : DomainException
{
public DeadlockTransientException()
: base("Se detectó un deadlock en la base de datos. Reintentando operación.") { }
public DeadlockTransientException(Exception innerException)
: base("Se detectó un deadlock en la base de datos. Reintentando operación.", innerException) { }
}

View File

@@ -1,15 +0,0 @@
namespace SIGCM2.Domain.Exceptions;
/// <summary>
/// Thrown when a mutation (reserva) is attempted on an inactive PuntoDeVenta.
/// </summary>
public sealed class PuntoDeVentaInactivoException : DomainException
{
public int PuntoDeVentaId { get; }
public PuntoDeVentaInactivoException(int puntoDeVentaId)
: base($"El punto de venta {puntoDeVentaId} está inactivo. No se pueden realizar operaciones hasta reactivarlo.")
{
PuntoDeVentaId = puntoDeVentaId;
}
}