Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Produto:

Solucoes_totvs
SolucaoTOTVS Prestadores de Serviços Terceirização

Solucoes_totvs_cross
SolucaoCross

Solucoes_totvs_parceiros
SolucaoParceiros

Solucoes_totvs_parceirosexptotvs
SolucaoParcsExpsTOTVS

Linha de Produto:

Linhas_totvs
LinhaLinha Protheus

Segmento:

Segmentos_totvs
SegmentoServiços

Módulo:

Modulos_cross_segmentos

Modulos_framework

Modulos_totvs_construcao

Modulos_totvs_juridico

Modulos_totvs_logistica

Modulos_totvs_manufatura

Modulos_totvs_rh

Modulos_totvs_saude

Modulos_totvs_prestadores_de_servicos
ModulosTOTVSPrestadoresdeServicosTOTVS Prestadores de Serviços Terceirização

Função:
País:Brasil
Ticket:
Requisito/Story/Issue (informe o requisito relacionado) :DSERSGS-20554


02. SITUAÇÃO/REQUISITO

Alguns de nossos clientes sentem a necessidade de implementar um cálculo automático de total de horas para um serviço de item extra ao criar um orçamento de serviço.

03. SOLUÇÃO

...

tabsPasso 01, Passo 02, Passo 03, Passo 04
idspasso1,passo2

É possível criar gatilhos que executem uma função customizada para tal finalidade.

04. DEMAIS INFORMAÇÕES

(informação) Abaixo temos um exemplo de gatilho e função que realiza o cálculo da hora total de um serviço, de acordo com o range de datas e horários diários definidos para o posto:

Parâmetros da Função:

dDataIni - Data inicial do range - TFF_DTINI

dDataFim - Data Final do range - TFF_DTFIM

cHoraIni - Hora inicial do range - TFF_HORAIN

cHoraFim - Hora final do range - TFF_HORAFI


(informação) Exemplo de gatilho ao preencher a hora final TFF_HORAFI:

X7_CAMPOX7_REGRAX7_CDOMIN    
TFF_HORAFIgatHoraTot(M->TFF_DTINI, M->TFF_DTFIM, M->TFF_HORAIN, M->TFF_HORAFI)TFF_QTDHRS
Bloco de código
languagecpp
linenumberstrue
#INCLUDE "TOTVS.CH"
#INCLUDE "FWMVCDEF.CH"          
          
User Function gatHoraTot(dDataIni, dDataFim, cHoraIni, cHoraFim)
Local cQtdHoras := "00:00"
Local nHoraIni  := 0
Local nHoraFim  := 0

If !Empty(dDataIni) .And. !Empty(dDataFim) .And.;
    !Empty(cHoraIni) .And. !Empty(cHoraFim)

	//Transforma hora em formato "00:00" para segundos:
    nHoraIni := TimeToSecs(cHoraIni)
    nHoraFim := TimeToSecs(cHoraFim)

	//Calcula a quantidade de horas totais de acordo com o range de datas e horários:
    If nHoraIni > nHoraFim
        cQtdHoras := SecsToTime((dDataFim-dDataIni)*(nHoraIni-nHoraFim))
    Else
        cQtdHoras := SecsToTime((dDataFim-dDataIni)*(nHoraFim-nHoraIni))
    EndIf

	//Tratamento para desconsiderar os segundos e manter picture "00:00"
    cQtdHoras := SubStr(cQtdHoras,1,len(cQtdHoras)-3)
EndIf

Return cQtdHoras

(aviso) Importante: Por padrão o campo TFF_QTDHRS tem o seu tamanho 5 com picture 99:99, sendo assim caso a função retorne um horário maior (como por exemplo "120:00") um erro de gatilho acontecerá. Por essa razão é importante que o tamanho e a picture do campo sejam ajustados de acordo com a usabilidade. (aviso)

...

defaultyes
referenciapasso1

...

defaultno
referenciapasso2

04. DEMAIS INFORMAÇÕES

...

05. ASSUNTOS RELACIONADOS

...

  • Não há