186 lines
5.9 KiB
Transact-SQL
186 lines
5.9 KiB
Transact-SQL
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
|
|
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
|
|
) * D.Cantidad
|
|
) AS SubTotal,
|
|
SUM(
|
|
ROUND(
|
|
CONVERT(decimal(18, 4), Costo.Importe)
|
|
* D.Cantidad
|
|
* ISNULL(ImpuestoIVA.TasaOCuota, 0),
|
|
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.CveCostoTramite,
|
|
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
|
|
OUTER APPLY
|
|
(
|
|
SELECT TOP (1) CTI.TasaOCuota
|
|
FROM dbo.Tra_CostosTramiteImpuestos AS CTI
|
|
WHERE CTI.CveCostoTramite = Costo.CveCostoTramite
|
|
AND CTI.EsRetencion = 0
|
|
AND CTI.Impuesto = '002'
|
|
AND CTI.TipoFactor = 'Tasa'
|
|
) AS ImpuestoIVA
|
|
WHERE S.CveFraccionamiento = @CveFraccionamiento
|
|
GROUP BY
|
|
S.CveSolicitud,
|
|
P.CveTramitePago
|
|
)
|
|
SELECT
|
|
S.CveSolicitud,
|
|
P.CveTramitePago,
|
|
SP.CveVenta,
|
|
CONVERT(
|
|
bit,
|
|
CASE
|
|
WHEN SP.CveSolicitudPago IS NOT NULL
|
|
AND V.CveVenta IS NOT NULL THEN 1
|
|
ELSE 0
|
|
END
|
|
) AS VentaGenerada,
|
|
S.Folio AS FolioSolicitud,
|
|
E.Etapa,
|
|
TT.TipoTramite,
|
|
P.Nombre AS NombrePago,
|
|
CONVERT(int, C.NumeroConceptos) AS NumeroConceptos,
|
|
CONVERT(
|
|
decimal(18, 2),
|
|
CASE
|
|
WHEN V.CveVenta IS NULL THEN C.SubTotal
|
|
ELSE V.SubTotal
|
|
END
|
|
) AS SubTotal,
|
|
CONVERT(
|
|
decimal(18, 2),
|
|
CASE
|
|
WHEN V.CveVenta IS NULL THEN C.IVA
|
|
ELSE V.IVA
|
|
END
|
|
) AS IVA,
|
|
CONVERT(
|
|
decimal(18, 2),
|
|
CASE
|
|
WHEN V.CveVenta IS NULL THEN C.SubTotal + C.IVA
|
|
ELSE V.Total
|
|
END
|
|
) 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
|
|
LEFT JOIN dbo.Tra_SolicitudesPagos AS SP
|
|
ON SP.CveSolicitud = S.CveSolicitud
|
|
AND SP.CveTramitePago = P.CveTramitePago
|
|
LEFT JOIN dbo.Ventas AS V
|
|
ON V.CveVenta = SP.CveVenta
|
|
WHERE NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.Vta_Pagos AS VP
|
|
WHERE VP.CveSolicitud = S.CveSolicitud
|
|
AND VP.CveTramitePago = P.CveTramitePago
|
|
AND VP.CveVenta = SP.CveVenta
|
|
AND VP.EsActivo = 1
|
|
)
|
|
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
|