Commit 4529dde8a72beb0e58d31978259fe879d8400828

Authored by erick.sato
1 parent da0498cb
Exists in master

[Redmine Atendimento #4740]Endereço estoque

cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/EnderecoEstoque.java
@@ -15,6 +15,7 @@ import javax.persistence.Table; @@ -15,6 +15,7 @@ import javax.persistence.Table;
15 15
16 import com.fasterxml.jackson.annotation.JsonView; 16 import com.fasterxml.jackson.annotation.JsonView;
17 17
  18 +import br.com.centralit.api.framework.json.ViewsAdmMateriais;
18 import br.com.centralit.framework.json.Views; 19 import br.com.centralit.framework.json.Views;
19 import br.com.centralit.framework.model.arquitetura.PersistentObjectAuditOrganizacao; 20 import br.com.centralit.framework.model.arquitetura.PersistentObjectAuditOrganizacao;
20 21
@@ -66,34 +67,34 @@ public class EnderecoEstoque extends PersistentObjectAuditOrganizacao { @@ -66,34 +67,34 @@ public class EnderecoEstoque extends PersistentObjectAuditOrganizacao {
66 67
67 /** Atributo entrada. */ 68 /** Atributo entrada. */
68 @ManyToOne(fetch = FetchType.LAZY, optional = true) 69 @ManyToOne(fetch = FetchType.LAZY, optional = true)
69 - @JsonView({ Views.EnderecoEstoqueView.class }) 70 + @JsonView({ ViewsAdmMateriais.EnderecoEstoqueView.class })
70 private Estoque estoque; 71 private Estoque estoque;
71 72
72 @ManyToOne(fetch = FetchType.LAZY, optional = true) 73 @ManyToOne(fetch = FetchType.LAZY, optional = true)
73 private Estoque estoqueInativo; 74 private Estoque estoqueInativo;
74 75
75 @Column(length = 30, nullable = false, updatable = false, unique = true) 76 @Column(length = 30, nullable = false, updatable = false, unique = true)
76 - @JsonView({ Views.EnderecoEstoqueView.class }) 77 + @JsonView({ ViewsAdmMateriais.EnderecoEstoqueView.class })
77 private String codigo; 78 private String codigo;
78 79
79 @Column(name = "sigla", length = 30, updatable = true) 80 @Column(name = "sigla", length = 30, updatable = true)
80 - @JsonView({ Views.EnderecoEstoqueView.class }) 81 + @JsonView({ ViewsAdmMateriais.EnderecoEstoqueView.class })
81 private String sigla; 82 private String sigla;
82 83
83 @Column(name = "descricao", length = 400, nullable = false) 84 @Column(name = "descricao", length = 400, nullable = false)
84 - @JsonView({ Views.EnderecoEstoqueView.class }) 85 + @JsonView({ ViewsAdmMateriais.EnderecoEstoqueView.class })
85 private String descricao; 86 private String descricao;
86 87
87 @ManyToOne(fetch = FetchType.LAZY, optional = true) 88 @ManyToOne(fetch = FetchType.LAZY, optional = true)
88 - @JsonView({ Views.EnderecoEstoqueView.class }) 89 + @JsonView({ ViewsAdmMateriais.EnderecoEstoqueView.class })
89 private EnderecoEstoque endeEstoqSuperior; 90 private EnderecoEstoque endeEstoqSuperior;
90 91
91 @Column(name = "acomodaMaterial") 92 @Column(name = "acomodaMaterial")
92 - @JsonView({ Views.EnderecoEstoqueView.class }) 93 + @JsonView({ ViewsAdmMateriais.EnderecoEstoqueView.class })
93 private Boolean acomodaMaterial; 94 private Boolean acomodaMaterial;
94 95
95 @Column(name = "enderTodoMaterial") 96 @Column(name = "enderTodoMaterial")
96 - @JsonView({ Views.EnderecoEstoqueView.class }) 97 + @JsonView({ ViewsAdmMateriais.EnderecoEstoqueView.class })
97 private Boolean enderTodoMaterial; 98 private Boolean enderTodoMaterial;
98 99
99 /** Atributo materiais. */ 100 /** Atributo materiais. */
cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/Estoque.java
@@ -68,7 +68,7 @@ public class Estoque extends PersistentObjectAuditOrganizacao { @@ -68,7 +68,7 @@ public class Estoque extends PersistentObjectAuditOrganizacao {
68 /** Atributo almoxarifado. */ 68 /** Atributo almoxarifado. */
69 @OneToOne(fetch = FetchType.LAZY, optional = false) 69 @OneToOne(fetch = FetchType.LAZY, optional = false)
70 @JsonView({ ViewsAdmMateriais.LocalEstoqueAutoCompleteView.class, 70 @JsonView({ ViewsAdmMateriais.LocalEstoqueAutoCompleteView.class,
71 - ViewsAlmoxarifado.ConfiguracaoRessuprimentoEditView.class, Views.MaterialConsultaInfo.class, Views.EnderecoEstoqueView.class }) 71 + ViewsAlmoxarifado.ConfiguracaoRessuprimentoEditView.class, Views.MaterialConsultaInfo.class, ViewsAdmMateriais.EnderecoEstoqueView.class })
72 private EstruturaOrganizacional almoxarifado; 72 private EstruturaOrganizacional almoxarifado;
73 73
74 /** Atributo locais. */ 74 /** Atributo locais. */
cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/MaterialLocalEstoque.java
@@ -13,6 +13,7 @@ import javax.persistence.Table; @@ -13,6 +13,7 @@ import javax.persistence.Table;
13 13
14 import com.fasterxml.jackson.annotation.JsonView; 14 import com.fasterxml.jackson.annotation.JsonView;
15 15
  16 +import br.com.centralit.api.framework.json.ViewsAdmMateriais;
16 import br.com.centralit.framework.json.Views; 17 import br.com.centralit.framework.json.Views;
17 import br.com.centralit.framework.model.arquitetura.PersistentObjectAuditOrganizacao; 18 import br.com.centralit.framework.model.arquitetura.PersistentObjectAuditOrganizacao;
18 19
@@ -64,7 +65,7 @@ public class MaterialLocalEstoque extends PersistentObjectAuditOrganizacao { @@ -64,7 +65,7 @@ public class MaterialLocalEstoque extends PersistentObjectAuditOrganizacao {
64 65
65 /** Atributo materialEstoque. */ 66 /** Atributo materialEstoque. */
66 @OneToOne(fetch = FetchType.LAZY, optional = false) 67 @OneToOne(fetch = FetchType.LAZY, optional = false)
67 - @JsonView({ Views.EnderecoEstoqueView.class }) 68 + @JsonView({ ViewsAdmMateriais.EnderecoEstoqueView.class })
68 private MaterialEstoque materialEstoque; 69 private MaterialEstoque materialEstoque;
69 70
70 /** Atributo materialEstoqueInativo. */ 71 /** Atributo materialEstoqueInativo. */
@@ -80,7 +81,7 @@ public class MaterialLocalEstoque extends PersistentObjectAuditOrganizacao { @@ -80,7 +81,7 @@ public class MaterialLocalEstoque extends PersistentObjectAuditOrganizacao {
80 private EnderecoEstoque enderecoInativo; 81 private EnderecoEstoque enderecoInativo;
81 82
82 /** Atributo quantidade. */ 83 /** Atributo quantidade. */
83 - @JsonView({ Views.EnderecoEstoqueView.class }) 84 + @JsonView({ ViewsAdmMateriais.EnderecoEstoqueView.class })
84 private BigDecimal quantidade; 85 private BigDecimal quantidade;
85 86
86 /** Atributo unidadeMedidaEntrada. */ 87 /** Atributo unidadeMedidaEntrada. */
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/EnderecoEstoqueServiceImpl.java
1 package br.com.centralit.api.service.impl; 1 package br.com.centralit.api.service.impl;
2 2
3 -import java.math.BigDecimal;  
4 import java.util.ArrayList; 3 import java.util.ArrayList;
5 import java.util.List; 4 import java.util.List;
6 5
@@ -12,7 +11,6 @@ import org.springframework.validation.Validator; @@ -12,7 +11,6 @@ import org.springframework.validation.Validator;
12 import br.com.centralit.api.dao.EnderecoEstoqueDao; 11 import br.com.centralit.api.dao.EnderecoEstoqueDao;
13 import br.com.centralit.api.model.EnderecoEstoque; 12 import br.com.centralit.api.model.EnderecoEstoque;
14 import br.com.centralit.api.model.Estoque; 13 import br.com.centralit.api.model.Estoque;
15 -import br.com.centralit.api.model.MaterialLocalEstoque;  
16 import br.com.centralit.api.service.ConfiguracaoParametroSistemaService; 14 import br.com.centralit.api.service.ConfiguracaoParametroSistemaService;
17 import br.com.centralit.api.service.EnderecoEstoqueService; 15 import br.com.centralit.api.service.EnderecoEstoqueService;
18 import br.com.centralit.api.service.EstoqueService; 16 import br.com.centralit.api.service.EstoqueService;
@@ -81,12 +79,21 @@ public class EnderecoEstoqueServiceImpl extends GenericServiceImpl<EnderecoEstoq @@ -81,12 +79,21 @@ public class EnderecoEstoqueServiceImpl extends GenericServiceImpl<EnderecoEstoq
81 79
82 public EnderecoEstoque merge(EnderecoEstoque enderecoEstoque) { 80 public EnderecoEstoque merge(EnderecoEstoque enderecoEstoque) {
83 81
84 - if(enderecoEstoque.getAcomodaMaterial()){  
85 - List<EnderecoEstoque> vinculosEndEstoque = this.enderecoEstoqueSuperiorVinculado(enderecoEstoque.getId());  
86 - if(!UtilColecao.isVazio(vinculosEndEstoque)){  
87 - throw new BusinessException("ALMOXARIFADO.VALIDACAO.NAO_PERMITIDO_ENDERECO_ESTOQUE_ACOMODA_MATERIAL", CodigoErro.REGRA_NEGOCIO.getValue());  
88 - }  
89 - } 82 + List<EnderecoEstoque> vinculosEndEstoque = this.enderecoEstoqueSuperiorVinculado(enderecoEstoque.getId());
  83 + if(!UtilColecao.isVazio(vinculosEndEstoque)){
  84 + if(enderecoEstoque.getAcomodaMaterial()){
  85 + throw new BusinessException("ALMOXARIFADO.VALIDACAO.NAO_PERMITIDO_ENDERECO_ESTOQUE_ACOMODA_MATERIAL", CodigoErro.REGRA_NEGOCIO.getValue());
  86 + }
  87 +
  88 + if(enderecoEstoque.getEndeEstoqSuperior() != null){
  89 + for (EnderecoEstoque vinculo : vinculosEndEstoque) {
  90 + if(enderecoEstoque.getEndeEstoqSuperior().getId().intValue() == vinculo.getId().intValue()){
  91 + throw new BusinessException("ALMOXARIFADO.VALIDACAO.ENDERECO_ESTOQUE_VINCULO_CICLICO", CodigoErro.REGRA_NEGOCIO.getValue());
  92 + }
  93 + }
  94 + }
  95 +
  96 + }
90 97
91 this.validarEntidade(enderecoEstoque, this.validator); 98 this.validarEntidade(enderecoEstoque, this.validator);
92 super.save(enderecoEstoque); 99 super.save(enderecoEstoque);
cit-almoxarifado-web/src/main/java/br/com/centralit/controller/EnderecoEstoqueController.java
@@ -9,14 +9,14 @@ import org.springframework.web.bind.annotation.RequestMethod; @@ -9,14 +9,14 @@ import org.springframework.web.bind.annotation.RequestMethod;
9 import org.springframework.web.bind.annotation.RequestParam; 9 import org.springframework.web.bind.annotation.RequestParam;
10 import org.springframework.web.bind.annotation.ResponseBody; 10 import org.springframework.web.bind.annotation.ResponseBody;
11 11
  12 +import br.com.centralit.api.framework.json.ViewsAdmMateriais;
  13 +import br.com.centralit.api.framework.json.ViewsAdmMateriais.EnderecoEstoqueView;
12 import br.com.centralit.api.model.EnderecoEstoque; 14 import br.com.centralit.api.model.EnderecoEstoque;
13 import br.com.centralit.api.service.DominioService; 15 import br.com.centralit.api.service.DominioService;
14 import br.com.centralit.api.service.EnderecoEstoqueService; 16 import br.com.centralit.api.service.EnderecoEstoqueService;
15 import br.com.centralit.api.service.InternacionalizacaoService; 17 import br.com.centralit.api.service.InternacionalizacaoService;
16 import br.com.centralit.framework.controller.GenericController; 18 import br.com.centralit.framework.controller.GenericController;
17 import br.com.centralit.framework.json.ResponseBodyWrapper; 19 import br.com.centralit.framework.json.ResponseBodyWrapper;
18 -import br.com.centralit.framework.json.Views;  
19 -import br.com.centralit.framework.json.Views.EnderecoEstoqueView;  
20 import br.com.centralit.framework.model.Dominio; 20 import br.com.centralit.framework.model.Dominio;
21 import br.com.centralit.framework.util.UtilColecao; 21 import br.com.centralit.framework.util.UtilColecao;
22 import br.com.centralit.framework.util.UtilObjeto; 22 import br.com.centralit.framework.util.UtilObjeto;
@@ -104,7 +104,7 @@ public class EnderecoEstoqueController extends GenericController&lt;EnderecoEstoque @@ -104,7 +104,7 @@ public class EnderecoEstoqueController extends GenericController&lt;EnderecoEstoque
104 @Override 104 @Override
105 public Class<EnderecoEstoqueView> getEditView() { 105 public Class<EnderecoEstoqueView> getEditView() {
106 106
107 - return Views.EnderecoEstoqueView.class; 107 + return ViewsAdmMateriais.EnderecoEstoqueView.class;
108 } 108 }
109 109
110 } 110 }
cit-almoxarifado-web/src/main/java/br/com/centralit/listener/StartupListenerAlmoxarifado.java
@@ -327,6 +327,7 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat @@ -327,6 +327,7 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat
327 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.REMOVER_ENDERECO_ESTOQUE_NEGADA_MOTIVO", "Remoção endereço estoque negada, pelos motivos", dominio, modulo)); 327 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.REMOVER_ENDERECO_ESTOQUE_NEGADA_MOTIVO", "Remoção endereço estoque negada, pelos motivos", dominio, modulo));
328 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)); 328 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));
329 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)); 329 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));
  330 + 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));
330 } 331 }
331 332
332 private void gerarMensagem(Dominio dominio, Modulo modulo, List<Internacionalizacao> internacionalizacaoList) { 333 private void gerarMensagem(Dominio dominio, Modulo modulo, List<Internacionalizacao> internacionalizacaoList) {
cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/EnderecoEstoqueController.js
@@ -114,9 +114,21 @@ citApp.controller(&#39;EnderecoEstoqueController&#39;, [&#39;$scope&#39;, &#39;EnderecoEstoqueReposi @@ -114,9 +114,21 @@ citApp.controller(&#39;EnderecoEstoqueController&#39;, [&#39;$scope&#39;, &#39;EnderecoEstoqueReposi
114 }; 114 };
115 115
116 $scope.findAutoCompleteEnderecoSuperior = function(value){ 116 $scope.findAutoCompleteEnderecoSuperior = function(value){
117 - return EnderecoEstoqueRepository.findAutoComplete('codigo', value).then(function(result) {  
118 - return result;  
119 - }); 117 + var enderecoSuperiores = [];
  118 + return EnderecoEstoqueRepository.findAutoComplete('codigo', value).then(function(result) {
  119 + if(result){
  120 + if($scope.enderecoEstoque.id){
  121 + angular.forEach(result, function(superior) {
  122 + if(superior.id != $scope.enderecoEstoque.id){
  123 + enderecoSuperiores.push(superior);
  124 + }
  125 + });
  126 + }else{
  127 + enderecoSuperiores = result;
  128 + }
  129 + }
  130 + return enderecoSuperiores;
  131 + });
120 }; 132 };
121 133
122 $scope.validaEnderecoTodosMaterial = function(){ 134 $scope.validaEnderecoTodosMaterial = function(){
cit-almoxarifado-web/src/main/webapp/html/enderecoEstoque/enderecoEstoqueEdit.html
@@ -40,7 +40,7 @@ @@ -40,7 +40,7 @@
40 40
41 <breadcrumb ng-workspace="workspace"></breadcrumb> 41 <breadcrumb ng-workspace="workspace"></breadcrumb>
42 42
43 - <form name="enderecoEstoqueForm"> 43 + <form name="enderecoEstoqueForm" novalidate autocomplete="off">
44 <p> 44 <p>
45 <small>( <span class="red">*</span> ) <translate>LABEL.CAMPOS_OBRIGATORIOS</translate></small> 45 <small>( <span class="red">*</span> ) <translate>LABEL.CAMPOS_OBRIGATORIOS</translate></small>
46 </p> 46 </p>