Como posso incluir uma nota fiscal com o com o id do cliente para que eu possa identificar as notas fiscais sempre que forem emitidas para aquele determinado cliente? Agradeceria ajuda. E também outra pergunta seria correto fazer primeiro uma pesquisa para verificar se o cliente digitado pelo usuário existe, caso afirmativo, continuar o cadastramento da nota e caso contrário informar que o cliente não existe, se isso for correto, como poderia especificar isso no meu DAO?
digitar-nf.xhtml
<h:form>
<div class="form-group row">
<label for="nomecliente" class="col-sm-8 col-form-label">
Identificação do Cliente (digite o numero do cliente)</label>
<div class="col-sm-10"><br></br>
<h:inputText id="nomecliente" value="#{notaFiscalBean.idCliente}" type="number" class="form-control" a:autofocus="true" />
</div>
</div>
<div class="form-group row">
<label for="nomecliente" class="col-sm-8 col-form-label">
Numero da Nota Fiscal ou Cupom</label>
<div class="col-sm-10"><br></br>
<h:inputText id="numeronota" value="#{notaFiscalBean.notaFiscal.numero}" type="number" class="form-control" />
</div>
</div>
<div class="form-group row">
<label for="datanota" class="col-sm-8 col-form-label">
Data da Nota</label>
<div class="col-sm-10"><br></br>
<h:inputText class="date" value="#{notaFiscalBean.notaFiscal.data.time}" id="datanota" >
<f:convertDateTime pattern="dd/MM/yyyy"
timeZone="America/Sao_Paulo" />
</h:inputText>
</div>
</div>
<div class="form-group row">
<label for="valornota" class="col-sm-8 col-form-label">
Valor da Nota</label>
<div class="col-sm-10"><br></br>
<h:inputText id="valornota" value="#{notaFiscalBean.notaFiscal.valor}" type="number" class="form-control"/>
</div>
</div>
<h:commandButton value="Cadastrar" type="submit" class="btn btn-warning" action="#{notaFiscalBean.gravar}"></h:commandButton>
notaFiscalBean
@Model
public class NotaFiscalBean{
private Cliente cliente = new Cliente();
private NotaFiscal notaFiscal = new NotaFiscal();
private Long idCliente;
@Transactional
public void gravar() {
Cliente cliente = clienteDAO.buscaPorId(idCliente);
clienteDAO.save(cliente);
notaFiscalDAO.adiciona(notaFiscal);
this.notaFiscal = new NotaFiscal();
this.cliente = new Cliente();
idCliente = null;
}
notaFiscalDAO
public class NotaFiscalDAO implements Serializable {
private static final long serialVersionUID = 1L;
@PersistenceContext
private EntityManager manager;
public void adiciona(NotaFiscal nota) {
manager.persist(nota);
}
notafiscal
@Entity
public class NotaFiscal implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
private String numero;
private Double valor;
@Temporal(TemporalType.DATE)
private Calendar data = Calendar.getInstance();
@OneToMany(cascade=CascadeType.PERSIST, mappedBy="notaFiscal")
private List<Cliente> clientes;
}
cliente
@Entity
public class Cliente {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String nome;
private String sobrenome;
@Email
@NotBlank
@Column(unique=true)
private String email;
private String senha;
private String cpf;
private String cep;
private String endereco;
private String numero;
private String bairro;
private String cidade;
private String estado;
private String ddd;
private String celular;
clienteDAO
public Cliente buscaPorId(Long id) {
Cliente cliente = manager.find(Cliente.class, id);
return cliente;
}