Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Estratégia de Desenvolvimento e Liberação

 

Produto

Protheus

Release que está sendo desenvolvido

12.1.6

Possui Réplica?

( )Sim (X)Não

Qual a versão?

Totvs 12

 

Âncora
_Toc380063576
_Toc380063576
Objetivo

Visando atender usuários que necessitam realizar reajuste de contratos em lote, será desenvolvida a rotina de reajuste automático de contratos. Esta nova rotina permitirá a execução ou agendamento do processo de reajuste de contrato, gerando histórico dos itens garantindo fácil visualização e entendimento das alterações realizadas utilizando o sistema ou gerando relatórios.
Tem por objetivo ainda a inclusão da inovação de reajuste retroativo, onde medições encerradas participarão do reajuste, e as medições posteriores ao reajuste devem ser reajustadas com a diferença entre o valor original e o reajustado das anteriores.

Definição da Regra de Negócio

 

Regras

Rotina

Inclusões no ATUSX (As informações detalhadas referentes a este item encontram-se na sessão "Dicionário de Dados" deste documento).


Parametros:
MV_CNRJREV – Parametro responsável por informar se será gerada revisão e aprovação automática (exceto para contrato com alçadas) ao gerar revisão automática.

MV_CNRJMNT – Parametro responsável por informar se serão apresentados na interface de manutenção do contrato.

Tabelas e Campos:

  • Tabela CXK (Cabeçalho do reajuste automático)
    Filial do Sistema
    Num. Reajuste
    Dt. Inicio
    Hora Inicio
    Dt. Termino
    Hora Termino
    Qtd. Ct. Reajustados
    Qtd. It. Reajustados
    Situação
  • Tabela CXL (Itens do reajuste automático)
    Filial do Sistema
    Num. Reajuste
    Item
    Nr. Contrato
    Revisão
    Nr. Planilha
    It. Planilha
    Reaj. Anterior
    Prev. Reajuste
    Dt. Reajuste
    Prox. Reajuste
    Vlr. Anterior
    Vlr. Atual
    Indice
    Vlr. Indice
    Vlr. Aplicado
    Situação
  • Tabela CN0 (Tipo de revisão do contrato)
    Retroativo
  • Tabela CN9 (Cabeçalho do contrato)
    Periodicidade
    Un. Periodicidade
    Modo
    Pro Rata
    Prox. Reajuste
  • Tabela CNA (Planilhas do contrato)
    Índice
    Periodicidade
    Un. Periodicidade
    Modo
    Pro Rata
    Dt. Reajuste
    Prox. Reajuste
  • Tabela CNB (Itens de Planilha)
    Reajuste
    Periodicidade
    Un. Periodicidade
    Modo
    Dt. Reajuste
    Prox. Reajuste

ATUSX – 6H

Atualizar o arquivo de menu SIGAGCT.XNU incluindo a nova opção "Reajuste Automático" no menu Atualizações -> Contratos.


Esta nova opção deve apresentar ao usuario a rotina de Reajuste Automático (CNTA310).

SIGAGCT.XNU -0

Os item a seguir referem-se aa tela de Inclusão da rotina de Reajuste Automático e Retroativo.

 

Desenvolver tela em MVC


Desenvolver tela da nova rotina CNTA310 utilizando a tabela CXK (Cabeçalho do Reajuste) relacionada com a tabela CXL (Itens do Reajuste).

Esta nova tela deve possuir somente Inclusão e Visualização em sua interface.

CNTA310 - 2

Desenvolver função de inclusão CN310Inc


Ao ser incluída novo reajuste automático, deverá ser apresentado ao usuário uma tela de "Pergunte" contendo os seguintes parâmetros para filtro:

Contrato

Range

CN9_NUMERO

Tipo de contrato

Range

CN9_TPCTO

Tipo de planilha

Range

CNA_TIPPLA

Cliente

Range

CNA_CLIENT

Loja cliente

Range

CNA_LOJACL

Fornecedor

Range

CNA_FORNEC

Loja fornecedor

Range

CNA_LJFOR

Data referencia reajuste*

Data

 

Data aplicação reajuste*

Data

 

Tipo de reajuste*

Caracter(3)

CN0_CODIGO (F3 Filtrada para Reajuste)

...

Status

'C' – Concluido

CNTA310 - 4

Desenvolver função de reajuste do contrato CN310Reaj()

CN310Reaj(aContrato)

A função de reajuste do contrato é responsável pelo controle do reajuste que será executado automaticamente.

Poderá ser executado reajuste com inclusão de revisão, inclusive sendo necessário a aprovação das entidades contábeis quando cabíveis, ou a alteração direta no contrato vigente. Estes dois modos são definidos pelo parâmetro MV_CNRJREV.

A função deve verificar o parâmetro MV_CNRJREV e caso este esteja ativo, o modelo do contrato (CNTA300/CNTA301) deve ser iniciado como uma nova revisão. Caso o parâmetro MV_CNRJREV esteja desativado, o modelo de contrato deve ser iniciado como uma alteração do contrato vigente.

Em ambos os casos deve-se atentar ao parâmetro MV_CNREVMD(Campo CN9), que gera revisões das medições já encerradas quando um contrato sofre revisão. Este parâmetro deve ser inibido.

Deverá ser realizado as alterações necessárias no modelo automáticamente, como inclusão de tipo de revisão (CN9_TIPREV), Data de Referência (CN9_DREFRJ), Data de Reajuste (CN9_DTREAJ) e Justificativa (CN9_JUSTIF). Após as alterações deve ser executada a função CN300REAJU, que executará as quebras dos itens do contrato. (Utilizar o fonte TECA870 como exemplo).

Após a quebra dos itens ser realizada o array aContrato deve ser atualizado com as novas informações, anteriormente como vazias.

As alterações devem ser validadas utilizando a função oModel:VldData() e oModel:CommitData(), verificando se ocorreu alguma falha ao salvar.

Se o parâmetro MV_CNRJREV estiver ativo, verificar se a revisão gerada foi bloqueada por alçadas, [Alltrim(CN9->CN9_SITUAC) == '09' .And. !Empty(CN9->CN9_APROV)], caso não tenha sido bloqueada, deverá ser realizada a aprovação automática da revisão com a chamada da função CN300Aprov().

Esta função deve retornar verdadeiro (.T.) caso as alterações sejam efetivadas sem falhas, ou falso (.F.) caso ocorra qualquer tipo de erro.

CNTA310 - 6

Atualizar função A300VlrInd para calcular ProRata.


Deverá ser atualizada a função A300VlrInd para receber como parâmetro lProRata para que, com estas informações calcule a proporcionalidade da aplicação.

O default para este parâmetro será .F.

O calculo do Pro-Rata é realizado da seguinte forma:

  • Define-se a grandeza da periodicidade de reajuste do item, ou planilha, ou contrato (respeitando-se esta hierarquia), esta grandeza sempre será uma escala a menos do que a informada no campode Un. Periodicidade, sendo o mínimo possível dias (Anos -> Meses, Meses -> Dias, Dias -> Dias).

    É realizada a equação

    Pro Rata= Dt. Reajuste-Dt. Reaj. AnteriorDt. Prev. Reajuste-Dt.Reaj. Anterior

    O Pro Rata deve ser multiplicado pelo valor do índice calculado, gerando um índice já reajustado.

CNTA310 - 2

Atualizar a função CN300Reaju()


Deverá ser validado o ProRata da Planilha (CNA_PRORAT) e do Contrato (CN9_PRORAT) na execução do reajuste.

Para reajuste de itens, deve ser considerado o valor de ProRata da planilha relacionada ao item, caso esta respeite o contrato, deve ser utilizado o valor de Pro Rata do contrato.

As chamadas da função A300VlrInd() devem constar o terceiro parâmetro lProRata como verdadeiro (.T.) quando for necessário realizar o calculo do índice proporcionalizado.

CNTA300R -1

Atualizar datas previstas de reajuste de itens, planilhas e contratos


No Commit do modelo, deverão ser atualizados os campos Dt. Prox. Reajuste de itens (CNB_PROXRJ), planilhas (CNA_PROXRJ) e contrato (CN9_PROXRJ), para conter a data do próximo reajuste (data do reajuste + periodicidade do índice de reajuste).

CNTA300R - 4

Os item a seguir referem-se ao Reajuste Retroativo de Contratos.

 

Desenvolver função CN310Retro()

Quando informado uma revisão que possua o campo Retroativo (CN0_RETRO) com valor "SIM" no pergunte, deverá ser gerada uma medição extraordinária contendo a diferença dos valores atuais dos valores medidos anteriormente.

Para isto, para cada contrato, na geração da medição será utilizado a quantidade medida (CNB_QTDMED) do item reajustado como quantidade (CNE_QUANT) da medição e a diferença entre o valor atual (CNB_VLUNI) e o valor antes do reajuste (CNB_QTDORI) como valor unitário (CNE_VLUNIT) do item da medição.

Esta medição deve ser totalmente bloqueada

Fazer o tratamento na medição

CNTA310 - 12

Gerar medição retroativa na vigência da revisão 1


Deverá ser alterada a função CN300Aprov para ao tornar a revisão vigente, deverá ser verificado se o tipo de revisão é Retroativa (CN0_RETRO) e, em caso afirmativo, deverá ser chamada a função CN310Retro() para gerar a medição retroativa.

A300Aprov()

CNTA300 -0

Gerar medição retroativa na vigência da revisão 2


Deverá ser alterada a função GCTAlcEnt para ao tornar a revisão vigente (cTipDoc == RV ou cTipDoc == IR), deverá ser verificado se o tipo de revisão é Retroativa (CN1_RETRO) e, em caso afirmativo, deverá ser chamada a função CN310Retro() para gerar a medição retroativa.

CNTXFUN -0

Os item a seguir referem-se a visualização do Log dos reajustes na manutenção do contrato.

 

Incluir visualização de Logs de Reajuste na manutenção do contrato.


Na rotina de manutenção de contratos, se o parâmetro MV_CNRJMNT estiver ativo, ao visualizar-se um contrato, deverá ser exibida um folder chamado "Reajustes" onde poderão ser visualizadas as alterações de todos os itens da planilha selecionada.

Deverá ser relacionada as planilhas do contrato (CNA) com os itens alterados no reajuste (CXL). Deverá ser possível visualização de todos itens da revisão do contrato visualizado.

CNTA300
/
CNTA301
(2)

Os item a seguir referem-se a alterações necessárias para utilização dos novos campos.

 

Validação dos novos campos de reajuste

  • Para o cabeçalho do contrato, deverão ser validados os seguinte campos:

    Os campos Indice (CN9_INDICE), Periodicidade (CN9_PERI), Un. Periodicidade (CN9_UNPERI), Modo (CN9_MODORJ) e Pro Rata (CN9_PRORAT) são bloqueados e com valores padrão ou zerados caso o campo Reajuste (CN9_FLREAJ) possuir valor "NÃO". Caso o valor do campo Reajuste (CN9_FLREAJ) for "SIM", estes campos tornam-se editáveis e obrigatórios.
    O Campo Prox. Reajuste (CN9_PROXRJ) deve ser calculado automaticamente após o preenchimento do campo Un. Periodicidade (CNA_UNPERI). Para isso adiciona-se a periodicidade (CN9_PERI x CN9_UNIPERI) na Dt. Reajuste (CN9_DTREAJ) ou data de inicio do contrato (CN9_DTINIC) caso a Dt. Reajuste possuir valor vazio. [É possível utilizar como exemplo a vigência do contrato].
  • Para as planilhas do contrato, deverão ser validados os seguinte campos:

    Os campos Indice (CNA_INDICE), Periodicidade (CNA_PERI), Un. Periodicidade (CNA_UNPERI), Modo (CNA_MODORJ) e Pro Rata (CNA_PRORAT) são bloqueados e com valores padrão ou zerados caso o campo Reajuste (CNA_FLREAJ) possuir valor "NÃO". Caso o valor do campo Reajuste (CNA_FLREAJ) for "SIM", estes campos tornam-se editáveis.

    O Campo Prox. Reajuste (CNA_PROXRJ) deve ser calculado automaticamente após o preenchimento do campo Un. Periodicidade (CNA_UNPERI). Para isso adiciona-se a periodicidade (CNA_PERI x CNA_UNIPERI) na Dt. Reajuste (CNA_DTREAJ) ou data de inicio do contrato (CN9_DTINIC) caso a Dt. Reajuste possuir valor vazio. [É possível utilizar como exemplo a vigência do contrato].
  • Para os items da planilha, deverão ser validados os seguinte campos:

    Os campos Indice (CNB_INDICE), Periodicidade (CNB_PERI), Un. Periodicidade (CNB_UNPERI), Modo (CNB_MODORJ) e Pro Rata (CNB_PRORAT) são bloqueados e com valores padrão ou zerados caso o campo Reajuste (CNB_FLREAJ) possuir valor "NÃO". Caso o valor do campo Reajuste (CNB_FLREAJ) for "SIM", estes campos tornam-se editáveis.

    O Campo Prox. Reajuste (CNB_PROXRJ) deve ser calculado automaticamente após o preenchimento do campo Un. Periodicidade (CNB_UNPERI). Para isso adiciona-se a periodicidade (CNB_PERI x CNB_UNIPERI) na Dt. Reajuste (CNB_DTREAJ) ou data de inicio do contrato (CN9_DTINIC) caso a Dt. Reajuste possuir valor vazio. [É possível utilizar como exemplo a vigência do contrato].

CNTA300
/
CNTA301 -8

Validação do novo campo Retroativo no cadastro de tipo de revisão.


O novo campo Retroativo (CN0_RETRO) deve ser bloqueado com valor vazio.
Caso o Tipo (CN0_TIPO) seja de Reajuste (valor 2), o campo deve ser desbloqueado para edição e obrigatório na validação do commit.

O novo campo Reajuste (CNB_FLREAJ) deve ser atualizado para "1"(Sim) caso a planilha relacionada ao item (CNA_NUMERO x CNB_NUMERO) possua Reajuste (CNA_FLREAJ) com valor "1" (Sim) e o campo índice (CNB_INDICE) possua valor. Caso contratrio, deve ser atualizado para "2"(Não).

CNTA100 -1

Alteração na liberação de campos para revisão do tipo indice.


Ao iniciar-se uma revisão do tipo troca de indice, deverão ser liberados os campos abaixo caso não possuam valor e o Reajuste (CN9_FLREAJ, CNA_FLREAJ, CNB_FLREAJ) possuam valor "1"(Sim).

Indice (CN9_INDICE, CNA_INDICE e CNB_INDICE)
Periodicidade (CN9_PERI, CNA_PERI e CNB_PERI)
Un. Periodicidade (CN9_UNPERI, CNA_UNPERI e CNB_UNPERI)
Modo (CN9_MODO, CNA_MODO e CNB_MODO)
Pro Rata (CN9_PRORAT, CNA_ PRORAT e CNB_ PRORAT)

Os campos Dt. Reajuste ( CNA_DTREAJ e CNB_DTREAJ) serão preenchidos automaticamente com a data de reajuste do contrato (CN9_DTREAJ).

Os campos Prox. Reajuste (CN9_PROXRJ, CNA_PROXRJ e CNB_PROXRJ) deverão ser calculados adicionando-se a periodicidade na Dt. Reajuste.

Os campos deverão ser tratados normalmente na validação do modelo, respeitando as regras para inclusão.

CNTA300R -1

O item a seguir refere-se a geração do RUP necessárias para utilização dos novos campos.

 

Gerar RUP de atualização dos novos campos.


Gerar RUP para atualização dos campos conforme descritos a seguir:

  • Retroativo (CN0_RETRO)
    Deverá possuir valor "2" (Não) para todos os tipos de revisão já existentes do Tipo (CN0_TIPO) Reajuste (valor 2).

RUPMAT – 1,5

...

Parâmetro

MV_CNRJMNT

Tipo

Lógico

Descrição

Habilita apresentação de log de reajuste automatico na interface de manutenção do contrato.
.T. – Ativo
.F. – Desativado

Valor Padrão

.F.

 

  • Tabelas


Arquivo: CXK (Cabeçalho do reajuste automático)

...