package br.com.centralit.citcorpore.negocio;
import java.util.Collection;
import br.com.centralit.citcorpore.bean.EntregaItemRequisicaoDTO;
import br.com.centralit.citcorpore.bean.InspecaoEntregaItemDTO;
import br.com.centralit.citcorpore.bean.ItemRequisicaoProdutoDTO;
import br.com.centralit.citcorpore.bean.ParecerDTO;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.centralit.citcorpore.integracao.EntregaItemRequisicaoDao;
import br.com.centralit.citcorpore.integracao.InspecaoEntregaItemDao;
import br.com.centralit.citcorpore.integracao.ItemRequisicaoProdutoDao;
import br.com.centralit.citcorpore.util.Enumerados.AcaoItemRequisicaoProduto;
import br.com.centralit.citcorpore.util.Enumerados.SituacaoEntregaItemRequisicao;
import br.com.centralit.citcorpore.util.Enumerados.SituacaoItemRequisicaoProduto;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.integracao.TransactionControler;
import br.com.citframework.integracao.TransactionControlerImpl;
import br.com.citframework.service.CrudServiceImpl;
import br.com.citframework.util.UtilDatas;
public class EntregaItemRequisicaoServiceEjb extends CrudServiceImpl implements EntregaItemRequisicaoService {
private EntregaItemRequisicaoDao dao;
@Override
protected EntregaItemRequisicaoDao getDao() {
if (dao == null) {
dao = new EntregaItemRequisicaoDao();
}
return dao;
}
@Override
public Collection findByIdPedido(final Integer parm) throws Exception {
try {
return this.getDao().findByIdPedido(parm);
} catch (final Exception e) {
throw new ServiceException(e);
}
}
@Override
public void deleteByIdPedido(final Integer parm) throws Exception {
try {
this.getDao().deleteByIdPedido(parm);
} catch (final Exception e) {
throw new ServiceException(e);
}
}
@Override
public Collection findByIdColetaPreco(final Integer parm) throws Exception {
try {
return this.getDao().findByIdColetaPreco(parm);
} catch (final Exception e) {
throw new ServiceException(e);
}
}
@Override
public void deleteByIdColetaPreco(final Integer parm) throws Exception {
try {
this.getDao().deleteByIdColetaPreco(parm);
} catch (final Exception e) {
throw new ServiceException(e);
}
}
@Override
public Collection findByIdItemRequisicaoProduto(final Integer parm) throws Exception {
try {
return this.getDao().findByIdItemRequisicaoProduto(parm);
} catch (final Exception e) {
throw new ServiceException(e);
}
}
@Override
public void deleteByIdItemRequisicaoProduto(final Integer parm) throws Exception {
try {
this.getDao().deleteByIdItemRequisicaoProduto(parm);
} catch (final Exception e) {
throw new ServiceException(e);
}
}
@Override
public Collection findByIdItemTrabalho(final Integer parm) throws Exception {
try {
return this.getDao().findByIdItemTrabalho(parm);
} catch (final Exception e) {
throw new ServiceException(e);
}
}
@Override
public Collection<EntregaItemRequisicaoDTO> findNaoAprovadasByIdSolicitacaoServico(final Integer idSolicitacaoServico) throws Exception {
try {
return this.getDao().findNaoAprovadasByIdSolicitacaoServico(idSolicitacaoServico);
} catch (final Exception e) {
throw new ServiceException(e);
}
}
@Override
public void atualizaInspecao(final EntregaItemRequisicaoDTO entregaItemRequisicaoDto) throws Exception {
final InspecaoEntregaItemDao inspecaoEntregaItemDao = new InspecaoEntregaItemDao();
final TransactionControler tc = new TransactionControlerImpl(inspecaoEntregaItemDao.getAliasDB());
try {
tc.start();
inspecaoEntregaItemDao.setTransactionControler(tc);
inspecaoEntregaItemDao.deleteByIdEntrega(entregaItemRequisicaoDto.getIdEntrega());
if (entregaItemRequisicaoDto.getColInspecao() != null) {
for (final InspecaoEntregaItemDTO inspecaoDto : entregaItemRequisicaoDto.getColInspecao()) {
if (inspecaoDto.getAvaliacao() == null || inspecaoDto.getAvaliacao().trim().length() == 0) {
throw new Exception("Avalia��o n�o informada");
}
inspecaoDto.setIdResponsavel(entregaItemRequisicaoDto.getUsuarioDto().getIdEmpregado());
inspecaoDto.setDataHoraInspecao(UtilDatas.getDataHoraAtual());
inspecaoDto.setIdEntrega(entregaItemRequisicaoDto.getIdEntrega());
inspecaoEntregaItemDao.create(inspecaoDto);
}
}
tc.commit();
tc.close();
} catch (final Exception e) {
this.rollbackTransaction(tc, e);
}
}
public void atualizaSituacao(final EntregaItemRequisicaoDTO entregaItemRequisicaoDto, final UsuarioDTO usuarioDto, final TransactionControler tc) throws Exception {
final ItemRequisicaoProdutoDao itemRequisicaoDao = new ItemRequisicaoProdutoDao();
itemRequisicaoDao.setTransactionControler(tc);
final ItemRequisicaoProdutoServiceEjb itemRequisicaoService = new ItemRequisicaoProdutoServiceEjb();
ItemRequisicaoProdutoDTO itemRequisicaoDto = new ItemRequisicaoProdutoDTO();
itemRequisicaoDto.setIdItemRequisicaoProduto(entregaItemRequisicaoDto.getIdItemRequisicaoProduto());
itemRequisicaoDto = (ItemRequisicaoProdutoDTO) itemRequisicaoDao.restore(itemRequisicaoDto);
final EntregaItemRequisicaoDao entregaItemRequisicaoDao = new EntregaItemRequisicaoDao();
entregaItemRequisicaoDao.setTransactionControler(tc);
EntregaItemRequisicaoDTO entregaAuxDto = new EntregaItemRequisicaoDTO();
entregaAuxDto.setIdEntrega(entregaItemRequisicaoDto.getIdEntrega());
entregaAuxDto = (EntregaItemRequisicaoDTO) entregaItemRequisicaoDao.restore(entregaAuxDto);
final ParecerDTO parecerDto = new ParecerServiceEjb().createOrUpdate(tc, entregaAuxDto.getIdParecer(), usuarioDto, entregaItemRequisicaoDto.getIdJustificativa(),
entregaItemRequisicaoDto.getComplementoJustificativa(), entregaItemRequisicaoDto.getAprovado());
entregaAuxDto.setIdParecer(parecerDto.getIdParecer());
if (parecerDto.getAprovado().equalsIgnoreCase("S")) {
entregaAuxDto.setSituacao(SituacaoEntregaItemRequisicao.Aprovada.name());
itemRequisicaoDto.setSituacao(SituacaoItemRequisicaoProduto.Finalizado.name());
} else if (parecerDto.getAprovado().equalsIgnoreCase("N")) {
entregaAuxDto.setIdItemTrabalho(null);
entregaAuxDto.setSituacao(SituacaoEntregaItemRequisicao.NaoAprovada.name());
itemRequisicaoDto.setSituacao(SituacaoItemRequisicaoProduto.InspecaoRejeitada.name());
}
entregaItemRequisicaoDao.update(entregaAuxDto);
itemRequisicaoDao.update(itemRequisicaoDto);
itemRequisicaoService.geraHistorico(tc, usuarioDto, itemRequisicaoDto, AcaoItemRequisicaoProduto.Inspecao, null,
SituacaoItemRequisicaoProduto.valueOf(itemRequisicaoDto.getSituacao()));
}
public void finalizaDecursoPrazo(final EntregaItemRequisicaoDTO entregaItemRequisicaoDto, final TransactionControler tc) throws Exception {
final ItemRequisicaoProdutoDao itemRequisicaoDao = new ItemRequisicaoProdutoDao();
itemRequisicaoDao.setTransactionControler(tc);
final ItemRequisicaoProdutoServiceEjb itemRequisicaoService = new ItemRequisicaoProdutoServiceEjb();
ItemRequisicaoProdutoDTO itemRequisicaoDto = new ItemRequisicaoProdutoDTO();
itemRequisicaoDto.setIdItemRequisicaoProduto(entregaItemRequisicaoDto.getIdItemRequisicaoProduto());
itemRequisicaoDto = (ItemRequisicaoProdutoDTO) itemRequisicaoDao.restore(itemRequisicaoDto);
final EntregaItemRequisicaoDao entregaItemRequisicaoDao = new EntregaItemRequisicaoDao();
entregaItemRequisicaoDao.setTransactionControler(tc);
entregaItemRequisicaoDto.setSituacao(SituacaoEntregaItemRequisicao.AprovadaPrazo.name());
entregaItemRequisicaoDao.updateNotNull(entregaItemRequisicaoDto);
double qtde = 0;
final Collection<EntregaItemRequisicaoDTO> colEntregas = entregaItemRequisicaoDao.findByIdItemRequisicaoProduto(entregaItemRequisicaoDto.getIdItemRequisicaoProduto());
for (final EntregaItemRequisicaoDTO entregaDto : colEntregas) {
if (entregaDto.getSituacao().equals(SituacaoEntregaItemRequisicao.Aprovada.name())
|| entregaDto.getSituacao().equals(SituacaoEntregaItemRequisicao.AprovadaPrazo.name())) {
qtde += entregaDto.getQuantidadeEntregue().doubleValue();
}
}
if (itemRequisicaoDto.getQtdeAprovada().doubleValue() == qtde) {
itemRequisicaoDto.setSituacao(SituacaoItemRequisicaoProduto.Finalizado.name());
itemRequisicaoDao.update(itemRequisicaoDto);
itemRequisicaoService.geraHistorico(tc, null, itemRequisicaoDto, AcaoItemRequisicaoProduto.Inspecao, "Finaliza��o autom�tica por decurso de prazo",
SituacaoItemRequisicaoProduto.valueOf(itemRequisicaoDto.getSituacao()));
}
}
public void atualizaAcionamentoGarantia(final EntregaItemRequisicaoDTO entregaItemRequisicaoDto, final UsuarioDTO usuarioDto, final TransactionControler tc) throws Exception {
final EntregaItemRequisicaoDao entregaItemRequisicaoDao = new EntregaItemRequisicaoDao();
entregaItemRequisicaoDao.setTransactionControler(tc);
EntregaItemRequisicaoDTO entregaAuxDto = new EntregaItemRequisicaoDTO();
entregaAuxDto.setIdEntrega(entregaItemRequisicaoDto.getIdEntrega());
entregaAuxDto = (EntregaItemRequisicaoDTO) entregaItemRequisicaoDao.restore(entregaAuxDto);
entregaAuxDto.setSituacao(SituacaoEntregaItemRequisicao.Aguarda.name());
entregaAuxDto.setIdItemTrabalho(null);
entregaItemRequisicaoDao.update(entregaAuxDto);
final ItemRequisicaoProdutoDao itemRequisicaoDao = new ItemRequisicaoProdutoDao();
itemRequisicaoDao.setTransactionControler(tc);
final ItemRequisicaoProdutoServiceEjb itemRequisicaoService = new ItemRequisicaoProdutoServiceEjb();
ItemRequisicaoProdutoDTO itemRequisicaoDto = new ItemRequisicaoProdutoDTO();
itemRequisicaoDto.setIdItemRequisicaoProduto(entregaItemRequisicaoDto.getIdItemRequisicaoProduto());
itemRequisicaoDto = (ItemRequisicaoProdutoDTO) itemRequisicaoDao.restore(itemRequisicaoDto);
itemRequisicaoDto.setSituacao(SituacaoItemRequisicaoProduto.AguardandoInspecao.name());
entregaItemRequisicaoDao.update(entregaAuxDto);
itemRequisicaoService.geraHistorico(tc, usuarioDto, itemRequisicaoDto, AcaoItemRequisicaoProduto.Garantia, null, SituacaoItemRequisicaoProduto.AguardandoInspecaoGarantia);
}
}