Produto: | Solucoes_totvs |
---|
Solucao | TOTVS Prestadores de Serviços Terceirização |
---|
|
Solucoes_totvs_parceirosexptotvs |
---|
|
|
---|
Linha de Produto: | Linhas_totvs |
---|
Segmento | Distribuição |
---|
Region | Construção Projetos |
---|
Linha | Linha Protheus |
---|
|
|
---|
Segmento: | |
---|
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 |
---|
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.
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.
Passo a passo de como implementar a solução:
...
Bloco de código |
---|
language | text |
---|
theme | Midnight |
---|
title | Exemplo de função que recupera valor de Hora extra |
---|
linenumbers | true |
---|
|
#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(cCodAbn, cCodTfj)
Local nRet := 0
Local cQry := ''
Local cTmpAlias := 'TFUTMP'
Local lCobCtr := .F.
Local cQtdHrs := ""
Local nQtdhrs := 0
Local oModel := FWMODELACTIVE()
Local oModelRH := oModel:GetModel('TFF_RH')
lCobCtr := oModelRH:GetValue('TFF_COBCTR') == '1'
cQtdHrs := oModelRH:GetValue('TFF_QTDHRS')
If !lCobCtr
// Conversão do formato HH:MM para formato decimal
nQtdHrs := VAL(substr(cQtdHrs,1,2)) + valVAL(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())
Else
nRet := FWFLDGEToModelRH:GetValue("TFF_PRCVEN")
EndIf
return nRet
|
2) Relize Realize a inclusão do gatilho no campo TFF_QTDHRS, conforme a seguir:
...
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.
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>
|