SET QUOTED_IDENTIFIER OFF
GO
IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'[dbo].[sp_fco_upd_reportes_par]') 
AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
   DROP PROCEDURE dbo.sp_fco_upd_reportes_par
GO
CREATE PROCEDURE dbo.sp_fco_upd_reportes_par
( @pti_cod_rep tinyint,
  @pnu_secuencia tinyint = NULL,
  @pnu_orden tinyint,
  @pvc_tit_campo varchar(40),
  @pnu_tipo_campo tinyint
)
AS
/********************************************************************/
/*** Reportes e Interfases de Data Tecnologia                     ***/
/*** Descripcion: crea registros en las tablas fco_reportes_par   ***/
/*** Autor:	Diana Cecilia Rios Peinado                            ***/
/*** Fecha:	Mayo 14 de 2005                                      ***/
/********************************************************************/
/*** Pasado a SQL, Diana C. Rios, Septiembre 25/2005							***/
DECLARE
  @vnu_secuencia tinyint
BEGIN

IF ISNULL(@pnu_secuencia,0) = 0 -- es un registro nuevo
BEGIN--1
		SELECT @vnu_secuencia = MAX(secuencia)
		FROM fco_reportes_par
		WHERE cod_rep = @pti_cod_rep;

		SET @vnu_secuencia = ISNULL(@vnu_secuencia,0) + 1;

    INSERT INTO fco_reportes_par (cod_rep, secuencia, orden, tit_campo, tipo_campo)
    VALUES (@pti_cod_rep, @vnu_secuencia, @pnu_orden, @pvc_tit_campo, @pnu_tipo_campo);
END--1
ELSE
BEGIN--2
     --revisando que el orden no exista ya en otra secuencia
     IF NOT EXISTS(SELECT 1 FROM fco_reportes_par
					        WHERE cod_rep = @pti_cod_rep
					        AND secuencia <> @pnu_secuencia
					        AND orden = @pnu_orden)
         UPDATE fco_reportes_par
         SET orden = @pnu_orden,
         tit_campo = @pvc_tit_campo,
         tipo_campo = @pnu_tipo_campo
         WHERE cod_rep = @pti_cod_rep
         AND secuencia = @pnu_secuencia
     ELSE
		 BEGIN
				RAISERROR('El valor del orden que digito ya existe en otro registro', 16, 1)
        RETURN
     END
END --2

END
GO
GRANT EXECUTE ON sp_fco_upd_reportes_par TO Public