Description
Properties
| Name | Value |
|---|---|
| ANSI Nulls ON | True |
| Quoted Identifier ON | True |
| Encrypted | False |
| Execute As | |
| Assembly |
Parameters
1| Name | Data Type | Length | Description |
|---|---|---|---|
| @p_contraparte | int | 4 |
SQL Script
Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
/*
exec [LN_dependencia_economica] 95
*/
CREATE OR ALTER PROCEDURE dbo.LN_dependencia_economica
@p_contraparte int
AS
BEGIN
SET NOCOUNT ON;
DECLARE @gest int = NULL, @cliente int = null , @cuit varchar(20) = null, @id_padron int = null
DECLARE @campo int = null
DECLARE @seccion int = null
DECLARE @tipo_campo varchar(1) = null
DECLARE @monto_ventas money = NULL
DECLARE @moneda_ventas varchar(10) = NULL
DECLARE @monto_iva money = NULL
DECLARE @monto_compras money = NULL
DECLARE @moneda_compras varchar(10) = NULL
declare @ventas_declaradas money = NULL
declare @ventas_por_iva money = NULL
declare @ventas_mas_iva money = NULL
DECLARE @dep_econ_calc_ventas float = NULL
DECLARE @dep_econ_calc_ventas_mas_iva float = NULL
DECLARE @dep_econ_calc_iva float = NULL
DECLARE @fecha_vigencia datetime = null
DECLARE @leyenda varchar(max) = NULL
DECLARE @doc_id int, @tipo_doc int
SELECT @gest = LN_gestiones.gestion,
@cuit = padrones.identificacion,
@cliente = LN_contrapartes.cliente,
@id_padron = LN_contrapartes.id_padron
FROM LN_gestiones INNER JOIN LN_contrapartes
ON LN_gestiones.contraparte = LN_contrapartes.contraparte
INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
WHERE LN_gestiones.desde <= GETDATE()
AND LN_gestiones.hasta >= GETDATE()
AND LN_contrapartes.activo = 1
AND LN_contrapartes.contraparte = @p_contraparte
if (@gest > 0) begin
/* Verifico el indicador Dependencia Económica Calculada */
DECLARE @idec int = null
DECLARE @producto_de int = NULL
select @idec = LN_indicadores.indicador,
@producto_de = LN_indicadores.producto
from LN_indicadores inner join LN_productos on
LN_indicadores.producto = LN_productos.producto
inner join LN_familia_productos on
LN_productos.producto = LN_familia_productos.producto
inner join LN_familias on
LN_familia_productos.familia = LN_familias.familia
inner join LN_contraparte_familias on
LN_familia_productos.familia = LN_contraparte_familias.familia
inner join LN_contrapartes on
(LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
AND LN_familias.cliente = LN_contrapartes.cliente)
inner join LN_cliente_productos on
(LN_productos.producto = LN_cliente_productos.producto
AND LN_contrapartes.cliente = LN_cliente_productos.cliente)
where LN_contrapartes.contraparte = @p_contraparte
and LN_indicadores.clave_indicador = 'DEP_ECON_CALC'
and LN_familias.visible = 1
and LN_familia_productos.activo = 1
and LN_cliente_productos.activo = 1
and LN_productos.visible = 1
if (@idec > 0) begin
/* Búsqueda de un documento de la contraparte cargado con información de ventas */
select @campo = LN_tipo_doc_campos.campo,
@seccion = LN_tipo_doc_campos.seccion,
@doc_id = LN_docs.doc_id,
@tipo_doc = LN_docs.tipo_doc,
@tipo_campo = LN_campos.tipo_campo /*,
@fecha_vigencia = LN_docs.fecha_vigencia*/
from LN_tipo_doc_campos
INNER JOIN LN_campos on LN_tipo_doc_campos.campo = LN_campos.campo
INNER JOIN LN_docs on LN_tipo_doc_campos.tipo_doc = LN_docs.tipo_doc
where LN_docs.contraparte = @p_contraparte
and LN_docs.gestion = @gest
and LN_tipo_doc_campos.campo_id = 'VENTAS-ANUALES'
and LN_docs.estado_doc = 'V'
/* Buscamos: el ultimo año cargado en las declaraciones de iva - ventas, para comparar con las compras del mismo año */
if (@doc_id > 0)
select @fecha_vigencia = convert(date,convert(char(4),max(year(valor_fecha))) + '-12-31')
FROM LN_doc_campos_col
WHERE doc_id = @doc_id
AND seccion = @seccion
AND campo = @campo
AND col = 0
--select @fecha_vigencia
if (@doc_id > 0 AND @fecha_vigencia is not null) begin
/* Existe el documento de ventas, busco las compras en un período anual */
if exists ( select cliente
from LN_dep_econ_compras
where cliente = @cliente
and (id_padron = @id_padron or identificacion = @cuit)
/*and desde >= DATEADD(DAY,1,DATEADD(YEAR,-1,CONVERT(DATE, @fecha_vigencia)))
and hasta <= CONVERT(DATE, @fecha_vigencia) */
and hasta = CONVERT(DATE, @fecha_vigencia)
) begin
--SELECT @monto_compras = SUM(ISNULL(total_compras,0))
SELECT @monto_compras = ISNULL(total_compras,0), @moneda_compras = moneda
FROM LN_dep_econ_compras
where cliente = @cliente
and (id_padron = @id_padron or identificacion = @cuit)
/*and desde >= DATEADD(DAY,1,DATEADD(YEAR,-1,CONVERT(DATE, @fecha_vigencia)))
and hasta <= CONVERT(DATE, @fecha_vigencia) */
and hasta = CONVERT(DATE, @fecha_vigencia)
/* Sumo las ventas, analizando si el campo que contiene el documento
es un valor simple o es una tabla, tomando en tal caso la columna 1 */
if (@tipo_campo != 'G') begin
SELECT @monto_ventas = ISNULL(valor_numerico,0)
FROM LN_doc_campos
WHERE doc_id = @doc_id
AND seccion = @seccion
AND campo = @campo
end
else begin
/* ventas */
SELECT @monto_ventas = SUM(ISNULL(valor_numerico,0))
FROM LN_doc_campos_col
WHERE doc_id = @doc_id
AND seccion = @seccion
AND campo = @campo
AND col = 1
/* columna iva */
SELECT @monto_iva = SUM(ISNULL(valor_numerico,0))
FROM LN_doc_campos_col
WHERE doc_id = @doc_id
AND seccion = @seccion
AND campo = @campo
AND col = 2
end
/* Determinación de la alícuota de iva ingresada en el documento de las ventas anuales */
declare @alicuota_iva float, @aplica_iva_ventas float = 21, @pais varchar(2)
select
@alicuota_iva = isnull(LN_doc_campos.valor_numerico, 0),
@pais = LN_contrapartes.country_code
from LN_doc_campos
inner join LN_docs on LN_doc_campos.doc_id = LN_docs.doc_id
inner join LN_tipo_doc_campos on
(LN_doc_campos.campo = LN_tipo_doc_campos.campo
and LN_docs.tipo_doc = LN_tipo_doc_campos.tipo_doc)
inner join LN_contrapartes on LN_docs.contraparte = LN_contrapartes.contraparte
where LN_doc_campos.seccion = @seccion
and LN_doc_campos.doc_id = @doc_id
and LN_tipo_doc_campos.campo_id = 'ALICUOTA-IVA'
set @aplica_iva_ventas =
CASE
WHEN @pais = 'AR' THEN iif(@alicuota_iva = 10, 10.5, 21)
WHEN @pais = 'UY' THEN 22
WHEN @pais = 'PY' THEN iif(@alicuota_iva = 0, 10, iif(@alicuota_iva < 10, 5, 10))
END
if (@monto_compras > 0 AND (@monto_ventas > 0 OR @monto_iva > 0 AND @aplica_iva_ventas > 0))
begin
SET @ventas_declaradas = @monto_ventas
SET @ventas_por_iva = (@monto_iva/@aplica_iva_ventas*100)
SET @ventas_mas_iva = (@monto_ventas+@monto_iva)
IF (@monto_iva > 0 AND @aplica_iva_ventas > 0)
SET @dep_econ_calc_iva = CONVERT(float, @monto_compras / (@monto_iva/@aplica_iva_ventas*100) * 100)
IF (@monto_ventas > 0)
SET @dep_econ_calc_ventas = CONVERT(float, @monto_compras / @monto_ventas * 100)
IF (@monto_ventas > 0 or @monto_iva > 0)
SET @dep_econ_calc_ventas_mas_iva = CONVERT(float, @monto_compras / (@monto_ventas+@monto_iva) * 100)
end
end
else
begin
set @leyenda = 'No hay datos para calcular la dependencia económica'
end
end
else
begin
set @leyenda = 'No hay datos para calcular la dependencia económica'
end
end
end
select @monto_compras as compras, @moneda_compras as moneda_compras, @ventas_declaradas as ventas_declaradas,
@ventas_por_iva as ventas_segun_iva, @ventas_mas_iva as ventas_mas_iva, @dep_econ_calc_iva as dep_econ_iva,
@dep_econ_calc_ventas as dep_econ_ventas , @dep_econ_calc_ventas_mas_iva as dep_econ_ventas_mas_iva ,
iif(@fecha_vigencia is null, null, convert(varchar,convert(date,@fecha_vigencia),103)) as fecha, @leyenda as leyenda
END
GO
GO
/*
exec [LN_dependencia_economica] 95
*/
CREATE OR ALTER PROCEDURE dbo.LN_dependencia_economica
@p_contraparte int
AS
BEGIN
SET NOCOUNT ON;
DECLARE @gest int = NULL, @cliente int = null , @cuit varchar(20) = null, @id_padron int = null
DECLARE @campo int = null
DECLARE @seccion int = null
DECLARE @tipo_campo varchar(1) = null
DECLARE @monto_ventas money = NULL
DECLARE @moneda_ventas varchar(10) = NULL
DECLARE @monto_iva money = NULL
DECLARE @monto_compras money = NULL
DECLARE @moneda_compras varchar(10) = NULL
declare @ventas_declaradas money = NULL
declare @ventas_por_iva money = NULL
declare @ventas_mas_iva money = NULL
DECLARE @dep_econ_calc_ventas float = NULL
DECLARE @dep_econ_calc_ventas_mas_iva float = NULL
DECLARE @dep_econ_calc_iva float = NULL
DECLARE @fecha_vigencia datetime = null
DECLARE @leyenda varchar(max) = NULL
DECLARE @doc_id int, @tipo_doc int
SELECT @gest = LN_gestiones.gestion,
@cuit = padrones.identificacion,
@cliente = LN_contrapartes.cliente,
@id_padron = LN_contrapartes.id_padron
FROM LN_gestiones INNER JOIN LN_contrapartes
ON LN_gestiones.contraparte = LN_contrapartes.contraparte
INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
WHERE LN_gestiones.desde <= GETDATE()
AND LN_gestiones.hasta >= GETDATE()
AND LN_contrapartes.activo = 1
AND LN_contrapartes.contraparte = @p_contraparte
if (@gest > 0) begin
/* Verifico el indicador Dependencia Económica Calculada */
DECLARE @idec int = null
DECLARE @producto_de int = NULL
select @idec = LN_indicadores.indicador,
@producto_de = LN_indicadores.producto
from LN_indicadores inner join LN_productos on
LN_indicadores.producto = LN_productos.producto
inner join LN_familia_productos on
LN_productos.producto = LN_familia_productos.producto
inner join LN_familias on
LN_familia_productos.familia = LN_familias.familia
inner join LN_contraparte_familias on
LN_familia_productos.familia = LN_contraparte_familias.familia
inner join LN_contrapartes on
(LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
AND LN_familias.cliente = LN_contrapartes.cliente)
inner join LN_cliente_productos on
(LN_productos.producto = LN_cliente_productos.producto
AND LN_contrapartes.cliente = LN_cliente_productos.cliente)
where LN_contrapartes.contraparte = @p_contraparte
and LN_indicadores.clave_indicador = 'DEP_ECON_CALC'
and LN_familias.visible = 1
and LN_familia_productos.activo = 1
and LN_cliente_productos.activo = 1
and LN_productos.visible = 1
if (@idec > 0) begin
/* Búsqueda de un documento de la contraparte cargado con información de ventas */
select @campo = LN_tipo_doc_campos.campo,
@seccion = LN_tipo_doc_campos.seccion,
@doc_id = LN_docs.doc_id,
@tipo_doc = LN_docs.tipo_doc,
@tipo_campo = LN_campos.tipo_campo /*,
@fecha_vigencia = LN_docs.fecha_vigencia*/
from LN_tipo_doc_campos
INNER JOIN LN_campos on LN_tipo_doc_campos.campo = LN_campos.campo
INNER JOIN LN_docs on LN_tipo_doc_campos.tipo_doc = LN_docs.tipo_doc
where LN_docs.contraparte = @p_contraparte
and LN_docs.gestion = @gest
and LN_tipo_doc_campos.campo_id = 'VENTAS-ANUALES'
and LN_docs.estado_doc = 'V'
/* Buscamos: el ultimo año cargado en las declaraciones de iva - ventas, para comparar con las compras del mismo año */
if (@doc_id > 0)
select @fecha_vigencia = convert(date,convert(char(4),max(year(valor_fecha))) + '-12-31')
FROM LN_doc_campos_col
WHERE doc_id = @doc_id
AND seccion = @seccion
AND campo = @campo
AND col = 0
--select @fecha_vigencia
if (@doc_id > 0 AND @fecha_vigencia is not null) begin
/* Existe el documento de ventas, busco las compras en un período anual */
if exists ( select cliente
from LN_dep_econ_compras
where cliente = @cliente
and (id_padron = @id_padron or identificacion = @cuit)
/*and desde >= DATEADD(DAY,1,DATEADD(YEAR,-1,CONVERT(DATE, @fecha_vigencia)))
and hasta <= CONVERT(DATE, @fecha_vigencia) */
and hasta = CONVERT(DATE, @fecha_vigencia)
) begin
--SELECT @monto_compras = SUM(ISNULL(total_compras,0))
SELECT @monto_compras = ISNULL(total_compras,0), @moneda_compras = moneda
FROM LN_dep_econ_compras
where cliente = @cliente
and (id_padron = @id_padron or identificacion = @cuit)
/*and desde >= DATEADD(DAY,1,DATEADD(YEAR,-1,CONVERT(DATE, @fecha_vigencia)))
and hasta <= CONVERT(DATE, @fecha_vigencia) */
and hasta = CONVERT(DATE, @fecha_vigencia)
/* Sumo las ventas, analizando si el campo que contiene el documento
es un valor simple o es una tabla, tomando en tal caso la columna 1 */
if (@tipo_campo != 'G') begin
SELECT @monto_ventas = ISNULL(valor_numerico,0)
FROM LN_doc_campos
WHERE doc_id = @doc_id
AND seccion = @seccion
AND campo = @campo
end
else begin
/* ventas */
SELECT @monto_ventas = SUM(ISNULL(valor_numerico,0))
FROM LN_doc_campos_col
WHERE doc_id = @doc_id
AND seccion = @seccion
AND campo = @campo
AND col = 1
/* columna iva */
SELECT @monto_iva = SUM(ISNULL(valor_numerico,0))
FROM LN_doc_campos_col
WHERE doc_id = @doc_id
AND seccion = @seccion
AND campo = @campo
AND col = 2
end
/* Determinación de la alícuota de iva ingresada en el documento de las ventas anuales */
declare @alicuota_iva float, @aplica_iva_ventas float = 21, @pais varchar(2)
select
@alicuota_iva = isnull(LN_doc_campos.valor_numerico, 0),
@pais = LN_contrapartes.country_code
from LN_doc_campos
inner join LN_docs on LN_doc_campos.doc_id = LN_docs.doc_id
inner join LN_tipo_doc_campos on
(LN_doc_campos.campo = LN_tipo_doc_campos.campo
and LN_docs.tipo_doc = LN_tipo_doc_campos.tipo_doc)
inner join LN_contrapartes on LN_docs.contraparte = LN_contrapartes.contraparte
where LN_doc_campos.seccion = @seccion
and LN_doc_campos.doc_id = @doc_id
and LN_tipo_doc_campos.campo_id = 'ALICUOTA-IVA'
set @aplica_iva_ventas =
CASE
WHEN @pais = 'AR' THEN iif(@alicuota_iva = 10, 10.5, 21)
WHEN @pais = 'UY' THEN 22
WHEN @pais = 'PY' THEN iif(@alicuota_iva = 0, 10, iif(@alicuota_iva < 10, 5, 10))
END
if (@monto_compras > 0 AND (@monto_ventas > 0 OR @monto_iva > 0 AND @aplica_iva_ventas > 0))
begin
SET @ventas_declaradas = @monto_ventas
SET @ventas_por_iva = (@monto_iva/@aplica_iva_ventas*100)
SET @ventas_mas_iva = (@monto_ventas+@monto_iva)
IF (@monto_iva > 0 AND @aplica_iva_ventas > 0)
SET @dep_econ_calc_iva = CONVERT(float, @monto_compras / (@monto_iva/@aplica_iva_ventas*100) * 100)
IF (@monto_ventas > 0)
SET @dep_econ_calc_ventas = CONVERT(float, @monto_compras / @monto_ventas * 100)
IF (@monto_ventas > 0 or @monto_iva > 0)
SET @dep_econ_calc_ventas_mas_iva = CONVERT(float, @monto_compras / (@monto_ventas+@monto_iva) * 100)
end
end
else
begin
set @leyenda = 'No hay datos para calcular la dependencia económica'
end
end
else
begin
set @leyenda = 'No hay datos para calcular la dependencia económica'
end
end
end
select @monto_compras as compras, @moneda_compras as moneda_compras, @ventas_declaradas as ventas_declaradas,
@ventas_por_iva as ventas_segun_iva, @ventas_mas_iva as ventas_mas_iva, @dep_econ_calc_iva as dep_econ_iva,
@dep_econ_calc_ventas as dep_econ_ventas , @dep_econ_calc_ventas_mas_iva as dep_econ_ventas_mas_iva ,
iif(@fecha_vigencia is null, null, convert(varchar,convert(date,@fecha_vigencia),103)) as fecha, @leyenda as leyenda
END
GO