Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ALTER FUNCTION [gsb].[get_saldo_visao_componente_udf] (@calendario_id INT, @centro_id INT, @unidade_id INT, @componente_id INT)
- RETURNS DECIMAL(19, 5)
- AS
- BEGIN
- DECLARE @conta VARCHAR(50);
- DECLARE @conta_superior VARCHAR(50);
- DECLARE @condicao_id INT;
- DECLARE @nome VARCHAR(200);
- DECLARE @valorSelected DECIMAL(19, 5);
- DECLARE @valorSaldo DECIMAL(19, 5);
- DECLARE @config_id INT;
- DECLARE @componenteCondicaoNormal INT;
- DECLARE @componenteLinhaSemValor INT;
- DECLARE @componenteUsarFormula BIT;
- DECLARE @componenteFormula VARCHAR(2000);
- DECLARE @componente_conta_id INT;
- DECLARE @componenteFormulaId INT;
- DECLARE @temContaSuperior BIT;
- DECLARE @componenteRateio BIT;
- DECLARE @componenteRateioId INT;
- SET @temContaSuperior = 0;
- SET @valorSelected = 0;
- SET @valorSaldo = 0;
- SET @componenteLinhaSemValor = 0;
- SET @componenteFormula = 0;
- SELECT
- @config_id = comp.visao_id
- ,@nome = comp.componente
- ,@conta = comp.conta
- ,@conta_superior = comp.conta_superior
- ,@condicao_id = comp.condicao_id
- ,@componenteFormula = comp.formula
- ,@componenteUsarFormula = comp.usar_formula
- ,@componenteRateio = comp.is_rateio
- ,@componenteRateioId = comp.rateio_componente_id
- FROM gsb.visao_componente_list_view comp
- WHERE comp.componente_id = @componente_id;
- /*verifica se existe uma conta como superior*/
- DECLARE comp_cursor CURSOR FOR SELECT
- lc.componente_id
- ,lc.condicao_id
- ,lc.linha_sem_valor
- ,lc.usar_formula
- ,lc.formula
- FROM gsb.visao_componente_list_view lc
- WHERE lc.conta_superior = @conta
- AND lc.visao_id = @config_id;
- OPEN comp_cursor;
- FETCH NEXT FROM comp_cursor INTO @componente_conta_id, @componenteCondicaoNormal, @componenteLinhaSemValor, @componenteUsarFormula, @componenteFormula;
- WHILE @@fetch_status = 0
- BEGIN
- SET @temContaSuperior = 1;
- IF @componenteLinhaSemValor = 0
- SET @valorSaldo = COALESCE((SELECT
- gsb.sum_saldo_visao_componente_udf(@calendario_id, @centro_id, @unidade_id, @componente_conta_id, 1))
- , 0);
- ELSE
- BEGIN
- SET @valorSaldo = COALESCE((SELECT
- gsb.get_saldo_visao_componente_udf(@calendario_id, @centro_id, @unidade_id, @componente_conta_id))
- , 0);
- IF @componenteCondicaoNormal = 1
- SET @valorSaldo = @valorSaldo * -1;
- END
- SET @valorSelected = @valorSelected + @valorSaldo;
- FETCH NEXT FROM comp_cursor INTO @componente_conta_id, @componenteCondicaoNormal, @componenteLinhaSemValor, @componenteUsarFormula, @componenteFormula;
- END;
- CLOSE comp_cursor;
- DEALLOCATE comp_cursor;
- IF @temContaSuperior = 0
- BEGIN;
- IF (@componenteRateio = 1) --rateio
- BEGIN;
- DECLARE @valorPerc DECIMAL(19, 5);
- DECLARE @centro_adm_id INT;
- SET @centro_adm_id = 199;
- SET @valorSaldo = COALESCE((SELECT
- gsb.get_saldo_visao_componente_udf(@calendario_id, @centro_adm_id, @unidade_id, @componenteRateioId))
- , 0);
- SET @valorPerc = (SELECT
- [gsb].[get_rateio_percentual_udf](@unidade_id, @centro_id));
- SET @valorSelected = @valorSaldo * @valorPerc;
- END;
- ELSE
- IF (@componenteUsarFormula = 1)
- SET @valorSelected = (SELECT
- gsb.get_saldo_visao_componente_by_formula_udf(@calendario_id, @centro_id, @unidade_id, @componente_id, @config_id, @componenteFormula));
- ELSE
- SET @valorSelected = COALESCE((SELECT
- gsb.sum_saldo_visao_componente_udf(@calendario_id, @centro_id, @unidade_id, @componente_id, DEFAULT))
- , 0);
- END;
- RETURN @valorSelected
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement