Files
Plataforma-de-desarrolladores/PA_Vta_FraccionamientoPagoPendienteList_Actualizar_20260901.sql
Jorge Luis caudillo esparza c4f958e688 --
2026-09-02 01:08:02 -07:00

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