dbo.LN_tipo_doc_campos_

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

11
Name Data Type Length Description
@accion varchar 10
@p_tipo_doc int 4
@p_seccion int 4
@p_campo int 4
@p_celdas tinyint 1
@p_nueva_linea tinyint 1
@p_visible tinyint 1
@p_campo_id varchar 50
@p_obligatorio tinyint 1
@p_orden int 4
@p_country_code varchar 10

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
/*

exec ln_tipo_doc_campos_ 'insert',1,4,null
exec ln_tipo_doc_campos_ 'insert',1,3,null
exec ln_tipo_doc_campos_ 'insert',1,1,null
exec ln_tipo_doc_campos_ 'insert',1,5,null
exec ln_tipo_doc_campos_ 'insert',1,6,null

exec ln_tipo_doc_campos_ 'delete',1,2,null

exec ln_tipo_doc_campos_ 'search',1005,null,null,null,null,null,null,null

exec ln_tipo_doc_campos_ 'DOWN',1,5,null


select * from ln_tipo_doc_campos
truncate table ln_tipo_doc_campos

*/

-- Description: <Description,,>
-- =============================================
CREATE OR ALTER PROCEDURE dbo.LN_tipo_doc_campos_ 
 -- Add the parameters for the stored procedure here
 @accion          varchar(10),
 @p_tipo_doc         int,
 @p_seccion         int,
 @p_campo         int,
 @p_celdas         tinyint,
 @p_nueva_linea        tinyint,
 @p_visible         tinyint,
 @p_campo_id         varchar(50),
 @p_obligatorio        tinyint,
 @p_orden         int,
    @p_country_code                             varchar(10)=null

AS
BEGIN
 -- SET NOCOUNT ON added to prevent extra result sets from
 -- interfering with SELECT statements.
 SET NOCOUNT ON;

    -- Insert statements for procedure here

 DECLARE @ord int
 DECLARE @fld int
 DECLARE @cant int
 DECLARE @sec_ant int

 IF (@accion = 'INSERT') BEGIN

  IF NOT EXISTS (SELECT tipo_doc, campo
      from LN_tipo_doc_campos
      where tipo_doc = @p_tipo_doc
      and seccion = @p_seccion
      and campo = @p_campo) begin
   
   select @ord = ISNULL(max(orden),0)+1
   from LN_tipo_doc_campos
   where tipo_doc = @p_tipo_doc
   and seccion = @p_seccion

   INSERT INTO LN_tipo_doc_campos (tipo_doc, campo, seccion, celdas, nueva_linea, visible, campo_id, obligatorio, orden,country_code)
   values (@p_tipo_doc, @p_campo, @p_seccion, @p_celdas,@p_nueva_linea,@p_visible,@p_campo_id,@p_obligatorio, @ord,@p_country_code)

/*
SELECT tipo_doc, @p_campo AS campo, @p_seccion as seccion, @p_celdas as celdas,
@p_nueva_linea as nueva_linea, @p_visible as visible, @p_campo_id as campo_id, @p_obligatorio, @ord AS orden,@p_country_code As country_code
from LN_tipos_doc
where tipo_doc = @p_tipo_doc
*/

  end

 END ELSE

  IF (@accion = 'UPDATE') BEGIN

   if exists (select tipo_doc, seccion, campo
      from LN_tipo_doc_campos
      where tipo_doc = @p_tipo_doc
      and seccion = @p_seccion
      and campo = @p_campo) begin

    /* misma seccion */

    UPDATE LN_tipo_doc_campos SET 
     celdas = @p_celdas,
     nueva_linea = @p_nueva_linea,
     visible = @p_visible,
     campo_id = @p_campo_id,
     obligatorio = @p_obligatorio,
                    country_code = @p_country_code

    where tipo_doc = @p_tipo_doc
    and seccion = @p_seccion
    and campo = @p_campo

   end else begin

    /* cambia de sección : la muevo al final si no existe */

    if not exists (select tipo_doc, seccion, campo
        from LN_tipo_doc_campos
        where tipo_doc = @p_tipo_doc
        and seccion = @p_seccion
        and campo = @p_campo)

     exec LN_tipo_doc_campos_ 'insert', @p_tipo_doc, @p_seccion, @p_campo, @p_celdas, @p_nueva_linea, @p_visible, @p_campo_id, @p_obligatorio, NULL

   end


  END ELSE

   IF (@accion = 'DELETE') BEGIN

    SELECT @ord = orden, @sec_ant = seccion
    from LN_tipo_doc_campos
    where tipo_doc = @p_tipo_doc
    and seccion = @p_seccion
    and campo = @p_campo

    DELETE LN_tipo_doc_campos
    where tipo_doc = @p_tipo_doc
    and seccion = @p_seccion
    and campo = @p_campo
    
    UPDATE LN_tipo_doc_campos SET orden = orden-1
    where tipo_doc = @p_tipo_doc
    and seccion = @p_seccion
    and orden > @ord

   END ELSE

    IF (@accion = 'SELECT') BEGIN

     SELECT LN_tipo_doc_campos.tipo_doc, LN_tipo_doc_campos.campo, 
       LN_tipo_doc_campos.seccion, LN_tipo_doc_campos.celdas,
       LN_tipo_doc_campos.nueva_linea, LN_tipo_doc_campos.visible,
       LN_tipo_doc_campos.campo_id, LN_tipo_doc_campos.obligatorio,
       LN_tipo_doc_campos.orden, 
       LN_tipos_doc.nombre_tipo_doc, 
       LN_campos.nombre_campo, LN_campos.etiqueta,
       LN_campos.tipo_campo, 
       CASE 
        WHEN LN_campos.tipo_campo = 'N' THEN 'Numérico'
        WHEN LN_campos.tipo_campo = 'T' THEN 'Texto'
        WHEN LN_campos.tipo_campo = 'D' THEN 'Fecha'
        WHEN LN_campos.tipo_campo = 'B' THEN 'SI/NO'
        WHEN LN_campos.tipo_campo = 'S' THEN 'Sel. opciones'
        WHEN LN_campos.tipo_campo = 'M' THEN 'Texto largo'
        WHEN LN_campos.tipo_campo = 'R' THEN 'Radio'
        WHEN LN_campos.tipo_campo = 'C' THEN 'Checkbox'
        WHEN LN_campos.tipo_campo = 'F' THEN 'Archivo'
                                WHEN LN_campos.tipo_campo = 'W' THEN 'País'
                                WHEN LN_campos.tipo_campo = 'X' THEN 'Provincia'
                                WHEN LN_campos.tipo_campo = 'Y' THEN 'Localidad'
                                WHEN LN_campos.tipo_campo = 'Z' THEN 'Nacionalidad'
       END AS nombre_tipo_campo,       
       LN_campos.longitud, LN_campos.decimales,
       LN_campos.opciones,
       LN_tipo_doc_secciones.titulo_seccion,ln_campos.tipo_attach,ln_campos.tipo_campo_padre,LN_tipo_doc_campos.country_code

     FROM LN_tipo_doc_campos INNER JOIN LN_tipoS_doc ON 
       LN_tipo_doc_campos.tipo_doc = LN_tipoS_doc.tipo_doc
     INNER JOIN LN_campos ON LN_tipo_doc_campos.campo = LN_campos.campo
     LEFT OUTER JOIN LN_tipo_doc_secciones 
      ON (LN_tipo_doc_campos.seccion = LN_tipo_doc_secciones.seccion
       AND LN_tipo_doc_campos.tipo_doc = LN_tipo_doc_secciones.tipo_doc)
     WHERE LN_tipo_doc_campos.tipo_doc = @p_tipo_doc
     AND LN_tipo_doc_campos.seccion = @p_seccion
     AND LN_tipo_doc_campos.campo = @p_campo

    END ELSE

     IF (@accion = 'SEARCH') BEGIN

      if (@p_visible is not null)

       SELECT LN_tipo_doc_campos.tipo_doc, LN_tipo_doc_campos.campo, 
         LN_tipo_doc_campos.seccion, LN_tipo_doc_campos.celdas,
         LN_tipo_doc_campos.nueva_linea, LN_tipo_doc_campos.visible,
         LN_tipo_doc_campos.campo_id, LN_tipo_doc_campos.obligatorio,
         LN_tipo_doc_campos.orden, 
         LN_tipos_doc.nombre_tipo_doc, 
         LN_campos.nombre_campo, LN_campos.etiqueta,
         LN_campos.tipo_campo, 
         CASE 
          WHEN LN_campos.tipo_campo = 'N' THEN 'Numérico'
          WHEN LN_campos.tipo_campo = 'T' THEN 'Texto'
          WHEN LN_campos.tipo_campo = 'D' THEN 'Fecha'
          WHEN LN_campos.tipo_campo = 'B' THEN 'SI/NO'
          WHEN LN_campos.tipo_campo = 'S' THEN 'Sel. opciones'
          WHEN LN_campos.tipo_campo = 'M' THEN 'Texto largo'
          WHEN LN_campos.tipo_campo = 'R' THEN 'Radio'
          WHEN LN_campos.tipo_campo = 'C' THEN 'Checkbox'
          WHEN LN_campos.tipo_campo = 'F' THEN 'Archivo'
                                        WHEN LN_campos.tipo_campo = 'W' THEN 'País'
                                        WHEN LN_campos.tipo_campo = 'X' THEN 'Provincia'
                                        WHEN LN_campos.tipo_campo = 'Y' THEN 'Localidad'
                                        WHEN LN_campos.tipo_campo = 'Z' THEN 'Nacionalidad'
         END AS nombre_tipo_campo,
         LN_campos.longitud, LN_campos.decimales,
         LN_campos.opciones,
         LN_tipo_doc_secciones.titulo_seccion,ln_campos.tipo_attach,ln_campos.tipo_campo_padre,LN_tipo_doc_campos.country_code

       FROM LN_tipo_doc_campos INNER JOIN LN_tipoS_doc ON 
         LN_tipo_doc_campos.tipo_doc = LN_tipoS_doc.tipo_doc
       INNER JOIN LN_campos ON LN_tipo_doc_campos.campo = LN_campos.campo
       LEFT OUTER JOIN LN_tipo_doc_secciones 
        ON (LN_tipo_doc_campos.seccion = LN_tipo_doc_secciones.seccion
         AND LN_tipo_doc_campos.tipo_doc = LN_tipo_doc_secciones.tipo_doc)
       WHERE LN_tipo_doc_campos.tipo_doc = @p_tipo_doc
       AND LN_tipo_doc_campos.visible = @p_visible
       ORDER BY LN_tipo_doc_secciones.orden_seccion, LN_tipo_doc_campos.orden

      else

       SELECT LN_tipo_doc_campos.tipo_doc, LN_tipo_doc_campos.campo, 
         LN_tipo_doc_campos.seccion, LN_tipo_doc_campos.celdas,
         LN_tipo_doc_campos.nueva_linea, LN_tipo_doc_campos.visible,
         LN_tipo_doc_campos.campo_id, LN_tipo_doc_campos.obligatorio,
         LN_tipo_doc_campos.orden, 
         LN_tipos_doc.nombre_tipo_doc, 
         LN_campos.nombre_campo, LN_campos.etiqueta,
         LN_campos.tipo_campo, 
         CASE 
          WHEN LN_campos.tipo_campo = 'N' THEN 'Numérico'
          WHEN LN_campos.tipo_campo = 'T' THEN 'Texto'
          WHEN LN_campos.tipo_campo = 'D' THEN 'Fecha'
          WHEN LN_campos.tipo_campo = 'B' THEN 'SI/NO'
          WHEN LN_campos.tipo_campo = 'S' THEN 'Sel. opciones'
          WHEN LN_campos.tipo_campo = 'M' THEN 'Texto largo'
          WHEN LN_campos.tipo_campo = 'R' THEN 'Radio'
          WHEN LN_campos.tipo_campo = 'C' THEN 'Checkbox'
          WHEN LN_campos.tipo_campo = 'F' THEN 'Archivo'
                                        WHEN LN_campos.tipo_campo = 'W' THEN 'País'
                                        WHEN LN_campos.tipo_campo = 'X' THEN 'Provincia'
                                        WHEN LN_campos.tipo_campo = 'Y' THEN 'Localidad'
                                        WHEN LN_campos.tipo_campo = 'Z' THEN 'Nacionalidad'
         END AS nombre_tipo_campo,         
         LN_campos.longitud, LN_campos.decimales,
         LN_campos.opciones,
         LN_tipo_doc_secciones.titulo_seccion,ln_campos.tipo_attach,ln_campos.tipo_campo_padre,LN_tipo_doc_campos.country_code

       FROM LN_tipo_doc_campos INNER JOIN LN_tipoS_doc ON 
         LN_tipo_doc_campos.tipo_doc = LN_tipoS_doc.tipo_doc
       INNER JOIN LN_campos ON LN_tipo_doc_campos.campo = LN_campos.campo
       LEFT OUTER JOIN LN_tipo_doc_secciones 
        ON (LN_tipo_doc_campos.seccion = LN_tipo_doc_secciones.seccion
         AND LN_tipo_doc_campos.tipo_doc = LN_tipo_doc_secciones.tipo_doc)
       WHERE LN_tipo_doc_campos.tipo_doc = @p_tipo_doc
       ORDER BY LN_tipo_doc_secciones.orden_seccion, LN_tipo_doc_campos.orden

     END ELSE

      IF (@accion = 'UP') BEGIN

       SELECT @ord = orden, @sec_ant = seccion
       from LN_tipo_doc_campos
       where tipo_doc = @p_tipo_doc
       and seccion = @p_seccion
       and campo = @p_campo

       IF (@ord > 1) BEGIN

        SELECT @fld = campo
        from LN_tipo_doc_campos
        where tipo_doc = @p_tipo_doc
        and seccion = @p_seccion
        and orden = (@ord-1)

        UPDATE LN_tipo_doc_campos SET
         orden = @ord - 1
        where tipo_doc = @p_tipo_doc
        and seccion = @p_seccion
        and campo = @p_campo

        UPDATE LN_tipo_doc_campos SET
         orden = @ord
        where tipo_doc = @p_tipo_doc
        and seccion = @p_seccion
        and campo = @fld

       END

      END ELSE

       IF (@accion = 'DOWN') BEGIN

        SELECT @ord = orden
        from LN_tipo_doc_campos
        where tipo_doc = @p_tipo_doc
        and seccion = @p_seccion
        and campo = @p_campo

        SELECT @cant = MAX(orden)
        from LN_tipo_doc_campos
        where tipo_doc = @p_tipo_doc
        and seccion = @p_seccion

        IF (@ord < @cant) BEGIN

         SELECT @fld = campo
         from LN_tipo_doc_campos
         where tipo_doc = @p_tipo_doc
         and seccion = @p_seccion
         and orden = (@ord+1)

         UPDATE LN_tipo_doc_campos SET
          orden = @ord + 1
         where tipo_doc = @p_tipo_doc
         and seccion = @p_seccion
         and campo = @p_campo

         UPDATE LN_tipo_doc_campos SET
          orden = @ord
         where tipo_doc = @p_tipo_doc
         and seccion = @p_seccion
         and campo = @fld

        END

       END
 
END

GO

Used By

1