Advertisement
jhenriquecosta

Untitled

Nov 5th, 2020
2,266
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 3.56 KB | None | 0 0
  1. ALTER FUNCTION [gsb].[get_saldo_visao_componente_udf] (@calendario_id INT, @centro_id INT, @unidade_id INT, @componente_id INT)
  2. RETURNS DECIMAL(19, 5)
  3. AS
  4.  
  5. BEGIN
  6.  
  7.   DECLARE @conta VARCHAR(50);
  8.   DECLARE @conta_superior VARCHAR(50);
  9.   DECLARE @condicao_id INT;
  10.  
  11.   DECLARE @nome VARCHAR(200);
  12.   DECLARE @valorSelected DECIMAL(19, 5);
  13.   DECLARE @valorSaldo DECIMAL(19, 5);
  14.   DECLARE @config_id INT;
  15.  
  16.   DECLARE @componenteCondicaoNormal INT;
  17.  
  18.   DECLARE @componenteLinhaSemValor INT;
  19.   DECLARE @componenteUsarFormula BIT;
  20.   DECLARE @componenteFormula VARCHAR(2000);
  21.   DECLARE @componente_conta_id INT;
  22.   DECLARE @componenteFormulaId INT;
  23.   DECLARE @temContaSuperior BIT;
  24.   DECLARE @componenteRateio BIT;
  25.   DECLARE @componenteRateioId INT;
  26.  
  27.   SET @temContaSuperior = 0;
  28.   SET @valorSelected = 0;
  29.   SET @valorSaldo = 0;
  30.   SET @componenteLinhaSemValor = 0;
  31.   SET @componenteFormula = 0;
  32.  
  33.  
  34.   SELECT
  35.     @config_id = comp.visao_id
  36.    ,@nome = comp.componente
  37.    ,@conta = comp.conta
  38.    ,@conta_superior = comp.conta_superior
  39.    ,@condicao_id = comp.condicao_id
  40.    ,@componenteFormula = comp.formula
  41.    ,@componenteUsarFormula = comp.usar_formula
  42.    ,@componenteRateio = comp.is_rateio
  43.    ,@componenteRateioId = comp.rateio_componente_id
  44.   FROM gsb.visao_componente_list_view comp
  45.   WHERE comp.componente_id = @componente_id;
  46.  
  47.  
  48.   /*verifica se existe uma conta como superior*/
  49.  
  50.   DECLARE comp_cursor CURSOR FOR SELECT
  51.     lc.componente_id
  52.    ,lc.condicao_id
  53.    ,lc.linha_sem_valor
  54.    ,lc.usar_formula
  55.    ,lc.formula
  56.   FROM gsb.visao_componente_list_view lc
  57.   WHERE lc.conta_superior = @conta
  58.   AND lc.visao_id = @config_id;
  59.   OPEN comp_cursor;
  60.   FETCH NEXT FROM comp_cursor INTO @componente_conta_id, @componenteCondicaoNormal, @componenteLinhaSemValor, @componenteUsarFormula, @componenteFormula;
  61.   WHILE @@fetch_status = 0
  62.   BEGIN
  63.   SET @temContaSuperior = 1;
  64.   IF @componenteLinhaSemValor = 0
  65.     SET @valorSaldo = COALESCE((SELECT
  66.         gsb.sum_saldo_visao_componente_udf(@calendario_id, @centro_id, @unidade_id, @componente_conta_id, 1))
  67.     , 0);
  68.   ELSE
  69.   BEGIN
  70.     SET @valorSaldo = COALESCE((SELECT
  71.         gsb.get_saldo_visao_componente_udf(@calendario_id, @centro_id, @unidade_id, @componente_conta_id))
  72.     , 0);
  73.     IF @componenteCondicaoNormal = 1
  74.       SET @valorSaldo = @valorSaldo * -1;
  75.   END
  76.  
  77.   SET @valorSelected = @valorSelected + @valorSaldo;
  78.   FETCH NEXT FROM comp_cursor INTO @componente_conta_id, @componenteCondicaoNormal, @componenteLinhaSemValor, @componenteUsarFormula, @componenteFormula;
  79.  
  80.   END;
  81.   CLOSE comp_cursor;
  82.   DEALLOCATE comp_cursor;
  83.  
  84.   IF @temContaSuperior = 0
  85.   BEGIN;
  86.  
  87.     IF (@componenteRateio = 1) --rateio
  88.     BEGIN;
  89.       DECLARE @valorPerc DECIMAL(19, 5);
  90.       DECLARE @centro_adm_id INT;
  91.       SET @centro_adm_id = 199;
  92.       SET @valorSaldo = COALESCE((SELECT
  93.           gsb.get_saldo_visao_componente_udf(@calendario_id, @centro_adm_id, @unidade_id, @componenteRateioId))
  94.       , 0);
  95.       SET @valorPerc = (SELECT
  96.           [gsb].[get_rateio_percentual_udf](@unidade_id, @centro_id));
  97.  
  98.       SET @valorSelected = @valorSaldo * @valorPerc;
  99.  
  100.  
  101.     END;
  102.     ELSE
  103.     IF (@componenteUsarFormula = 1)
  104.       SET @valorSelected = (SELECT
  105.           gsb.get_saldo_visao_componente_by_formula_udf(@calendario_id, @centro_id, @unidade_id, @componente_id, @config_id, @componenteFormula));
  106.     ELSE
  107.       SET @valorSelected = COALESCE((SELECT
  108.           gsb.sum_saldo_visao_componente_udf(@calendario_id, @centro_id, @unidade_id, @componente_id, DEFAULT))
  109.       , 0);
  110.  
  111.   END;
  112.   RETURN @valorSelected
  113. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement