Histórico da Página
01. DADOS GERAIS
Produto: |
| ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Linha de Produto: |
| ||||||||||||||||
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 |
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:
...
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
#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,cCodAbncCodAbn, 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 Local nQtdhrs 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 := oModelRH:GetValue("TFF_PRCVEN") EndIf return nRet |
2) Relize Realize a inclusão do gatilho no campo TFF_QTDHRS, conforme a seguir:
...
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->TFFTFJ→TFJ_PRCVENCODIGO)
Posiciona: 2-Não
Alias: TFF
...
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> |