diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/MaterialLocalEstoqueDao.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/MaterialLocalEstoqueDao.java index 3f857b6..0aee140 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/MaterialLocalEstoqueDao.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/MaterialLocalEstoqueDao.java @@ -1,5 +1,6 @@ package br.com.centralit.api.dao; +import java.math.BigDecimal; import java.util.List; import br.com.centralit.api.model.EstruturaOrganizacional; @@ -23,4 +24,6 @@ public interface MaterialLocalEstoqueDao extends CitGenericDAO { List buscarLocaisEstoquePorIdMaterialIdAlmoxarifado(Long idMaterial, Long idAlmoxarifado); Boolean enderecoJaVinculadoAoMaterial(Long idMaterial, Long idEndereco); + + BigDecimal buscarQuantidadeLocalEstoquePorIdMaterialIdEndereco(Long idMaterial, Long idEndereco); } diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/impl/MaterialLocalEstoqueDaoHibernate.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/impl/MaterialLocalEstoqueDaoHibernate.java index 3c614e0..e9d4f7c 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/impl/MaterialLocalEstoqueDaoHibernate.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/impl/MaterialLocalEstoqueDaoHibernate.java @@ -1,9 +1,12 @@ package br.com.centralit.api.dao.impl; +import java.math.BigDecimal; import java.util.List; import org.springframework.stereotype.Repository; +import com.googlecode.genericdao.search.Search; + import br.com.centralit.api.dao.MaterialLocalEstoqueDao; import br.com.centralit.api.model.EstruturaOrganizacional; import br.com.centralit.api.model.MaterialLocalEstoque; @@ -90,4 +93,28 @@ public class MaterialLocalEstoqueDaoHibernate extends CitGenericDAOImpl implemen return this.count(search) > 0 ? Boolean.TRUE : Boolean.FALSE; } + + @Override + public BigDecimal buscarQuantidadeLocalEstoquePorIdMaterialIdEndereco(Long idMaterial, Long idEndereco) { + + SearchSeven search = new SearchSeven(); + + search.setResultMode(Search.RESULT_SINGLE); + search.addField("quantidade"); + search.addFilterEqual("materialEstoque.material.id", idMaterial); + search.addFilterEqual("endereco.id", idEndereco); + + BigDecimal quantidadeTotal = new BigDecimal("0"); + + List consulta = this.search(search); + + if(consulta == null || consulta.size() == 0){ + return quantidadeTotal; + }else{ + for (BigDecimal qt : consulta) { + quantidadeTotal = quantidadeTotal.add(qt); + } + } + return quantidadeTotal; + } } diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/MaterialLocalEstoque.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/MaterialLocalEstoque.java index 3d7f1c8..16e3be2 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/MaterialLocalEstoque.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/MaterialLocalEstoque.java @@ -89,7 +89,7 @@ public class MaterialLocalEstoque extends PersistentObjectAuditOrganizacao { /** Atributo quantidade. */ @JsonView({ Views.MaterialLocalEstoqueView.class, ViewsAdmMateriais.TransferenciaEnderecoEstoqueView.class }) - private BigDecimal quantidade; + private BigDecimal quantidade = BigDecimal.ZERO; /** Atributo unidadeMedidaEntrada. */ @JsonView({ ViewsAdmMateriais.TransferenciaEnderecoEstoqueView.class }) 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 d431202..218590c 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 @@ -3,6 +3,7 @@ package br.com.centralit.api.service; import java.math.BigDecimal; import java.util.Calendar; import java.util.Collection; +import java.util.List; import br.com.centralit.api.model.EntradaAlmoxarifadoItem; import br.com.centralit.api.model.EstruturaOrganizacional; @@ -134,4 +135,6 @@ public interface EntradaAlmoxarifadoItemService extends GenericService findItensPorEntradaId(Long idEntrada); } diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/MaterialLocalEstoqueService.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/MaterialLocalEstoqueService.java index 844b169..67fb29a 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/MaterialLocalEstoqueService.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/MaterialLocalEstoqueService.java @@ -1,5 +1,6 @@ package br.com.centralit.api.service; +import java.math.BigDecimal; import java.util.List; import br.com.centralit.api.model.EstruturaOrganizacional; @@ -23,4 +24,6 @@ public interface MaterialLocalEstoqueService extends GenericService buscarLocaisEstoquePorIdMaterialIdAlmoxarifado(Long idMaterial, Long idAlmoxarifado); Boolean enderecoJaVinculadoAoMaterial(Long idMaterial, Long idEndereco); + + BigDecimal buscarQuantidadeLocalEstoquePorIdMaterialIdEndereco(Long idMaterial, Long idEndereco); } 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 0785988..4ec8076 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 @@ -259,4 +259,9 @@ public class EntradaAlmoxarifadoItemServiceImpl extends GenericServiceImpl findItensPorEntradaId(Long idEntrada) { + return (List)this.entradaAlmoxarifadoItemDao.buscarPorAtributo("entrada.id", idEntrada); + } + } diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/EntradaAlmoxarifadoServiceImpl.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/EntradaAlmoxarifadoServiceImpl.java index 8f16821..fab9dd5 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/EntradaAlmoxarifadoServiceImpl.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/EntradaAlmoxarifadoServiceImpl.java @@ -1,5 +1,6 @@ package br.com.centralit.api.service.impl; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; @@ -16,12 +17,14 @@ import org.springframework.validation.Validator; import br.com.centralit.api.dao.EntradaAlmoxarifadoDao; import br.com.centralit.api.model.BemAlmoxarifadoCaracteristica; import br.com.centralit.api.model.ContaContabilMovimento; +import br.com.centralit.api.model.EnderecoEstoque; import br.com.centralit.api.model.EntradaAlmoxarifado; import br.com.centralit.api.model.EntradaAlmoxarifadoDocumento; import br.com.centralit.api.model.EntradaAlmoxarifadoItem; import br.com.centralit.api.model.EntradaAlmoxarifadoObservacao; import br.com.centralit.api.model.MaterialCaracteristica; import br.com.centralit.api.model.MaterialConsumo; +import br.com.centralit.api.model.MaterialLocalEstoque; import br.com.centralit.api.model.MovimentoEstoque; import br.com.centralit.api.service.BemAlmoxarifadoCaracteristicaService; import br.com.centralit.api.service.ConfiguracaoParametroSistemaService; @@ -34,6 +37,7 @@ import br.com.centralit.api.service.EstruturaOrganizacionalService; import br.com.centralit.api.service.InternacionalizacaoService; import br.com.centralit.api.service.MaterialCaracteristicaService; import br.com.centralit.api.service.MaterialConsumoService; +import br.com.centralit.api.service.MaterialLocalEstoqueService; import br.com.centralit.api.service.MovimentoEstoqueService; import br.com.centralit.api.service.ParceiroService; import br.com.centralit.api.service.RascunhoService; @@ -131,6 +135,9 @@ public class EntradaAlmoxarifadoServiceImpl extends GenericServiceImpl hashMaterialLocalEstoque = new HashMap(); + + for (EntradaAlmoxarifadoItem entradaAlmoxarifadoItem : entrada.getEntradasItem()) { + if(hashMaterialLocalEstoque.get(entradaAlmoxarifadoItem.getMaterialLocalEstoque()) != null){ + hashMaterialLocalEstoque.put(entradaAlmoxarifadoItem.getMaterialLocalEstoque(), hashMaterialLocalEstoque.get(entradaAlmoxarifadoItem.getMaterialLocalEstoque()).add(entradaAlmoxarifadoItem.getQuantidade())); + }else{ + hashMaterialLocalEstoque.put(entradaAlmoxarifadoItem.getMaterialLocalEstoque(), entradaAlmoxarifadoItem.getQuantidade()); + } + } + + if(UtilObjeto.isReferencia(entrada)){ + List itensSalvos = this.entradaAlmoxarifadoItemService.findItensPorEntradaId(entrada.getId()); + for (EntradaAlmoxarifadoItem entradaAlmoxarifadoItem : itensSalvos) { + if(hashMaterialLocalEstoque.get(entradaAlmoxarifadoItem.getMaterialLocalEstoque()) != null){ + hashMaterialLocalEstoque.put(entradaAlmoxarifadoItem.getMaterialLocalEstoque(), hashMaterialLocalEstoque.get(entradaAlmoxarifadoItem.getMaterialLocalEstoque()).subtract(entradaAlmoxarifadoItem.getQuantidade())); + }else{ + hashMaterialLocalEstoque.put(entradaAlmoxarifadoItem.getMaterialLocalEstoque(), entradaAlmoxarifadoItem.getQuantidade()); + } + } + } + + for (Map.Entry materialLocQt : hashMaterialLocalEstoque.entrySet()) { + + MaterialLocalEstoque localEstoque = this.materialLocalEstoqueService.find(materialLocQt.getKey().getId()); + MaterialConsumo material = localEstoque.getMaterialEstoque().getMaterial(); + EnderecoEstoque enderecoEstoque = localEstoque.getEndereco(); + + + if(materialLocQt.getValue().add(localEstoque.getQuantidade()).doubleValue() > localEstoque.getCapacidade().doubleValue()){ + String validacao = this.internacionalizacaoService.getTranslate("ALMOXARIFADO.MSG.VALIDACAO_QUANTIDADE_SUPERIOR_CAPACIDADE_ENDERECO_ESTOQUE", this.getIdioma()); + validacao = String.format(validacao, material.getDescricao(), enderecoEstoque.getDescricao()); + validacao += "

"; + mensagem.append(validacao); + } + } + + if(StringUtils.isNotBlank(mensagem.toString())){ + throw new BusinessException(mensagem.toString(), CodigoErro.REGRA_NEGOCIO.getValue()); + } + } } diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/MaterialLocalEstoqueServiceImpl.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/MaterialLocalEstoqueServiceImpl.java index 26d9abd..009cc88 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/MaterialLocalEstoqueServiceImpl.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/MaterialLocalEstoqueServiceImpl.java @@ -1,5 +1,6 @@ package br.com.centralit.api.service.impl; +import java.math.BigDecimal; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; @@ -124,5 +125,10 @@ public class MaterialLocalEstoqueServiceImpl extends GenericServiceImpl