PersonComponent

De BIS Wiki
Revisão de 23h08min de 25 de maio de 2015 por Rodrigogml (discussão | contribs) (Criou página com 'O PersonComponent é um componente usado na UI do BIS que permite que telas dos módulos e plugins manipulem o objeto PersonVO sem a necessidade de incluir campo à campo em s...')
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para navegação Ir para pesquisar

O PersonComponent é um componente usado na UI do BIS que permite que telas dos módulos e plugins manipulem o objeto PersonVO sem a necessidade de incluir campo à campo em sua tela. Este componente recebe (ou não) um PersonVO, cria os campos e já o associa completamente. Desta forma, invés do desenvolvedor da tela ter que criar e obter o valor de cada campo, basta incluir este componente e obter o valor através do método:

getPersonVO();

Requisitos & Regras de Funcionamento

A principal ideia do serviço Person do BISCore é garantir um "cadastro único" das pessoas (Físicas e Jurídicas) em todo o sistema. Permitindo que as pessoas cadastradas em um módulo estejam disponíveis em outros módulo. Já a ideia do PersonComponent é simplificar a implementação dessa ideia nas telas dos módulos que utilizam o Person para manipular o cadastro dessas pessoas. Assim, temos as seguintes regras:

  1. O componente deve estender algum tipo de layout (Grid, VerticalLayout, etc.) sem incluir nenhum "Panel" (como o BISPanel). Deixando a prerrogativa de ser inserido em um Panel ou não para a tela que o for utilizar. Algumas telas, por exemplo, podem preferir inseri-lo diretamente em alguma "Aba" do PanelTab, BISPopupPanel, etc..
  2. Devido a resolução definida no Padrão Visual o componente deve caber em uma dimensão mínima de 1000px (Largura) x 500px (Altura). E deve ser preparado para "esticar" para resoluções maiores.

Construtor

Lógica de construção:

  1. O construtor do PersonComponent deve receber um PersonVO como atributo, sendo que se o objeto recebido for:
    1. nulo: o componente deve criar um novo PersonVO e associar todos os campos a este novo PersonVO.
      1. Assim que criado o componente deve ter todos os seus campos desabilitados. Permitir apenas o campo "CPF/CNPJ:" e o checkbox "Sem CPF/CNPJ" habilitados para preenchimento.
    2. Não for Nulo, utiliza o objeto recebido para associar aos campos.


Campos Habilitados
O campo "CPF/CNPJ:" e "Sem CPF/CNPJ" são os únicos campos que estarão sempre habilitados no componente. Todos os demais serão desabilitados sempre que o campo "CPF/CNPJ:" estiver vazio E o checkbox "Sem CPF/CNPJ" não estiver marcado.

Quando uma das duas condições for falsa, os campos devem estar habilitados para edição, ou seguir suas próprias regras de habilitado/desabilitado.


Habilitando/Desabilitando em Massa
O melhor para habilitar e desabilitar todos os componentes é utilizar algum container e desabilita-lo ao invés de ir campo a campo. Assim, evita inclusive a interferência de acabar habilitando algum campo que tem sua própria lógica de habilitação. Habilitando algum componente que deveria continuar desabilitado, como o caso do campo "Nome da Rua" que deve continuar desabilitado de acordo com o preenchimento do campo "CEP:".


CPF/CNPJ Value Change

Uma vez que o componente foi criado de acordo com a regra do construtor, o usuário poderá alterar o valor do campo "CPF/CNPJ:". Neste caso devemos seguir as seguintes regras:

  • Caso o novo valor seja um CPF/CNPJ válido...
    • ...e o novo valor não esteja no banco: Simplesmente deixamos que o CPF/CNPJ seja alterado no PersonVO que já estamos editando. Fazendo com que o objeto seja inserido com o novo valor.
    • ...e o novo valor esteja no banco: Exibimos um dialog (BISConfirmCancelDialog) com a seguinte indagação:
      No caso de CPF: "O CPF já está em uso por outra pessoa. Gostaria de utilizar os dados existentes?"
      No caso de CNPJ: "O CNPJ já está em uso por outra empresa. Gostaria de utilizar os dados existentes?"
      Em caso de confirmação o objeto atual deve ser substituído pelo novo. E ao associar o novo objeto aos campos de tela os valores serão atualizados para os dados que vieram do banco de dados. Em caso de cancelamento o valor do campo "CPF/CNPJ:" deve ser limpo. Impedindo que o usuário tente inserir ou alterar o objeto atual para o CPF/CNPJ que já está em branco.
  • Caso o novo valor esteja em branco: permite que o PersonVO receba o novo valor em branco. O BISCore fará suas validações ao receber um CPF/CNPJ em branco e saberá o que fazer.


Valores Inválidos
Caso o valor seja definido como um valor inválido, não é considerado como se o valor tivesse sido alterado. O vaadin nem sequer passar o valor para o VO. Por isso não nos preocupamos se o usuário fizer a troca para um valor inválido.


Sem CPF/CNPJ

O componente deve ainda permitir que o usuário cadastre uma nova pessoa sem o CPF ou CNPJ. Para isso deve incluir do lado do campo "CPF/CNPJ:" um checkbox com o título "Sem CPF/CNPJ". Também deve garantir que o CPF/CNPJ seja desabilitado.