Commit 9da8db41bac40720ccf25b1c634ca0d5892c6040
1 parent
d7803567
Exists in
master
[Redmine Atendimento #4740]Cadastro endereço estoque
Showing
7 changed files
with
77 additions
and
17 deletions
Show diff stats
cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/impl/EnderecoEstoqueDaoHibernate.java
... | ... | @@ -38,6 +38,8 @@ public class EnderecoEstoqueDaoHibernate extends CitGenericDAOImpl implements En |
38 | 38 | |
39 | 39 | searchSeven.addFilterEqual("endeEstoqSuperior.id", idEnderecoEstoque); |
40 | 40 | |
41 | + searchSeven.addSortAsc("codigo"); | |
42 | + | |
41 | 43 | return this.search(searchSeven); |
42 | 44 | } |
43 | 45 | ... | ... |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/Estoque.java
... | ... | @@ -71,7 +71,7 @@ public class Estoque extends PersistentObjectAuditOrganizacao { |
71 | 71 | /** Atributo almoxarifado. */ |
72 | 72 | @OneToOne(fetch = FetchType.LAZY, optional = false) |
73 | 73 | @JsonView({ ViewsAdmMateriais.LocalEstoqueAutoCompleteView.class, |
74 | - ViewsAlmoxarifado.ConfiguracaoRessuprimentoEditView.class, Views.MaterialConsultaInfo.class, Views.MaterialLocalEstoqueView.class }) | |
74 | + ViewsAlmoxarifado.ConfiguracaoRessuprimentoEditView.class, Views.MaterialConsultaInfo.class, ViewsAdmMateriais.EnderecoEstoqueView.class, Views.MaterialLocalEstoqueView.class }) | |
75 | 75 | private EstruturaOrganizacional almoxarifado; |
76 | 76 | |
77 | 77 | /** Atributo locais. */ | ... | ... |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/EnderecoEstoqueServiceImpl.java
1 | 1 | package br.com.centralit.api.service.impl; |
2 | 2 | |
3 | +import java.math.BigDecimal; | |
3 | 4 | import java.util.ArrayList; |
4 | 5 | import java.util.List; |
5 | 6 | |
... | ... | @@ -11,9 +12,15 @@ import org.springframework.validation.Validator; |
11 | 12 | import br.com.centralit.api.dao.EnderecoEstoqueDao; |
12 | 13 | import br.com.centralit.api.model.EnderecoEstoque; |
13 | 14 | import br.com.centralit.api.model.Estoque; |
15 | +import br.com.centralit.api.model.MaterialConsumo; | |
16 | +import br.com.centralit.api.model.MaterialEstoque; | |
17 | +import br.com.centralit.api.model.MaterialLocalEstoque; | |
14 | 18 | import br.com.centralit.api.service.ConfiguracaoParametroSistemaService; |
15 | 19 | import br.com.centralit.api.service.EnderecoEstoqueService; |
16 | 20 | import br.com.centralit.api.service.EstoqueService; |
21 | +import br.com.centralit.api.service.MaterialConsumoService; | |
22 | +import br.com.centralit.api.service.MaterialEstoqueService; | |
23 | +import br.com.centralit.api.service.MaterialLocalEstoqueService; | |
17 | 24 | import br.com.centralit.framework.exception.BusinessException; |
18 | 25 | import br.com.centralit.framework.exception.CodigoErro; |
19 | 26 | import br.com.centralit.framework.model.arquitetura.PersistentObject; |
... | ... | @@ -31,6 +38,15 @@ public class EnderecoEstoqueServiceImpl extends GenericServiceImpl<EnderecoEstoq |
31 | 38 | |
32 | 39 | @Autowired |
33 | 40 | private EstoqueService estoqueService; |
41 | + | |
42 | + @Autowired | |
43 | + private MaterialConsumoService materialConsumoService; | |
44 | + | |
45 | + @Autowired | |
46 | + private MaterialLocalEstoqueService materialLocalEstoqueService; | |
47 | + | |
48 | + @Autowired | |
49 | + private MaterialEstoqueService materialEstoqueService; | |
34 | 50 | |
35 | 51 | @Autowired |
36 | 52 | public EnderecoEstoqueServiceImpl(EnderecoEstoqueDao enderecoEstoqueDao, @Qualifier("enderecoEstoqueValidator") Validator validator) { |
... | ... | @@ -44,7 +60,7 @@ public class EnderecoEstoqueServiceImpl extends GenericServiceImpl<EnderecoEstoq |
44 | 60 | this.validarEntidade(enderecoEstoque, this.validator); |
45 | 61 | montaEnderecoEstoqueObject(enderecoEstoque); |
46 | 62 | this.enderecoEstoqueDao.save(enderecoEstoque); |
47 | - | |
63 | + gerarVinculoTodosMateriaisConsumo(enderecoEstoque); | |
48 | 64 | return enderecoEstoque; |
49 | 65 | } |
50 | 66 | |
... | ... | @@ -97,8 +113,34 @@ public class EnderecoEstoqueServiceImpl extends GenericServiceImpl<EnderecoEstoq |
97 | 113 | |
98 | 114 | this.validarEntidade(enderecoEstoque, this.validator); |
99 | 115 | super.save(enderecoEstoque); |
116 | + | |
117 | + gerarVinculoTodosMateriaisConsumo(enderecoEstoque); | |
118 | + | |
100 | 119 | return enderecoEstoque; |
101 | 120 | } |
121 | + | |
122 | + private void gerarVinculoTodosMateriaisConsumo(EnderecoEstoque enderecoEstoque) { | |
123 | + if(enderecoEstoque.getEnderTodoMaterial()){ | |
124 | + List<MaterialConsumo> materiaisConsumo = this.materialConsumoService.findAll(); | |
125 | + if(!UtilColecao.isVazio(materiaisConsumo)){ | |
126 | + for (MaterialConsumo materialConsumo : materiaisConsumo) { | |
127 | + if(!this.materialLocalEstoqueService.enderecoJaVinculadoAoMaterial(materialConsumo.getId(), enderecoEstoque.getId())){ | |
128 | + MaterialEstoque materialEstoque = this.materialEstoqueService.findByIdMaterial(materialConsumo.getId()); | |
129 | + if(materialEstoque == null){ | |
130 | + materialEstoque = new MaterialEstoque(); | |
131 | + materialEstoque.setMaterial(materialConsumo); | |
132 | + } | |
133 | + MaterialLocalEstoque materialLocalEstoque = new MaterialLocalEstoque(); | |
134 | + materialLocalEstoque.setMaterialEstoque(materialEstoque); | |
135 | + materialLocalEstoque.setEndereco(enderecoEstoque); | |
136 | + materialLocalEstoque.setQuantidade(new BigDecimal("9999999999")); | |
137 | + materialLocalEstoque.setLocalPrincipal(Boolean.TRUE); | |
138 | + this.materialLocalEstoqueService.save(materialLocalEstoque); | |
139 | + } | |
140 | + } | |
141 | + } | |
142 | + } | |
143 | + } | |
102 | 144 | |
103 | 145 | @Override |
104 | 146 | public boolean removeById(Long id) { | ... | ... |
cit-almoxarifado-web/src/main/java/br/com/centralit/controller/EnderecoEstoqueController.java
... | ... | @@ -67,35 +67,41 @@ public class EnderecoEstoqueController extends GenericController<EnderecoEstoque |
67 | 67 | @RequestMapping(value = "/enderecoEstoqueSuperiorEFilhosTemVinculoMaterial", method = RequestMethod.GET, produces = "application/json") |
68 | 68 | @ResponseBody |
69 | 69 | public ResponseBodyWrapper enderecoEstoqueSuperiorEFilhosTemVinculoMaterial(@RequestParam(value = "idEnderecoEstoque") Long idEnderecoEstoque) { |
70 | + boolean naoPermiteRemover = false; | |
70 | 71 | StringBuilder mensagemValidacao = new StringBuilder(); |
71 | - | |
72 | + mensagemValidacao.append("<ul>"); | |
72 | 73 | EnderecoEstoque enderecoEstoque = this.enderecoEstoqueService.find(idEnderecoEstoque); |
73 | 74 | |
74 | 75 | if(!UtilColecao.isVazio(enderecoEstoque.getMateriais())){ |
75 | - mensagemValidacao.append(this.internacionalizacaoService.getTranslate("ALMOXARIFADO.LABEL.ENDERECO_SUPERIOR", this.getIdioma())); | |
76 | - mensagemValidacao.append(": "); | |
77 | - mensagemValidacao.append(enderecoEstoque.getDescricao()); | |
78 | - mensagemValidacao.append("<p>"); | |
76 | + mensagemValidacao.append("<li>"); | |
79 | 77 | mensagemValidacao.append(this.internacionalizacaoService.getTranslate("ALMOXARIFADO.LABEL.MATERAIS_VINCULADOS", this.getIdioma())); |
80 | - mensagemValidacao.append("</p>"); | |
78 | + mensagemValidacao.append("</li>"); | |
79 | + naoPermiteRemover = true; | |
81 | 80 | } |
82 | 81 | |
83 | 82 | List<EnderecoEstoque> vinculos = this.enderecoEstoqueService.enderecoEstoqueSuperiorVinculado(idEnderecoEstoque); |
84 | 83 | if(!UtilColecao.isVazio(vinculos)){ |
85 | 84 | for (EnderecoEstoque enderecoEstoqueFilho : vinculos) { |
86 | 85 | if(!UtilColecao.isVazio(enderecoEstoqueFilho.getMateriais())){ |
86 | + mensagemValidacao.append("<li>"); | |
87 | 87 | mensagemValidacao.append(this.internacionalizacaoService.getTranslate("ALMOXARIFADO.LABEL.ENDERECO_ESTOQUE_VINCULADO_SUPERIOR", this.getIdioma())); |
88 | - mensagemValidacao.append(": "); | |
88 | + mensagemValidacao.append("<b>"); | |
89 | 89 | mensagemValidacao.append(enderecoEstoqueFilho.getDescricao()); |
90 | + mensagemValidacao.append("</b>"); | |
90 | 91 | mensagemValidacao.append("<p>"); |
91 | 92 | mensagemValidacao.append(this.internacionalizacaoService.getTranslate("ALMOXARIFADO.LABEL.MATERAIS_VINCULADOS", this.getIdioma())); |
92 | 93 | mensagemValidacao.append("</p>"); |
94 | + mensagemValidacao.append("</li>"); | |
95 | + naoPermiteRemover = true; | |
93 | 96 | } |
94 | 97 | } |
95 | 98 | } |
96 | - | |
97 | - if(mensagemValidacao.length() > 0){ | |
98 | - mensagemValidacao.insert(0, this.internacionalizacaoService.getTranslate("ALMOXARIFADO.VALIDACAO.REMOVER_ENDERECO_ESTOQUE_NEGADA_MOTIVO", this.getIdioma()) + "<br>"); | |
99 | + mensagemValidacao.append("</ul>"); | |
100 | + if(naoPermiteRemover){ | |
101 | + mensagemValidacao.append(""); | |
102 | + mensagemValidacao.insert(0, "<b>" + this.internacionalizacaoService.getTranslate("ALMOXARIFADO.VALIDACAO.REMOVER_ENDERECO_ESTOQUE_NEGADA_MOTIVO", this.getIdioma()) + "</b><br><br>"); | |
103 | + }else{ | |
104 | + mensagemValidacao = new StringBuilder(); | |
99 | 105 | } |
100 | 106 | |
101 | 107 | return new ResponseBodyWrapper(mensagemValidacao.toString(), getEditView()); | ... | ... |
cit-almoxarifado-web/src/main/java/br/com/centralit/listener/StartupListenerAlmoxarifado.java
... | ... | @@ -298,8 +298,8 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat |
298 | 298 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.ENDERECO_SUPERIOR_DESCRICAO", "Desc. Endereço Superior", dominio, modulo)); |
299 | 299 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.ACOMODA_MATERIAL", "Acomoda Materiais", dominio, modulo)); |
300 | 300 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.ENDERECO_ESTOQUE_TODOS_MATERIAL", "Adicionar endereço para todos os materiais", dominio, modulo)); |
301 | - internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.MATERAIS_VINCULADOS", "Existe materiais vinculados", dominio, modulo)); | |
302 | - internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.ENDERECO_ESTOQUE_VINCULADO_SUPERIOR", "Endereço de Estoque vinculado ao endereço superior", dominio, modulo)); | |
301 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.MATERAIS_VINCULADOS", "Existe materiais vinculados a este endereço", dominio, modulo)); | |
302 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.ENDERECO_ESTOQUE_VINCULADO_SUPERIOR", "Endereço de Estoque: ", dominio, modulo)); | |
303 | 303 | |
304 | 304 | } |
305 | 305 | |
... | ... | @@ -324,7 +324,7 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat |
324 | 324 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.REMOVER_ENDERECO_ESTOQUE_NEGADA", "O endereço não pode ser removido, pois está vinculado a um material de consumo", dominio, modulo)); |
325 | 325 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.NAO_PERMITIDO_ENDERECO_ESTOQUE_ACOMODA_MATERIAL", "Não foi permitido atualizar o registro, o endereço em questão é um endereço superior de outros endereços, logo não é possivel indicar o endereço como uma acomodação de materiais.", dominio, modulo)); |
326 | 326 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.NAO_PERMITIDO_REMOVER_ENDERECO_ESTOQUE_END_SUPERIOR_VINCULO", "Remoção não permitida. O endereço de estoque a ser removido tem vínculo como endereço superior de outros endereços. Para remover este endereço, desvincule primeiramente dos demais endereços.", dominio, modulo)); |
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", dominio, modulo)); | |
328 | 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 | 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 | 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)); | ... | ... |
cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/EnderecoEstoqueController.js
... | ... | @@ -131,6 +131,14 @@ citApp.controller('EnderecoEstoqueController', ['$scope', 'EnderecoEstoqueReposi |
131 | 131 | }); |
132 | 132 | }; |
133 | 133 | |
134 | + $scope.validaEnderecoAcomodaMaterial = function(){ | |
135 | + $timeout(function(){ | |
136 | + if(!$scope.enderecoEstoque.acomodaMaterial){ | |
137 | + $scope.enderecoEstoque.enderTodoMaterial = false; | |
138 | + } | |
139 | + }); | |
140 | + }; | |
141 | + | |
134 | 142 | $scope.validaEnderecoTodosMaterial = function(){ |
135 | 143 | $timeout(function(){ |
136 | 144 | if($scope.enderecoEstoque.enderTodoMaterial){ |
... | ... | @@ -152,6 +160,8 @@ citApp.controller('EnderecoEstoqueController', ['$scope', 'EnderecoEstoqueReposi |
152 | 160 | $scope.bloquearAcomodacaoMaterial = true; |
153 | 161 | }else if($scope.enderecoEstoque.materiais && $scope.enderecoEstoque.materiais.length > 0 && $scope.enderecoEstoque.id){ |
154 | 162 | $scope.bloquearAcomodacaoMaterial = true; |
163 | + }else if($scope.enderecoEstoque.enderTodoMaterial){ | |
164 | + $scope.bloquearAcomodacaoMaterial = true; | |
155 | 165 | }else{ |
156 | 166 | $scope.bloquearAcomodacaoMaterial = false; |
157 | 167 | } | ... | ... |
cit-almoxarifado-web/src/main/webapp/html/enderecoEstoque/enderecoEstoqueEdit.html
... | ... | @@ -72,11 +72,11 @@ |
72 | 72 | <auto-complete ng-id="enderecoEstoque.endeEstoqSuperior" ng-label="ALMOXARIFADO.LABEL.ENDERECO_SUPERIOR" ng-model="enderecoEstoque.endeEstoqSuperior" form="enderecoEstoqueForm" ng-disabled="!edit" ng-find="findAutoCompleteEnderecoSuperior(value)" ng-item="item.codigo + ' / ' + item.descricao" /> |
73 | 73 | </div> |
74 | 74 | <div class="col-sm-4"> |
75 | - <label-input-checkbox ng-model="enderecoEstoque.acomodaMaterial" ng-disabled="bloquearAcomodacaoMaterial" ng-label="ALMOXARIFADO.LABEL.ACOMODA_MATERIAL" form="enderecoEstoqueForm"/> | |
75 | + <label-input-checkbox ng-model="enderecoEstoque.acomodaMaterial" ng-disabled="bloquearAcomodacaoMaterial" ng-label="ALMOXARIFADO.LABEL.ACOMODA_MATERIAL" form="enderecoEstoqueForm" ng-custom-change="validaEnderecoAcomodaMaterial()"/> | |
76 | 76 | </div> |
77 | 77 | </div> |
78 | 78 | |
79 | - <div class="row"> | |
79 | + <div class="row" ng-show="enderecoEstoque.acomodaMaterial"> | |
80 | 80 | <div class="col-sm-12"> |
81 | 81 | <label-input-checkbox ng-model="enderecoEstoque.enderTodoMaterial" ng-disabled="bloquearEnderecoTotalMaterial" ng-label="ALMOXARIFADO.LABEL.ENDERECO_ESTOQUE_TODOS_MATERIAL" form="enderecoEstoqueForm" ng-custom-change="validaEnderecoTodosMaterial()"/> |
82 | 82 | </div> | ... | ... |