dbo.LN_docs_valores

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

4
Name Data Type Length Description
@p_contraparte int 4
@p_campo_id varchar 50
@p_doc_id int 4
@devolver_campo_id int 4

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
--
-- Description: DADO UN ID DE CONTRAPARTE Y UN VALOR DE REFERENCIA DE CAMPO,
-- OBTENER LOS VALORES GUARDADOS EN EL DOCUMENTO CORRESPONDIENTE DE LA GESTION
-- ACTIVA. SI SE PASA COMO PARAMETRO UN TERCER DATO OPCIONAL (doc_id) SE FUERZA
-- BUSCAR EL VALOR DEL CAMPO EN UN doc_id DETERMINADO.
-- =============================================
/*
exec ln_docs_valores 105,  'FABRICANTES_DISTRIBUIDORES'
*/

CREATE OR ALTER PROCEDURE dbo.LN_docs_valores
 -- Add the parameters for the stored procedure here
 @p_contraparte         int = null,
 @p_campo_id          varchar(50) = null,
 @p_doc_id          int = null, 
 @devolver_campo_id int = 0
 
AS
BEGIN
 -- SET NOCOUNT ON added to prevent extra result sets from
 -- interfering with SELECT statements.
 SET NOCOUNT ON;
 if (@devolver_campo_id is null) set @devolver_campo_id = 0

    -- Insert statements for procedure here

 if (@p_contraparte > 0 AND @p_campo_id is not null) begin

  DECLARE @tipo_campo varchar(1) = null, @doc_id int = null, @seccion int = null, @campo int = null

  if (@p_doc_id is null) 
  
   select @doc_id = LN_doc_campos.doc_id,
     @tipo_campo = LN_campos.tipo_campo,    
     @seccion = LN_doc_campos.seccion,
     @campo = LN_doc_campos.campo
   from LN_doc_campos 
   inner join LN_docs on LN_doc_campos.doc_id = LN_docs.doc_id
   inner join LN_campos on LN_doc_campos.campo = LN_campos.campo
   inner join LN_tipo_doc_campos on (LN_docs.tipo_doc = LN_tipo_doc_campos.tipo_doc
           and LN_campos.campo = LN_tipo_doc_campos.campo)
   inner join LN_gestiones on (LN_docs.contraparte = LN_gestiones.contraparte
          and LN_docs.gestion = LN_gestiones.gestion
          and LN_doc_campos.seccion = LN_tipo_doc_campos.seccion)
   where LN_docs.contraparte = @p_contraparte
   and LN_tipo_doc_campos.campo_id = @p_campo_id
   and LN_gestiones.desde <= GETDATE()
   and LN_gestiones.hasta >= GETDATE()
   and LN_docs.estado_doc != 'X'
   and ln_docs.gestion = LN_gestiones.gestion 

  else
        
   select @doc_id = LN_doc_campos.doc_id,
     @tipo_campo = LN_campos.tipo_campo,    
     @seccion = LN_doc_campos.seccion,
     @campo = LN_doc_campos.campo
   from LN_doc_campos 
   inner join LN_docs on LN_doc_campos.doc_id = LN_docs.doc_id
   inner join LN_campos on LN_doc_campos.campo = LN_campos.campo
   inner join LN_tipo_doc_campos on (LN_docs.tipo_doc = LN_tipo_doc_campos.tipo_doc
           and LN_campos.campo = LN_tipo_doc_campos.campo
           and LN_doc_campos.seccion = LN_tipo_doc_campos.seccion)
   inner join LN_gestiones on (LN_docs.contraparte = LN_gestiones.contraparte
          and LN_docs.gestion = LN_gestiones.gestion)
   where LN_docs.contraparte = @p_contraparte
   and LN_tipo_doc_campos.campo_id = @p_campo_id
   and LN_docs.doc_id = @p_doc_id
   --and LN_gestiones.desde <= GETDATE()
   --and LN_gestiones.hasta >= GETDATE()
   and LN_docs.estado_doc != 'X'
   and ln_docs.gestion = LN_gestiones.gestion 



  if (@seccion is not null AND @campo is not null AND @tipo_campo is not null AND @doc_id is not null) begin

   if (@tipo_campo != 'G')

    select LN_docs.contraparte, LN_docs.gestion,
      LN_doc_campos.doc_id, 
      LN_doc_campos.seccion, 
      LN_doc_campos.campo, 
      @tipo_campo AS tipo_campo,
      iif (@devolver_campo_id = 1, @p_campo_id, LN_campos.nombre_campo) as nombre_campo, 
      LN_campos.etiqueta,
      NULL AS fila,
      NULL AS col,
      LN_doc_campos.valor_numerico, LN_doc_campos.valor_texto, LN_doc_campos.valor_fecha,
      CONVERT(VARCHAR, LN_doc_campos.valor_fecha, 103) as valor_fecha_str
      
    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
    where LN_doc_campos.doc_id = @doc_id
    and LN_doc_campos.seccion = @seccion
    and LN_doc_campos.campo = @campo     

   else

    select LN_docs.contraparte, LN_docs.gestion,
      LN_doc_campos_col.doc_id,
      LN_doc_campos_col.seccion,
      LN_doc_campos_col.campo,
      @tipo_campo as tipo_campo,
      iif (@devolver_campo_id = 1, @p_campo_id, LN_campos.nombre_campo) as nombre_campo, 
      LN_campos.etiqueta,
      LN_doc_campos_col.fila,
      LN_doc_campos_col.col,
      LN_doc_campos_col.valor_numerico, LN_doc_campos_col.valor_texto, LN_doc_campos_col.valor_fecha,
      CONVERT(VARCHAR, LN_doc_campos_col.valor_fecha, 103) as valor_fecha_str
     
    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
    where LN_doc_campos_col.doc_id = @doc_id
    and LN_doc_campos_col.seccion = @seccion
    and LN_doc_campos_col.campo = @campo
    ORDER BY LN_doc_campos_col.fila, LN_doc_campos_col.col
  end

 end
 
END
GO