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 CancelamentoPedidoService implements Serializable { private static final long serialVersionUID = 1L; @Inject private Pedidos pedidos; @Inject private EstoqueService estoqueService; @Transactional public Pedido cancelar(Pedido pedido) { pedido = this.pedidos.porId(pedido.getId()); if (pedido.isNaoCancelavel()) { throw new NegocioException("Pedido não pode ser cancelado no status " + pedido.getStatus().getDescricao() + "."); } if (pedido.isEmitido()) { this.estoqueService.retornarItensEstoque(pedido); } pedido.setStatus(StatusPedido.CANCELADO); pedido = this.pedidos.guardar(pedido); return pedido; } }