Primefaces - abordagem para evitar duplicar cruds

Uma situação comum é um crud precisar “chamar” outro crud, Existem tópicos aqui no forum que tratam disto.

O problema é como evitar (se é que é possível) duplicar o crud. Explico…

Imagine um crud de clientes com ± 50 campos que pode ser acessado a partir de um menu.

Agora imagine uma tela de vendas…se o cliente não estiver cadastrado, precisa cadastrar na hora. Aí é que vem o problema.

Me vem a cabeça algumas alternativas, mas como vocês estão resolvendo a parada?

  1. na tela de vendas um p:dialog com os campos para cadastrar o cliente
  2. na tela de vendas um p:dialog com ui:include com os campos para cadastrar o cliente (no caso a tela de clientes usario o mesmo ui:include para um xhtml compartilhado)
  3. na tela de vendas um p:lightbox “chamando” o crud de clientes em modo de inserção
  4. alguma outra idéia…

Não sei se fui claro, mas sugestões são bem vindas…