Commit 38bf80faa1c85019e73768b257f7035f18a502db
1 parent
9130d51b
Exists in
master
Redmine #5043 Salvar e editar atendimento requisicao
Showing
10 changed files
with
125 additions
and
19 deletions
Show diff stats
cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/AtendimentoRequisicaoConsumoItem.java
... | ... | @@ -79,7 +79,7 @@ public class AtendimentoRequisicaoConsumoItem extends PersistentObjectAuditOrgan |
79 | 79 | @JoinColumn(name = "AtendimentoReqConsumo_Id") |
80 | 80 | private AtendimentoRequisicaoConsumo atendimentoRequisicaoConsumo; |
81 | 81 | |
82 | - @ManyToOne(fetch = FetchType.LAZY, optional = false) | |
82 | + @ManyToOne(fetch = FetchType.LAZY) | |
83 | 83 | @JsonView({ ViewsAlmoxarifado.AtendimentoRequisicaoConsumoItem.class, |
84 | 84 | ViewsAlmoxarifado.AtendimentoRequisicaoConsumoEditView.class, Views.MaterialConsultaInfo.class, |
85 | 85 | ViewsAdmMateriais.RequisicaoConsumoEditView.class }) | ... | ... |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/AtendimentoRequisicaoConsumoItemServiceImpl.java
... | ... | @@ -149,7 +149,6 @@ public class AtendimentoRequisicaoConsumoItemServiceImpl extends GenericServiceI |
149 | 149 | public void superRemove(AtendimentoRequisicaoConsumoItem atendimentoRequisicaoConsumoItem) { |
150 | 150 | |
151 | 151 | AtendimentoRequisicaoConsumoItem entity = this.find(atendimentoRequisicaoConsumoItem.getId()); |
152 | - | |
153 | 152 | super.remove(entity); |
154 | 153 | } |
155 | 154 | ... | ... |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/AtendimentoRequisicaoConsumoServiceImpl.java
... | ... | @@ -169,10 +169,13 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl< |
169 | 169 | |
170 | 170 | if(atendimento.getId() == null && atendimento.getDataAtendimento() == null){ |
171 | 171 | atendimento.setDataAtendimento(entity.getDataAtendimento()); |
172 | - this.montarEntidade(atendimento); | |
172 | + | |
173 | + atendimento.setRequisicaoConsumo(this.requisicaoConsumoService.find(atendimento.getRequisicaoConsumo().getId())); | |
173 | 174 | |
174 | 175 | this.validarDataAtendimento(atendimento); |
175 | 176 | |
177 | + this.montarEntidade(atendimento); | |
178 | + | |
176 | 179 | this.atualizarStatusRquisicao(atendimento); |
177 | 180 | |
178 | 181 | if(atendimento.getId() == null){ |
... | ... | @@ -269,9 +272,10 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl< |
269 | 272 | removerLancamentosPassados(entity); |
270 | 273 | } |
271 | 274 | |
272 | - this.montarEntidade(entity); | |
273 | - | |
275 | + entity.setRequisicaoConsumo(this.requisicaoConsumoService.find(entity.getRequisicaoConsumo().getId())); | |
274 | 276 | this.validarDataAtendimento(entity); |
277 | + | |
278 | + this.montarEntidade(entity); | |
275 | 279 | |
276 | 280 | this.atualizarStatusRquisicao(entity); |
277 | 281 | |
... | ... | @@ -352,11 +356,39 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl< |
352 | 356 | */ |
353 | 357 | private void montarEntidade(AtendimentoRequisicaoConsumo entity) { |
354 | 358 | |
355 | - entity.setRequisicaoConsumo(this.requisicaoConsumoService.find(entity.getRequisicaoConsumo().getId())); | |
359 | + if(entity.getRequisicaoConsumo().getRequisicaoConsumoItens().size() != entity.getAtendimentoRequisicaoConsumoItems().size()){ | |
360 | + for (RequisicaoConsumoItem reqItem : entity.getRequisicaoConsumo().getRequisicaoConsumoItens()) { | |
361 | + if(reqItem.getDataInativo() != null){ | |
362 | + continue; | |
363 | + } | |
364 | + boolean addItem = false; | |
365 | + for (AtendimentoRequisicaoConsumoItem atendReqItem : entity.getAtendimentoRequisicaoConsumoItems()) { | |
366 | + if(atendReqItem.getMaterial().getId().doubleValue() != reqItem.getMaterialConsumo().getId().doubleValue()){ | |
367 | + addItem = true; | |
368 | + }else{ | |
369 | + addItem = false; | |
370 | + break; | |
371 | + } | |
372 | + } | |
373 | + if(addItem){ | |
374 | + AtendimentoRequisicaoConsumoItem atendimentoRequisicaoConsumoItem = new AtendimentoRequisicaoConsumoItem(); | |
375 | + atendimentoRequisicaoConsumoItem.setMaterial(reqItem.getMaterialConsumo()); | |
376 | + atendimentoRequisicaoConsumoItem.setRequisicaoConsumoItem(reqItem); | |
377 | + | |
378 | + AtendimentoRequisicaoConsumoItemEndereco itemEndereco = new AtendimentoRequisicaoConsumoItemEndereco(); | |
379 | + itemEndereco.setMaterialLocalEstoque(this.materialLocalEstoqueService.buscarLocaisEstoquePorIdMaterial(reqItem.getMaterialConsumo().getId()).get(0)); | |
380 | + List<AtendimentoRequisicaoConsumoItemEndereco> endItem = new ArrayList<>(); | |
381 | + endItem.add(itemEndereco); | |
382 | + atendimentoRequisicaoConsumoItem.setAtendimentoRequisicaoConsumoItemEnderecos(endItem); | |
383 | + entity.getAtendimentoRequisicaoConsumoItems().add(atendimentoRequisicaoConsumoItem); | |
384 | + } | |
385 | + } | |
386 | + } | |
356 | 387 | |
357 | 388 | boolean todosItensSemQuantidade = true; |
358 | 389 | for (AtendimentoRequisicaoConsumoItem atendimentoItem : entity.getAtendimentoRequisicaoConsumoItems()) { |
359 | 390 | |
391 | + atendimentoItem.setDataInativo(null); | |
360 | 392 | RequisicaoConsumoItem requisicaoConsumoItem = this.requisicaoConsumoItemService.find(atendimentoItem.getRequisicaoConsumoItem().getId()); |
361 | 393 | requisicaoConsumoItem.setQuantidadeAtendida(atendimentoItem.getQuantidade()); |
362 | 394 | |
... | ... | @@ -396,9 +428,9 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl< |
396 | 428 | |
397 | 429 | for (AtendimentoRequisicaoConsumoItem atendimentoRequisicaoConsumoItem : entity.getAtendimentoRequisicaoConsumoItems()) { |
398 | 430 | |
431 | + atendimentoRequisicaoConsumoItem.getRequisicaoConsumoItem().setQuantidadeAtendida(atendimentoRequisicaoConsumoItem.getRequisicaoConsumoItem().getQuantidadeAtendida().subtract(atendimentoRequisicaoConsumoItem.getQuantidade())); | |
399 | 432 | this.atendimentoRequisicaoConsumoItemService.superRemove(atendimentoRequisicaoConsumoItem); |
400 | 433 | |
401 | - atendimentoRequisicaoConsumoItem.getRequisicaoConsumoItem().setQuantidadeAtendida(atendimentoRequisicaoConsumoItem.getRequisicaoConsumoItem().getQuantidadeAtendida().subtract(atendimentoRequisicaoConsumoItem.getQuantidade())); | |
402 | 434 | |
403 | 435 | } |
404 | 436 | ... | ... |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/MaterialLocalEstoqueServiceImpl.java
... | ... | @@ -68,9 +68,14 @@ public class MaterialLocalEstoqueServiceImpl extends GenericServiceImpl<Material |
68 | 68 | }else{ |
69 | 69 | if(entity.getLocalPrincipal()){ |
70 | 70 | for (MaterialLocalEstoque materialLocalEstoque : locaisParMaterial) { |
71 | - if(materialLocalEstoque.getId().doubleValue() != entity.getId().doubleValue()){ | |
71 | + if(entity.getId() != null){ | |
72 | + if(materialLocalEstoque.getId().doubleValue() != entity.getId().doubleValue()){ | |
73 | + materialLocalEstoque.setLocalPrincipal(Boolean.FALSE); | |
74 | + this.merge(materialLocalEstoque); | |
75 | + } | |
76 | + }else{ | |
72 | 77 | materialLocalEstoque.setLocalPrincipal(Boolean.FALSE); |
73 | - this.merge(materialLocalEstoque); | |
78 | + this.merge(materialLocalEstoque); | |
74 | 79 | } |
75 | 80 | } |
76 | 81 | } | ... | ... |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/RequisicaoConsumoItemServiceImpl.java
... | ... | @@ -120,7 +120,7 @@ public class RequisicaoConsumoItemServiceImpl extends GenericServiceImpl<Requisi |
120 | 120 | if(requisicaoConsumoItemTransient.getId() != null){ |
121 | 121 | requisicaoConsumoItem.setId(requisicaoConsumoItemTransient.getId()); |
122 | 122 | } |
123 | - | |
123 | + | |
124 | 124 | return requisicaoConsumoItem; |
125 | 125 | } |
126 | 126 | ... | ... |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/RequisicaoConsumoServiceImpl.java
... | ... | @@ -290,6 +290,12 @@ public class RequisicaoConsumoServiceImpl extends GenericServiceImpl<RequisicaoC |
290 | 290 | throw new BusinessException("PORTAL.MSG.MN020", CodigoErro.REGRA_NEGOCIO.getValue()); |
291 | 291 | |
292 | 292 | } |
293 | + | |
294 | + RequisicaoConsumo requisicaoConsumo = this.find(idRequisicaoConsumo); | |
295 | + | |
296 | + for (RequisicaoConsumoItem requisicaoConsumoItem : requisicaoConsumo.getRequisicaoConsumoItens()) { | |
297 | + this.requisicaoConsumoItemService.remove(requisicaoConsumoItem); | |
298 | + } | |
293 | 299 | |
294 | 300 | return super.removeById(idRequisicaoConsumo); |
295 | 301 | |
... | ... | @@ -346,7 +352,10 @@ public class RequisicaoConsumoServiceImpl extends GenericServiceImpl<RequisicaoC |
346 | 352 | private void montarEntidade(RequisicaoConsumo requisicaoConsumo) { |
347 | 353 | |
348 | 354 | // MONTA OS DADOS RELACIONADOS MATERIAL DE CONSUMO |
349 | - this.requisicaoConsumoItemService.montarRequisicaoConsumoItemMateriaisConsumo(requisicaoConsumo); | |
355 | + for (RequisicaoConsumoItem requisicaoConsumoItem : requisicaoConsumo.getRequisicaoConsumoItens()) { | |
356 | + requisicaoConsumoItem.setRequisicaoConsumo(requisicaoConsumo); | |
357 | + } | |
358 | +// this.requisicaoConsumoItemService.montarRequisicaoConsumoItemMateriaisConsumo(requisicaoConsumo); | |
350 | 359 | |
351 | 360 | // TRANSIENT OBSERVACOES |
352 | 361 | if (!UtilColecao.isVazio(requisicaoConsumo.getObservacoes())) { |
... | ... | @@ -361,6 +370,11 @@ public class RequisicaoConsumoServiceImpl extends GenericServiceImpl<RequisicaoC |
361 | 370 | } |
362 | 371 | |
363 | 372 | requisicaoConsumo.setCentroCusto(UtilObjeto.isReferencia(requisicaoConsumo.getCentroCusto()) ? this.centroCustoService.find(requisicaoConsumo.getCentroCusto().getId()) : null); |
373 | + | |
374 | + if(requisicaoConsumo.getOrganizacao() == null){ | |
375 | + Usuario usuarioLogado = (Usuario) usuarioService.find(( (Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal() ).getId()); | |
376 | + requisicaoConsumo.setOrganizacao(usuarioLogado.getOrganizacao()); | |
377 | + } | |
364 | 378 | } |
365 | 379 | |
366 | 380 | /** |
... | ... | @@ -526,6 +540,17 @@ public class RequisicaoConsumoServiceImpl extends GenericServiceImpl<RequisicaoC |
526 | 540 | if(atendimentoVH.isBloquearAtendimento()){ |
527 | 541 | this.atualizarStatusAtendimento(requisicoes); |
528 | 542 | } |
543 | + | |
544 | + for (RequisicaoConsumo requisicaoConsumo : requisicoes) { | |
545 | + List<RequisicaoConsumoItem> listaItens = new ArrayList<>(); | |
546 | + for (RequisicaoConsumoItem requisicaoConsumoItem : requisicaoConsumo.getRequisicaoConsumoItens()) { | |
547 | + if(requisicaoConsumoItem.getDataInativo() == null){ | |
548 | + listaItens.add(requisicaoConsumoItem); | |
549 | + } | |
550 | + } | |
551 | + requisicaoConsumo.setRequisicaoConsumoItens(listaItens); | |
552 | + } | |
553 | + | |
529 | 554 | return requisicoes; |
530 | 555 | } |
531 | 556 | ... | ... |
cit-almoxarifado-web/src/main/java/br/com/centralit/controller/RequisicaoConsumoController.java
... | ... | @@ -7,6 +7,7 @@ import org.apache.commons.lang3.SerializationUtils; |
7 | 7 | import org.hibernate.exception.ConstraintViolationException; |
8 | 8 | import org.springframework.beans.factory.annotation.Autowired; |
9 | 9 | import org.springframework.stereotype.Controller; |
10 | +import org.springframework.web.bind.annotation.PathVariable; | |
10 | 11 | import org.springframework.web.bind.annotation.RequestBody; |
11 | 12 | import org.springframework.web.bind.annotation.RequestMapping; |
12 | 13 | import org.springframework.web.bind.annotation.RequestMethod; |
... | ... | @@ -255,4 +256,27 @@ public class RequisicaoConsumoController extends GenericController<RequisicaoCon |
255 | 256 | return this.requisicaoConsumoService.atualizarSituacaoAtendimentoRequisicoes(requisicaoVH); |
256 | 257 | |
257 | 258 | } |
259 | + | |
260 | + @RequestMapping(value = "/{id}", method = RequestMethod.GET) | |
261 | + @ResponseBody | |
262 | + public ResponseBodyWrapper getObject(@PathVariable("id") Long id) { | |
263 | + | |
264 | + RequisicaoConsumo requisicaoConsumo = this.requisicaoConsumoService.getReference(id); | |
265 | + | |
266 | + List<RequisicaoConsumoItem> itens = new ArrayList<>(); | |
267 | + | |
268 | + for (RequisicaoConsumoItem requisicaoConsumoItem : requisicaoConsumo.getRequisicaoConsumoItens()) { | |
269 | + if(requisicaoConsumoItem.getDataInativo() == null){ | |
270 | + itens.add(requisicaoConsumoItem); | |
271 | + } | |
272 | + } | |
273 | + | |
274 | + requisicaoConsumo.setRequisicaoConsumoItens(itens); | |
275 | + | |
276 | + ResultResponseVH<RequisicaoConsumo> resultResponseVH = new ResultResponseVH<RequisicaoConsumo>(requisicaoConsumo); | |
277 | + | |
278 | + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(resultResponseVH, this.getEditView()); | |
279 | + | |
280 | + return responseBody; | |
281 | + } | |
258 | 282 | } | ... | ... |
cit-almoxarifado-web/src/main/java/br/com/centralit/listener/StartupListenerAlmoxarifado.java
... | ... | @@ -382,6 +382,7 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat |
382 | 382 | |
383 | 383 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.QUANTIDADE_ATENDIDA_MAIOR_REQUISITADA", "A quantidade a ser atendida é superior a quantidade requisitada.", dominio, modulo)); |
384 | 384 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.TODAS_QUANTIDADE_ATENDIDA_EM_BRANCO", "Ao menos um item 'Atender' deve ser preenchido para registrar o atendimento.", dominio, modulo)); |
385 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.REMOVER_TODOS_ITENS_REQUISICAO_CONSUMO", "Não é permitido remover todos os materiais de consumo.", dominio, modulo)); | |
385 | 386 | } |
386 | 387 | |
387 | 388 | private void gerarMensagem(Dominio dominio, Modulo modulo, List<Internacionalizacao> internacionalizacaoList) { | ... | ... |
cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/AtendimentoRequisicaoConsumoController.js
... | ... | @@ -621,6 +621,8 @@ citApp.controller( 'AtendimentoRequisicaoConsumoController', |
621 | 621 | $scope.showAlert("success", $translate.instant('MSG.REGISTRO_SALVO')); |
622 | 622 | $scope.atendimentoRequisicaoConsumoForm.$submitted = false; |
623 | 623 | $scope.setLoading(false); |
624 | + $scope.$showPageSearchWorkspace($scope.workspace); | |
625 | + $scope.atualizaPaginaPesquisa(); | |
624 | 626 | }); |
625 | 627 | }); |
626 | 628 | } | ... | ... |
cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/RequisicaoConsumoController.js
1 | 1 | 'use strict'; |
2 | 2 | |
3 | -citApp.controller('RequisicaoConsumoController', ['$scope', '$filter', 'RequisicaoConsumoRepository', '$translate', '$timeout', 'DominioRepository', 'EstruturaOrganizacionalAlmoxarifadoRepository', 'CatalogoMaterialRepository', 'CatalogoMaterialItemRepository', 'CatalogoMaterialUnidadeConsumidoraRequisitanteItemRepository', 'MaterialConsumoRepository', 'AtendimentoRequisicaoConsumoRepository', | |
4 | - function RequisicaoConsumoController($scope, $filter, RequisicaoConsumoRepository, $translate, $timeout, DominioRepository, EstruturaOrganizacionalAlmoxarifadoRepository, CatalogoMaterialRepository, CatalogoMaterialItemRepository, CatalogoMaterialUnidadeConsumidoraRequisitanteItemRepository, MaterialConsumoRepository, AtendimentoRequisicaoConsumoRepository) { | |
3 | +citApp.controller('RequisicaoConsumoController', ['$scope', '$filter', 'RequisicaoConsumoRepository', '$translate', '$timeout', 'DominioRepository', 'EstruturaOrganizacionalAlmoxarifadoRepository', 'CatalogoMaterialRepository', 'CatalogoMaterialItemRepository', | |
4 | + 'CatalogoMaterialUnidadeConsumidoraRequisitanteItemRepository', 'MaterialConsumoRepository', 'AtendimentoRequisicaoConsumoRepository','RequisicaoConsumoItemRepository', | |
5 | + function RequisicaoConsumoController($scope, $filter, RequisicaoConsumoRepository, $translate, $timeout, DominioRepository, EstruturaOrganizacionalAlmoxarifadoRepository, CatalogoMaterialRepository, CatalogoMaterialItemRepository, | |
6 | + CatalogoMaterialUnidadeConsumidoraRequisitanteItemRepository, MaterialConsumoRepository, AtendimentoRequisicaoConsumoRepository, RequisicaoConsumoItemRepository) { | |
5 | 7 | |
6 | 8 | // CONSTANTES DOMINIO |
7 | 9 | var TIPO_STATUS_REQUISICAO = 'tipoStatusRequisicao'; |
... | ... | @@ -485,7 +487,13 @@ citApp.controller('RequisicaoConsumoController', ['$scope', '$filter', 'Requisic |
485 | 487 | |
486 | 488 | // REMOVE ITEM DA REQUISICAO |
487 | 489 | $scope.removerRequisicaoConsumoItem = function(){ |
490 | + | |
491 | + if($scope.requisicaoConsumo.requisicaoConsumoItens.length == 1 && $scope.requisicaoConsumo.id){ | |
492 | + $scope.showAlert('warning', $translate.instant('ALMOXARIFADO.VALIDACAO.REMOVER_TODOS_ITENS_REQUISICAO_CONSUMO')); | |
488 | 493 | |
494 | + return; | |
495 | + } | |
496 | + | |
489 | 497 | if(!$scope.requisicaoConsumoItemChecked) { |
490 | 498 | |
491 | 499 | $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_SER_REMOVIDO')); |
... | ... | @@ -499,12 +507,22 @@ citApp.controller('RequisicaoConsumoController', ['$scope', '$filter', 'Requisic |
499 | 507 | message: $translate.instant('MSG.DESEJA_EXCLUIR_ITENS'), |
500 | 508 | callback: function () { |
501 | 509 | |
502 | - $scope.$modalConfirmInstance.dismiss('cancel'); | |
503 | - | |
504 | - $scope.requisicaoConsumo.requisicaoConsumoItens.splice($scope.requisicaoConsumoItemChecked.$index, 1); | |
505 | - | |
506 | - $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO')); | |
507 | - | |
510 | + if($scope.requisicaoConsumoItemChecked.id){ | |
511 | + RequisicaoConsumoItemRepository.remove($scope.requisicaoConsumoItemChecked).then(function(result) { | |
512 | + $scope.requisicaoConsumo.requisicaoConsumoItens.splice($scope.requisicaoConsumoItemChecked.$index, 1); | |
513 | + $scope.changeListRequisicaoConsumoItem(); | |
514 | + $scope.$modalConfirmInstance.dismiss('cancel'); | |
515 | + | |
516 | + $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO')); | |
517 | + }); | |
518 | + }else{ | |
519 | + $scope.requisicaoConsumo.requisicaoConsumoItens.splice($scope.requisicaoConsumoItemChecked.$index, 1); | |
520 | + $scope.changeListRequisicaoConsumoItem(); | |
521 | + $scope.$modalConfirmInstance.dismiss('cancel'); | |
522 | + | |
523 | + $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO')); | |
524 | + } | |
525 | + | |
508 | 526 | } |
509 | 527 | |
510 | 528 | }); | ... | ... |