Estrutura completa de uma SP personalizada _COMISSAO_APURAR

Exemplo de Estrutura de SP personalizada _COMISSAO_APURAR

 

-- primeiramente verificamos se está tudo OK com nosso acerto, gerando erros se não existir, se já estiver concluído, ou se faltar algum passo anterior

EXEC COMISSAO_VERIFICAR @ID

 

-- reinicia os valores da apuração de comissão totalizados em seu cabeçalho, pois mais abaixo iremos somar cada passo da apuração

EXEC COMISSAO_ZERAR @ID

 

-- Para simplificar, teremos uma SP COMISSAO_VERIFICAR_E_ZERAR, que faz os dois trabalhos juntamente. Fizemos assim aqui para ilustrar cada passo.

 

 

Apuração

 
Pedidos de Venda, ou itens dos pedidos

EXEC COMISSAO_APURAR_PEDIDO_VENDA @ID

   OU

EXEC COMISSAO_APURAR_PEDIDO_VENDA_ITEM @ID

 

/*

Podemos entender que os títulos e baixa são reflexos do faturamento, e poderemos ter descontos de frete, ou comissão diferenciada por item, que geraram os valores cobrados nos títulos/recebidos nas baixas. Então, "por baixo dos panos" teremos de fazer uma apuração "oculta" de notas fiscais, para calcularmos valores da base de cálculo e de comissão, e então ratear entre os recebimentos e os títulos estornados.

Então quando tivermos apuração de comissão sobre recebimentos/estornos, precisaremos disparar procedures de cálculo sobre notas fiscais, ou sobre itens, para então dar seguimento à de recebimentos/estornos. No entanto, a apuração das notas deverá ser feita sobre os eventos financeiros, ou seja, do recebimento, ou do título estornado, e então deveremos encontrar as notas desses eventos, para entar efetuarmos os cálculos de comissão personalizados.

A estrutura então nestes casos, será de apurar o recebimento e estornos, com base na data do acerto de comissões, buscando as notas desses recebimentos e estornos, e então aplicar as rotinas de cálculo de comissão sobre os faturamento. Após, disparar a procedure que rateia os valores totais, descontos, base e comissão entre os recebimentos e os títulos.

*/

 

Apurar os Recebimentos

EXEC COMISSAO_APURAR_RECEBIMENTO @ID

 

Apurar os Estornos

EXEC COMISSAO_APURAR_ESTORNO @ID

 

Notas Fiscais, ou itens das notas

EXEC COMISSAO_APURAR_NOTA_FISCAL @ID

    OU

EXEC COMISSAO_APURAR_NOTA_FISCAL_ITEM @ID

 

 

Antes dos Cálculos

-- determina o tipo de cálculo que deverá ser feito obtendo o tipo da pessoa da apuração de comissão (R = REPRESENTANTE, V = VENDEDOR, G = GUIA, C = CLIENTE/COMISSÃO RECEBIDA DE TERCEIROS).

SELECT @TIPO = PESSOA_TIPO FROM ACERTO_COMISSAO WHERE ID = @ID

 

-- Essa mesma estrutura poderá ser usada para apuração de comissões pagas a terceiros, a exemplo, royalties. Isso não foi tratado inicialmente nesta documentação, mas bastaria criar um novo tipo T, por exemplo, e tratar esse tipo nas SP padronizadas nos filtros WHERE de pedidos, notas, recebimentos, e depois nos cálculos abaixo.

 

Cálculos

 
Pedidos de Venda

-- executar aqui as SP que executam cálculos personalizados sobre os pedidos de venda, ou sobre os itens dos pedidos de venda, de acordo com o tipo da pessoa, incluindo os IFs de acordo com a necessidade de cálculo do cliente

{

IF @TIPO = 'R' EXEC _COMISSAO_REPRESENTANTE_CALCULAR_PEDIDO_VENDA @ID

IF @TIPO = 'V' EXEC _COMISSAO_VENDEDOR_CALCULAR_PEDIDO_VENDA @ID

IF @TIPO = 'G' EXEC _COMISSAO_GUIA_CALCULAR_PEDIDO_VENDA @ID

}

OU

{

IF @TIPO = 'R' EXEC _COMISSAO_REPRESENTANTE_CALCULAR_PEDIDO_VENDA_ITEM @ID

-- caso os cálculos sejam feitos sobre os itens do pedido de venda, após concluir o cálculo sobre os itens você deverá disparar a SP abaixo para que totalize o valor dos descontos por item, a base de cálculo, e valor de comissão por item no cabeçalho da apuração sobre pedido de venda. E Além disso, provavelmente haverá a necessidade de calcular algo a mais no cabeçalho, ou pelo menos disparar a SP de finalização do cálculo para que preencha os campos que possívelmente não tenham sido calculados por suas procedures (criadas pelo consultor)

EXEC COMISSAO_TOTALIZAR_PEDIDO_VENDA_ITEM @ID

}

 

-- garante que os valores calculados no cabeçalho estejam finalizados

EXEC COMISSAO_FINALIZAR_PEDIDO_VENDA @ID

  • caso VALOR_TOTAL_DESCONTOS seja NULO, faz esse cálculo = FRETE + OUTROS DESCONTOS + DESCONTO_ITENS
  • caso VALOR_LIQUIDO seja NULO, faz esse cálculo = BRUTO - VALOR_TOTAL_DESCONTOS
  • caso VALOR_REDUCAO_BASE seja nulo, faz o cálculo VALOR_LIQUIDO * PERCENTUAL_REDUCAO_BASE
  • caso VALOR_BASE_CALCULO seja nula, faz o cálculo VALOR_LIQUIDO - VALOR_REDUCAO_BASE
  • caso VALOR_COMISSAO seja nulo, e tenha percentual de comissão, faz o cálculo VALOR_BASE_CALCULO * PERCENTUAL
 
Notas Fiscais

-- executar aqui as SP que executam cálculos personalizados sobre as notas fiscais, ou sobre os itens das notas fiscais, de acordo com o tipo da pessoa, incluindo os IFs de acordo com a necessidade de cálculo do cliente

{

IF @TIPO = 'R' EXEC _COMISSAO_REPRESENTANTE_CALCULAR_NOTA_FISCAL @ID

IF @TIPO = 'V' EXEC _COMISSAO_VENDEDOR_CALCULAR_NOTA_FISCAL @ID

IF @TIPO = 'G' EXEC _COMISSAO_GUIA_CALCULAR_NOTA_FISCAL @ID

}

OU

{

IF @TIPO = 'R' EXEC _COMISSAO_REPRESENTANTE_CALCULAR_NOTA_FISCAL_ITEM @ID

 

-- caso os cálculos sejam feitos sobre os itens da nota fiscal, após concluir o cálculo sobre os itens deveremos disparar a SP abaixo para que totalize o valor dos descontos por item, a base de cálculo, e valor de comissão por item no cabeçalho da apuração sobre nota fiscal. E Além disso, provavelmente haverá a necessidade de calcular algo a mais no cabeçalho, ou pelo menos disparar a SP de finalização do cálculo para que preencha os campos que possívelmente não tenham sido calculados por suas procedures (criadas pelo consultor)

EXEC COMISSAO_TOTALIZAR_NOTA_FISCAL_ITEM @ID

}

 

-- garante que os valores calculados no cabeçalho estejam finalizados

EXEC COMISSAO_FINALIZAR_NOTA_FISCAL @ID

  • caso VALOR_TOTAL_DESCONTOS seja NULO, faz esse cálculo = VALOR_FRETE + VALOR_OUTROS DESCONTOS + VALOR_DESCONTO_ITENS
  • caso VALOR_LIQUIDO seja NULO, faz esse cálculo = BRUTO - VALOR_TOTAL_DESCONTOS
  • caso VALOR_REDUCAO_BASE seja nulo, faz o cálculo VALOR_LIQUIDO * PERCENTUAL_REDUCAO_BASE
  • caso VALOR_BASE_CALCULO seja nula, faz o cálculo VALOR_LIQUIDO - VALOR_REDUCAO_BASE
  • caso VALOR_COMISSAO seja nulo, e tenha percentual de comissão, faz o cálculo VALOR_BASE_CALCULO * PERCENTUAL

 

 

Antes dos Cálculos de Recebimentos e Estornos

-- Conforme visto no comentário lá em cima a respeito do recebimento/estorno ser um reflexo do faturamento, quando nossa apuração incidir sobre recebimentos/estornos vamos disparar a procedure que rateia proporcionalmente os valores de faturamento sobre os recebimentos/estornos apurados. Desta forma teremos valores brutos já rateados nos títulos/estornos apurados acima, assim como descontos de fretes, outros descontos, redução de base, etc.

EXEC COMISSAO_RATEAR_RECEBIMENTO_ESTORNO

 

 
Recebimentos

-- executar aqui as SP que executam cálculos personalizados sobre os recebimentos, de acordo com o tipo da pessoa, incluindo os IFs de acordo com a necessidade de cálculo do cliente

IF @TIPO = 'R' EXEC _COMISSAO_REPRESENTANTE_CALCULAR_RECEBIMENTO @ID

IF @TIPO = 'V' EXEC _COMISSAO_VENDEDOR_CALCULAR_RECEBIMENTO @ID

IF @TIPO = 'G' EXEC _COMISSAO_GUIA_CALCULAR_RECEBIMENTO @ID

 

-- garante que os valores calculados no cabeçalho estejam finalizados

EXEC COMISSAO_FINALIZAR_RECEBIMENTO @ID

  • caso VALOR_COMISSAO seja nulo, e tenha percentual de comissão, faz o cálculo VALOR_BASE_CALCULO * PERCENTUAL

 

Estornos

-- executar aqui as SP que executam cálculos personalizados sobre os estornos, de acordo com o tipo da pessoa, incluindo os IFs de acordo com a necessidade de cálculo do cliente

IF @TIPO = 'R' EXEC _COMISSAO_REPRESENTANTE_CALCULAR_ESTORNO @ID

IF @TIPO = 'V' EXEC _COMISSAO_VENDEDOR_CALCULAR_ESTORNO @ID

IF @TIPO = 'G' EXEC _COMISSAO_GUIA_CALCULAR_ESTORNO @ID

 

-- garante que os valores calculados no cabeçalho estejam finalizados

EXEC COMISSAO_FINALIZAR_ESTORNO @ID

  • caso VALOR_COMISSAO seja nulo, e tenha percentual de comissão, faz o cálculo VALOR_BASE_CALCULO * PERCENTUAL

 

-- A finalização dos cálculos também poderá ser disparada de forma unificada, através de

EXEC COMISSAO_FINALIZAR_CALCULOS

 

Totalização

 
Pedidos de Venda

-- soma os valores brutos, frete, descontos, de comissão no cabeçalho da apuração

EXEC COMISSAO_SOMAR_PEDIDO_VENDA @ID

 
Notas Fiscais

-- soma os valores brutos, frete, descontos, de comissão no cabeçalho da apuração

EXEC COMISSAO_SOMAR_NOTA_FISCAL @ID

 
Recebimentos

-- soma os valores brutos, frete, descontos, de comissão no cabeçalho da apuração

EXEC COMISSAO_SOMAR_RECEBIMENTO @ID

 

Estornos

-- soma os valores brutos, frete, descontos, de comissão no cabeçalho da apuração

EXEC COMISSAO_SOMAR_ESTORNO @ID

 

-- Novamente detalhamos os passos acima, mas teremos uma SP que fará todo esse trabalho de forma unificada, simplificando o corpo da SP de apuração

EXEC COMISSAO_SOMAR_CALCULOS @I

Alguma dúvida?
Abrir chamado