====== Especificação funcional: Contratos ====== ===== Resumo ===== O módulo de contratos permite gerenciar diversos contratos e acompanhar sua execução. ===== Descrição ===== A gestão de contratos acrescenta uma nova dimensão de análise e controle das movimentações financeiras, uma vez que permitem agrupá-las em estruturas de controle que independem dos centros de custo, preservando, ao mesmo tempo, a natureza das movimentações (plano de contas). Um contrato gera direitos e obrigações entre contratado e contratante, e esses direitos/obrigações geralmente são atendidos gradativamente à medida em que a vigência do contrato evolui. Através dessa ótica faz sentido pensar que um contrato possui um saldo, devedor ou credor, que é reduzido gradativamente à medida em que os serviços vão sendo prestados ou os produtos vão sendo entregues. No Monnae será possível apurar o andamento da execução do contrato, bem como o seu saldo, através de dois mecanismos já existentes: os lançamentos financeiros e a inclusão de itens, ambos durante o lançamento de títulos. Para isso será necessário indicar, durante a definição do contrato, quais serão as contas (plano de contas) ou os itens que determinam o saldo do contrato e, à medida em que os lançamentos são realizados e devidamente identificados, os saldos e a porcentagem de execução do contrato são determinados automaticamente. Para que a execução e os saldos sejam calculados corretamente, será necessário definir se o contrato está sendo gerenciado pelo contratante ou contratado. Essa definição é importante para que o sistema consiga interpretar corretamente os tipos de operação (débito ou crédito) na gestão do contrato. ==== Dados do contrato ==== |< 100% 19% 60% 7% 7% 7%>| ^ Campo ^ Descrição ^ Tipo ^ Tamanho ^ Obrigatório? ^ |Número |Número do contrato | Texto | 15 | Sim | |Categoria |Classificação do contrato (definida nas configurações do sistema) | --- | --- | Sim | |Objeto |Objeto do contrato | Texto | 250 | Sim | |Descrição |Descrição detalhada do contrato | Texto | 500 | Não | |Contratante/contratado |Pessoa (física ou jurídica) vinculada ao contrato | --- | --- | Não1 | |Responsável |Nome da pessoa ou departamento responsável pelo acompanhamento da execução do contrato | --- | --- | Não1 | |Centro de custo |Centro de custo que será vinculado ao contrato | --- | --- | Não | |Controle da execução |Forma como a porcentagem de execução será calculada | Texto | 16 | Sim | |Tipo de gestor |Tipo de pessoa que está fazendo a gestão do contrato | Texto | 11 | Sim | |Valor |Valor do contrato | Númérico | 11 | Não2 | |Início |Data de início do contrato | Data | --- | Sim | |Término |Data de término do contrato | Data | --- | Não3 | |Estado |Situação atual do contrato (definido de acordo com a categoria) | --- | --- | Sim | |Contas que movimentam o saldo do contrato |Lista de contas que serão usadas para calcular a porcentagem de execução do contrato | --- | --- | Não | |Itens que movimentam o saldo do contrato |Lista de itens que serão usados para calcular a porcentagem de execução do contrato | --- | --- | Não | |Anexos |Lista de anexos do contrato | --- | --- | Não | |Aditivos |Lista de aditivos do contrato | --- | --- | Não | === Preenchimento dos dados de um contrato === * **Número**: A identificação de um contrato deve ser única. O número do contrato poderá ser sequencial (gerado pelo sistem) ou definido pelo usuário no momento do cadastro. * **Categoria**: A categoria do contrato deve ser utilizada para definir grupos de contratos que possuam características em comum. Por exemplo, os contratos podem ser classificados como públicos, privados, produtos, serviços, etc. As categorias devem ser definidas previamente nas [[softwares:monnae:requisitos:configuracoes:contratos|configurações]] do sistema. Caso o sitema possua uma categoria padrão, essa categoria será definida como a categoria de um novo contrato. Sempre que o usuário mudar a categoria de um contrato, os títulos já vinculados ao contrato terão seu estado removido (se a categoria anterior controlar os estados dos títulos). * **Objeto**: Definição do objeto do contrato. Esse campo também pode ser utilizado como uma forma de categorizar os contratos de acordo com seus objetos. * **Descrição**: Descrição detalhada do contrato (opcional). * **Contratante/contratado**: Definição da pessoa, física ou jurídica, com quem o contrato foi celebrado. Para ser vinculada a um contrato, a pessoa precisa estar cadastrada no sistema e ativa. Esse campo pode ser obrigatório, de acordo com o estado do contrato. * **Responsável**: Definição da pessoa ou departamento que irá acompanhar ou fiscalizar a execução do contrato. O sistema apresentará uma lista com os responsáveis já utilizados em contratos cadastrados anteriormente. * **Controle da execução**: Escolha da forma de cálculo da porcentagem de execução do contrato. Esse campo pode ser predefinido na categoria do contrato, mas pode ser modificado sempre que necessário. As opções permitidas para esse campo são: * //Nenhum//: A porcentagem de execução não será calculada; * //Data de vigência//: A porcentagem será calculada de acordo com o período de vigência do contrato (requer que a data de término do contrato seja preenchida); * //Saldo financeiro//: A porcentagem será calculada de acordo com os lançamentos financeiros vinculados ao contrato (requer que a lista de contas que movimentam o saldo do contrato seja preenchida); * //Saldo de itens//: A porcentagem será calculada de acordo com os lançamentos de itens vinculados ao contrato (requer que a lista de itens que movimentam o saldo do contrato seja preenchida); * **Tipo de gestor**: Determina se o gestor do contrato (a pessoa que está usando o sistema) é o contratante ou o contratado. Esse campo pode ser predefinido na categoria do contrato, mas pode ser modificado sempre que necessário. * **Valor**: Valor global do contrato. Esse campo pode não ser obrigatório, de acordo com a categoria e a forma de controle da execução do contrato. * **Início**: Data de início da vigência do contrato. * **Término**: Data de término da vigência do contrato. * **Estado**: Situação do contrato, selecionado a partir da lista de estados definida na categoria do contrato. * **Contas que movimentam o saldo do contrato**: Lista de contas que será utilizada para calcular a porcentagem de execução do contrato quando o controle da execução for definido como "saldo financeiro". * **Itens que movimentam o saldo do contrato**: Lista de produtos/serviços, bem como da quantidade contratada de cada um, que será utilizada para calcular a porcentagem de execução do contrato quando o controle da execução for definido como "saldo de itens". ==== Funcionalidades ==== === Lista de contratos === A lista de contratos deverá ser exibida através de uma grade de dados, contendo todos os contratos cadastrados no sistema. Os registros desta grade deverão estar coloridos de acordo com o estado de cada contrato: * //Contratos a vencer//: Contratos ativos que não estão próximos do vencimento (cor preta); * //Contratos próximos do vencimento//: Contratos ativos ainda não vencidos, mas com vencimento dentro do intervalo de dias definido nas [[softwares:monnae:requisitos:configuracoes:contratos|configurações]] do sistema (cor laranja); * //Contratos vencidos//: Contratos ativos com data de vencimento inferior à data atual (cor vermelha); * //Contratos finalizados//: Contratos inativos (contratos para os quais foi atribuído um estado do tipo //final//). (cor cinza); === Cadastro === Qualquer contrato pode ser cadastrado no sistema, desde que sua categoria seja definida previamente nas [[softwares:monnae:requisitos:configuracoes:contratos|configurações]] do sistema. === Exclusão e alteração === Qualquer contrato pode ter seus dados alterados ou pode ser excluído. === Visualização === Qualquer contrato pode ser visualizado, independente de sua situação. === Gestão de contratos === Documentada em uma [[softwares:monnae:requisitos:modulos:gestao_contratos|página específica]]. ==== Filtros e agrupamento ==== Os seguintes filtros predefinidos serão disponibilizados para a análise dos contratos: * **Contratos a vencer**: Exibe os contratos ativos que não estão próximos do vencimento; * **Contratos próximos do vencimento**: Exibe os contratos ativos ainda não vencidos, mas com vencimento dentro do intervalo de dias definido nas [[softwares:monnae:requisitos:configuracoes:contratos|configurações]] do sistema; * **Contratos vencidos**: Exibe os contratos ativos com data de vencimento inferior à data atual; * **Contratos finalizados**: Exibe os contratos inativos (contratos para os quais foi atribuído um estado do tipo //final//); Além dos filtros, o sistema também deve fornecer as seguintes possibilidades de agrupamento: * Por categoria; * Por contratante/contratado; * Por objeto; * Por data de início; * Por data de término. Todos os agrupamentos devem exibir a soma dos valores dos contratos, a soma dos saldos financeiros do contrato e a contagem de contratos em cada grupo. ==== Aditivos ==== Alguns tipos de contrato podem ter aditivos, que podem prorrogar o prazo e/ou incrementar o valor global do contrato. O sistema permite que um aditivo seja adicionado ao contrato e, quando isso acontece, o valor do contrato e a vigência são ajustados de acordo com o aditivo adicionado. === Dados do aditivo === * **Número do aditivo**: campo alfanumérico, com capacidade para 15 caracteres, onde o usuário deve informar o número do aditivo. O número deve ser obrigatório e não deve se repetir dentro de um mesmo contrato; * **Descrição**: campo alfanumérico opcional, com capacidade para 250 caracteres, sem nenhum tipo de restrição ou validação; * **Nova data de término**: campo do tipo data, obrigatório, onde o usuário deve informar a nova data de término do contrato. A data informada nunca pode ser menor do que a data atual de término do contrato; * **Novo valor global**: campo monetário, obrigatório, onde será informado o valor do contrato após o aditivo. O novo valor global não deve ser negativo (sempre maior ou igual a zero); Após a inclusão de um aditivo, o sistema deve atualiza os seguintes dados do contrato: * **Data de término**: a data de término do contrato deve receber a nova data de término, informada no aditivo; * **Valor**: o valor do contrato deve receber o novo valor global, informado no aditivo. O sistema deve permiti ainda que o usuário exclua os aditivos, em ordem contrária a inclusão (do último para o primeiro). Sempre que o usuário excluir um aditivo, o sistema deve perguntará se o usuário quer ajustar os dados do contrato. Em caso afirmativo, o sistema deve redefinir a data de término e o valor do contrato usando os dados anteriores ao aditivo excluído. Esses dados anteriores ficam registrados no aditivo para que o ajuste dos dados anteriores funcione corretamente, porém não ficam visíveis para o usuário. === Observações === O usuário não terá a opção de alterar um aditivo. Caso seja necessário realizar alguma mudança, o aditivo deve ser excluído e adicionado novamente. A inclusão/exclusão de aditivos não altera os títulos vinculados ao contrato. A manutenção dos títulos vinculados (inclusão/exclusão/alteração/baixa) é de responsabilidade do usuário. ===== Pontos de verificação ===== ==== Lista de contratos (grid) ==== * O sistema deve colorir cada contrato de acordo com seu estado; * Contratos sem data de término deverão ser exibidos em preto; * Contratos próximos do vencimento devem considerar o número de dias informado nas [[softwares:monnae:requisitos:configuracoes:contratos|configurações]] do sistema; ==== Cadastro ==== * Um contrato só pode ser incluído se todos os campos obrigatórios estiverem preenchidos; * O sistema deve impedir o cadastro de dois ou mais contratos com o mesmo número; * O sistema deve impedir que pessoas inativas sejam vinculadas a um cadastro (campo Contratante/contratado); * O sistema deve impedir que um contrato seja cadastrado com a data de término inferior à data de início; * Se o controle da execução for: * //Nenhum//: o sistema não deve obrigar o preenchimento da data de término ou das listas de contas e itens; * //Data de vigência//: * O sistema deve exigir o preenchimento da data de término; * O sistema deve calcular o número de execuções através da fórmula((DIAS CORRIDOS / TOTAL DIAS) * 100). Caso "DIAS CORRIDOS" for igual a zero (data de início igual a data atual) a porcentagem de execução deverá ser zero. * //Saldo financeiro//: o sistema deve exigir o preenchimento da lista de contas; * //Saldo de itens//: o sistema deve exigir o preenchimento da lista de itens; * Ao selecionar uma categoria, o estado do contrato deve ser modificado para o estado inicial definido na categoria selecionada; * Ao selecionar um estado do tipo //final// para o contrato, o sistema deve exigir o preenchimento da data de término; === Lista de contas === * O sistema não deve permitir que o usuário vincule mais de uma vez a mesma conta; * O sistema não deve permitir que contas inativas sejam vinculadas ao contrato. === Lista de itens === * O sistema não deve permitir que o usuário vincule mais de uma vez a o mesmo produto/serviço. === Anexos === * O sistema deve permitir que anexos sejam incluídos, excluídos ou visualizados mesmo durante a visualização do contrato. ===== Observações ===== - O contratante/contratado pode ser obrigatório quando o estado do contrato exigir seu preenchimento. - O valor do contrato pode ser obrigatório nas seguintes situações: quando a categoria não permitir contratos sem valor ou quando a execução do contrato estiver sendo controlada pelo saldo financeiro. - A data de término pode ser obrigatória nas seguintes situações: quando a execução do contrato estiver sendo controlada pela vigência ou o estado do contrato for um estado final. ~~DISCUSSION|Sugira mudanças, aponte falhas ou contribua de alguma forma aqui:~~