TFS_ANTIGUO/TPAtesa_CuentasCobrar/Procedures_Triggers_CXC.sql

101 lines
No EOL
3.5 KiB
Transact-SQL

use CUENTAS_COBRAR
-- SECCION DE PROCEDURES
GO
CREATE PROCEDURE global.CancelarFactura
@Consecutivo nvarchar(40),
@SaldoNuevo decimal(18,2),
@NoRecibo int
AS
BEGIN
update global.Factura set Saldo = @SaldoNuevo where Consecutivo = @Consecutivo
if(@SaldoNuevo = 0)
BEGIN
update global.Factura set Estado = 'CANCELADA' where Consecutivo = @Consecutivo
END
insert into global.PagoContieneFactura values(@Consecutivo, @NoRecibo)
END
GO
GO
CREATE PROCEDURE global.CrearNotaCredito
@ConsecutivoFac nvarchar(40),
@TipoDocumentoFac nvarchar(255)
AS
BEGIN
declare @Consecutivo nvarchar(40), @NoIdentificacionCliente nvarchar(30), @IdMoneda int, @IdTipoDocumento int, @FechaEmision date, @FechaVencimiento date,
@ConsecutivoNotaCredito nvarchar(40), @NombreReceptor nvarchar(255), @SubTotal decimal(18,2), @TotalFactura decimal(18,2),
@DiasCredito int, @CantidadNC int
-- Obtener todos los datos necesarios de la factura
select @Consecutivo = Consecutivo, @NoIdentificacionCliente = NoIdentificacionCliente, @IdMoneda = IdMoneda, @FechaEmision = FechaEmision,
@FechaVencimiento = FechaVencimiento, @NombreReceptor = NombreReceptor, @SubTotal = SubTotal, @TotalFactura = TotalFactura, @DiasCredito = DiasCredito
from global.Factura
where Consecutivo = @ConsecutivoFac
-- Obtener el tipo de documento
select @IdTipoDocumento = IdTipoDocumento from catalogo.TipoDocumento where Descripcion = @TipoDocumentoFac
-- Actualizar el total y subtotal (dejarlos en negativo)
set @TotalFactura = @TotalFactura * -1
set @SubTotal = @TotalFactura
-- Actualizar el estado de la factura
update global.Factura set Estado = 'ANULADA' where Consecutivo = @ConsecutivoFac
-- Generar un consecutivo a la nota de creedito
-- Verificar la cantidad de notas de crédito
select @CantidadNC = count(IdTipoDocumento)
from global.Factura
where IdTipoDocumento = 3
group by IdTipoDocumento
if (@CantidadNC = 0)
BEGIN
set @ConsecutivoNotaCredito = '00100001030000000001'
END
else
BEGIN
select top (1) @ConsecutivoNotaCredito = Consecutivo
from global.Factura
where IdTipoDocumento = 3
order by FechaEmision desc
declare @ConsecutivoTemp int,
@HeaderFactura nvarchar(10),
@NumeracionConsecutivo nvarchar(10),
@FechaActual datetime = GETDATE()
set @HeaderFactura = '0010000103'
set @ConsecutivoTemp = CAST(SUBSTRING(@ConsecutivoNotaCredito,11,10) AS INT)
set @ConsecutivoTemp = @ConsecutivoTemp + 1
set @NumeracionConsecutivo = CONCAT(REPLICATE('0', 10 - Len(@ConsecutivoTemp)), @ConsecutivoTemp)
set @ConsecutivoNotaCredito = CONCAT(@HeaderFactura, @NumeracionConsecutivo)
END
-- Insetar la nota de credito con los datos de la factura indicada y con el numero de consecutivo generado.
insert into global.Factura values(@ConsecutivoNotaCredito, @NoIdentificacionCliente, @IdMoneda, @IdTipoDocumento, @FechaActual, DATEADD(day, 30, @FechaActual), @Consecutivo, @NombreReceptor, @SubTotal, 0, @TotalFactura, @DiasCredito, 0, 'CANCELADA')
END
GO
-- SECCION DE TRIGGERS
GO
CREATE TRIGGER agregar_descripciones_RolDeUsuario
ON global.RolDeUsuario
INSTEAD OF INSERT
AS
Begin
Declare @descripcion nvarchar(255)
Declare @idRol int
Declare @idUsuario varchar(20)
select @descripcion = descripcion from catalogo.Rol r join
inserted i on i.IdRol = r.IdRol where i.IdRol = r.IdRol
select @idRol = IdRol from inserted
select @idUsuario = IdUsuario from inserted
insert into RolDeUsuario ( IdUsuario, IdRol, DescripcionDeRol) values (@idUsuario, @idRol, @descripcion)
End
GO