01. DADOS GERAIS

Produto:

Linha de Produto:

Segmento:

Módulo:Prestadores de Serviços Terceirização
Função:TECA740.PRW
Ticket:Não há
Requisito/Story/Issue (informe o requisito relacionado) :DSERSGS-10241


02. SITUAÇÃO/REQUISITO

Ao gerar um orçamento de serviço, o calculo para a primeira parcela de um contrato é necessário que o mesmo seja informado manualmente.

03. SOLUÇÃO

Criação de gatilho para o calculo automático do valor da primeira parcela, quando é informado o período inicial. 

Essa implementação só será executada para contratos recorrentes(TFJ_CNTREC) e não terá efeito para itens extras.


04. DEMAIS INFORMAÇÕES


Crie o seguinte gatilho pelo configurador.


CampoConteúdo
CampoTFF_PERINI
Sequencia001
Cnt. Dominio

TFF_VLPRPA

TipoPrimário
RegraU_CalcValor()
PosicionaNão
CondicaoU_Condicao()


Após a criação do gatilho, inclua as seguintes funções (user function).


#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"

User Function CalcValor()
Local nDataIni      := Day(FwFldGet("TFF_PERINI")) //dia de inicio do contrato
Local nDataFim      :=  Day(LastDate(FwFldGet("TFF_PERINI"))) // ultimo dia do mes
Local nValor        := FwFldGet("TFF_PRCVEN"// preço de venda do contrato

nValor := (nValor/nDataFim)*((nDataFim-nDataIni)+1)

Return nValor


User Function Condicao()
Local lRet  := .F.
Local lIsRecorrente := FwFldGet("TFJ_CNTREC") == "1"
Local lIsItenExtra  := FwfldGet("TFF_COBCTR") == "2"

//Só será executado para contratos recorrentes e não será executado para item extra
If lIsRecorrente .And. !lIsItenExtra
    lRet := .T.
EndIf

Return lRet

A função Condição() é criada para garantir que o gatilho não vai ser executado para contratos não recorrentes e itens extras


Se a condição criada for positiva, o gatilho será chamado e o calculo será feito.

Com isso ao ser informado uma data de inicio do contrato(TFF_PERINI), o calculo será feito conforme o dia e o valor(TFF_PRCVEN).


05. ASSUNTOS RELACIONADOS




<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>