Especificação do Cálculo de valor de atendimento

De MSTECH wiki
Ir para: navegação, pesquisa

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