× Linguagem de Programação ADVPL

Perguntas CALCULO DE BANCO DE HORAS

Mais
11 anos 4 meses atrás #15416 por will3698
Ola boa tarde .

estou customizando um relátorio de espelho de ponto(IMPESP) e não consigo entender o calculo feito pelo protheus para chegar a um total.
a customização consiste em somar todos os eventos proventos e deduzir disso, a soma de todos os eventos descontos. isso me retorna um valor x, MAS no protheus , o valor é maior, ex : 163,23 x 187,87

Já li algo sobre conversão de horas sexgesimal em centesimal, mas existem casos em que a diferença é grande , e acredito que isso nao seja o caso , mas enfim , se alguém souber como o protheus calcula o banco ....

andei analisando o fonte do relatorio de banco de horas , encontrei funções que só a totvs mesmo pra saber oque elas fazem :( # triste

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 4 meses atrás #15551 por will3698
Respondido por will3698 no tópico CALCULO DE BANCO DE HORAS
Ola amigos !
Consegui resolver aqui o problema via query.
por tentativa e erro acabei percebendo como funcionava o calculo . montei duas querys, uma vai somar somente a parte inteira do numero.

a outra vai somar somente a parte decimal .. sobre esta apliquei o calculo de nHoras/60*100

e no final somei o resultado das duas querys , e o total bateu com aquele que o protheus pratica..

tentei fazer via advpl , com a função [somahoras()], mas não consegui , pois meu conhecimento de advpl , é limitado , então o velho e bom ORACLE, me ajudou nessa.

segue o print da query no developer .

estarei postando o fonte corrigido na area de downloads . !


att
Anexos:

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 4 meses atrás #15554 por will3698
Respondido por will3698 no tópico CALCULO DE BANCO DE HORAS
Segue a mesma query, simplificada :)


SELECT (MAX(
(SELECT NVL(SUM((PI_QUANT)-TRUNC(PI_QUANT))/60*100,0)
FROM SPI010
WHERE (PI_MAT BETWEEN '001969' AND '001969')
AND D_E_L_E_T_ <> '*'
AND PI_PD IN ('045','023')
AND PI_FILIAL BETWEEN '01' AND '01') -
(SELECT NVL(SUM((PI_QUANT)-TRUNC(PI_QUANT))/60*100,0)
FROM SPI010
WHERE (PI_MAT BETWEEN '001969' AND '001969')
AND D_E_L_E_T_ <> '*'
AND PI_PD IN ('012','014','007','034','047','048','009','011','099','010','024')
AND PI_FILIAL BETWEEN '01' AND '01') +
(SELECT NVL(SUM(TRUNC(PI_QUANT)),0)
FROM SPI010
WHERE (PI_MAT BETWEEN '001969' AND '001969')
AND D_E_L_E_T_ <> '*'
AND PI_PD IN ('045','023')
AND PI_FILIAL BETWEEN '01' AND '01') -
(SELECT NVL(SUM(TRUNC(PI_QUANT)),0)
FROM SPI010
WHERE (PI_MAT BETWEEN '001969' AND '001969')
AND D_E_L_E_T_ <> '*'
AND PI_PD IN ('012','014','007','034','047','048','009','011','099','010','024')
AND PI_FILIAL BETWEEN '01' AND '01')
)) AS PI_QUANT from SPI010;
Os seguintes usuário(s) disseram Obrigado: sidneyoa

Por favor Acessar ou Registrar para participar da conversa.

Mais
5 anos 3 meses atrás #32743 por sidneyoa
Respondido por sidneyoa no tópico CALCULO DE BANCO DE HORAS
Bom dia, procurei na area de download e não encontrei nada, é somente essa query mesmo?

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.110 segundos
Joomla templates by a4joomla