dbo.LN_doc_campos_

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

10
Name Data Type Length Description
@accion varchar 10
@p_doc_id int 4
@p_seccion int 4
@p_campo int 4
@p_valor_fecha datetime 8
@p_valor_texto varchar -1
@p_valor_numerico float 8
@p_fila tinyint 1
@p_col tinyint 1
@p_user_id int 4

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
/*
exec LN_doc_campos_ 'search', 333241, null, null, null, null, null, null, null, null
*/

CREATE OR ALTER PROCEDURE dbo.LN_doc_campos_
 -- Add the parameters for the stored procedure here
 @accion       varchar(10),
 @p_doc_id      int,
 @p_seccion      int,
 @p_campo      int,
 @p_valor_fecha     datetime,
 @p_valor_texto     varchar(max),
 @p_valor_numerico    float,
 @p_fila       tinyint,
 @p_col       tinyint,
 @p_user_id      int
 
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 @tipo_campo varchar(1)
 declare @filas tinyint
 declare @columnas tinyint
 declare @anual tinyint = 0

 IF (@accion = 'GENERATE') BEGIN

  IF (@p_doc_id > 0) BEGIN

   declare @tipo_doc int
   declare @seccion int
   declare @campo int
   declare @orden int

   declare Campos cursor for

   select LN_tipo_doc_campos.tipo_doc, LN_tipo_doc_campos.seccion, LN_tipo_doc_campos.campo, LN_tipo_doc_campos.orden,
     LN_campos.tipo_campo, LN_campos.filas, LN_campos.columnas, LN_campos.anual_vencida
   from LN_tipo_doc_campos 
   inner join LN_docs on LN_tipo_doc_campos.tipo_doc = LN_docs.tipo_doc
   inner join LN_campos on LN_tipo_doc_campos.campo = LN_campos.campo
   where LN_docs.doc_id = @p_doc_id
   order by LN_tipo_doc_campos.seccion, LN_tipo_doc_campos.orden

   open Campos

   fetch next from Campos into @tipo_doc, @seccion, @campo, @orden, @tipo_campo, @filas, @columnas, @anual

   while @@FETCH_STATUS = 0 begin
    
    if not exists (select LN_doc_campos.doc_id, LN_doc_campos.seccion, LN_doc_campos.campo
        from LN_doc_campos
        where doc_id = @p_doc_id
        and seccion = @seccion
        and campo = @campo) begin

     insert into LN_doc_campos 
     (doc_id, seccion, campo, created, created_by)
     values
     (@p_doc_id, @seccion, @campo, GETDATE(), @p_user_id)


     if (@tipo_campo = 'G') begin

      declare @ff smalldatetime

      DECLARE @x tinyint = 0
      DECLARE @y tinyint

      WHILE @x < @filas BEGIN

       SET @x = @x + 1
       SET @y = 0

       if (@anual = 1) begin
        
        set @ff = DATEFROMPARTS(Year(dateadd(year,-1,GETDATE())), @x, 1)
        
        INSERT INTO LN_doc_campos_col
         (doc_id, seccion, campo, fila, col, valor_fecha, created, created_by)
        VALUES
         (@p_doc_id, @seccion, @campo, @x, 0, @ff, GETDATE(), @p_user_id)
       end

       WHILE @y < @columnas BEGIN

        SET @y = @y + 1

        INSERT INTO LN_doc_campos_col
         (doc_id, seccion, campo, fila, col, created, created_by)
        VALUES
         (@p_doc_id, @seccion, @campo, @x, @y, GETDATE(), @p_user_id)

       END

      END

     end

    end

    fetch next from Campos into @tipo_doc, @seccion, @campo, @orden, @tipo_campo, @filas, @columnas, @anual
   end

   close Campos
   deallocate Campos

  END

 END ELSE

  IF (@accion = 'SELECT') BEGIN

   SELECT @tipo_campo = tipo_campo 
   FROM LN_campos
   WHERE campo = @p_campo

   IF (@tipo_campo <> 'G') BEGIN
  
    SELECT LN_doc_campos.doc_id, LN_doc_campos.seccion, LN_doc_campos.campo, LN_doc_campos.valor_fecha,
      LN_doc_campos.valor_texto, LN_doc_campos.valor_numerico,
      CONVERT(VARCHAR, LN_doc_campos.valor_fecha, 103) AS valor_fecha_str,
      CONVERT(DATE, LN_doc_campos.created, 103) as created, LN_doc_campos.created_by,
      users1.first_name + ' ' + users1.last_name as created_by_user,
      CONVERT(DATE, LN_doc_campos.modified, 103) as modified, LN_doc_campos.modified_by,
      users2.first_name + ' ' + users2.last_name as modified_by_user,
      LN_tipos_doc.nombre_tipo_doc, LN_tipos_doc.modalidad, LN_tipos_doc.tipo_vigencia, 
      LN_tipos_doc.vigencia, LN_tipos_doc.dia_vigencia, LN_tipos_doc.mes_vigencia, LN_tipos_doc.es_balance,
      LN_campos.nombre_campo, LN_campos.etiqueta, LN_campos.tipo_campo, LN_campos.longitud,
      LN_campos.decimales, LN_campos.validacion, LN_campos.opciones, LN_campos.anual_vencida,
      LN_campos.aplica_formula_dep_econ,
      CASE WHEN (LN_tipo_doc_secciones.titulo_seccion IS NOT NULL) THEN
       LN_tipo_doc_secciones.titulo_seccion
      ELSE '' END AS titulo_seccion,
      LN_tipo_doc_secciones.texto_bajada, LN_tipo_doc_secciones.texto_pie,
      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'
      END AS nombre_tipo_campo,

      IIF (LN_tipo_doc_campos.obligatorio > 0, LN_campos.etiqueta + ' <span class="text-danger">*</span>', LN_campos.etiqueta) AS etiqueta_form,

      LN_tipo_doc_campos.seccion, LN_tipo_doc_campos.celdas, LN_tipo_doc_campos.nueva_linea,
      LN_tipo_doc_campos.orden, LN_tipo_doc_campos.visible, LN_tipo_doc_campos.campo_id,
      LN_tipo_doc_campos.obligatorio, LN_tipo_doc_campos.country_code AS pais,
      padrones.nombre_persona, padrones.numero, padrones.id_padron, identificadores.abreviatura,
      identificadores.identificador, identificadores.country_code, country.country_name,
      LN_contrapartes.cliente, LN_contrapartes.nombre_contacto, LN_contrapartes.email_contacto,
      LN_contrapartes.telefono_contacto, LN_contrapartes.activo,
      clientes.nombre_cliente, clientes.cli_codigo, 
      LN_docs.estado_doc, LN_docs.ingresado, LN_docs.rechazado, LN_docs.verificado_backend,
      LN_docs.verificado_cliente, LN_docs.texto_rechazo, LN_docs.gestion,
      LN_docs.vencimiento_carga, LN_docs.fecha_vigencia, LN_docs.doc_attach, LN_docs.doc_version,LN_campos.tipo_attach,ln_campos.tipo_campo_padre


    FROM LN_doc_campos
    INNER JOIN LN_campos ON LN_doc_campos.campo = LN_campos.campo
    INNER JOIN LN_docs ON LN_doc_campos.doc_id = LN_docs.doc_id
    INNER JOIN LN_tipos_doc ON LN_docs.tipo_doc = LN_tipos_doc.tipo_doc
    INNER JOIN LN_tipo_doc_campos ON (LN_tipos_doc.tipo_doc = LN_tipo_doc_campos.tipo_doc
             AND LN_doc_campos.campo = LN_tipo_doc_campos.campo)
    INNER JOIN LN_contrapartes ON LN_docs.contraparte = LN_contrapartes.contraparte
    INNER JOIN clientes ON LN_contrapartes.cliente = clientes.cliente
    INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
    INNER JOIN identificadores ON padrones.identificador = identificadores.identificador
    INNER JOIN country ON identificadores.country_code = country.country_code
    LEFT OUTER JOIN users users1 ON LN_doc_campos.created_by = users1.user_id
    LEFT OUTER JOIN users users2 ON LN_doc_campos.modified_by = users2.user_id
    LEFT OUTER JOIN LN_tipo_doc_secciones ON (LN_tipos_doc.tipo_doc = LN_tipo_doc_secciones.tipo_doc
               AND LN_doc_campos.seccion = LN_tipo_doc_secciones.seccion)

    WHERE LN_doc_campos.doc_id = @p_doc_id
    AND LN_doc_campos.seccion = @p_seccion
    AND LN_doc_campos.campo = @p_campo

   END ELSE BEGIN

    SELECT LN_doc_campos_col.doc_id, LN_doc_campos_col.seccion, LN_doc_campos_col.campo, 
      LN_doc_campos_col.valor_fecha, CONVERT(VARCHAR, LN_doc_campos_col.valor_fecha, 103) AS valor_fecha_str,
      LN_doc_campos_col.valor_texto, LN_doc_campos_col.valor_numerico,
      CONVERT(DATE, LN_doc_campos_col.created, 103) as created, LN_doc_campos_col.created_by,
      users1.first_name + ' ' + users1.last_name as created_by_user,
      CONVERT(DATE, LN_doc_campos_col.modified, 103) as modified, LN_doc_campos_col.modified_by,
      users2.first_name + ' ' + users2.last_name as modified_by_user,
      LN_tipos_doc.nombre_tipo_doc, LN_tipos_doc.modalidad, LN_tipos_doc.tipo_vigencia, 
      LN_tipos_doc.vigencia, LN_tipos_doc.dia_vigencia, LN_tipos_doc.mes_vigencia, LN_tipos_doc.es_balance,
      LN_campos.nombre_campo, LN_campos.etiqueta, LN_campos.tipo_campo, LN_campos.longitud,
      LN_campos.decimales, LN_campos.validacion, LN_campos.opciones, LN_campos.anual_vencida,
      LN_campos.aplica_formula_dep_econ,
      CASE WHEN (LN_tipo_doc_secciones.titulo_seccion IS NOT NULL) THEN
       LN_tipo_doc_secciones.titulo_seccion
      ELSE '' END AS titulo_seccion,
      LN_tipo_doc_secciones.texto_bajada, LN_tipo_doc_secciones.texto_pie,
      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'
      END AS nombre_tipo_campo,

      IIF (LN_tipo_doc_campos.obligatorio > 0, LN_campos.etiqueta + ' <span class="text-danger">*</span>', LN_campos.etiqueta) AS etiqueta_form,

      LN_tipo_doc_campos.seccion, LN_tipo_doc_campos.celdas, LN_tipo_doc_campos.nueva_linea,
      LN_tipo_doc_campos.orden, LN_tipo_doc_campos.visible, LN_tipo_doc_campos.campo_id,
      LN_tipo_doc_campos.obligatorio, LN_tipo_doc_campos.country_code AS pais,
      padrones.nombre_persona, padrones.numero, padrones.id_padron, identificadores.abreviatura,
      identificadores.identificador, identificadores.country_code, country.country_name,
      LN_contrapartes.cliente, LN_contrapartes.nombre_contacto, LN_contrapartes.email_contacto,
      LN_contrapartes.telefono_contacto, LN_contrapartes.activo,
      clientes.nombre_cliente, clientes.cli_codigo, 
      LN_docs.estado_doc, LN_docs.ingresado, LN_docs.rechazado, LN_docs.verificado_backend,
      LN_docs.verificado_cliente, LN_docs.texto_rechazo, LN_docs.gestion,
      LN_docs.vencimiento_carga, LN_docs.fecha_vigencia, LN_docs.doc_attach, LN_docs.doc_version,LN_campos.tipo_attach,ln_campos.tipo_campo_padre


    FROM LN_doc_campos_col
    INNER JOIN LN_campos ON LN_doc_campos_col.campo = LN_campos.campo
    INNER JOIN LN_docs ON LN_doc_campos_col.doc_id = LN_docs.doc_id
    INNER JOIN LN_tipos_doc ON LN_docs.tipo_doc = LN_tipos_doc.tipo_doc
    INNER JOIN LN_tipo_doc_campos ON (LN_tipos_doc.tipo_doc = LN_tipo_doc_campos.tipo_doc
             AND LN_doc_campos_col.campo = LN_tipo_doc_campos.campo)
    INNER JOIN LN_contrapartes ON LN_docs.contraparte = LN_contrapartes.contraparte
    INNER JOIN clientes ON LN_contrapartes.cliente = clientes.cliente
    INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
    INNER JOIN identificadores ON padrones.identificador = identificadores.identificador
    INNER JOIN country ON identificadores.country_code = country.country_code
    LEFT OUTER JOIN users users1 ON LN_doc_campos_col.created_by = users1.user_id
    LEFT OUTER JOIN users users2 ON LN_doc_campos_col.modified_by = users2.user_id
    LEFT OUTER JOIN LN_tipo_doc_secciones ON (LN_tipos_doc.tipo_doc = LN_tipo_doc_secciones.tipo_doc
               AND LN_doc_campos_col.seccion = LN_tipo_doc_secciones.seccion)

    WHERE LN_doc_campos_col.doc_id = @p_doc_id
    AND LN_doc_campos_col.seccion = @p_seccion
    AND LN_doc_campos_col.campo = @p_campo

    ORDER BY LN_doc_campos_col.fila, LN_doc_campos_col.col

   END



  END ELSE

   IF (@accion = 'UPDATE') BEGIN

    SELECT @tipo_campo = LN_campos.tipo_campo
    FROM LN_campos
    WHERE campo = @p_campo

    if (@tipo_campo = 'G') begin

     if (@p_user_id is not null) begin

      UPDATE LN_doc_campos_col SET
      valor_fecha = @p_valor_fecha,
      valor_numerico = @p_valor_numerico,
      valor_texto = @p_valor_texto,
      modified = GETDATE(),
      modified_by = @p_user_id
      WHERE LN_doc_campos_col.doc_id = @p_doc_id
      AND LN_doc_campos_col.seccion = @p_seccion
      AND LN_doc_campos_col.campo = @p_campo
      AND LN_doc_campos_col.fila = @p_fila
      AND LN_doc_campos_col.col = @p_col     

     end else begin

      UPDATE LN_doc_campos_col SET
      valor_fecha = @p_valor_fecha,
      valor_numerico = @p_valor_numerico,
      valor_texto = @p_valor_texto,
      modified = GETDATE()
      WHERE LN_doc_campos_col.doc_id = @p_doc_id
      AND LN_doc_campos_col.seccion = @p_seccion
      AND LN_doc_campos_col.campo = @p_campo
      AND LN_doc_campos_col.fila = @p_fila
      AND LN_doc_campos_col.col = @p_col     

     end

    end else begin


     if (@p_user_id is not null) begin

      UPDATE LN_doc_campos SET
      valor_fecha = @p_valor_fecha,
      valor_numerico = @p_valor_numerico,
      valor_texto = @p_valor_texto,
      modified = GETDATE(),
      modified_by = @p_user_id
      WHERE LN_doc_campos.doc_id = @p_doc_id
      AND LN_doc_campos.seccion = @p_seccion
      AND LN_doc_campos.campo = @p_campo

     end else begin

      UPDATE LN_doc_campos SET
      valor_fecha = @p_valor_fecha,
      valor_numerico = @p_valor_numerico,
      valor_texto = @p_valor_texto
      WHERE LN_doc_campos.doc_id = @p_doc_id
      AND LN_doc_campos.seccion = @p_seccion
      AND LN_doc_campos.campo = @p_campo

     end

    end

   END ELSE

    IF (@accion = 'DELETE') BEGIN

     DELETE FROM LN_doc_campos
     WHERE LN_doc_campos.doc_id = @p_doc_id
     AND LN_doc_campos.seccion = @p_seccion
     AND LN_doc_campos.campo = @p_campo
     
     SELECT @tipo_campo = LN_campos.tipo_campo
     FROM LN_campos
     WHERE campo = @p_campo

     if (@tipo_campo <> 'G') begin

      DELETE FROM LN_doc_campos_col
      WHERE LN_doc_campos_col.doc_id = @p_doc_id
      AND LN_doc_campos_col.seccion = @p_seccion
      AND LN_doc_campos_col.campo = @p_campo

     end

    END ELSE

     /* search */
     SELECT LN_doc_campos.doc_id, LN_doc_campos.seccion, LN_doc_campos.campo, LN_doc_campos.valor_fecha,
       LN_doc_campos.valor_texto, LN_doc_campos.valor_numerico,
       CONVERT(VARCHAR, LN_doc_campos.valor_fecha, 103) AS valor_fecha_str,
       CONVERT(DATE, LN_doc_campos.created, 103) as created, LN_doc_campos.created_by,
       users1.first_name + ' ' + users1.last_name as created_by_user,
       CONVERT(DATE, LN_doc_campos.modified, 103) as modified, LN_doc_campos.modified_by,
       users2.first_name + ' ' + users2.last_name as modified_by_user, LN_tipos_doc.tipo_doc,
       LN_tipos_doc.nombre_tipo_doc, LN_tipos_doc.modalidad, LN_tipos_doc.tipo_vigencia, 
       LN_tipos_doc.vigencia, LN_tipos_doc.dia_vigencia, LN_tipos_doc.mes_vigencia, LN_tipos_doc.es_balance,
       LN_campos.nombre_campo, LN_campos.etiqueta, LN_campos.tipo_campo, LN_campos.longitud,
       LN_campos.decimales, LN_campos.validacion, LN_campos.opciones, LN_campos.anual_vencida,
       LN_campos.aplica_formula_dep_econ,
       CASE WHEN (LN_tipo_doc_secciones.titulo_seccion IS NOT NULL) THEN
        LN_tipo_doc_secciones.titulo_seccion
       ELSE '' END AS titulo_seccion,
       LN_tipo_doc_secciones.texto_bajada, LN_tipo_doc_secciones.texto_pie,
       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'
       END AS nombre_tipo_campo,

       IIF (LN_tipo_doc_campos.obligatorio > 0, LN_campos.etiqueta + ' <span class="text-danger">*</span>', LN_campos.etiqueta) AS etiqueta_form,

       LN_tipo_doc_campos.seccion, LN_tipo_doc_campos.celdas, LN_tipo_doc_campos.nueva_linea,
       LN_tipo_doc_campos.orden, LN_tipo_doc_campos.visible, LN_tipo_doc_campos.campo_id,
       LN_tipo_doc_campos.obligatorio, LN_tipo_doc_campos.country_code AS pais,
       padrones.nombre_persona, padrones.numero, padrones.id_padron, identificadores.abreviatura,
       identificadores.identificador, identificadores.country_code, country.country_name,
       LN_contrapartes.cliente, LN_contrapartes.nombre_contacto, LN_contrapartes.email_contacto,
       LN_contrapartes.telefono_contacto, LN_contrapartes.activo,
       clientes.nombre_cliente, clientes.cli_codigo, 
       LN_docs.estado_doc, LN_docs.ingresado, LN_docs.rechazado, LN_docs.verificado_backend,
       LN_docs.verificado_cliente, LN_docs.texto_rechazo, LN_docs.gestion,
       LN_docs.vencimiento_carga, LN_docs.fecha_vigencia, LN_docs.doc_attach, LN_docs.doc_version,

       LN_campos.filas, LN_campos.columnas,
       LN_campos.nombre_campo + '_' + CONVERT(VARCHAR, LN_tipo_doc_campos.seccion) AS FORM_ID,
       'campo_' + CONVERT(VARCHAR, LN_tipo_doc_campos.seccion) + '_' + CONVERT(VARCHAR, LN_campos.campo) AS FORM_NAME,LN_campos.tipo_attach,
                            LN_tipos_doc.es_dni,ln_campos.tipo_campo_padre
   


     FROM LN_doc_campos
     INNER JOIN LN_campos ON LN_doc_campos.campo = LN_campos.campo
     INNER JOIN LN_docs ON LN_doc_campos.doc_id = LN_docs.doc_id
     INNER JOIN LN_tipos_doc ON LN_docs.tipo_doc = LN_tipos_doc.tipo_doc
     INNER JOIN LN_tipo_doc_campos ON (LN_tipos_doc.tipo_doc = LN_tipo_doc_campos.tipo_doc
              AND LN_doc_campos.seccion = LN_tipo_doc_campos.seccion
              AND LN_doc_campos.campo = LN_tipo_doc_campos.campo)
     INNER JOIN LN_contrapartes ON LN_docs.contraparte = LN_contrapartes.contraparte
     INNER JOIN clientes ON LN_contrapartes.cliente = clientes.cliente
     INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
     INNER JOIN identificadores ON padrones.identificador = identificadores.identificador
     INNER JOIN country ON identificadores.country_code = country.country_code
     LEFT OUTER JOIN users users1 ON LN_doc_campos.created_by = users1.user_id
     LEFT OUTER JOIN users users2 ON LN_doc_campos.modified_by = users2.user_id
     LEFT OUTER JOIN LN_tipo_doc_secciones ON (LN_tipos_doc.tipo_doc = LN_tipo_doc_secciones.tipo_doc
              AND LN_doc_campos.seccion = LN_tipo_doc_secciones.seccion)

     WHERE LN_doc_campos.doc_id = @p_doc_id
     ORDER BY LN_tipo_doc_secciones.orden_seccion, LN_doc_campos.seccion, LN_tipo_doc_campos.orden
     


 
END

GO