Sunteți pe pagina 1din 3

Palabras claves:

Fetch ---comando para navegar, muestra una fila del cursor cargado a memoria ram
DEALLOCATE---comando para sacar de memoria ram
open /close---abrir y cerrar el cursor
while--- es un ciclo
set language spanish para que muestre los errores en espaol
like---buscar
USE [GESMINSURDEV]
GO
/****** Object: StoredProcedure [dbo].[up_kcs_pro_indicador_01]
Script Date:
22/10/2015 08:47:07 a.m. ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:
jmieses
-- Create date: 11/08/2015
-- Description: Clcula indicadores de costos automaticos
-- =============================================
ALTER PROCEDURE [dbo].[up_kcs_pro_indicador_01]
@cod_periodo INT = 1504
AS
BEGIN
SET NOCOUNT ON;
DECLARE @cod_unidad_negocio VARCHAR(3) = ''
DECLARE @cod_indicador
BIGINT
DECLARE @tip_indicador
VARCHAR(10)
IF OBJECT_ID('tempdb..#tp_kcs_centroCosto') IS NOT NULL
DROP TABLE #tp_kcs_centroCosto
CREATE TABLE #tp_kcs_centroCosto (cod_centro_costo BIGINT)
IF OBJECT_ID('tempdb..#tp_kcs_resultadoIndicador') IS NOT NULL
DROP TABLE #tp_kcs_resultadoIndicador
CREATE TABLE #tp_kcs_resultadoIndicador (
cod_unidad_negocio
VARCHAR(3)
,cod_indicador
BIGINT
,valor_indicador
FLOAT
)
--Declaramos el cursor
DECLARE c_indicador CURSOR FOR (SELECT cod_unidad_negocio,cod_indicador,
tip_indicador
FROM tb_kcs_configurador01)
--Abrir el cursor y navegar
OPEN c_indicador
FETCH NEXT FROM c_indicador INTO @cod_unidad_negocio, @cod_indicador, @
tip_indicador
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @cod_indicador
TRUNCATE TABLE #tp_kcs_centroCosto
INSERT INTO #tp_kcs_centroCosto
SELECT kcs.cod_centro_costo
FROM tb_kcs_configurador01_centroCosto kcf
INNER JOIN tb_kcs_grupoCosto kgc
ON
kgc.cod_unidad_negocio =

kcf.cod_unidad_negocio
AND kgc.cod_grupo_costo = kcf.ne
xo_centro_costo
INNER JOIN tb_kcs_centroCosto kcs
ON
kcs.cod_unidad_negocio =
kcf.cod_unidad_negocio
AND kcs.cod_grupo_costo LIKE kcf
.nexo_centro_costo + '%'
WHERE

kcf.cod_unidad_negocio = @cod_unidad_ne

gocio
AND kcf.cod_indicador

= @cod_i

ndicador
UNION
SELECT kcs.cod_centro_costo
FROM tb_kcs_configurador01_centroCosto kcf
INNER JOIN tb_kcs_centroCosto kcs
ON
kcs.cod_unidad_negocio
= kcf.cod_unidad_negocio
AND kcs.cod_centro_costo
= CAST(kcf.nexo_centro_costo AS BIGINT)
WHERE kcf.cod_unidad_negocio = @cod_unidad_ne
gocio
AND kcf.cod_indicador
= @cod_i
ndicador
AND ISNUMERIC(kcf.nexo_centro_costo) = 1
UNION
SELECT kcs.cod_centro_costo
FROM tb_kcs_configurador01_centroCosto kcf
INNER JOIN tb_kcs_centroCosto kcs
ON
kcs.cod_unidad_negocio
= kcf.cod_unidad_negocio
WHERE kcf.cod_unidad_negocio = @cod_unidad_ne
gocio
AND kcf.cod_indicador
= @cod_i
ndicador
AND kcf.nexo_centro_costo = ''
INSERT INTO #tp_kcs_resultadoIndicador
SELECT
@cod_unidad_negocio
,@cod_indicador
,CASE @tip_indicador
WHEN 'CANTIDAD'
THEN SUM
(trc.cantidad) --- falta conversion de unidades
WHEN 'VALOR'
THEN SUM
(trc.valor_me)
ELSE NULL
END
FROM
ta_ges_transaccionContable_mayor
trc
INNER JOIN tb_ges_unidadNegocio un
ON
un.cod_unidad_negocio = @cod_u
nidad_negocio
AND un.cod_sociedad
= trc.cod_sociedad
INNER JOIN
#tp_kcs_centroCosto cc
ON
cc.cod_centro_costo
= trc.cod_centro_costo
INNER JOIN tb_kcs_configurador01 cfg
ON
cfg.cod_unidad_negocio

= @cod_unidad_negocio
AND cfg.cod_indicador
= @cod_indicador
INNER JOIN tb_kcs_indicador ind
ON
ind.cod_unidad_negocio
= cfg.cod_unidad_negocio
AND ind.cod_indicador
= cfg.cod_indicador
INNER JOIN
ON

tb_kcs_configurador01_cuenta c1c
c1c.cod_unidad_negocio

= cfg.cod_unidad_negocio
AND c1c.cod_indicador
= cfg.cod_indicador
AND (c1c.cod_cuenta
= trc.cod_cuenta OR c1c.cod_cuenta
= '')
INNER JOIN
tb_kcs_configurador01_material c
1m
ON c1m.cod_unidad_negocio
= cfg.cod_unidad_negocio
AND c1m.cod_indicador
= cfg.cod_indicador
AND (c1m.cod_material
= trc.cod_material OR c1m.cod_material = '')
WHERE trc.cod_periodo = @cod_periodo
AND trc.cod_material <> ''
AND trc.cod_cuenta > 6130000000
AND trc.cod_cuenta < 6570000000
FETCH NEXT FROM c_indicador INTO @cod_unidad_negocio, @cod_indi
cador, @tip_indicador
END
--cerrar el cursor
CLOSE c_indicador
liberar memoria ram
DEALLOCATE c_indicador

END
SELECT * from #tp_kcs_resultadoIndicador

S-ar putea să vă placă și