Advertisement
jotaced

spujc_conveniopaquete_detalle

Aug 7th, 2013
267
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 4.76 KB | None | 0 0
  1.  
  2. ALTER PROCEDURE [dbo].[spujc_conveniopaquete_detalle]
  3. @paquetes VARCHAR(250),@cnv_codigo VARCHAR(15), @cnv_nombre VARCHAR(250), @fecha_vigencia datetime
  4. AS
  5. BEGIN
  6.        
  7.         SET NOCOUNT ON;
  8.  
  9.         DECLARE @paq_codigo     VARCHAR(20)
  10.      
  11.         CREATE TABLE #informe (
  12.         nombre_paq      VARCHAR(250),
  13.         codigo          VARCHAR(20),
  14.         descripcion     VARCHAR(250),
  15.         cantidad        NUMERIC(9),
  16.         ppq_valor       NUMERIC(9),
  17.         vpa_afecto      NUMERIC(9),
  18.         vpa_exento      NUMERIC(9),
  19.         vpa_iva         NUMERIC(9),
  20.         vpa_total       NUMERIC(9),  
  21.         )
  22.    
  23.  
  24.         --SE ASOCIAN LOS DATOS PARA CADA PAQUETE SELECCIONADO
  25.         while @paquetes <> ''    
  26.         BEGIN
  27.        
  28.                 IF CHARINDEX(',',@paquetes) > 0
  29.                         SET @paq_codigo = LEFT(@paquetes,CHARINDEX(',',@paquetes) - 1)
  30.                 ELSE
  31.                         SET @paq_codigo = @paquetes
  32.                
  33.                 IF (EXISTS (SELECT paq_codigo FROM prestacion_paquete WHERE paq_codigo = @paq_codigo))
  34.                     OR (EXISTS (SELECT paq_codigo FROM producto_paquete WHERE paq_codigo = @paq_codigo))
  35.                 BEGIN                      
  36.                   --Prestaciones                              
  37.                     INSERT INTO #informe (nombre_paq,codigo, descripcion, cantidad, ppq_valor, vpa_afecto, vpa_exento, vpa_iva, vpa_total)
  38.                     SELECT  DISTINCT
  39.                     COALESCE(PC.PAQ_CODIGO, '') + ' - ' + COALESCE(PC.PAQ_DESCRIP, '') AS nombre_paq,
  40.                             CASE   
  41.                                 WHEN (PP.PPQ_CANTIDAD IS NULL AND PP.PPQ_VALOR IS NULL) THEN NULL
  42.                                 ELSE COALESCE(PR.PRS_CODIGO, '') + ' - ' + COALESCE(PP.IAD_CODIGO, '')
  43.                             END AS codigo,
  44.                             CASE
  45.                                 WHEN (PP.PPQ_CANTIDAD IS NULL AND PP.PPQ_VALOR IS NULL) THEN NULL
  46.                                 ELSE (isnull(PR.PRS_DESCRIP,' ')+'-'+isnull(IA.IAD_DESCRIP, ' '))
  47.                             END AS descripcion,
  48.                             PP.PPQ_CANTIDAD AS cantidad,
  49.                             PP.PPQ_VALOR AS ppq_valor,
  50.                             VP.VPA_AFECTO AS vpa_afecto,
  51.                             VP.VPA_EXENTO AS vpa_exento,
  52.                             VP.VPA_IVA AS vpa_iva,
  53.                             VP.VPA_TOTAL AS vpa_total
  54.                     FROM    PAQUETES_CONVENIO AS PC (NOLOCK)                          
  55.                     LEFT JOIN PRESTACION_PAQUETE AS PP (NOLOCK) ON PP.PAQ_CODIGO = PC.PAQ_CODIGO
  56.                     LEFT JOIN PRESTACION AS PR (NOLOCK)ON PR.PRS_CORREL = PP.PRS_CORREL
  57.                     LEFT JOIN ITEM_ADICIONAL AS IA (nolock)  ON IA.IAD_CODIGO=PP.IAD_CODIGO
  58.                     LEFT JOIN VALOR_PAQUETE AS VP (NOLOCK) ON VP.PAQ_CODIGO = PC.PAQ_CODIGO                                    
  59.                     WHERE   PP.PAQ_CODIGO = @paq_codigo AND ((PP.PPQ_FINVIG >= @fecha_vigencia OR PP.PPQ_FINVIG IS NULL)OR @fecha_vigencia IS NULL)
  60.                    
  61.                     --Productos
  62.                     INSERT INTO #informe (nombre_paq,codigo, descripcion, cantidad, ppq_valor, vpa_afecto, vpa_exento, vpa_iva, vpa_total)
  63.                     SELECT  DISTINCT
  64.                             COALESCE(PC.PAQ_CODIGO, '') + ' - ' + COALESCE(PC.PAQ_DESCRIP, '') AS nombre_paq,
  65.                             PRO.PRO_CODIGO AS codigo,
  66.                             PRO.PRO_NOMBRE AS descripcion,
  67.                             PROP.PPA_CANTIDAD AS cantidad,
  68.                             NULL AS ppq_valor,
  69.                             VP.VPA_AFECTO AS vpa_afecto,
  70.                             VP.VPA_EXENTO AS vpa_exento,
  71.                             VP.VPA_IVA AS vpa_iva,
  72.                             VP.VPA_TOTAL AS vpa_total
  73.                     FROM    PAQUETES_CONVENIO AS PC(NOLOCK)                          
  74.                     LEFT JOIN PRODUCTO_PAQUETE AS PROP (NOLOCK) ON PROP.PAQ_CODIGO = PC.PAQ_CODIGO
  75.                     LEFT JOIN PRODUCTO AS PRO (NOLOCK)ON PRO.PRO_CORREL = PROP.PRO_CORREL  
  76.                     LEFT JOIN VALOR_PAQUETE AS VP (NOLOCK) ON VP.PAQ_CODIGO = PC.PAQ_CODIGO                                    
  77.                     WHERE   PROP.PAQ_CODIGO = @paq_codigo AND ((PROP.PPA_FINVIG >= @fecha_vigencia OR PROP.PPA_FINVIG IS NULL) OR @fecha_vigencia IS NULL)
  78.                 END
  79.                
  80.                 --Paquete no tiene prestaciones ni servicios, pero rescata vp.
  81.                 ELSE
  82.                 BEGIN
  83.                     INSERT INTO #informe (nombre_paq, codigo, descripcion, cantidad, ppq_valor, vpa_afecto, vpa_exento, vpa_iva, vpa_total)
  84.                     SELECT  DISTINCT
  85.                             COALESCE(PC.PAQ_CODIGO, '') + ' - ' + COALESCE(PC.PAQ_DESCRIP, '') AS nombre_paq,
  86.                             NULL AS codigo,
  87.                             NULL AS descripcion,
  88.                             NULL AS cantidad,
  89.                             NULL AS ppq_valor,
  90.                             VP.VPA_AFECTO AS vpa_afecto,
  91.                             VP.VPA_EXENTO AS vpa_exento,
  92.                             VP.VPA_IVA AS vpa_iva,
  93.                             VP.VPA_TOTAL AS vpa_total
  94.                     FROM    PAQUETES_CONVENIO AS PC(NOLOCK)                          
  95.                     LEFT JOIN VALOR_PAQUETE AS VP (NOLOCK) ON VP.PAQ_CODIGO = PC.PAQ_CODIGO                                    
  96.                     WHERE   PC.PAQ_CODIGO = @paq_codigo
  97.                 END
  98.                
  99.                --cont. cicl.
  100.                 IF CHARINDEX(',',@paquetes) = 0
  101.                         SET @paquetes = ''
  102.                 ELSE
  103.                         SET @paquetes = RIGHT(@paquetes,LEN(@paquetes) - CHARINDEX(',',@paquetes))
  104.         END
  105.  
  106.  
  107.         --SE MUESTRAN LOS RESULTADOS
  108.         SELECT DISTINCT * FROM #informe  ORDER BY nombre_paq
  109.  
  110.  
  111. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement