From a8f7aef9808733eb0260134f3d44973391e1c64d Mon Sep 17 00:00:00 2001 From: erick.sato Date: Tue, 24 May 2016 11:24:01 -0300 Subject: [PATCH] [Redmine #5043]Salvar atendimento requisição --- cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/MaterialEstoqueFIFOItemDao.java | 5 +++++ cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/RequisicaoConsumoItemDao.java | 2 +- cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/impl/MaterialEstoqueFIFOItemDaoHibernate.java | 17 +++++++++++++++++ cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/impl/RequisicaoConsumoItemDaoHibernate.java | 3 +-- cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/DominioAlmoxarifado.java | 16 ++++++++-------- cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/MaterialEstoqueFIFOItem.java | 136 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------------- cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/EntradaAlmoxarifadoItemService.java | 2 ++ cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/MaterialEstoqueFIFOItemService.java | 4 ++++ cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/AtendimentoRequisicaoConsumoItemServiceImpl.java | 2 -- cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/AtendimentoRequisicaoConsumoServiceImpl.java | 101 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------- cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/EntradaAlmoxarifadoItemServiceImpl.java | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++-------- cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/MaterialEstoqueFIFOItemServiceImpl.java | 7 +++++++ cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/MovimentoEstoqueServiceImpl.java | 49 ++++++++++++++++++++++++++++++------------------- cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/RequisicaoConsumoItemServiceImpl.java | 3 +-- cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/AtendimentoRequisicaoConsumoController.js | 15 +++++++++++++-- 15 files changed, 291 insertions(+), 129 deletions(-) diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/MaterialEstoqueFIFOItemDao.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/MaterialEstoqueFIFOItemDao.java index cc5aa91..7d76663 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/MaterialEstoqueFIFOItemDao.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/MaterialEstoqueFIFOItemDao.java @@ -1,7 +1,12 @@ package br.com.centralit.api.dao; +import java.util.List; + +import br.com.centralit.api.model.MaterialEstoqueFIFOItem; import br.com.centralit.framework.dao.arquitetura.CitGenericDAO; public interface MaterialEstoqueFIFOItemDao extends CitGenericDAO { + + List findFIFOsByMaterial(long idMaterial); } diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/RequisicaoConsumoItemDao.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/RequisicaoConsumoItemDao.java index a0b97db..d60f1f9 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/RequisicaoConsumoItemDao.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/RequisicaoConsumoItemDao.java @@ -26,7 +26,7 @@ public interface RequisicaoConsumoItemDao extends CitGenericDAO { * @param statusFinalizado * @return */ - Long findRequisicaoAnteriorPorMaterial(MaterialConsumo materialConsumo, EstruturaOrganizacional unidadeRequisitante, Dominio statusFinalizado, Dominio statusParcialmenteAtendida, Dominio statusAtendida); + Long findRequisicaoAnteriorPorMaterial(MaterialConsumo materialConsumo, EstruturaOrganizacional unidadeRequisitante, Dominio statusFinalizado, Dominio statusParcialmenteAtendida); List findItensRequisicaoPorMaterial(Long idRequisicao, Long idMaterial); diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/impl/MaterialEstoqueFIFOItemDaoHibernate.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/impl/MaterialEstoqueFIFOItemDaoHibernate.java index 2f202d2..64881e5 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/impl/MaterialEstoqueFIFOItemDaoHibernate.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/impl/MaterialEstoqueFIFOItemDaoHibernate.java @@ -1,10 +1,15 @@ package br.com.centralit.api.dao.impl; +import java.util.List; + import org.springframework.stereotype.Repository; +import com.googlecode.genericdao.search.Sort; + import br.com.centralit.api.dao.MaterialEstoqueFIFOItemDao; import br.com.centralit.api.model.MaterialEstoqueFIFOItem; import br.com.centralit.framework.dao.arquitetura.CitGenericDAOImpl; +import br.com.centralit.framework.dao.arquitetura.SearchSeven; @Repository("materialEstoqueFIFOItemDao") public class MaterialEstoqueFIFOItemDaoHibernate extends CitGenericDAOImpl implements MaterialEstoqueFIFOItemDao { @@ -12,5 +17,17 @@ public class MaterialEstoqueFIFOItemDaoHibernate extends CitGenericDAOImpl imple public MaterialEstoqueFIFOItemDaoHibernate() { super(MaterialEstoqueFIFOItem.class); } + + @Override + public List findFIFOsByMaterial(long idMaterial) { + + SearchSeven search = new SearchSeven(this.persistentClass); + + search.addFilterEqual("material.id", idMaterial); + + search.addSort(Sort.asc("id")); + + return this.search(search, this.persistentClass); + } } diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/impl/RequisicaoConsumoItemDaoHibernate.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/impl/RequisicaoConsumoItemDaoHibernate.java index 7ba49d1..f179317 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/impl/RequisicaoConsumoItemDaoHibernate.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/impl/RequisicaoConsumoItemDaoHibernate.java @@ -158,7 +158,7 @@ public class RequisicaoConsumoItemDaoHibernate extends CitGenericDAOImpl impleme * {@inheritDoc} */ @Override - public Long findRequisicaoAnteriorPorMaterial(MaterialConsumo materialConsumo, EstruturaOrganizacional unidadeRequisitante, Dominio statusFinalizado, Dominio statusParcialmenteAtendida, Dominio statusAtendida) { + public Long findRequisicaoAnteriorPorMaterial(MaterialConsumo materialConsumo, EstruturaOrganizacional unidadeRequisitante, Dominio statusFinalizado, Dominio statusParcialmenteAtendida) { StringBuilder str = new StringBuilder(); str.append("select RequisicaoConsumo.id "); @@ -173,7 +173,6 @@ public class RequisicaoConsumoItemDaoHibernate extends CitGenericDAOImpl impleme query.setParameter("idUnidadeRequisitante", unidadeRequisitante.getId()); query.setParameter("dominioFinalizado", statusFinalizado.getId()); query.setParameter("dominioParcialmenteAtendida", statusParcialmenteAtendida.getId()); - query.setParameter("dominioAtendida", statusAtendida.getId()); query.setMaxResults(1); diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/DominioAlmoxarifado.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/DominioAlmoxarifado.java index 743a3cb..41115cf 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/DominioAlmoxarifado.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/DominioAlmoxarifado.java @@ -25,17 +25,17 @@ public class DominioAlmoxarifado { /** Atributo TIPO_STATUS_REQUISICAO. */ public static final String TIPO_STATUS_REQUISICAO = "tipoStatusRequisicao"; - /** Atributo TIPO_STATUS_NAO_CONCLUIDA. */ - public static final Long TIPO_STATUS_NAO_CONCLUIDA = 1L; - + /** Atributo TIPO_STATUS_ATENDIDA_PARCIALMENTE. */ + public static final Long TIPO_STATUS_ATENDIDA_PARCIALMENTE = 1L; + /** Atributo TIPO_STATUS_PRONTA_PARA_ATENDIMENTO. */ public static final Long TIPO_STATUS_PRONTA_PARA_ATENDIMENTO = 2L; + + /** Atributo TIPO_STATUS_NAO_CONCLUIDA. */ + public static final Long TIPO_STATUS_NAO_CONCLUIDA = 3L; - /** Atributo TIPO_STATUS_ATENDIDA_PARCIALMENTE. */ - public static final Long TIPO_STATUS_ATENDIDA_PARCIALMENTE = 3L; - - /** Atributo TIPO_STATUS_ATENDIDA. */ - public static final Long TIPO_STATUS_ATENDIDA = 4L; + /** Atributo TIPO_STATUS_DEVOLVIDA. */ + public static final Long TIPO_STATUS_DEVOLVIDA = 4L; /** Atributo TIPO_STATUS_FINALIZADA. */ public static final Long TIPO_STATUS_FINALIZADA = 5L; diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/MaterialEstoqueFIFOItem.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/MaterialEstoqueFIFOItem.java index e8da073..15d633c 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/MaterialEstoqueFIFOItem.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/MaterialEstoqueFIFOItem.java @@ -18,18 +18,30 @@ import br.com.centralit.framework.model.arquitetura.PersistentObjectAuditOrganiz /** * - *

+ *

+ * + *

* - *

Company: Central IT - Governança Corporativa -

+ *

+ * Company: Central IT - Governança Corporativa - + *

* - *

Title:

+ *

+ * Title: + *

* - *

Description:

+ *

+ * Description: + *

* - *

Iniciativa(s): NUMERO_INICIATIVA

+ *

+ * Iniciativa(s): NUMERO_INICIATIVA + *

* - *

Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO

- * + *

+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *

+ * * @since 29/04/2016 - 15:55:15 * * @version 1.0.0 @@ -45,16 +57,16 @@ public class MaterialEstoqueFIFOItem extends PersistentObjectAuditOrganizacao { /** Atributo serialVersionUID. */ private static final long serialVersionUID = 1170228299223134768L; private static int SCALE_DIVISOR_DECIMAL = 4; - + /** Atributo id. */ @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; - + /** Atributo material. */ @ManyToOne(fetch = FetchType.LAZY, optional = false) private MaterialConsumo material; - + /** Atributo materialEstoque. */ @ManyToOne(fetch = FetchType.LAZY, optional = true) private MaterialEstoque materialEstoque; @@ -62,7 +74,7 @@ public class MaterialEstoqueFIFOItem extends PersistentObjectAuditOrganizacao { /** Atributo materialEstoqueInativo. */ @ManyToOne(fetch = FetchType.LAZY, optional = true) private MaterialEstoque materialEstoqueInativo; - + /** Atributo quantidadeInicial. */ @Column(precision = 20, scale = 4, nullable = false) private BigDecimal quantidadeInicial; @@ -70,7 +82,7 @@ public class MaterialEstoqueFIFOItem extends PersistentObjectAuditOrganizacao { /** Atributo quantidadeRestante. */ @Column(precision = 20, scale = 4, nullable = false) private BigDecimal quantidadeRestante; - + /** Atributo valorUnitario. */ @Column(precision = 20, scale = 4, nullable = false) private BigDecimal valorUnitario; @@ -78,20 +90,23 @@ public class MaterialEstoqueFIFOItem extends PersistentObjectAuditOrganizacao { /** Atributo valorSobra. */ @Column(precision = 20, scale = 4, nullable = false) private BigDecimal valorSobra; - + + @Column(precision = 20, scale = 4, nullable = false) + private BigDecimal valorResto; + /** Atributo valorTotal. */ @Column(precision = 20, scale = 4, nullable = false) private BigDecimal valorTotal; - + @ManyToOne(fetch = FetchType.EAGER, optional = false) private EntradaAlmoxarifadoItem entradaItem; - - + protected MaterialEstoqueFIFOItem() { super(); } - public MaterialEstoqueFIFOItem( MaterialEstoque materialEstoque, BigDecimal quantidadeInicial, BigDecimal valorTotal, EntradaAlmoxarifadoItem entradaItem ) { + public MaterialEstoqueFIFOItem(MaterialEstoque materialEstoque, BigDecimal quantidadeInicial, BigDecimal valorTotal, + EntradaAlmoxarifadoItem entradaItem) { super(); this.material = materialEstoque.getMaterial(); this.materialEstoque = materialEstoque; @@ -123,70 +138,63 @@ public class MaterialEstoqueFIFOItem extends PersistentObjectAuditOrganizacao { this.id = id; } - /** * Retorna o valor do atributo material * * @return MaterialConsumo */ public MaterialConsumo getMaterial() { - + return material; } - /** * Define o valor do atributo material. * - * @param material + * @param material */ public void setMaterial(MaterialConsumo material) { - + this.material = material; } - - /** * Retorna o valor do atributo materialEstoque * * @return MaterialEstoque */ public MaterialEstoque getMaterialEstoque() { - + return materialEstoque; } - /** * Define o valor do atributo materialEstoque. * - * @param materialEstoque + * @param materialEstoque */ public void setMaterialEstoque(MaterialEstoque materialEstoque) { - + this.materialEstoque = materialEstoque; } - /** * Retorna o valor do atributo materialEstoqueInativo * * @return MaterialEstoque */ public MaterialEstoque getMaterialEstoqueInativo() { - + return materialEstoqueInativo; } - /** * Define o valor do atributo materialEstoqueInativo. * - * @param materialEstoqueInativo + * @param materialEstoqueInativo */ public void setMaterialEstoqueInativo(MaterialEstoque materialEstoqueInativo) { - + this.materialEstoqueInativo = materialEstoqueInativo; } @@ -196,129 +204,133 @@ public class MaterialEstoqueFIFOItem extends PersistentObjectAuditOrganizacao { * @return BigDecimal */ public BigDecimal getQuantidadeInicial() { - + return quantidadeInicial; } - /** * Define o valor do atributo quantidadeInicial. * - * @param quantidadeInicial + * @param quantidadeInicial */ public void setQuantidadeInicial(BigDecimal quantidadeInicial) { - + this.quantidadeInicial = quantidadeInicial; } - /** * Retorna o valor do atributo quantidadeRestante * * @return BigDecimal */ public BigDecimal getQuantidadeRestante() { - + return quantidadeRestante; } - /** * Define o valor do atributo quantidadeRestante. * - * @param quantidadeRestante + * @param quantidadeRestante */ public void setQuantidadeRestante(BigDecimal quantidadeRestante) { - + this.quantidadeRestante = quantidadeRestante; } - /** * Retorna o valor do atributo valorUnitario * * @return BigDecimal */ public BigDecimal getValorUnitario() { - + return valorUnitario; } - /** * Define o valor do atributo valorUnitario. * - * @param valorUnitario + * @param valorUnitario */ public void setValorUnitario(BigDecimal valorUnitario) { - + this.valorUnitario = valorUnitario; } - /** * Retorna o valor do atributo valorSobra * * @return BigDecimal */ public BigDecimal getValorSobra() { - + return valorSobra; } - /** * Define o valor do atributo valorSobra. * - * @param valorSobra + * @param valorSobra */ public void setValorSobra(BigDecimal valorSobra) { - + this.valorSobra = valorSobra; } - /** * Retorna o valor do atributo valorTotal * * @return BigDecimal */ public BigDecimal getValorTotal() { - + return valorTotal; } - /** * Define o valor do atributo valorTotal. * - * @param valorTotal + * @param valorTotal */ public void setValorTotal(BigDecimal valorTotal) { - + this.valorTotal = valorTotal; } - /** * Retorna o valor do atributo entradaItem * * @return EntradaAlmoxarifadoItem */ public EntradaAlmoxarifadoItem getEntradaItem() { - + return entradaItem; } - /** * Define o valor do atributo entradaItem. * - * @param entradaItem + * @param entradaItem */ public void setEntradaItem(EntradaAlmoxarifadoItem entradaItem) { - + this.entradaItem = entradaItem; } + public BigDecimal getValorResto() { + return valorResto; + } + + public void setValorResto(BigDecimal valorResto) { + + if (valorTotal != null && quantidadeRestante != null) { + BigDecimal valorUnitarioNovo = valorTotal.divide(quantidadeRestante, SCALE_DIVISOR_DECIMAL, + RoundingMode.CEILING); + + this.valorResto = valorTotal.subtract(valorUnitarioNovo.multiply(quantidadeRestante)); + } + + } + } diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/EntradaAlmoxarifadoItemService.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/EntradaAlmoxarifadoItemService.java index d7d6381..5327197 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/EntradaAlmoxarifadoItemService.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/EntradaAlmoxarifadoItemService.java @@ -139,4 +139,6 @@ public interface EntradaAlmoxarifadoItemService extends GenericService findItensPorEntradaId(Long idEntrada); Boolean existeItemVinculadoAMaterialLocalEstoque(Long idMaterialLocalEstoque); + + public BigDecimal getValorFIFOPorMaterial(MaterialConsumo materialConsumo, BigDecimal quantidadeMovimentada); } diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/MaterialEstoqueFIFOItemService.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/MaterialEstoqueFIFOItemService.java index d082f6e..c05b003 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/MaterialEstoqueFIFOItemService.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/MaterialEstoqueFIFOItemService.java @@ -1,8 +1,12 @@ package br.com.centralit.api.service; +import java.util.List; + import br.com.centralit.api.model.MaterialEstoqueFIFOItem; import br.com.centralit.framework.service.arquitetura.GenericService; public interface MaterialEstoqueFIFOItemService extends GenericService { + + List findFIFOsByMaterial(long idMaterial); } diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/AtendimentoRequisicaoConsumoItemServiceImpl.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/AtendimentoRequisicaoConsumoItemServiceImpl.java index 6f559f4..3996f11 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/AtendimentoRequisicaoConsumoItemServiceImpl.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/AtendimentoRequisicaoConsumoItemServiceImpl.java @@ -164,8 +164,6 @@ public class AtendimentoRequisicaoConsumoItemServiceImpl extends GenericServiceI idsDominiosTipoStatusRequisicao.add(statusFinalizado.getId()); Dominio statusParcialmenteAtendida = this.dominioService.findByChaveAndCodigo(DominioAlmoxarifado.TIPO_STATUS_REQUISICAO, DominioAlmoxarifado.TIPO_STATUS_ATENDIDA_PARCIALMENTE); idsDominiosTipoStatusRequisicao.add(statusParcialmenteAtendida.getId()); - Dominio statusAtendida = this.dominioService.findByChaveAndCodigo(DominioAlmoxarifado.TIPO_STATUS_REQUISICAO, DominioAlmoxarifado.TIPO_STATUS_ATENDIDA); - idsDominiosTipoStatusRequisicao.add(statusAtendida.getId()); RequisicaoConsumoItem requisicaoConsumoItem = this.requisicaoConsumoItemService.find(atendimentoRequisicaoConsumoItem.getRequisicaoConsumoItem().getId()); diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/AtendimentoRequisicaoConsumoServiceImpl.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/AtendimentoRequisicaoConsumoServiceImpl.java index d0af178..8065398 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/AtendimentoRequisicaoConsumoServiceImpl.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/AtendimentoRequisicaoConsumoServiceImpl.java @@ -19,6 +19,7 @@ import br.com.centralit.api.model.AtendimentoRequisicaoConsumoItem; import br.com.centralit.api.model.AtendimentoRequisicaoConsumoItemEndereco; import br.com.centralit.api.model.DominioAlmoxarifado; import br.com.centralit.api.model.MaterialLocalEstoque; +import br.com.centralit.api.model.RequisicaoConsumoItem; import br.com.centralit.api.service.AtendimentoRequisicaoConsumoItemService; import br.com.centralit.api.service.AtendimentoRequisicaoConsumoService; import br.com.centralit.api.service.ConfiguracaoParametroSistemaService; @@ -144,6 +145,11 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl< this.validarEntidade(entity, this.validator); + ValidacaoAtendimentoRequisicaoConsumoVH validacao = this.validarQuantidadesAtendidas(entity); + if(StringUtils.isNotBlank(validacao.getMensagemErro())){ + throw new BusinessException(validacao.getMensagemErro(), CodigoErro.REGRA_NEGOCIO.getValue()); + } + if (!UtilColecao.isVazio(entity.getAtendimentos())) { for (AtendimentoRequisicaoConsumo atendimento : entity.getAtendimentos()) { @@ -288,8 +294,10 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl< * @param entity */ private void atualizarStatusRquisicao(AtendimentoRequisicaoConsumo entity) { + + entity.getRequisicaoConsumo().setTipoStatusRequisicao(this.dominioService.findByChaveAndCodigo(DominioAlmoxarifado.TIPO_STATUS_REQUISICAO, DominioAlmoxarifado.TIPO_STATUS_ATENDIDA_PARCIALMENTE)); - Boolean atendidoCompletamente = Boolean.TRUE; + /*Boolean atendidoCompletamente = Boolean.TRUE; for (AtendimentoRequisicaoConsumoItem atendimentoItem : entity.getAtendimentoRequisicaoConsumoItems()) { @@ -314,7 +322,7 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl< entity.getRequisicaoConsumo().setTipoStatusRequisicao(this.dominioService.findByChaveAndCodigo(DominioAlmoxarifado.TIPO_STATUS_REQUISICAO, DominioAlmoxarifado.TIPO_STATUS_ATENDIDA_PARCIALMENTE)); - } + }*/ } @@ -328,8 +336,55 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl< private void montarEntidade(AtendimentoRequisicaoConsumo entity) { entity.setRequisicaoConsumo(this.requisicaoConsumoService.find(entity.getRequisicaoConsumo().getId())); - - List listaSemAtendimentosComQuantidadeZero = new ArrayList(); + + for (AtendimentoRequisicaoConsumoItem atendimentoItem : entity.getAtendimentoRequisicaoConsumoItems()) { + atendimentoItem.setAtendimentoRequisicaoConsumo(entity); + atendimentoItem.setOrganizacao(getUsuario().getOrganizacao()); + atendimentoItem.setRequisicaoConsumoItem(this.requisicaoConsumoItemService.find(atendimentoItem.getRequisicaoConsumoItem().getId())); + for (AtendimentoRequisicaoConsumoItemEndereco atendimentoRequisicaoConsumoItemEndereco : atendimentoItem.getAtendimentoRequisicaoConsumoItemEnderecos()) { + atendimentoRequisicaoConsumoItemEndereco.setAtendimentoRequisicaoConsumoItem(atendimentoItem); + } + } + + /*if(entity.getRequisicaoConsumo().getRequisicaoConsumoItens().size() > entity.getAtendimentoRequisicaoConsumoItems().size()){ + + List listaAtendimentoItem = new ArrayList(); + boolean addNovoAtendimentoItem = true; + + for (RequisicaoConsumoItem requisicaoConsumoItem : entity.getRequisicaoConsumo().getRequisicaoConsumoItens()) { + + for (AtendimentoRequisicaoConsumoItem atendimentoRequisicaoConsumoItem : entity.getAtendimentoRequisicaoConsumoItems()) { + + if(requisicaoConsumoItem.getMaterialConsumo().getId().doubleValue() == atendimentoRequisicaoConsumoItem.getMaterial().getId().doubleValue()){ + atendimentoRequisicaoConsumoItem.setAtendimentoRequisicaoConsumo(entity); + atendimentoRequisicaoConsumoItem.setOrganizacao(getUsuario().getOrganizacao()); + atendimentoRequisicaoConsumoItem.setRequisicaoConsumoItem(requisicaoConsumoItem); + atendimentoRequisicaoConsumoItem.setMaterial(this.materialConsumoService.find(atendimentoRequisicaoConsumoItem.getMaterial().getId())); + addNovoAtendimentoItem = false; + break; + } + } + + if(addNovoAtendimentoItem){ + AtendimentoRequisicaoConsumoItem item = new AtendimentoRequisicaoConsumoItem(); + item.setAtendimentoRequisicaoConsumo(entity); + item.setOrganizacao(getUsuario().getOrganizacao()); + item.setRequisicaoConsumoItem(requisicaoConsumoItem); + item.setMaterial(requisicaoConsumoItem.getMaterialConsumo()); + + AtendimentoRequisicaoConsumoItemEndereco atendimentoRequisicaoConsumoItemEndereco = new AtendimentoRequisicaoConsumoItemEndereco(); + atendimentoRequisicaoConsumoItemEndereco.setAtendimentoRequisicaoConsumoItem(item); + atendimentoRequisicaoConsumoItemEndereco.setQuantidade(new BigDecimal(0)); + + List listaAtendimentoRequisicaoConsumoItemEndereco = new ArrayList(); + listaAtendimentoRequisicaoConsumoItemEndereco.add(atendimentoRequisicaoConsumoItemEndereco); + item.setAtendimentoRequisicaoConsumoItemEnderecos(listaAtendimentoRequisicaoConsumoItemEndereco); + } + addNovoAtendimentoItem = true; + } + }*/ + + /*List listaSemAtendimentosComQuantidadeZero = new ArrayList(); for (AtendimentoRequisicaoConsumoItem atendimentoItem : entity.getAtendimentoRequisicaoConsumoItems()) { if(atendimentoItem.getQuantidade() == null){ @@ -346,7 +401,7 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl< atendimentoItem.setOrganizacao(getUsuario().getOrganizacao()); atendimentoItem.setRequisicaoConsumoItem(this.requisicaoConsumoItemService.find(atendimentoItem.getRequisicaoConsumoItem().getId())); - atendimentoItem.setMaterial(this.materialConsumoService.find(atendimentoItem.getMaterial().getId())); + atendimentoItem.setMaterial(this.materialConsumoService.find(atendimentoItem.getMaterial().getId())); BigDecimal qtdMaterialEmEstoque = this.materialConsumoService.getQuantidadeAtualMaterial(atendimentoItem.getMaterial().getId(), getUsuario().getOrganizacao().getId()); if (!atendimentoItem.isNew()) { @@ -370,14 +425,14 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl< } -// if (!UtilObjeto.isReferencia(atendimentoItem.getQuantidade()) || atendimentoItem.getQuantidade().doubleValue() <= 0) { -// -// throw new BusinessException(VALIDACAO_QUANTIDADE_ZERADA_NEGATIVA, CodigoErro.REGRA_NEGOCIO.getValue(), atendimentoItem.getMaterial().getDescricao()); -// } + if (!UtilObjeto.isReferencia(atendimentoItem.getQuantidade()) || atendimentoItem.getQuantidade().doubleValue() <= 0) { + + throw new BusinessException(VALIDACAO_QUANTIDADE_ZERADA_NEGATIVA, CodigoErro.REGRA_NEGOCIO.getValue(), atendimentoItem.getMaterial().getDescricao()); + } entity.getAtendimentoRequisicaoConsumoItems().add(atendimentoItem); - } + }*/ } @@ -493,20 +548,20 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl< */ private void configurarNumeroAtendimento(AtendimentoRequisicaoConsumo entity) { - if(entity.getOrganizacao() == null && entity.getRequisicaoConsumo() != null && entity.getRequisicaoConsumo().getOrganizacao() != null){ - entity.setOrganizacao(entity.getRequisicaoConsumo().getOrganizacao()); - } - - AtendimentoRequisicaoConsumo ultimoRegistro = - (AtendimentoRequisicaoConsumo) atendimentoRequisicaoConsumoDao.buscarUltimoRegistroComOrdenadoParametrizada("numeroAtendimento", entity.getOrganizacao().getId()); - - Long sequencial = null; - if (UtilObjeto.isReferencia(ultimoRegistro)) { - sequencial = ultimoRegistro.getNumeroAtendimento() == null ? null : Long.parseLong(ultimoRegistro.getNumeroAtendimento()); - } - String codigo = configuracaoParametroSistemaService.gerarNumeroIdentificacao(sequencial, entity.getOrganizacao()); +// if(entity.getOrganizacao() == null && entity.getRequisicaoConsumo() != null && entity.getRequisicaoConsumo().getOrganizacao() != null){ +// entity.setOrganizacao(entity.getRequisicaoConsumo().getOrganizacao()); +// } +// +// AtendimentoRequisicaoConsumo ultimoRegistro = +// (AtendimentoRequisicaoConsumo) atendimentoRequisicaoConsumoDao.buscarUltimoRegistroComOrdenadoParametrizada("numeroAtendimento", entity.getOrganizacao().getId()); +// +// Long sequencial = null; +// if (UtilObjeto.isReferencia(ultimoRegistro)) { +// sequencial = ultimoRegistro.getNumeroAtendimento() == null ? null : Long.parseLong(ultimoRegistro.getNumeroAtendimento()); +// } +// String codigo = configuracaoParametroSistemaService.gerarNumeroIdentificacao(sequencial, entity.getOrganizacao()); - entity.setNumeroAtendimento(codigo); + entity.setNumeroAtendimento(entity.getRequisicaoConsumo().getNumeroRequisicao()); } @Override diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/EntradaAlmoxarifadoItemServiceImpl.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/EntradaAlmoxarifadoItemServiceImpl.java index 86859d8..1eb1700 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/EntradaAlmoxarifadoItemServiceImpl.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/EntradaAlmoxarifadoItemServiceImpl.java @@ -15,12 +15,14 @@ import br.com.centralit.api.model.ContaContabilMovimento; import br.com.centralit.api.model.EntradaAlmoxarifadoItem; import br.com.centralit.api.model.EstruturaOrganizacional; import br.com.centralit.api.model.MaterialConsumo; +import br.com.centralit.api.model.MaterialEstoqueFIFOItem; import br.com.centralit.api.model.MovimentoEstoque; import br.com.centralit.api.service.ConfiguracaoParametroSistemaService; import br.com.centralit.api.service.ContaContabilMovimentoAlmoxarifadoService; import br.com.centralit.api.service.EntradaAlmoxarifadoItemService; import br.com.centralit.api.service.EstruturaOrganizacionalService; import br.com.centralit.api.service.MaterialConsumoService; +import br.com.centralit.api.service.MaterialEstoqueFIFOItemService; import br.com.centralit.api.service.MovimentoEstoqueService; import br.com.centralit.framework.exception.BusinessException; import br.com.centralit.framework.exception.CodigoErro; @@ -76,6 +78,9 @@ public class EntradaAlmoxarifadoItemServiceImpl extends GenericServiceImpl obterEntradaItemComSaldoPorMaterial(Long idMaterial) { return this.entradaAlmoxarifadoItemDao.obterEntradaItemComSaldoPorMaterial(idMaterial); } + + public BigDecimal getValorFIFOPorMaterial(MaterialConsumo materialConsumo, BigDecimal quantidadeMovimentada) { + BigDecimal retorno = BigDecimal.ZERO; + + List fifOsByMaterial = this.materialEstoqueFIFOItemService.findFIFOsByMaterial(materialConsumo.getId()); + + for (MaterialEstoqueFIFOItem materialEstoqueFIFOItem : fifOsByMaterial) { + + if (materialEstoqueFIFOItem.getQuantidadeRestante().compareTo(quantidadeMovimentada) > 0) { + retorno = retorno.add(quantidadeMovimentada.multiply(materialEstoqueFIFOItem.getValorUnitario())); + materialEstoqueFIFOItem.setQuantidadeRestante(materialEstoqueFIFOItem.getQuantidadeRestante().subtract(quantidadeMovimentada)); + materialEstoqueFIFOItem.setValorSobra(materialEstoqueFIFOItem.getQuantidadeRestante().multiply(materialEstoqueFIFOItem.getValorUnitario())); + this.materialEstoqueFIFOItemService.merge(materialEstoqueFIFOItem); + break; + + } else if (materialEstoqueFIFOItem.getQuantidadeRestante().compareTo(quantidadeMovimentada) == 0) { + //TODO ERICK ADICIONAR VALOR RESTANTE + retorno = retorno.add(materialEstoqueFIFOItem.getValorSobra()).add(materialEstoqueFIFOItem.getValorResto()); + materialEstoqueFIFOItem.setQuantidadeRestante(materialEstoqueFIFOItem.getQuantidadeRestante().subtract(quantidadeMovimentada)); + materialEstoqueFIFOItem.setValorSobra(materialEstoqueFIFOItem.getQuantidadeRestante().multiply(materialEstoqueFIFOItem.getValorUnitario())); + this.materialEstoqueFIFOItemService.merge(materialEstoqueFIFOItem); + break; + + } else { + retorno = retorno.add((materialEstoqueFIFOItem.getQuantidadeRestante().multiply(materialEstoqueFIFOItem.getValorUnitario()))).add(materialEstoqueFIFOItem.getValorResto()); + quantidadeMovimentada = quantidadeMovimentada.subtract(materialEstoqueFIFOItem.getQuantidadeRestante()); + materialEstoqueFIFOItem.setQuantidadeRestante(BigDecimal.ZERO); + this.materialEstoqueFIFOItemService.merge(materialEstoqueFIFOItem); + } + } + return retorno; + } /** * {@inheritDoc} @@ -217,24 +254,29 @@ public class EntradaAlmoxarifadoItemServiceImpl extends GenericServiceImpl entradaAlmoxarifadoItems = this.obterEntradaItemComSaldoPorMaterial(materialConsumo.getId()); + /* Collection entradaAlmoxarifadoItems = this.obterEntradaItemComSaldoPorMaterial(materialConsumo.getId()); for (EntradaAlmoxarifadoItem itemEntrada : entradaAlmoxarifadoItems) { - if (itemEntrada.getQuantidadeSaldo().compareTo(quantidadeMovimentada) > 0) { + + + if (itemEntrada.getMaterialLocalEstoque().getQuantidade().compareTo(quantidadeMovimentada) > 0) { retorno = retorno.add(quantidadeMovimentada.multiply(itemEntrada.getValorUnitario())); - itemEntrada.setQuantidadeSaldo(itemEntrada.getQuantidadeSaldo().subtract(quantidadeMovimentada)); + itemEntrada.getMaterialLocalEstoque().setQuantidade(itemEntrada.getMaterialLocalEstoque().getQuantidade().subtract(quantidadeMovimentada)); this.save(itemEntrada); break; - } else if (itemEntrada.getQuantidadeSaldo().compareTo(quantidadeMovimentada) == 0) { + + } else if (itemEntrada.getMaterialLocalEstoque().getQuantidade().compareTo(quantidadeMovimentada) == 0) { retorno = retorno.add((quantidadeMovimentada.multiply(itemEntrada.getValorUnitario())).add(itemEntrada.getValorSobra())); - itemEntrada.setQuantidadeSaldo(itemEntrada.getQuantidadeSaldo().subtract(quantidadeMovimentada)); + itemEntrada.getMaterialLocalEstoque().setQuantidade(itemEntrada.getMaterialLocalEstoque().getQuantidade().subtract(quantidadeMovimentada)); this.save(itemEntrada); break; + } else { - retorno = retorno.add((itemEntrada.getQuantidadeSaldo().multiply(itemEntrada.getValorUnitario())).add(itemEntrada.getValorSobra())); - quantidadeMovimentada = quantidadeMovimentada.subtract(itemEntrada.getQuantidadeSaldo()); - itemEntrada.setQuantidadeSaldo(BigDecimal.ZERO); + retorno = retorno.add((itemEntrada.getMaterialLocalEstoque().getQuantidade().multiply(itemEntrada.getValorUnitario())).add(itemEntrada.getValorSobra())); + quantidadeMovimentada = quantidadeMovimentada.subtract(itemEntrada.getMaterialLocalEstoque().getQuantidade()); + itemEntrada.getMaterialLocalEstoque().setQuantidade(BigDecimal.ZERO); this.save(itemEntrada); + } }*/ diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/MaterialEstoqueFIFOItemServiceImpl.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/MaterialEstoqueFIFOItemServiceImpl.java index 24ebfec..2b472f4 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/MaterialEstoqueFIFOItemServiceImpl.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/MaterialEstoqueFIFOItemServiceImpl.java @@ -1,5 +1,7 @@ package br.com.centralit.api.service.impl; +import java.util.List; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; @@ -32,4 +34,9 @@ public class MaterialEstoqueFIFOItemServiceImpl extends GenericServiceImpl findFIFOsByMaterial(long idMaterial) { + return materialEstoqueFIFOItemDao.findFIFOsByMaterial(idMaterial); + } + } diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/MovimentoEstoqueServiceImpl.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/MovimentoEstoqueServiceImpl.java index d20351a..94544a7 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/MovimentoEstoqueServiceImpl.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/MovimentoEstoqueServiceImpl.java @@ -19,6 +19,7 @@ import org.springframework.validation.Validator; import br.com.centralit.api.dao.MovimentoEstoqueDao; import br.com.centralit.api.model.AtendimentoRequisicaoConsumo; import br.com.centralit.api.model.AtendimentoRequisicaoConsumoItem; +import br.com.centralit.api.model.AtendimentoRequisicaoConsumoItemEndereco; import br.com.centralit.api.model.BaixaAlmoxarifado; import br.com.centralit.api.model.BaixaAlmoxarifadoItem; import br.com.centralit.api.model.Devolucao; @@ -415,27 +416,37 @@ public class MovimentoEstoqueServiceImpl extends GenericServiceImpl