package com.algaworks.pedidovenda.service;
import java.io.Serializable;
import javax.inject.Inject;
import com.algaworks.pedidovenda.model.Pedido;
import com.algaworks.pedidovenda.model.StatusPedido;
import com.algaworks.pedidovenda.repository.Pedidos;
import com.algaworks.pedidovenda.util.jpa.Transactional;
public class EmissaoPedidoService implements Serializable {
private static final long serialVersionUID = 1L;
@Inject
private CadastroPedidoService cadastroPedidoService;
@Inject
private EstoqueService estoqueService;
@Inject
private Pedidos pedidos;
@Transactional
public Pedido emitir(Pedido pedido) {
pedido = this.cadastroPedidoService.salvar(pedido);
if (pedido.isNaoEmissivel()) {
throw new NegocioException("Pedido não pode ser emitido com status "
+ pedido.getStatus().getDescricao() + ".");
}
this.estoqueService.baixarItensEstoque(pedido);
pedido.setStatus(StatusPedido.EMITIDO);
pedido = this.pedidos.guardar(pedido);
return pedido;
}
}