diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/EnderecoEstoque.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/EnderecoEstoque.java index f9f22f8..97efc20 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/EnderecoEstoque.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/EnderecoEstoque.java @@ -15,6 +15,7 @@ import javax.persistence.Table; import com.fasterxml.jackson.annotation.JsonView; +import br.com.centralit.api.framework.json.ViewsAdmMateriais; import br.com.centralit.framework.json.Views; import br.com.centralit.framework.model.arquitetura.PersistentObjectAuditOrganizacao; @@ -66,34 +67,34 @@ public class EnderecoEstoque extends PersistentObjectAuditOrganizacao { /** Atributo entrada. */ @ManyToOne(fetch = FetchType.LAZY, optional = true) - @JsonView({ Views.EnderecoEstoqueView.class }) + @JsonView({ ViewsAdmMateriais.EnderecoEstoqueView.class }) private Estoque estoque; @ManyToOne(fetch = FetchType.LAZY, optional = true) private Estoque estoqueInativo; @Column(length = 30, nullable = false, updatable = false, unique = true) - @JsonView({ Views.EnderecoEstoqueView.class }) + @JsonView({ ViewsAdmMateriais.EnderecoEstoqueView.class }) private String codigo; @Column(name = "sigla", length = 30, updatable = true) - @JsonView({ Views.EnderecoEstoqueView.class }) + @JsonView({ ViewsAdmMateriais.EnderecoEstoqueView.class }) private String sigla; @Column(name = "descricao", length = 400, nullable = false) - @JsonView({ Views.EnderecoEstoqueView.class }) + @JsonView({ ViewsAdmMateriais.EnderecoEstoqueView.class }) private String descricao; @ManyToOne(fetch = FetchType.LAZY, optional = true) - @JsonView({ Views.EnderecoEstoqueView.class }) + @JsonView({ ViewsAdmMateriais.EnderecoEstoqueView.class }) private EnderecoEstoque endeEstoqSuperior; @Column(name = "acomodaMaterial") - @JsonView({ Views.EnderecoEstoqueView.class }) + @JsonView({ ViewsAdmMateriais.EnderecoEstoqueView.class }) private Boolean acomodaMaterial; @Column(name = "enderTodoMaterial") - @JsonView({ Views.EnderecoEstoqueView.class }) + @JsonView({ ViewsAdmMateriais.EnderecoEstoqueView.class }) private Boolean enderTodoMaterial; /** Atributo materiais. */ diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/Estoque.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/Estoque.java index 652d7ee..e75b976 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/Estoque.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/Estoque.java @@ -68,7 +68,7 @@ public class Estoque extends PersistentObjectAuditOrganizacao { /** Atributo almoxarifado. */ @OneToOne(fetch = FetchType.LAZY, optional = false) @JsonView({ ViewsAdmMateriais.LocalEstoqueAutoCompleteView.class, - ViewsAlmoxarifado.ConfiguracaoRessuprimentoEditView.class, Views.MaterialConsultaInfo.class, Views.EnderecoEstoqueView.class }) + ViewsAlmoxarifado.ConfiguracaoRessuprimentoEditView.class, Views.MaterialConsultaInfo.class, ViewsAdmMateriais.EnderecoEstoqueView.class }) private EstruturaOrganizacional almoxarifado; /** Atributo locais. */ 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 c5530d4..b68b1a9 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 @@ -13,6 +13,7 @@ import javax.persistence.Table; import com.fasterxml.jackson.annotation.JsonView; +import br.com.centralit.api.framework.json.ViewsAdmMateriais; import br.com.centralit.framework.json.Views; import br.com.centralit.framework.model.arquitetura.PersistentObjectAuditOrganizacao; @@ -64,7 +65,7 @@ public class MaterialLocalEstoque extends PersistentObjectAuditOrganizacao { /** Atributo materialEstoque. */ @OneToOne(fetch = FetchType.LAZY, optional = false) - @JsonView({ Views.EnderecoEstoqueView.class }) + @JsonView({ ViewsAdmMateriais.EnderecoEstoqueView.class }) private MaterialEstoque materialEstoque; /** Atributo materialEstoqueInativo. */ @@ -80,7 +81,7 @@ public class MaterialLocalEstoque extends PersistentObjectAuditOrganizacao { private EnderecoEstoque enderecoInativo; /** Atributo quantidade. */ - @JsonView({ Views.EnderecoEstoqueView.class }) + @JsonView({ ViewsAdmMateriais.EnderecoEstoqueView.class }) private BigDecimal quantidade; /** Atributo unidadeMedidaEntrada. */ diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/EnderecoEstoqueServiceImpl.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/EnderecoEstoqueServiceImpl.java index d4c99c8..9858bb1 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/EnderecoEstoqueServiceImpl.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/EnderecoEstoqueServiceImpl.java @@ -1,6 +1,5 @@ package br.com.centralit.api.service.impl; -import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; @@ -12,7 +11,6 @@ import org.springframework.validation.Validator; import br.com.centralit.api.dao.EnderecoEstoqueDao; import br.com.centralit.api.model.EnderecoEstoque; import br.com.centralit.api.model.Estoque; -import br.com.centralit.api.model.MaterialLocalEstoque; import br.com.centralit.api.service.ConfiguracaoParametroSistemaService; import br.com.centralit.api.service.EnderecoEstoqueService; import br.com.centralit.api.service.EstoqueService; @@ -81,12 +79,21 @@ public class EnderecoEstoqueServiceImpl extends GenericServiceImpl vinculosEndEstoque = this.enderecoEstoqueSuperiorVinculado(enderecoEstoque.getId()); - if(!UtilColecao.isVazio(vinculosEndEstoque)){ - throw new BusinessException("ALMOXARIFADO.VALIDACAO.NAO_PERMITIDO_ENDERECO_ESTOQUE_ACOMODA_MATERIAL", CodigoErro.REGRA_NEGOCIO.getValue()); - } - } + List vinculosEndEstoque = this.enderecoEstoqueSuperiorVinculado(enderecoEstoque.getId()); + if(!UtilColecao.isVazio(vinculosEndEstoque)){ + if(enderecoEstoque.getAcomodaMaterial()){ + throw new BusinessException("ALMOXARIFADO.VALIDACAO.NAO_PERMITIDO_ENDERECO_ESTOQUE_ACOMODA_MATERIAL", CodigoErro.REGRA_NEGOCIO.getValue()); + } + + if(enderecoEstoque.getEndeEstoqSuperior() != null){ + for (EnderecoEstoque vinculo : vinculosEndEstoque) { + if(enderecoEstoque.getEndeEstoqSuperior().getId().intValue() == vinculo.getId().intValue()){ + throw new BusinessException("ALMOXARIFADO.VALIDACAO.ENDERECO_ESTOQUE_VINCULO_CICLICO", CodigoErro.REGRA_NEGOCIO.getValue()); + } + } + } + + } this.validarEntidade(enderecoEstoque, this.validator); super.save(enderecoEstoque); diff --git a/cit-almoxarifado-web/src/main/java/br/com/centralit/controller/EnderecoEstoqueController.java b/cit-almoxarifado-web/src/main/java/br/com/centralit/controller/EnderecoEstoqueController.java index 48b01e4..6b75571 100644 --- a/cit-almoxarifado-web/src/main/java/br/com/centralit/controller/EnderecoEstoqueController.java +++ b/cit-almoxarifado-web/src/main/java/br/com/centralit/controller/EnderecoEstoqueController.java @@ -9,14 +9,14 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; +import br.com.centralit.api.framework.json.ViewsAdmMateriais; +import br.com.centralit.api.framework.json.ViewsAdmMateriais.EnderecoEstoqueView; import br.com.centralit.api.model.EnderecoEstoque; import br.com.centralit.api.service.DominioService; import br.com.centralit.api.service.EnderecoEstoqueService; import br.com.centralit.api.service.InternacionalizacaoService; import br.com.centralit.framework.controller.GenericController; import br.com.centralit.framework.json.ResponseBodyWrapper; -import br.com.centralit.framework.json.Views; -import br.com.centralit.framework.json.Views.EnderecoEstoqueView; import br.com.centralit.framework.model.Dominio; import br.com.centralit.framework.util.UtilColecao; import br.com.centralit.framework.util.UtilObjeto; @@ -104,7 +104,7 @@ public class EnderecoEstoqueController extends GenericController getEditView() { - return Views.EnderecoEstoqueView.class; + return ViewsAdmMateriais.EnderecoEstoqueView.class; } } diff --git a/cit-almoxarifado-web/src/main/java/br/com/centralit/listener/StartupListenerAlmoxarifado.java b/cit-almoxarifado-web/src/main/java/br/com/centralit/listener/StartupListenerAlmoxarifado.java index 7a529ec..936d7b0 100644 --- a/cit-almoxarifado-web/src/main/java/br/com/centralit/listener/StartupListenerAlmoxarifado.java +++ b/cit-almoxarifado-web/src/main/java/br/com/centralit/listener/StartupListenerAlmoxarifado.java @@ -327,6 +327,7 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.REMOVER_ENDERECO_ESTOQUE_NEGADA_MOTIVO", "Remoção endereço estoque negada, pelos motivos", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.ENDERECO_ESTOQUE_IS_SUPERIOR_REMOVER", "O endereço de estoque a ser removido, foi vinculado como superior a outros endereço. Caso prossiga com a operação, também será removido todos os endereços vinculados a este. Deseja continuar?", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.ENDERECO_ESTOQUE_TODOS_MATERIAIS", "A definição de endereço de estoque para todos os materias não poderá ser desfeita após salvar o registro. Deseja realmente adicionar este endereço para todos os materiais?", dominio, modulo)); + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.ENDERECO_ESTOQUE_VINCULO_CICLICO", "Não é permitido vincular o endereço de estoque superior, pois este endereço tem como endereço superior o registro que está sendo alterado. Favor remover ou escolher outro endereço de estoque superior.", dominio, modulo)); } private void gerarMensagem(Dominio dominio, Modulo modulo, List internacionalizacaoList) { diff --git a/cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/EnderecoEstoqueController.js b/cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/EnderecoEstoqueController.js index cdb3751..4d75383 100644 --- a/cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/EnderecoEstoqueController.js +++ b/cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/EnderecoEstoqueController.js @@ -114,9 +114,21 @@ citApp.controller('EnderecoEstoqueController', ['$scope', 'EnderecoEstoqueReposi }; $scope.findAutoCompleteEnderecoSuperior = function(value){ - return EnderecoEstoqueRepository.findAutoComplete('codigo', value).then(function(result) { - return result; - }); + var enderecoSuperiores = []; + return EnderecoEstoqueRepository.findAutoComplete('codigo', value).then(function(result) { + if(result){ + if($scope.enderecoEstoque.id){ + angular.forEach(result, function(superior) { + if(superior.id != $scope.enderecoEstoque.id){ + enderecoSuperiores.push(superior); + } + }); + }else{ + enderecoSuperiores = result; + } + } + return enderecoSuperiores; + }); }; $scope.validaEnderecoTodosMaterial = function(){ diff --git a/cit-almoxarifado-web/src/main/webapp/html/enderecoEstoque/enderecoEstoqueEdit.html b/cit-almoxarifado-web/src/main/webapp/html/enderecoEstoque/enderecoEstoqueEdit.html index eb96369..5fae6e1 100644 --- a/cit-almoxarifado-web/src/main/webapp/html/enderecoEstoque/enderecoEstoqueEdit.html +++ b/cit-almoxarifado-web/src/main/webapp/html/enderecoEstoque/enderecoEstoqueEdit.html @@ -40,7 +40,7 @@ -
+

( * ) LABEL.CAMPOS_OBRIGATORIOS

-- libgit2 0.21.2