101 lines
No EOL
3.5 KiB
Transact-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 |