Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ALTER PROCEDURE [dbo].[spujc_conveniopaquete_detalle]
- @paquetes VARCHAR(250),@cnv_codigo VARCHAR(15), @cnv_nombre VARCHAR(250), @fecha_vigencia datetime
- AS
- BEGIN
- SET NOCOUNT ON;
- DECLARE @paq_codigo VARCHAR(20)
- CREATE TABLE #informe (
- nombre_paq VARCHAR(250),
- codigo VARCHAR(20),
- descripcion VARCHAR(250),
- cantidad NUMERIC(9),
- ppq_valor NUMERIC(9),
- vpa_afecto NUMERIC(9),
- vpa_exento NUMERIC(9),
- vpa_iva NUMERIC(9),
- vpa_total NUMERIC(9),
- )
- --SE ASOCIAN LOS DATOS PARA CADA PAQUETE SELECCIONADO
- while @paquetes <> ''
- BEGIN
- IF CHARINDEX(',',@paquetes) > 0
- SET @paq_codigo = LEFT(@paquetes,CHARINDEX(',',@paquetes) - 1)
- ELSE
- SET @paq_codigo = @paquetes
- IF (EXISTS (SELECT paq_codigo FROM prestacion_paquete WHERE paq_codigo = @paq_codigo))
- OR (EXISTS (SELECT paq_codigo FROM producto_paquete WHERE paq_codigo = @paq_codigo))
- BEGIN
- --Prestaciones
- INSERT INTO #informe (nombre_paq,codigo, descripcion, cantidad, ppq_valor, vpa_afecto, vpa_exento, vpa_iva, vpa_total)
- SELECT DISTINCT
- COALESCE(PC.PAQ_CODIGO, '') + ' - ' + COALESCE(PC.PAQ_DESCRIP, '') AS nombre_paq,
- CASE
- WHEN (PP.PPQ_CANTIDAD IS NULL AND PP.PPQ_VALOR IS NULL) THEN NULL
- ELSE COALESCE(PR.PRS_CODIGO, '') + ' - ' + COALESCE(PP.IAD_CODIGO, '')
- END AS codigo,
- CASE
- WHEN (PP.PPQ_CANTIDAD IS NULL AND PP.PPQ_VALOR IS NULL) THEN NULL
- ELSE (isnull(PR.PRS_DESCRIP,' ')+'-'+isnull(IA.IAD_DESCRIP, ' '))
- END AS descripcion,
- PP.PPQ_CANTIDAD AS cantidad,
- PP.PPQ_VALOR AS ppq_valor,
- VP.VPA_AFECTO AS vpa_afecto,
- VP.VPA_EXENTO AS vpa_exento,
- VP.VPA_IVA AS vpa_iva,
- VP.VPA_TOTAL AS vpa_total
- FROM PAQUETES_CONVENIO AS PC (NOLOCK)
- LEFT JOIN PRESTACION_PAQUETE AS PP (NOLOCK) ON PP.PAQ_CODIGO = PC.PAQ_CODIGO
- LEFT JOIN PRESTACION AS PR (NOLOCK)ON PR.PRS_CORREL = PP.PRS_CORREL
- LEFT JOIN ITEM_ADICIONAL AS IA (nolock) ON IA.IAD_CODIGO=PP.IAD_CODIGO
- LEFT JOIN VALOR_PAQUETE AS VP (NOLOCK) ON VP.PAQ_CODIGO = PC.PAQ_CODIGO
- WHERE PP.PAQ_CODIGO = @paq_codigo AND ((PP.PPQ_FINVIG >= @fecha_vigencia OR PP.PPQ_FINVIG IS NULL)OR @fecha_vigencia IS NULL)
- --Productos
- INSERT INTO #informe (nombre_paq,codigo, descripcion, cantidad, ppq_valor, vpa_afecto, vpa_exento, vpa_iva, vpa_total)
- SELECT DISTINCT
- COALESCE(PC.PAQ_CODIGO, '') + ' - ' + COALESCE(PC.PAQ_DESCRIP, '') AS nombre_paq,
- PRO.PRO_CODIGO AS codigo,
- PRO.PRO_NOMBRE AS descripcion,
- PROP.PPA_CANTIDAD AS cantidad,
- NULL AS ppq_valor,
- VP.VPA_AFECTO AS vpa_afecto,
- VP.VPA_EXENTO AS vpa_exento,
- VP.VPA_IVA AS vpa_iva,
- VP.VPA_TOTAL AS vpa_total
- FROM PAQUETES_CONVENIO AS PC(NOLOCK)
- LEFT JOIN PRODUCTO_PAQUETE AS PROP (NOLOCK) ON PROP.PAQ_CODIGO = PC.PAQ_CODIGO
- LEFT JOIN PRODUCTO AS PRO (NOLOCK)ON PRO.PRO_CORREL = PROP.PRO_CORREL
- LEFT JOIN VALOR_PAQUETE AS VP (NOLOCK) ON VP.PAQ_CODIGO = PC.PAQ_CODIGO
- WHERE PROP.PAQ_CODIGO = @paq_codigo AND ((PROP.PPA_FINVIG >= @fecha_vigencia OR PROP.PPA_FINVIG IS NULL) OR @fecha_vigencia IS NULL)
- END
- --Paquete no tiene prestaciones ni servicios, pero rescata vp.
- ELSE
- BEGIN
- INSERT INTO #informe (nombre_paq, codigo, descripcion, cantidad, ppq_valor, vpa_afecto, vpa_exento, vpa_iva, vpa_total)
- SELECT DISTINCT
- COALESCE(PC.PAQ_CODIGO, '') + ' - ' + COALESCE(PC.PAQ_DESCRIP, '') AS nombre_paq,
- NULL AS codigo,
- NULL AS descripcion,
- NULL AS cantidad,
- NULL AS ppq_valor,
- VP.VPA_AFECTO AS vpa_afecto,
- VP.VPA_EXENTO AS vpa_exento,
- VP.VPA_IVA AS vpa_iva,
- VP.VPA_TOTAL AS vpa_total
- FROM PAQUETES_CONVENIO AS PC(NOLOCK)
- LEFT JOIN VALOR_PAQUETE AS VP (NOLOCK) ON VP.PAQ_CODIGO = PC.PAQ_CODIGO
- WHERE PC.PAQ_CODIGO = @paq_codigo
- END
- --cont. cicl.
- IF CHARINDEX(',',@paquetes) = 0
- SET @paquetes = ''
- ELSE
- SET @paquetes = RIGHT(@paquetes,LEN(@paquetes) - CHARINDEX(',',@paquetes))
- END
- --SE MUESTRAN LOS RESULTADOS
- SELECT DISTINCT * FROM #informe ORDER BY nombre_paq
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement