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 consumo é 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 |
---|---|
Campo | TFH_PERFIM |
Sequencia | 001 |
Cnt. Dominio | TFH_VLPRPA |
Tipo | Primário |
Regra | U_VALFIMMC() |
Posiciona | Não |
Condicao | U_VALIDMC() |
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 ValFimMC() Local nDataIni := Day(FwFldGet("TFH_PERINI")) //dia de inicio do contrato Local nDtFimMes := Day(FwFldGet("TFH_PERFIM")) // dia de fim do contrato Local nMes := Month(FwFldGet("TFH_PERFIM")) Local nAno := Year(FwFldGet("TFH_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("TFH_PERFIM"))) // primeiro dia do mes Local nValor := FwFldGet("TFH_PRCVEN") // preço de venda do contrato Local nQtd := FwFldGet("TFH_QTDVEN") // preço de venda do contrato Local nValProx := FwFldGet("TFH_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("TFH_PERFIM")) .And. Year(dDataBase) == Year(FwFldGet("TFH_PERFIM")) .And. Month(FwFldGet("TFH_PERFIM")) <> Month(FwFldGet("TFH_PERINI")) nValor := (nValor/nDtPerfim)*((nDtFimMes-nDtIniPer)+1) Else lAltera := .F. If Year(FwFldGet("TFH_PERFIM")) <> Year(FwFldGet("TFH_PERINI")) If nDtFimMes == Day(LastDate(FwFldGet("TFH_PERFIM"))) nValor := (nValor/nDataFim)*((nDataFim-1)+1) Else nValor := (nValor/nDataFim) * nDtFimMes EndIf Else If Month(FwFldGet("TFH_PERFIM")) <> Month(FwFldGet("TFH_PERINI")) If nDtFimMes == Day(LastDate(FwFldGet("TFH_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("TFH_PERFIM")) == Month(FwFldGet("TFH_PERINI")) .And. Year(FwFldGet("TFH_PERFIM")) == Year(FwFldGet("TFH_PERINI")) If nDtFimMes == LastDate(FwFldGet("TFH_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("TFH", FwFldGet("TFH_COD"), cCompet, nValor, cCodTFJ,cCompetAnt,nDtFimMes < Day(LastDate(FwFldGet("TFH_PERFIM")))) EndIf If !lAltera nValor := nValProx EndIf FWModelActive(oModel) Return nValor User Function ValidMC() Local lRet := .F. Local lIsRecorrente := FwFldGet("TFJ_CNTREC") == "1" Local lIsItenExtra := FwfldGet("TFH_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á
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas