1148 lines
32 KiB
Transact-SQL
1148 lines
32 KiB
Transact-SQL
SET NOCOUNT ON;
|
|
GO
|
|
|
|
DECLARE @CveUsuarioSistema int =
|
|
(
|
|
SELECT TOP (1)
|
|
CveUsuario
|
|
FROM dbo.Sis_Usuarios
|
|
WHERE Activo = 1
|
|
ORDER BY CveUsuario
|
|
);
|
|
|
|
IF @CveUsuarioSistema IS NULL
|
|
BEGIN
|
|
RAISERROR(
|
|
'No existe un usuario activo para inicializar los catálogos de ventas.',
|
|
16,
|
|
1
|
|
);
|
|
RETURN;
|
|
END;
|
|
|
|
IF NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.Vta_TipoDocumentos
|
|
WHERE CveTipoDocumento = 'Rem'
|
|
)
|
|
BEGIN
|
|
INSERT INTO dbo.Vta_TipoDocumentos
|
|
(
|
|
CveTipoDocumento,
|
|
TipoDocumento,
|
|
Estatus,
|
|
FechaIng,
|
|
Multiplicador,
|
|
Contable
|
|
)
|
|
VALUES
|
|
(
|
|
'Rem',
|
|
'Remisión',
|
|
1,
|
|
CONVERT(date, GETDATE()),
|
|
1,
|
|
0
|
|
);
|
|
END;
|
|
|
|
IF NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.EstatusFactura
|
|
WHERE TipoDocto = 'Rem'
|
|
AND Estado = 1
|
|
)
|
|
BEGIN
|
|
DECLARE @CveEstatusFacturaInicial int =
|
|
CASE
|
|
WHEN NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.EstatusFactura
|
|
WHERE CveEstatusFactura = 2
|
|
) THEN 2
|
|
ELSE ISNULL(
|
|
(
|
|
SELECT MAX(CveEstatusFactura) + 1
|
|
FROM dbo.EstatusFactura
|
|
),
|
|
1
|
|
)
|
|
END;
|
|
|
|
INSERT INTO dbo.EstatusFactura
|
|
(
|
|
CveEstatusFactura,
|
|
EstatusFactura,
|
|
Estado,
|
|
Fecha,
|
|
CveUsuario,
|
|
TipoDocto,
|
|
TipoEstatus,
|
|
Origen,
|
|
EnProcesoCancelacion
|
|
)
|
|
VALUES
|
|
(
|
|
@CveEstatusFacturaInicial,
|
|
'Pendiente',
|
|
1,
|
|
CONVERT(date, GETDATE()),
|
|
@CveUsuarioSistema,
|
|
'Rem',
|
|
1,
|
|
1,
|
|
0
|
|
);
|
|
END;
|
|
|
|
DECLARE @CveProyectoVentas int;
|
|
|
|
SELECT
|
|
@CveProyectoVentas = CveProyecto
|
|
FROM dbo.Proyectos
|
|
WHERE Proyecto = 'Plataforma de Desarrolladores';
|
|
|
|
IF @CveProyectoVentas IS NULL
|
|
BEGIN
|
|
INSERT INTO dbo.Proyectos
|
|
(
|
|
Proyecto,
|
|
Estatus,
|
|
FechaIng,
|
|
CveUsuario,
|
|
CveTipoNomina
|
|
)
|
|
VALUES
|
|
(
|
|
'Plataforma de Desarrolladores',
|
|
1,
|
|
CONVERT(date, GETDATE()),
|
|
@CveUsuarioSistema,
|
|
0
|
|
);
|
|
|
|
SET @CveProyectoVentas = CONVERT(int, SCOPE_IDENTITY());
|
|
END;
|
|
|
|
IF NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.SubProyectos
|
|
WHERE CveProyecto = @CveProyectoVentas
|
|
AND SubProyecto = 'Matriz'
|
|
)
|
|
BEGIN
|
|
INSERT INTO dbo.SubProyectos
|
|
(
|
|
CveProyecto,
|
|
ClaveSubProyecto,
|
|
SubProyecto,
|
|
Estatus,
|
|
FechaIng,
|
|
CveUsuario,
|
|
Serie,
|
|
EsSucursal
|
|
)
|
|
VALUES
|
|
(
|
|
@CveProyectoVentas,
|
|
'MAT',
|
|
'Matriz',
|
|
1,
|
|
CONVERT(date, GETDATE()),
|
|
@CveUsuarioSistema,
|
|
'TRA',
|
|
1
|
|
);
|
|
END;
|
|
GO
|
|
|
|
IF OBJECT_ID('dbo.Tra_SolicitudesPagos', 'U') IS NULL
|
|
BEGIN
|
|
CREATE TABLE dbo.Tra_SolicitudesPagos
|
|
(
|
|
CveSolicitudPago int IDENTITY(1, 1) NOT NULL,
|
|
CveSolicitud int NOT NULL,
|
|
CveTramitePago int NOT NULL,
|
|
CveVenta int NOT NULL,
|
|
FechaAlta datetime NOT NULL
|
|
CONSTRAINT DF_Tra_SolicitudesPagos_FechaAlta
|
|
DEFAULT (GETDATE()),
|
|
CveUsuario int NOT NULL,
|
|
CONSTRAINT PK_Tra_SolicitudesPagos
|
|
PRIMARY KEY CLUSTERED (CveSolicitudPago),
|
|
CONSTRAINT UQ_Tra_SolicitudesPagos_SolicitudPago
|
|
UNIQUE (CveSolicitud, CveTramitePago),
|
|
CONSTRAINT UQ_Tra_SolicitudesPagos_Venta
|
|
UNIQUE (CveVenta),
|
|
CONSTRAINT FK_Tra_SolicitudesPagos_Tra_Solicitudes
|
|
FOREIGN KEY (CveSolicitud)
|
|
REFERENCES dbo.Tra_Solicitudes (CveSolicitud),
|
|
CONSTRAINT FK_Tra_SolicitudesPagos_Tra_Pagos
|
|
FOREIGN KEY (CveTramitePago)
|
|
REFERENCES dbo.Tra_Pagos (CveTramitePago),
|
|
CONSTRAINT FK_Tra_SolicitudesPagos_Ventas
|
|
FOREIGN KEY (CveVenta)
|
|
REFERENCES dbo.Ventas (CveVenta),
|
|
CONSTRAINT FK_Tra_SolicitudesPagos_Sis_Usuarios
|
|
FOREIGN KEY (CveUsuario)
|
|
REFERENCES dbo.Sis_Usuarios (CveUsuario)
|
|
);
|
|
|
|
CREATE NONCLUSTERED INDEX IX_Tra_SolicitudesPagos_Solicitud
|
|
ON dbo.Tra_SolicitudesPagos (CveSolicitud)
|
|
INCLUDE (CveTramitePago, CveVenta, FechaAlta);
|
|
END;
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Vta_FraccionamientoPagoPendienteList
|
|
@CveFraccionamiento int,
|
|
@CveUsuarioEjecuta int,
|
|
@ErrorMostrar varchar(max) OUTPUT,
|
|
@ErrorTipo int OUTPUT,
|
|
@Return bit OUTPUT
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
SELECT
|
|
@ErrorMostrar = NULL,
|
|
@ErrorTipo = 0,
|
|
@Return = 0;
|
|
|
|
BEGIN TRY
|
|
DECLARE @PorcentajeIVA decimal(9, 6) = 0.16;
|
|
|
|
IF NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.Fraccionamientos
|
|
WHERE CveFraccionamiento = @CveFraccionamiento
|
|
)
|
|
BEGIN
|
|
SELECT
|
|
@ErrorMostrar = 'El fraccionamiento solicitado no existe.',
|
|
@ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
;WITH Conceptos AS
|
|
(
|
|
SELECT
|
|
S.CveSolicitud,
|
|
P.CveTramitePago,
|
|
COUNT_BIG(*) AS NumeroConceptos,
|
|
SUM(
|
|
ROUND(
|
|
CONVERT(decimal(18, 4), Costo.Importe),
|
|
2
|
|
)
|
|
) AS SubTotal,
|
|
SUM(
|
|
ROUND(
|
|
CONVERT(decimal(18, 4), Costo.Importe) *
|
|
@PorcentajeIVA,
|
|
2
|
|
)
|
|
) AS IVA
|
|
FROM dbo.Tra_Solicitudes AS S
|
|
INNER JOIN dbo.Tra_Pagos AS P
|
|
ON P.CveTipoTramite = S.CveTipoTramite
|
|
AND P.EsActivo = 1
|
|
INNER JOIN dbo.Tra_PagosDetalle AS D
|
|
ON D.CveTramitePago = P.CveTramitePago
|
|
INNER JOIN dbo.ProductosServicios AS PS
|
|
ON PS.CvePS = D.CvePS
|
|
OUTER APPLY
|
|
(
|
|
SELECT TOP (1)
|
|
CT.Importe
|
|
FROM dbo.Tra_CostosTramite AS CT
|
|
WHERE CT.CveTipoTramite = S.CveTipoTramite
|
|
AND CT.CvePS = D.CvePS
|
|
AND CT.EsActivo = 1
|
|
AND
|
|
(
|
|
CT.FechaInicioVigencia IS NULL
|
|
OR CT.FechaInicioVigencia <= CONVERT(date, GETDATE())
|
|
)
|
|
AND
|
|
(
|
|
CT.FechaFinVigencia IS NULL
|
|
OR CT.FechaFinVigencia >= CONVERT(date, GETDATE())
|
|
)
|
|
ORDER BY
|
|
ISNULL(
|
|
CT.FechaInicioVigencia,
|
|
CONVERT(date, '19000101')) DESC,
|
|
CT.CveCostoTramite DESC
|
|
) AS Costo
|
|
WHERE S.CveFraccionamiento = @CveFraccionamiento
|
|
AND NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.Tra_SolicitudesPagos AS SP
|
|
WHERE SP.CveSolicitud = S.CveSolicitud
|
|
AND SP.CveTramitePago = P.CveTramitePago
|
|
)
|
|
GROUP BY
|
|
S.CveSolicitud,
|
|
P.CveTramitePago
|
|
)
|
|
SELECT
|
|
S.CveSolicitud,
|
|
P.CveTramitePago,
|
|
S.Folio AS FolioSolicitud,
|
|
E.Etapa,
|
|
TT.TipoTramite,
|
|
P.Nombre AS NombrePago,
|
|
CONVERT(int, C.NumeroConceptos) AS NumeroConceptos,
|
|
CONVERT(decimal(18, 2), C.SubTotal) AS SubTotal,
|
|
CONVERT(decimal(18, 2), C.IVA) AS IVA,
|
|
CONVERT(decimal(18, 2), C.SubTotal + C.IVA) AS Total
|
|
FROM Conceptos AS C
|
|
INNER JOIN dbo.Tra_Solicitudes AS S
|
|
ON S.CveSolicitud = C.CveSolicitud
|
|
INNER JOIN dbo.FraccionamientosEtapas AS E
|
|
ON E.CveFraccionamientoEtapa = S.CveFraccionamientoEtapa
|
|
INNER JOIN dbo.Tra_TiposTramite AS TT
|
|
ON TT.CveTipoTramite = S.CveTipoTramite
|
|
INNER JOIN dbo.Tra_Pagos AS P
|
|
ON P.CveTramitePago = C.CveTramitePago
|
|
ORDER BY
|
|
E.Orden,
|
|
S.CveSolicitud,
|
|
P.Orden,
|
|
P.CveTramitePago;
|
|
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SELECT
|
|
@ErrorMostrar = 'Ocurrió un error al consultar los pagos pendientes; favor de contactar a Sistemas.',
|
|
@ErrorTipo = 1,
|
|
@Return = 0;
|
|
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(
|
|
ERROR_PROCEDURE(),
|
|
'PA_Vta_FraccionamientoPagoPendienteList'
|
|
),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Vta_FraccionamientoPagoRealizadoList
|
|
@CveFraccionamiento int,
|
|
@CveUsuarioEjecuta int,
|
|
@ErrorMostrar varchar(max) OUTPUT,
|
|
@ErrorTipo int OUTPUT,
|
|
@Return bit OUTPUT
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
SELECT
|
|
@ErrorMostrar = NULL,
|
|
@ErrorTipo = 0,
|
|
@Return = 0;
|
|
|
|
BEGIN TRY
|
|
IF NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.Fraccionamientos
|
|
WHERE CveFraccionamiento = @CveFraccionamiento
|
|
)
|
|
BEGIN
|
|
SELECT
|
|
@ErrorMostrar = 'El fraccionamiento solicitado no existe.',
|
|
@ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
SELECT
|
|
SP.CveSolicitudPago,
|
|
SP.CveSolicitud,
|
|
SP.CveTramitePago,
|
|
V.CveVenta,
|
|
V.SerieFolio,
|
|
V.Fecha,
|
|
S.Folio AS FolioSolicitud,
|
|
E.Etapa,
|
|
TT.TipoTramite,
|
|
P.Nombre AS NombrePago,
|
|
CONVERT(decimal(18, 2), V.SubTotal) AS SubTotal,
|
|
CONVERT(decimal(18, 2), V.IVA) AS IVA,
|
|
CONVERT(decimal(18, 2), V.Total) AS Total
|
|
FROM dbo.Tra_SolicitudesPagos AS SP
|
|
INNER JOIN dbo.Tra_Solicitudes AS S
|
|
ON S.CveSolicitud = SP.CveSolicitud
|
|
INNER JOIN dbo.FraccionamientosEtapas AS E
|
|
ON E.CveFraccionamientoEtapa = S.CveFraccionamientoEtapa
|
|
INNER JOIN dbo.Tra_TiposTramite AS TT
|
|
ON TT.CveTipoTramite = S.CveTipoTramite
|
|
INNER JOIN dbo.Tra_Pagos AS P
|
|
ON P.CveTramitePago = SP.CveTramitePago
|
|
INNER JOIN dbo.Ventas AS V
|
|
ON V.CveVenta = SP.CveVenta
|
|
WHERE S.CveFraccionamiento = @CveFraccionamiento
|
|
ORDER BY
|
|
V.Fecha DESC,
|
|
V.CveVenta DESC;
|
|
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SELECT
|
|
@ErrorMostrar = 'Ocurrió un error al consultar los pagos realizados; favor de contactar a Sistemas.',
|
|
@ErrorTipo = 1,
|
|
@Return = 0;
|
|
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(
|
|
ERROR_PROCEDURE(),
|
|
'PA_Vta_FraccionamientoPagoRealizadoList'
|
|
),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Vta_TramiteContextoGet
|
|
@CveSolicitud int,
|
|
@CveTramitePago int,
|
|
@CveUsuarioEjecuta int,
|
|
@ErrorMostrar varchar(max) OUTPUT,
|
|
@ErrorTipo int OUTPUT,
|
|
@Return bit OUTPUT
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
SELECT
|
|
@ErrorMostrar = NULL,
|
|
@ErrorTipo = 0,
|
|
@Return = 0;
|
|
|
|
BEGIN TRY
|
|
DECLARE @CveSubProyecto int =
|
|
(
|
|
SELECT TOP (1)
|
|
CveSubProyecto
|
|
FROM dbo.SubProyectos
|
|
WHERE Estatus = 1
|
|
ORDER BY
|
|
CASE WHEN Serie = 'TRA' THEN 0 ELSE 1 END,
|
|
CveSubProyecto
|
|
);
|
|
|
|
IF EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.Tra_SolicitudesPagos
|
|
WHERE CveSolicitud = @CveSolicitud
|
|
AND CveTramitePago = @CveTramitePago
|
|
)
|
|
BEGIN
|
|
SELECT
|
|
@ErrorMostrar = 'El pago seleccionado ya fue realizado.',
|
|
@ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
IF NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.Tra_Solicitudes AS S
|
|
INNER JOIN dbo.Tra_Pagos AS P
|
|
ON P.CveTramitePago = @CveTramitePago
|
|
AND P.CveTipoTramite = S.CveTipoTramite
|
|
AND P.EsActivo = 1
|
|
INNER JOIN dbo.Tra_PagosDetalle AS D
|
|
ON D.CveTramitePago = P.CveTramitePago
|
|
WHERE S.CveSolicitud = @CveSolicitud
|
|
)
|
|
BEGIN
|
|
SELECT
|
|
@ErrorMostrar = 'El pago seleccionado no corresponde al trámite o no tiene conceptos activos.',
|
|
@ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
SELECT
|
|
S.CveSolicitud,
|
|
P.CveTramitePago,
|
|
S.CveFraccionamiento,
|
|
F.Fraccionamiento,
|
|
F.CveCliente,
|
|
C.Nombre AS Cliente,
|
|
C.RFC,
|
|
CONCAT(
|
|
C.Direccion,
|
|
CASE
|
|
WHEN NULLIF(LTRIM(RTRIM(C.NoExt)), '') IS NULL THEN ''
|
|
ELSE CONCAT(' ', C.NoExt)
|
|
END,
|
|
CASE
|
|
WHEN NULLIF(LTRIM(RTRIM(C.NoInt)), '') IS NULL THEN ''
|
|
ELSE CONCAT(' Int. ', C.NoInt)
|
|
END
|
|
) AS Direccion,
|
|
C.Colonia,
|
|
CONCAT(C.Ciudad, ', ', C.Estado) AS CiudadEstado,
|
|
C.CP,
|
|
C.Telefono,
|
|
C.Mail,
|
|
S.Folio AS FolioSolicitud,
|
|
E.Etapa,
|
|
TT.TipoTramite,
|
|
P.Nombre AS NombrePago,
|
|
'Remisión' AS TipoDocumento,
|
|
'TRA' AS Serie,
|
|
ISNULL(
|
|
(
|
|
SELECT MAX(V.Folio) + 1
|
|
FROM dbo.Ventas AS V
|
|
WHERE V.TipoDocto = 'Rem'
|
|
AND V.Serie = 'TRA'
|
|
AND V.CveSubProyecto = @CveSubProyecto
|
|
),
|
|
1
|
|
) AS Folio,
|
|
GETDATE() AS Fecha
|
|
FROM dbo.Tra_Solicitudes AS S
|
|
INNER JOIN dbo.Fraccionamientos AS F
|
|
ON F.CveFraccionamiento = S.CveFraccionamiento
|
|
INNER JOIN dbo.FraccionamientosEtapas AS E
|
|
ON E.CveFraccionamientoEtapa = S.CveFraccionamientoEtapa
|
|
INNER JOIN dbo.Tra_TiposTramite AS TT
|
|
ON TT.CveTipoTramite = S.CveTipoTramite
|
|
INNER JOIN dbo.Tra_Pagos AS P
|
|
ON P.CveTramitePago = @CveTramitePago
|
|
AND P.CveTipoTramite = S.CveTipoTramite
|
|
INNER JOIN dbo.Clientes AS C
|
|
ON C.CveCliente = F.CveCliente
|
|
WHERE S.CveSolicitud = @CveSolicitud;
|
|
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SELECT
|
|
@ErrorMostrar = 'Ocurrió un error al consultar la venta del trámite; favor de contactar a Sistemas.',
|
|
@ErrorTipo = 1,
|
|
@Return = 0;
|
|
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(
|
|
ERROR_PROCEDURE(),
|
|
'PA_Vta_TramiteContextoGet'
|
|
),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Vta_TramiteConceptoList
|
|
@CveSolicitud int,
|
|
@CveTramitePago int,
|
|
@CveUsuarioEjecuta int,
|
|
@ErrorMostrar varchar(max) OUTPUT,
|
|
@ErrorTipo int OUTPUT,
|
|
@Return bit OUTPUT
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
SELECT
|
|
@ErrorMostrar = NULL,
|
|
@ErrorTipo = 0,
|
|
@Return = 0;
|
|
|
|
BEGIN TRY
|
|
DECLARE @PorcentajeIVA decimal(9, 6) = 0.16;
|
|
|
|
SELECT
|
|
D.CveTramitePagoDetalle,
|
|
D.CvePS,
|
|
D.CveUM,
|
|
CASE
|
|
WHEN NULLIF(LTRIM(RTRIM(UM.Abreviatura)), '') IS NULL
|
|
THEN UM.UnidadMedida COLLATE DATABASE_DEFAULT
|
|
ELSE
|
|
UM.UnidadMedida COLLATE DATABASE_DEFAULT +
|
|
' (' +
|
|
UM.Abreviatura COLLATE DATABASE_DEFAULT +
|
|
')'
|
|
END AS UnidadMedida,
|
|
C.CveClasificacion,
|
|
CASE
|
|
WHEN NULLIF(LTRIM(RTRIM(C.Codigo)), '') IS NULL
|
|
THEN C.Clasificacion COLLATE DATABASE_DEFAULT
|
|
ELSE
|
|
C.Codigo COLLATE DATABASE_DEFAULT +
|
|
' - ' +
|
|
C.Clasificacion COLLATE DATABASE_DEFAULT
|
|
END AS Clasificacion,
|
|
CASE
|
|
WHEN NULLIF(LTRIM(RTRIM(PS.Codigo)), '') IS NULL
|
|
THEN PS.PS COLLATE DATABASE_DEFAULT
|
|
ELSE
|
|
PS.Codigo COLLATE DATABASE_DEFAULT +
|
|
' - ' +
|
|
PS.PS COLLATE DATABASE_DEFAULT
|
|
END AS ProductoServicio,
|
|
CONVERT(decimal(18, 4), 1) AS Cantidad,
|
|
CONVERT(decimal(18, 2), Costo.Importe) AS PrecioUnitario,
|
|
CONVERT(decimal(18, 2), 0) AS Descuento,
|
|
CONVERT(
|
|
decimal(18, 2),
|
|
ROUND(
|
|
CONVERT(decimal(18, 4), Costo.Importe) *
|
|
@PorcentajeIVA,
|
|
2
|
|
)
|
|
) AS IVA,
|
|
CONVERT(
|
|
decimal(18, 2),
|
|
ROUND(
|
|
CONVERT(decimal(18, 4), Costo.Importe),
|
|
2
|
|
)
|
|
) AS Importe
|
|
FROM dbo.Tra_Solicitudes AS S
|
|
INNER JOIN dbo.Tra_Pagos AS P
|
|
ON P.CveTramitePago = @CveTramitePago
|
|
AND P.CveTipoTramite = S.CveTipoTramite
|
|
AND P.EsActivo = 1
|
|
INNER JOIN dbo.Tra_PagosDetalle AS D
|
|
ON D.CveTramitePago = P.CveTramitePago
|
|
INNER JOIN dbo.ProductosServicios AS PS
|
|
ON PS.CvePS = D.CvePS
|
|
CROSS APPLY
|
|
(
|
|
SELECT TOP (1)
|
|
CT.Importe
|
|
FROM dbo.Tra_CostosTramite AS CT
|
|
WHERE CT.CveTipoTramite =
|
|
(
|
|
SELECT S.CveTipoTramite
|
|
FROM dbo.Tra_Solicitudes AS S
|
|
WHERE S.CveSolicitud = @CveSolicitud
|
|
)
|
|
AND CT.CvePS = D.CvePS
|
|
AND CT.EsActivo = 1
|
|
AND
|
|
(
|
|
CT.FechaInicioVigencia IS NULL
|
|
OR CT.FechaInicioVigencia <= CONVERT(date, GETDATE())
|
|
)
|
|
AND
|
|
(
|
|
CT.FechaFinVigencia IS NULL
|
|
OR CT.FechaFinVigencia >= CONVERT(date, GETDATE())
|
|
)
|
|
ORDER BY
|
|
ISNULL(CT.FechaInicioVigencia, CONVERT(date, '19000101')) DESC,
|
|
CT.CveCostoTramite DESC
|
|
) AS Costo
|
|
INNER JOIN dbo.UnidadesMedida AS UM
|
|
ON UM.CveUnidadMedida = D.CveUM
|
|
INNER JOIN dbo.Clasificaciones AS C
|
|
ON C.CveClasificacion = PS.CveClasificacion
|
|
WHERE S.CveSolicitud = @CveSolicitud
|
|
ORDER BY D.CveTramitePagoDetalle;
|
|
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SELECT
|
|
@ErrorMostrar = 'Ocurrió un error al consultar los conceptos de la venta; favor de contactar a Sistemas.',
|
|
@ErrorTipo = 1,
|
|
@Return = 0;
|
|
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(
|
|
ERROR_PROCEDURE(),
|
|
'PA_Vta_TramiteConceptoList'
|
|
),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE dbo.PA_Vta_TramiteVentaSave
|
|
@CveSolicitud int,
|
|
@CveTramitePago int,
|
|
@Observaciones varchar(2000) = NULL,
|
|
@CveUsuarioEjecuta int,
|
|
@ErrorMostrar varchar(max) OUTPUT,
|
|
@ErrorTipo int OUTPUT,
|
|
@Return bit OUTPUT
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
SELECT
|
|
@ErrorMostrar = NULL,
|
|
@ErrorTipo = 0,
|
|
@Return = 0;
|
|
|
|
BEGIN TRY
|
|
DECLARE
|
|
@PorcentajeIVA decimal(9, 6) = 0.16,
|
|
@CveVendedor int = 1,
|
|
@CveCliente int,
|
|
@CveSubProyecto int,
|
|
@CveEstatusFactura int,
|
|
@CveVenta int,
|
|
@Folio int,
|
|
@SubTotal decimal(18, 2),
|
|
@Descuento decimal(18, 2) = 0,
|
|
@IVA decimal(18, 2),
|
|
@Total decimal(18, 2),
|
|
@Fecha datetime = GETDATE();
|
|
|
|
SELECT
|
|
@CveCliente = F.CveCliente
|
|
FROM dbo.Tra_Solicitudes AS S
|
|
INNER JOIN dbo.Fraccionamientos AS F
|
|
ON F.CveFraccionamiento = S.CveFraccionamiento
|
|
INNER JOIN dbo.Tra_Pagos AS P
|
|
ON P.CveTramitePago = @CveTramitePago
|
|
AND P.CveTipoTramite = S.CveTipoTramite
|
|
AND P.EsActivo = 1
|
|
WHERE S.CveSolicitud = @CveSolicitud;
|
|
|
|
IF @CveCliente IS NULL
|
|
BEGIN
|
|
SELECT
|
|
@ErrorMostrar = 'El pago seleccionado no corresponde al trámite.',
|
|
@ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
IF EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.Tra_Solicitudes AS S
|
|
INNER JOIN dbo.Tra_Pagos AS P
|
|
ON P.CveTramitePago = @CveTramitePago
|
|
AND P.CveTipoTramite = S.CveTipoTramite
|
|
AND P.EsActivo = 1
|
|
INNER JOIN dbo.Tra_PagosDetalle AS D
|
|
ON D.CveTramitePago = P.CveTramitePago
|
|
WHERE S.CveSolicitud = @CveSolicitud
|
|
AND NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.Tra_CostosTramite AS CT
|
|
WHERE CT.CveTipoTramite = S.CveTipoTramite
|
|
AND CT.CvePS = D.CvePS
|
|
AND CT.EsActivo = 1
|
|
AND
|
|
(
|
|
CT.FechaInicioVigencia IS NULL
|
|
OR CT.FechaInicioVigencia <= CONVERT(date, @Fecha)
|
|
)
|
|
AND
|
|
(
|
|
CT.FechaFinVigencia IS NULL
|
|
OR CT.FechaFinVigencia >= CONVERT(date, @Fecha)
|
|
)
|
|
)
|
|
)
|
|
BEGIN
|
|
SELECT
|
|
@ErrorMostrar = 'Uno o más conceptos no tienen un costo vigente configurado.',
|
|
@ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
IF EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.Tra_SolicitudesPagos WITH (UPDLOCK, HOLDLOCK)
|
|
WHERE CveSolicitud = @CveSolicitud
|
|
AND CveTramitePago = @CveTramitePago
|
|
)
|
|
BEGIN
|
|
SELECT
|
|
@ErrorMostrar = 'El pago seleccionado ya fue realizado.',
|
|
@ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
SELECT TOP (1)
|
|
@CveSubProyecto = CveSubProyecto
|
|
FROM dbo.SubProyectos
|
|
WHERE Estatus = 1
|
|
ORDER BY
|
|
CASE WHEN Serie = 'TRA' THEN 0 ELSE 1 END,
|
|
CveSubProyecto;
|
|
|
|
SELECT TOP (1)
|
|
@CveEstatusFactura = CveEstatusFactura
|
|
FROM dbo.EstatusFactura
|
|
WHERE TipoDocto = 'Rem'
|
|
AND Estado = 1
|
|
ORDER BY CveEstatusFactura;
|
|
|
|
IF @CveSubProyecto IS NULL OR @CveEstatusFactura IS NULL
|
|
BEGIN
|
|
SELECT
|
|
@ErrorMostrar = 'La configuración mínima de ventas no está disponible; favor de contactar a Sistemas.',
|
|
@ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
SELECT
|
|
@SubTotal = CONVERT(
|
|
decimal(18, 2),
|
|
SUM(
|
|
ROUND(
|
|
CONVERT(decimal(18, 4), Costo.Importe),
|
|
2
|
|
)
|
|
)
|
|
),
|
|
@IVA = CONVERT(
|
|
decimal(18, 2),
|
|
SUM(
|
|
ROUND(
|
|
CONVERT(decimal(18, 4), Costo.Importe) *
|
|
@PorcentajeIVA,
|
|
2
|
|
)
|
|
)
|
|
)
|
|
FROM dbo.Tra_PagosDetalle AS D
|
|
INNER JOIN dbo.ProductosServicios AS PS
|
|
ON PS.CvePS = D.CvePS
|
|
CROSS APPLY
|
|
(
|
|
SELECT TOP (1)
|
|
CT.Importe
|
|
FROM dbo.Tra_CostosTramite AS CT
|
|
WHERE CT.CveTipoTramite =
|
|
(
|
|
SELECT S.CveTipoTramite
|
|
FROM dbo.Tra_Solicitudes AS S
|
|
WHERE S.CveSolicitud = @CveSolicitud
|
|
)
|
|
AND CT.CvePS = D.CvePS
|
|
AND CT.EsActivo = 1
|
|
AND
|
|
(
|
|
CT.FechaInicioVigencia IS NULL
|
|
OR CT.FechaInicioVigencia <= CONVERT(date, @Fecha)
|
|
)
|
|
AND
|
|
(
|
|
CT.FechaFinVigencia IS NULL
|
|
OR CT.FechaFinVigencia >= CONVERT(date, @Fecha)
|
|
)
|
|
ORDER BY
|
|
ISNULL(CT.FechaInicioVigencia, CONVERT(date, '19000101')) DESC,
|
|
CT.CveCostoTramite DESC
|
|
) AS Costo
|
|
WHERE D.CveTramitePago = @CveTramitePago;
|
|
|
|
IF @SubTotal IS NULL
|
|
BEGIN
|
|
SELECT
|
|
@ErrorMostrar = 'El pago seleccionado no tiene conceptos para vender.',
|
|
@ErrorTipo = 2;
|
|
RETURN;
|
|
END;
|
|
|
|
SET @IVA = ISNULL(@IVA, 0);
|
|
SET @Total = @SubTotal - @Descuento + @IVA;
|
|
|
|
SELECT
|
|
@Folio = ISNULL(MAX(Folio), 0) + 1
|
|
FROM dbo.Ventas WITH (UPDLOCK, HOLDLOCK)
|
|
WHERE CveSubProyecto = @CveSubProyecto
|
|
AND TipoDocto = 'Rem'
|
|
AND Serie = 'TRA';
|
|
|
|
INSERT INTO dbo.Ventas
|
|
(
|
|
TipoDocto,
|
|
Serie,
|
|
Folio,
|
|
Fecha,
|
|
CveCliente,
|
|
CveVendedor,
|
|
CveMetodoPago,
|
|
CondicionesPago,
|
|
FormaPago,
|
|
SubTotal,
|
|
Descuento,
|
|
IVA,
|
|
Total,
|
|
Observaciones,
|
|
CveEstatusFactura,
|
|
FechaEjecucion,
|
|
CveSubProyecto,
|
|
CveUsuario,
|
|
CveFormaPago33,
|
|
CveMetodoPago33,
|
|
FechaIng,
|
|
FechaVencimiento2,
|
|
Ref,
|
|
DescripcionVenta,
|
|
FechaParaSurtir
|
|
)
|
|
VALUES
|
|
(
|
|
'Rem',
|
|
'TRA',
|
|
@Folio,
|
|
@Fecha,
|
|
@CveCliente,
|
|
@CveVendedor,
|
|
2,
|
|
0,
|
|
99,
|
|
@SubTotal,
|
|
@Descuento,
|
|
@IVA,
|
|
@Total,
|
|
ISNULL(@Observaciones, ''),
|
|
@CveEstatusFactura,
|
|
@Fecha,
|
|
@CveSubProyecto,
|
|
@CveUsuarioEjecuta,
|
|
99,
|
|
2,
|
|
@Fecha,
|
|
CONVERT(date, @Fecha),
|
|
CONVERT(varchar(50), @CveSolicitud),
|
|
'Pago de trámite',
|
|
@Fecha
|
|
);
|
|
|
|
SET @CveVenta = CONVERT(int, SCOPE_IDENTITY());
|
|
|
|
INSERT INTO dbo.VentasDetalle
|
|
(
|
|
CveVenta,
|
|
CvePS,
|
|
CveSolicitud,
|
|
CveCostoTramite,
|
|
Cantidad,
|
|
PrecioUnitario,
|
|
Descuento,
|
|
IVA,
|
|
Importe,
|
|
EsFondoInicial,
|
|
FechaAlta,
|
|
CveUsuario
|
|
)
|
|
SELECT
|
|
@CveVenta,
|
|
D.CvePS,
|
|
@CveSolicitud,
|
|
Costo.CveCostoTramite,
|
|
CONVERT(decimal(18, 4), 1),
|
|
CONVERT(decimal(18, 2), Costo.Importe),
|
|
CONVERT(decimal(18, 2), 0),
|
|
CONVERT(
|
|
decimal(18, 2),
|
|
ROUND(
|
|
CONVERT(decimal(18, 4), Costo.Importe) *
|
|
@PorcentajeIVA,
|
|
2
|
|
)
|
|
),
|
|
CONVERT(
|
|
decimal(18, 2),
|
|
ROUND(
|
|
CONVERT(decimal(18, 4), Costo.Importe),
|
|
2
|
|
)
|
|
),
|
|
0,
|
|
@Fecha,
|
|
@CveUsuarioEjecuta
|
|
FROM dbo.Tra_PagosDetalle AS D
|
|
INNER JOIN dbo.ProductosServicios AS PS
|
|
ON PS.CvePS = D.CvePS
|
|
CROSS APPLY
|
|
(
|
|
SELECT TOP (1)
|
|
CT.CveCostoTramite,
|
|
CT.Importe
|
|
FROM dbo.Tra_CostosTramite AS CT
|
|
WHERE CT.CveTipoTramite =
|
|
(
|
|
SELECT S.CveTipoTramite
|
|
FROM dbo.Tra_Solicitudes AS S
|
|
WHERE S.CveSolicitud = @CveSolicitud
|
|
)
|
|
AND CT.CvePS = D.CvePS
|
|
AND CT.EsActivo = 1
|
|
AND
|
|
(
|
|
CT.FechaInicioVigencia IS NULL
|
|
OR CT.FechaInicioVigencia <= CONVERT(date, @Fecha)
|
|
)
|
|
AND
|
|
(
|
|
CT.FechaFinVigencia IS NULL
|
|
OR CT.FechaFinVigencia >= CONVERT(date, @Fecha)
|
|
)
|
|
ORDER BY
|
|
ISNULL(CT.FechaInicioVigencia, CONVERT(date, '19000101')) DESC,
|
|
CT.CveCostoTramite DESC
|
|
) AS Costo
|
|
WHERE D.CveTramitePago = @CveTramitePago;
|
|
|
|
INSERT INTO dbo.Tra_SolicitudesPagos
|
|
(
|
|
CveSolicitud,
|
|
CveTramitePago,
|
|
CveVenta,
|
|
FechaAlta,
|
|
CveUsuario
|
|
)
|
|
VALUES
|
|
(
|
|
@CveSolicitud,
|
|
@CveTramitePago,
|
|
@CveVenta,
|
|
@Fecha,
|
|
@CveUsuarioEjecuta
|
|
);
|
|
|
|
SELECT @CveVenta AS CveVenta;
|
|
|
|
SET @Return = 1;
|
|
END TRY
|
|
BEGIN CATCH
|
|
SELECT
|
|
@ErrorMostrar = 'Ocurrió un error al registrar la venta del trámite; favor de contactar a Sistemas.',
|
|
@ErrorTipo = 1,
|
|
@Return = 0;
|
|
|
|
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
|
'Número: ', ERROR_NUMBER(),
|
|
'; Procedimiento: ', COALESCE(
|
|
ERROR_PROCEDURE(),
|
|
'PA_Vta_TramiteVentaSave'
|
|
),
|
|
'; Línea: ', ERROR_LINE(),
|
|
'; Detalle: ', ERROR_MESSAGE()
|
|
);
|
|
|
|
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
|
END CATCH;
|
|
END;
|
|
GO
|
|
|
|
DECLARE @CveModuloFraccionamientoDetalle int =
|
|
(
|
|
SELECT CveModulo
|
|
FROM dbo.Sis_Modulos
|
|
WHERE Url = '~/Pages/Fraccionamientos/FraccionamientoDetalle.aspx'
|
|
);
|
|
DECLARE @CveModuloVentaTramite int =
|
|
(
|
|
SELECT CveModulo
|
|
FROM dbo.Sis_Modulos
|
|
WHERE Url = '~/Pages/Ventas/VentaTramite.aspx'
|
|
);
|
|
|
|
IF @CveModuloVentaTramite IS NULL
|
|
BEGIN
|
|
INSERT INTO dbo.Sis_Modulos
|
|
(
|
|
CveModuloPadre,
|
|
CvePlataforma,
|
|
NombreModulo,
|
|
Descripcion,
|
|
Url,
|
|
ClaseCssIcono,
|
|
OrdenVisualizacion,
|
|
Visible,
|
|
Activo,
|
|
FechaCreacion
|
|
)
|
|
VALUES
|
|
(
|
|
@CveModuloFraccionamientoDetalle,
|
|
1,
|
|
'Venta de trámite',
|
|
'Registro del pago de un trámite',
|
|
'~/Pages/Ventas/VentaTramite.aspx',
|
|
'fa fa-credit-card',
|
|
10,
|
|
0,
|
|
1,
|
|
GETDATE()
|
|
);
|
|
|
|
SET @CveModuloVentaTramite = CONVERT(int, SCOPE_IDENTITY());
|
|
END;
|
|
|
|
IF @CveModuloFraccionamientoDetalle IS NOT NULL
|
|
BEGIN
|
|
INSERT INTO dbo.Sis_RolesModulos
|
|
(
|
|
CveRol,
|
|
CveModulo,
|
|
PuedeVer,
|
|
PuedeCrear,
|
|
PuedeModificar,
|
|
PuedeEliminar,
|
|
PuedeImprimir,
|
|
PuedeExportar,
|
|
FechaCreacion
|
|
)
|
|
SELECT
|
|
RM.CveRol,
|
|
@CveModuloVentaTramite,
|
|
RM.PuedeVer,
|
|
RM.PuedeCrear,
|
|
RM.PuedeModificar,
|
|
RM.PuedeEliminar,
|
|
RM.PuedeImprimir,
|
|
RM.PuedeExportar,
|
|
GETDATE()
|
|
FROM dbo.Sis_RolesModulos AS RM
|
|
WHERE RM.CveModulo = @CveModuloFraccionamientoDetalle
|
|
AND NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.Sis_RolesModulos AS Existente
|
|
WHERE Existente.CveRol = RM.CveRol
|
|
AND Existente.CveModulo = @CveModuloVentaTramite
|
|
);
|
|
END;
|
|
GO
|