Árvore de páginas

Versões comparadas

Chave

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

01. DADOS GERAIS

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
SegmentoDistribuição
RegionConstrução Projetos
LinhaLinha Protheus

Segmento:

Segmentos_totvs
SegmentoServiços

Módulo:Prestadores de Serviço
Função:TECA740.prw - Orçamento de Serviço
Ticket:Não há.
Requisito/Story/Issue (informe o requisito relacionado) :DSERSGS-10243


02. SITUAÇÃO/REQUISITO

Necessidade da inclusão de gatilho no campo TFF_QTDHRS, durante a inclusão de item extra em contrato de prestação de serviços, para que o sistema utilize o valor de hora extra, cobrado no orçamento, para compor o preço do item extra adicionado.

03. SOLUÇÃO

Criação de função customizada e inclusão de gatilho, utilizando-se dessa função para a geração do preço de venda (campo TFF_PRCVEN) do item adicionado.

04. DEMAIS INFORMAÇÕES

Passo a passo de como implementar a solução:

1) Crie e compile a função customizada, que será utilizada no gatilho. Abaixo, exemplo de função que realiza taréfa similar.

Bloco de código
languagetext
themeEclipse
titleExemplo de função que recupera valor de Hora extra
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
/*
    @description Exemplo de função para recuperação do valor de hora extra
    cadastrado na tabela TFU, de um determinado orçamento de serviço.
    @param cCodTfj, string, código do orçamento de serviço
    @param cQtdHrs, string, quantidade de horas no formato string 'HH:MM'
    @param cCodAbn, string, código do motivo de manutenção, cadastrada na tabela TFU, campo TFU_CODABN
*/
USER FUNCTION GTETFU(cCodTfj,cQtdHrs,cCodAbn)

Local nRet      := 0
Local cQry      := ''
Local cTmpAlias := 'TFUTMP'
// Conversão do formato HH:MM para formato decimal
Local nQtdhrs   := VAL(substr(cQtdHrs,1,2)) + val(substr(cQtdHrs,4,2))/60

cQry += "SELECT DISTINCT TFU_CODIGO, TFU_CODTFF, TFU_CODABN, TFU_VALOR "
cQry += "FROM "+retSqlName("TFJ")+" " 
cQry += "INNER JOIN "+retSqlName("TFL")+" ON TFL_CODPAI = TFJ_CODIGO "
cQry += "AND TFJ_FILIAL = '"+xFilial('TFJ')+"' " 
cQry += "AND TFL_FILIAL = '"+xFilial('TFL')+"' " 
cQry += "INNER JOIN "+retSqlName("TFF")+"   ON TFF_CODPAI = TFL_CODIGO "
cQry += "INNER JOIN "+retSqlName("TFU")+" ON TFU_CODTFF = TFF_COD "
cQry += "WHERE TFJ_CODIGO = '"+cCodTfj+"' AND TFU_CODABN = '"+cCodAbn+"' "

cQry := ChangeQuery(cQry)

dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQry),cTmpAlias,.T.,.T.)

// Recuperando um único valor, relacionado com o motivo de manutenção (cCodAbn)
If (cTmpAlias)->(!EOF())
    nRet := (cTmpAlias)->TFU_VALOR * nQtdhrs
EndIf

(cTmpAlias)->(DBCLOSEAREA())

return nRet

2) Relize a inclusão do gatilho no campo TFF_QTDHRS, conforme a seguir:

2.1) Acesse o configurador (SIGACFG);

2.2) Acesse a opção Gatilhos, em Base de dados → Dicionário → Gatilhos

2.3) Selecione a empresa, clique em Gatilhos e em seguida, na opção de incluir 

2.4) Preencha as informações, referentes ao gatilho, conforme a seguir, substituindo, na regra, a expreção /*abncod*/ pelo código do motivo de manutenção que deseja utilizar na busca do valor da hora extra, exemplo: "000003"

Campo: TFF_QTDHRS
Sequencia: 001
Cont. Dominio: TFF_PRCVEN
Tipo: 1 - Primário
Regra: IIF(M->TFF_COBCTR=="2",U_GTETFU(M→TFJ_CODIGO,M→TFF_QTDHRS, /*abncod*/),M->TFF_PRCVEN) 
Posiciona: 2-Não
Alias: TFF

Observação: A expressão utilizada na opção regra garante que o gatilho terá o efeito apenas quando o registro tratar-se de um item extra. Para utilizar o nosso exemplo, é necessário substituir, na expressão, o conteúdo /*abncod*/ por uma string válida de um código de manutenção, exemplo: "000003", que será utilizado no orçamento de serviços para fins de cálculo de horas extras. 

2.5) Após a inclusão do gatilho, realize o processo de inclusão de item extra e verifique que ao alterar o valor do campo TFF_QTDHRS de uma linha, o campo TFF_PRCVEN receberá o valor do cálculo realizado na user function utilizada. 

05. ASSUNTOS RELACIONADOS

  • Não há.


HTML
<style>
div.theme-default .ia-splitter #main {
    margin-left: 0px;
}
.ia-fixed-sidebar, .ia-splitter-left {
    display: none;
}
#main {
    padding-left: 10px;
    padding-right: 10px;
    overflow-x: hidden;
}

.aui-header-primary .aui-nav,  .aui-page-panel {
    margin-left: 0px !important;
}
.aui-header-primary .aui-nav {
    margin-left: 0px !important;
}

.aui-tabs.horizontal-tabs>.tabs-menu>.menu-item.active-tab a::after { 
	background: #FF9900; !important 
}

.menu-item.active-tab { 
	border-bottom: none !important; 
}

</style>