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_doc_id | int | 4 |
SQL Script
Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE OR ALTER PROCEDURE dbo.LN_docs_verificar_carga
-- Add the parameters for the stored procedure here
@p_doc_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 @faltantes int = 0
declare @valor_fecha smalldatetime,
@valor_texto varchar(max),
@valor_numerico float,
@tipo_campo varchar(1),
@fila tinyint,
@col tinyint,
@campo int,
@columnas tinyint,
@colindex tinyint
DECLARE Campos CURSOR FOR
select LN_doc_campos.valor_fecha, LN_doc_campos.valor_numerico, LN_doc_campos.valor_texto,
LN_campos.tipo_campo
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_tipo_doc_campos ON (LN_docs.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)
where LN_doc_campos.doc_id = @p_doc_id
and LN_tipo_doc_campos.obligatorio > 0
and LN_tipo_doc_campos.visible = 1
and LN_campos.tipo_campo <> 'G'
and LN_campos.tipo_campo <> 'F'
OPEN Campos
FETCH NEXT FROM Campos INTO @valor_fecha, @valor_numerico, @valor_texto, @tipo_campo
WHILE @@FETCH_STATUS = 0 BEGIN
SET @faltantes = @faltantes +
CASE
WHEN @tipo_campo = 'T' OR @tipo_campo = 'R' OR @tipo_campo = 'C' OR @tipo_campo = 'S' OR @tipo_campo = 'M'
THEN iif(@valor_texto is null or ltrim(rtrim(@valor_texto)) = '', 1, 0)
WHEN @tipo_campo = 'N' OR @tipo_campo = 'B' THEN iif(@valor_numerico is null, 1, 0)
WHEN @tipo_campo = 'D' THEN iif(@valor_fecha is null, 1, 0)
END
FETCH NEXT FROM Campos INTO @valor_fecha, @valor_numerico, @valor_texto, @tipo_campo
END
CLOSE Campos
DEALLOCATE Campos
DECLARE Tablas CURSOR FOR
SELECT LN_campos.campo, LN_campos.columnas
FROM LN_campos
INNER JOIN LN_doc_campos ON LN_campos.campo = LN_doc_campos.campo
INNER JOIN LN_docs ON LN_doc_campos.doc_id = LN_docs.doc_id
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)
WHERE LN_campos.tipo_campo = 'G'
and LN_tipo_doc_campos.visible = 1
and LN_tipo_doc_campos.obligatorio > 0
and LN_docs.doc_id = @p_doc_id
OPEN Tablas
FETCH NEXT FROM Tablas INTO @campo, @columnas
WHILE @@FETCH_STATUS = 0 BEGIN
/* Compruebo la carga de la primera fila de la tabla */
SET @colindex = 0
DECLARE Valores CURSOR FOR
select LN_doc_campos_col.valor_fecha, LN_doc_campos_col.valor_numerico, LN_doc_campos_col.valor_texto,
LN_campos_col.tipo_campo, LN_doc_campos_col.fila, LN_doc_campos_col.col
from LN_doc_campos_col
inner join LN_campos_col on (LN_doc_campos_col.campo = LN_campos_col.campo
AND LN_doc_campos_col.col = LN_campos_col.col)
where LN_doc_campos_col.doc_id = @p_doc_id
and LN_doc_campos_col.campo = @campo
and LN_doc_campos_col.fila = 1
order by LN_doc_campos_col.fila, LN_doc_campos_col.col
OPEN Valores
FETCH NEXT FROM Valores INTO @valor_fecha, @valor_numerico, @valor_texto, @tipo_campo, @fila, @col
WHILE @@FETCH_STATUS = 0 BEGIN
SET @colindex = @colindex +
CASE
WHEN @tipo_campo = 'T' OR @tipo_campo = 'R' OR @tipo_campo = 'C' OR @tipo_campo = 'S' OR @tipo_campo = 'M'
THEN iif(@valor_texto is null or ltrim(rtrim(@valor_texto)) = '', 0, 1)
WHEN @tipo_campo = 'N' OR @tipo_campo = 'B' THEN iif(@valor_numerico is null, 0, 1)
WHEN @tipo_campo = 'D' THEN iif(@valor_fecha is null, 0, 1)
END
FETCH NEXT FROM Valores INTO @valor_fecha, @valor_numerico, @valor_texto, @tipo_campo, @fila, @col
END
CLOSE Valores
DEALLOCATE Valores
if (@colindex < @columnas) begin
SET @faltantes = @faltantes + 1
end
FETCH NEXT FROM Tablas INTO @campo, @columnas
END
CLOSE Tablas
DEALLOCATE Tablas
SELECT @faltantes as faltantes
END
GO
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE OR ALTER PROCEDURE dbo.LN_docs_verificar_carga
-- Add the parameters for the stored procedure here
@p_doc_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 @faltantes int = 0
declare @valor_fecha smalldatetime,
@valor_texto varchar(max),
@valor_numerico float,
@tipo_campo varchar(1),
@fila tinyint,
@col tinyint,
@campo int,
@columnas tinyint,
@colindex tinyint
DECLARE Campos CURSOR FOR
select LN_doc_campos.valor_fecha, LN_doc_campos.valor_numerico, LN_doc_campos.valor_texto,
LN_campos.tipo_campo
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_tipo_doc_campos ON (LN_docs.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)
where LN_doc_campos.doc_id = @p_doc_id
and LN_tipo_doc_campos.obligatorio > 0
and LN_tipo_doc_campos.visible = 1
and LN_campos.tipo_campo <> 'G'
and LN_campos.tipo_campo <> 'F'
OPEN Campos
FETCH NEXT FROM Campos INTO @valor_fecha, @valor_numerico, @valor_texto, @tipo_campo
WHILE @@FETCH_STATUS = 0 BEGIN
SET @faltantes = @faltantes +
CASE
WHEN @tipo_campo = 'T' OR @tipo_campo = 'R' OR @tipo_campo = 'C' OR @tipo_campo = 'S' OR @tipo_campo = 'M'
THEN iif(@valor_texto is null or ltrim(rtrim(@valor_texto)) = '', 1, 0)
WHEN @tipo_campo = 'N' OR @tipo_campo = 'B' THEN iif(@valor_numerico is null, 1, 0)
WHEN @tipo_campo = 'D' THEN iif(@valor_fecha is null, 1, 0)
END
FETCH NEXT FROM Campos INTO @valor_fecha, @valor_numerico, @valor_texto, @tipo_campo
END
CLOSE Campos
DEALLOCATE Campos
DECLARE Tablas CURSOR FOR
SELECT LN_campos.campo, LN_campos.columnas
FROM LN_campos
INNER JOIN LN_doc_campos ON LN_campos.campo = LN_doc_campos.campo
INNER JOIN LN_docs ON LN_doc_campos.doc_id = LN_docs.doc_id
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)
WHERE LN_campos.tipo_campo = 'G'
and LN_tipo_doc_campos.visible = 1
and LN_tipo_doc_campos.obligatorio > 0
and LN_docs.doc_id = @p_doc_id
OPEN Tablas
FETCH NEXT FROM Tablas INTO @campo, @columnas
WHILE @@FETCH_STATUS = 0 BEGIN
/* Compruebo la carga de la primera fila de la tabla */
SET @colindex = 0
DECLARE Valores CURSOR FOR
select LN_doc_campos_col.valor_fecha, LN_doc_campos_col.valor_numerico, LN_doc_campos_col.valor_texto,
LN_campos_col.tipo_campo, LN_doc_campos_col.fila, LN_doc_campos_col.col
from LN_doc_campos_col
inner join LN_campos_col on (LN_doc_campos_col.campo = LN_campos_col.campo
AND LN_doc_campos_col.col = LN_campos_col.col)
where LN_doc_campos_col.doc_id = @p_doc_id
and LN_doc_campos_col.campo = @campo
and LN_doc_campos_col.fila = 1
order by LN_doc_campos_col.fila, LN_doc_campos_col.col
OPEN Valores
FETCH NEXT FROM Valores INTO @valor_fecha, @valor_numerico, @valor_texto, @tipo_campo, @fila, @col
WHILE @@FETCH_STATUS = 0 BEGIN
SET @colindex = @colindex +
CASE
WHEN @tipo_campo = 'T' OR @tipo_campo = 'R' OR @tipo_campo = 'C' OR @tipo_campo = 'S' OR @tipo_campo = 'M'
THEN iif(@valor_texto is null or ltrim(rtrim(@valor_texto)) = '', 0, 1)
WHEN @tipo_campo = 'N' OR @tipo_campo = 'B' THEN iif(@valor_numerico is null, 0, 1)
WHEN @tipo_campo = 'D' THEN iif(@valor_fecha is null, 0, 1)
END
FETCH NEXT FROM Valores INTO @valor_fecha, @valor_numerico, @valor_texto, @tipo_campo, @fila, @col
END
CLOSE Valores
DEALLOCATE Valores
if (@colindex < @columnas) begin
SET @faltantes = @faltantes + 1
end
FETCH NEXT FROM Tablas INTO @campo, @columnas
END
CLOSE Tablas
DEALLOCATE Tablas
SELECT @faltantes as faltantes
END
GO
Depends On
6Used By
No items found