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