Person

De BIS Wiki
Revisão de 20h34min de 13 de abril de 2015 por Rodrigogml (discussão | contribs) (Criou página com 'O serviço de pessoas oferecido pelo BISCore tem a finalidade de centralizar o cadastro de pessoas físicas e jurídicas por todo o sistema. A entidade Person conterá todos o...')
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para navegação Ir para pesquisar

O serviço de pessoas oferecido pelo BISCore tem a finalidade de centralizar o cadastro de pessoas físicas e jurídicas por todo o sistema. A entidade Person conterá todos os dados relacionados à pessoa, e deve usada de forma compartilhada pelos plugins e módulos.

Em sua primeira versão, Person começa oferecendo um conjunto de campos para cada tipo de pessoa. Em versões futuras novos campos deverão ser oferecidos para centralizar o máximo de informações possíveis.

Funcionamento

O serviço oferece o objecto PersonVO para representar cada pessoa. Dentro de PersonVO há dois outros objetos:

  • PersonFieldVO - Usado para armazenar informações adicionais ou campos do tipo "lista" como telefones, e-mails, etc..
  • PersonAddressVO - Usado para armazenar os endereços da pessoa, como "residencial", "comercial", "fábrica", "Loja 1", "Loja 2", etc..

PersonVO deve ser referenciado pelo objeto que usa determinada pessoa, de forma associativa. Porém jamais deverá ser persistido em cascata. PersonVO deve sempre ser persistido utilizando os métodos publicados no na fachada do BISCore.


Persistência Automática
Como o BISCore utiliza as definições da JPA para persistir seus objetos, a maneira de evitar que o objeto seja persistido ou alterado automaticamente ao persistir um objeto que utilize o PersonVO, é garantir que no mapeamento seja definida a expressão "cascade = CascadeType.REFRESH" nos mapeamentos OneToOne, ManyToOne ou OneToMany.

O sistema não permitirá duas pessoas cadastradas com o Mesmo CPF/CNPJ, no entanto, permitirá que se cadastre uma pessoa sem o CPF ou CNPJ. Ao associar pessoas à outros objetos sempre verificar se já existe uma pessoa pelo CPF/CNPJ

Campos

Aqui estão relacionados os campos atuais dos objetos, sua finalidades e requisitos:

PersonVO

  • type - Tipo de pessoa, Física ou Jurídica
  • displayname - Nome de exibição. Um nome amigável que o usuário possa definir como quiser para identificar a pessoa. Ficando livre para criar seu próprio padrão como "Rodrigo Leitão (Barinella)" ou "Rodrigo - Barinella" ou ainda "Técnico: Máquina de Lavar (Mário)". Na UI, o BIS poderia oferecer para gerar esse campo automaticamente sugerindo alguns padrões de acordo similar ao que o outlook express funciona.
  • contactname - Nome do Contato. Para PJ deve ser considerado como razão social, enquanto que para PF deve ser considerado como nome completo. Na UI é aconselhável exibir os títulos do campo com esses nomes para não confundir o usuário.
  • cpfcnpj - Campo usado para armazenar o CPF ou CNPJ da pessoa.
  • companyname - Nome da Empresa. Para PJ utilizar como nome fantasia da empresa. Para PF utilizar como Empresa para colocar onde trabalha.
  • worktitle - Apenas PF Colocar o cargo da pessoa na empresa, como "vendedor", "supervisor", "gerente comercial", "técnico" Etc.
  • ie - Apenas PJ Inscrição Estadual da empresa.
  • im - Apenas PJ Inscrição Municipal.
  • birthday - Na PF usado para armazenar a data de nascimento. Na PJ utilizar para armazenar a data de início da empresa: data da fundação.
  • note - Campo livre para escrita de observações do contato. Por exemplo dados que não tem um campo próprio.


TODO Task
Definir como representar a empresa isenta de IE ou de IM, já que deixar null simplesmente significa que a informação não foi definida.


PersonFieldVO

O PersonFieldVO mistura diversos tipos de campos, que só serão diferenciados pelo campo type. Optamos por manter todas as informações em um único objeto ao invés de um monte separado para simplificar o desenvolvimento, a persistência, e mesmo a performance de manipulação no banco de dados já que tudo fica em uma única tabela.

  • indexorder - Salva a ordem dos registros. A ordem é importante para definição de dados primários como telefones, e-mails, etc.
  • type - Define o tipo de informação que este objeto armazena. Dependendo do tipo definido e seu tipo de dado, o valor deverá ser definido no campo value correspondente.
    • EMAIL - Define um endereço de e-mail. (salvo em valuetext).
    • WEBSITE - Define um endereço web. (salvo em valuetext).
    • CUSTOMDATE - Permite a definição de uma data qualquer pelo usuário. (salvo em valuedate)
    • CUSTOMTEXT - Permite a definição de um texto qualquer pelo usuário. (salvo em valuetext)
    • PHONE - Permite a definição de telefones.
  • label - Define um rótulo para identificar o campo. Por exemplo, se o campo for do tipo telefone, o usuário pode aplicar labels para saber de onde são os telefones, como "casa", "cunhada", "trabalho", "celular", "nextel", "televendas", "central de relacionamento", etc. Este campo é livre para o usuário escrever o que achar pertinente.
  • valuetext - Campo utilizado para salvar os campos do tipo texto.
  • valuedate - Campo utilizado para salvar os campos do tipo data, hora e data-hora.

PersonAddressVO

Este objeto mantém o cadastro de cada endereço definido. Ele utiliza o serviço de Location do BISCore, e consequentemente tem referências para seus objetos.

  • indexorder - Define a ordem dos endereços. A ordem é importante para definir endereços primários/principais, assim como para sempre exibir para o usuário na mesma ordem que ele salvou.
  • label - Define um rótulo para identificar o endereço. Por exemplo, "residência", "fábrica", "loja 1", etc. É um campo livre para uso do usuário.
  • street - Nome da rua do endereço. Incluindo o tipo do logradouro, como "Avenida", "Rua", etc.
  • number - Número da casa/imóvel do endereço. Só permite valor numérico inteiro.
  • complement - Complemento do endereço, como "Casa 2", "Casa dos Fundos", "Bloco 25, Apartamento 44", etc.
  • neighborhood - Bairro do endereço.
  • cep - CEP do endereço.
  • LocationCityVO - Referência ao objeto que representa a cidade. Obrigatório. ao definir a cidade.
  • LocationAddressVO - Referência ao definir a rua. Não é obrigatório, mas é recomendado para manter o endereço vinculado ao cadastro de ruas do serviço de Locaiton.

UI

O Person deve oferecer um componente para tratar o PersonVO e suas subclasses para as UIs suportadas pelo BISERP. Verifique a documentação de de cada UI para saber como utilizar este componente.