Árvore de páginas


01. DADOS GERAIS

Produto:

TOTVS Prestadores de Serviços Terceirização

Linha de Produto:

Linha Protheus

Segmento:

Serviços

Módulo:Terceirização(SIGATEC)
Função:TECA740.PRW
País:Brasil
Ticket:Não há
Requisito/Story/Issue (informe o requisito relacionado) :DSERSGS-13292


02. SITUAÇÃO/REQUISITO

Ao informar uma data final no material de implantação é necessário que o calculo de pro-rata seja feito de forma manual e também a criação do cronograma de cobrança para o mesmo.

03. SOLUÇÃO


Implementado gatilho para realizar o calculo e a criação do cronograma de cobrança para essa competência.

Para a utilização da implementação será necessário a criação do gatilho de forma manual através do modulo Configurador(SIGACFG)


Crie o seguinte gatilho pelo configurador.

Campo

Conteúdo

CampoTFG_PERFIM
Sequencia001
Cnt. Dominio

TFG_VLPRPA

TipoPrimário
RegraU_ValFimMI()
PosicionaNão
CondicaoU_ValidMI()

Importante

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

#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
  
User Function ValFimMI()
Local nDataIni      := Day(FwFldGet("TFG_PERINI")) //dia de inicio do contrato
Local nDtFimMes     := Day(FwFldGet("TFG_PERFIM")) // dia de fim do contrato
Local nMes          := Month(FwFldGet("TFG_PERFIM"))
Local nAno          := Year(FwFldGet("TFG_PERFIM"))
Local cCompet       := ""
Local cCodTFJ       := FwFldGet("TFJ_CODIGO")
Local nDataFim      := 30  // ultimo dia do mes
Local nDtPerfim     := 30  // ultimo dia do mes
Local nDtIniPer     := Day(FirstDate(FwFldGet("TFG_PERFIM"))) // primeiro dia do mes
Local nValor        := FwFldGet("TFG_PRCVEN") // preço de venda do contrato
Local nQtd          := FwFldGet("TFG_QTDVEN") // preço de venda do contrato
Local nValProx      := FwFldGet("TFG_VLPRPA") 
Local cCompetAnt    := At740GtPer()
Local nMesAnt       := 0
Local nAnoAnt       := 0
Local oModel        := FwModelActive()
Local lAltera       := .T.
 
If !Empty(cCompetAnt)
    nMesAnt := Month(cCompetAnt)
    nAnoAnt := Year(cCompetAnt)
    If Len(cValToChar(nMesAnt)) == 1
        cCompetAnt  := "0" + cValToChar(nMesAnt) + "/" + cValToChar(nAnoAnt)
    Else
        cCompetAnt := cValToChar(nMesAnt) + "/" + cValToChar(nAnoAnt)
    EndIf
EndIf
 
If Len(cValToChar(nMes)) == 1
    cCompet  := "0" + cValToChar(nMes) + "/" + cValToChar(nAno)
Else
    cCompet := cValToChar(nMes) + "/" + cValToChar(nAno)
EndIf
 
If isInCallStack("TECA870")
    //Só realiza o calculo quando o mes e ano do periodo final for o mesmo do periodo inicial
    If Month(dDataBase) == Month(FwFldGet("TFG_PERFIM")) .And. Year(dDataBase) == Year(FwFldGet("TFG_PERFIM")) .And. Month(FwFldGet("TFG_PERFIM")) <> Month(FwFldGet("TFG_PERINI"))  
        nValor := (nValor/nDtPerfim)*((nDtFimMes-nDtIniPer)+1)  
    Else
        lAltera := .F.
        If Year(FwFldGet("TFG_PERFIM")) <> Year(FwFldGet("TFG_PERINI"))
            If nDtFimMes == Day(LastDate(FwFldGet("TFG_PERFIM")))
                nValor := (nValor/nDataFim)*((nDataFim-1)+1)
            Else
                nValor := (nValor/nDataFim) * nDtFimMes
            EndIf   
        Else
            If Month(FwFldGet("TFG_PERFIM")) <> Month(FwFldGet("TFG_PERINI"))
                If nDtFimMes == Day(LastDate(FwFldGet("TFG_PERFIM")))
                    nValor := (nValor/nDataFim)*((nDataFim-1)+1)
                Else
                    nValor := (nValor/nDataFim) * nDtFimMes
                EndIf   
            Else
                nValor := (nValor/nDataFim)*((nDtFimMes-nDataIni)+1)
            EndIf  
        EndIf
    EndIf
Else
     If Month(FwFldGet("TFG_PERFIM")) == Month(FwFldGet("TFG_PERINI")) .And. Year(FwFldGet("TFG_PERFIM")) == Year(FwFldGet("TFG_PERINI"))
        If nDtFimMes == LastDate(FwFldGet("TFG_PERFIM"))
            nValor := (nValor/nDataFim)*30
        Else
            nValor := (nValor/nDataFim)*((nDtFimMes-nDataIni)+1)
        EndIf   
     Else
        nValor := (nValor/nDataFim) * nDtFimMes
        lAltera := .F.
    EndIf
EndIf
  
//Arredonda o valor
nValor := nValor * nQtd
nValor := Round(nValor,TamSX3("TFL_VLPRPA")[2])
 
If nValor > 0
    //Atualiza o cronograma
    At740IAuto("TFG", FwFldGet("TFG_COD"), cCompet, nValor, cCodTFJ,cCompetAnt,nDtFimMes < Day(LastDate(FwFldGet("TFG_PERFIM"))))
EndIf
 
If !lAltera
    nValor := nValProx
EndIf
 
FWModelActive(oModel)
 
Return nValor
   
User Function ValidMI()
Local lRet  := .F.
Local lIsRecorrente := FwFldGet("TFJ_CNTREC") == "1"
Local lIsItenExtra  := FwfldGet("TFG_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


04. DEMAIS INFORMAÇÕES

Não há

05. ASSUNTOS RELACIONADOS

  • Não há