Especificação do Cálculo de valor de atendimento
Índice
Introdução
Este documento tem por base especificar a maneira como são calculados os atendimentos de acordo com o tipo da escola.
Objetivo
As especificações descritas nesse documento visam esclarecer a fórmula utililazada para cálculo do atendimento realizado pelas escolas, uma vez que o mesmo difere dependendo do programa que a escola pertence, ou pertencia, no momento do atendimento.
Escolas do tipo GSI
Quando o atendimento for realizado por escolas do tipo GSI o mesmo poderá ser armazenado tanto na tabela Atendimento quanto na tabela AtendimentoNaoParticipante. Uma vez armazenado na tabela AtendimentoNaoParticipante, o campo referente ao tipo de escola armazenará obrigatoriamente valor 1 (teId = 1).
Tabela Atendimento
Soma do valor taValorAtendimento, conforme exemplo abaixo:
SELECT SUM(taValorAtendimento) TotalAtendimento
FROM Atendimento at WITH(NOLOCK)
INNER JOIN TipoAtendimento ta WITH(NOLOCK) ON at.taID = ta.taID
Tabela AtendimentoNaoParticipante
Soma do valor taValorAtendimento onde o tipo teId = 1, conforme exemplo abaixo:
SELECT SUM(taValorAtendimento) TotalAtendimento
FROM AtendimentoNaoParticipante at WITH(NOLOCK)
INNER JOIN TipoAtendimentoNaoParticipante ta WITH(NOLOCK) ON at.taID = ta.taID
WHERE at.teID = 1
Escola do tipo SAI
Quando o atendimento for realizado por escolas do tipo SAI o mesmo será armazenado somente na tabela AtendimentoNaoParticipante e com tipo de escola (teId = 2). Escolas do tipo SAI possuem uma particularide para a soma dos valores de atendimentos conforme exemplo abaixo:
Tabela AtendimentoNaoParticipante
Atendimentos do tipo 1-Livre, 2-Rede de Projetos, 3-Aula e 4-Impressão, possuem calculo diferente do atendimento do tipo 5-ativação de Usuário. Com exceção do tipo 5, é realizada a fórmula (horafinal – horainicial)/30 (1 atendimento equivale a 30 minutos), já para atendimento do tipo 5 será feita a soma do campo taValorAtendimento conforme exemplo abaixo.
SELECT CASE WHEN at.taID = 5 THEN SUM(ISNULL(ta.taValorAtendimento,0))
ELSE SUM(CEILING(ISNULL(DATEDIFF(MINUTE, at.at_hora_inicio,at.at_hora_final), 0)/30.0))
END
ELSE 0
END AS TotalAtendimento
FROM AtendimentoNaoParticipante at WITH(NOLOCK)
INNER JOIN TipoAtendimentoNaoParticipante ta WITH(NOLOCK) ON at.taID = ta.taID
WHERE at.teID = 2