Á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
LinhaLinha Protheus

Segmento:

Segmentos_totvs
SegmentoServiços

Módulo:Prestadores de Serviços
Função:Não há
País:Brasil
Ticket:Não há
Requisito/Story/Issue (informe o requisito relacionado) :DSERSGS-10968


02. SITUAÇÃO/REQUISITO

Criar um gatilho para calcular o valor da próxima parcela considerando a data final digitada. 

03. SOLUÇÃO

Criação de gatilho para o calculo automático do valor da próxima parcela considerando a data final digitada.

Aviso
titleImportante

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

04. DEMAIS INFORMAÇÕES


Informações
titleExemplo de Uso

Crie o seguinte gatilho pelo configurador:


CampoConteúdo
CampoTFF_PERFIM
Sequencia001
Cnt. Dominio

TFF_VLPRPA

TipoPrimário
RegraU_ValFinal()
PosicionaNão
CondiçãoU_ValidRec()


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


Bloco de código
languagetext
titleExemplo de Uso
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
 
User Function ValFinal()
Local nDataIni      := Day(FwFldGet("TFF_PERINI")) //dia de inicio do contrato
Local nDtFimMes     := Day(FwFldGet("TFF_PERFIM")) // dia de fim do contrato
Local nDataFim      := Day(LastDate(FwFldGet("TFF_PERINI"))) // ultimo dia do mes
Local nValor        := FwFldGet("TFF_PRCVEN") // preço de venda do contrato
Local nQtd          := FwFldGet("TFF_QTDVEN") // preço de venda do contrato

//Só realiza o calculo quando o mes e ano do periodo final for o mesmo do periodo inicial
If Year(FwFldGet("TFF_PERFIM")) <> Year(FwFldGet("TFF_PERINI"))
    nValor := (nValor/nDataFim)*((nDataFim-nDataIni)+1)
Else
    If Month(FwFldGet("TFF_PERFIM")) <>  Month(FwFldGet("TFF_PERINI"))
        nValor := (nValor/nDataFim)*((nDataFim-nDataIni)+1)
    Else
        nValor := (nValor/nDataFim)*((nDtFimMes-nDataIni)+1)
    EndIf
EndIf

//Arredonda o valor
nValor := Round(nValor,TamSX3("TFL_VLPRPA")[2]) * nQtd
 
Return nValor
 
User Function ValidRec()
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 ValidRec() é 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 o valor da próxima parcela será reajustado quando o mês e ano do período final for o mesmo do período inicial, realizando o calculo proporcional, caso o mês e ano for diferente do período inicial, o calculo será ajustado para verificar somente o período inicial, ou seja, vai realizar o mesmo calculo para o gatilho existente no período inicial.





05. ASSUNTOS RELACIONADOS



Templatedocumentos


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>