Commit 9da8db41bac40720ccf25b1c634ca0d5892c6040

Authored by erick.sato
1 parent d7803567
Exists in master

[Redmine Atendimento #4740]Cadastro endereço estoque

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&lt;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(&#39;EnderecoEstoqueController&#39;, [&#39;$scope&#39;, &#39;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(&#39;EnderecoEstoqueController&#39;, [&#39;$scope&#39;, &#39;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>
... ...