From af6057c2e9cb9fe4aaa43ca332ddc4b1bb0038bd Mon Sep 17 00:00:00 2001 From: geovane.filho Date: Fri, 15 Apr 2016 09:56:16 -0300 Subject: [PATCH] Redmine #4483 Criando bloqueio de atividades quando estiver ocorrendo o fechamento do mês para o próprio fechamento do mês de referência e entrada --- citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/EntradaController.java | 150 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------------------- citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/OrganizacaoPatrimonioController.java | 93 +++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------- citgrp-patrimonio-web/src/main/webapp/assets/js/angular/custom/controller/EntradaController.js | 457 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- citgrp-patrimonio-web/src/main/webapp/html/entrada/entradaList.html | 2 +- 4 files changed, 404 insertions(+), 298 deletions(-) diff --git a/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/EntradaController.java b/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/EntradaController.java index dadd2b2..7aa7ac6 100644 --- a/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/EntradaController.java +++ b/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/EntradaController.java @@ -19,49 +19,58 @@ import br.com.centralit.api.model.BemPatrimonial; import br.com.centralit.api.model.Entrada; import br.com.centralit.api.model.EntradaPatrimonio; import br.com.centralit.api.model.EntradaPatrimonioItem; +import br.com.centralit.api.model.MyMensagemRetorno; +import br.com.centralit.api.model.MyRetornoStatus; import br.com.centralit.api.service.EntradaService; +import br.com.centralit.api.service.OrganizacaoService; 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.model.Organizacao; import br.com.centralit.framework.view.ResultResponseVH; /** *

* *

- * + * *

* Company: Central IT - Governança Corporativa - *

- * + * *

* Title: *

- * + * *

* Description: *

- * + * * @since 03/01/2015 - 11:19:18 - * + * * @version 1.0.0 - * + * * @author wilker.machado - * + * */ @Controller @RequestMapping("/rest/entrada") public class EntradaController extends GenericController { + @Autowired private EntradaService entradaService; + @Autowired + private OrganizacaoService organizacaoService; + public EntradaController() { + super(); } /** * Responsável pela criação de novas instâncias desta classe. - * + * * @param entradaService */ @Autowired @@ -72,7 +81,6 @@ public class EntradaController extends GenericController { this.entradaService = entradaService; } - @RequestMapping(value = "/verificarMovimentacaoBensEntrada", method = RequestMethod.POST) @ResponseBody public ResponseBodyWrapper verificarMovimentacaoBensEntrada(@RequestBody EntradaPatrimonio entrada) { @@ -102,57 +110,91 @@ public class EntradaController extends GenericController { /** * Método responsável por realizar o upload dos anexos que estão ligadas a bem patrimonial Caracteristicas - * + * * @author wilker.machado - * + * * @param name * @param file * @param idAnexo */ @RequestMapping(value = "/uploadAnexoCaracteristica", method = RequestMethod.POST) - public @ResponseBody void uploadAnexoCaracteristica(@RequestParam(value = "filename", required = false) String name, @RequestParam("file") MultipartFile file, @RequestParam(value = "idEntradaItem", required = false) Long idEntradaItem) { + public @ResponseBody + void uploadAnexoCaracteristica(@RequestParam(value = "filename", required = false) String name, @RequestParam("file") MultipartFile file, @RequestParam(value = "idEntradaItem", required = false) Long idEntradaItem) { this.entradaService.uploadAnexoCaracteristica(file, idEntradaItem); } - + @RequestMapping(method = RequestMethod.POST, value = "") @ResponseBody - public ResponseBodyWrapper save(@RequestBody EntradaPatrimonio entity) throws Exception{ - boolean uniqueConstraintViolate = true; - - EntradaPatrimonio entrada = new EntradaPatrimonio(); - - //TODO Solução temporária para evitar que sejam criados registros com o código duplicado. Alterar solução quando for implementado o cache compartilhado - for(int i = 5; i > 0 && uniqueConstraintViolate; i--){ - try{ - entrada = this.entradaService.save(SerializationUtils.clone(entity)); - uniqueConstraintViolate = false; - }catch(Throwable e){ - if(e.getCause() instanceof ConstraintViolationException){ - ConstraintViolationException ex = (ConstraintViolationException) e.getCause(); - if(ex.getSQLException().getMessage().contains("codigo_unico")){ - uniqueConstraintViolate = true; - }else{ + public ResponseBodyWrapper save(@RequestBody EntradaPatrimonio entity) throws Exception { + + Organizacao organizacao = this.organizacaoService.find(this.getUsuario().getOrganizacao().getId()); + + if (!organizacao.getEmFechamento()) { + + boolean uniqueConstraintViolate = true; + + EntradaPatrimonio entrada = new EntradaPatrimonio(); + + // TODO Solução temporária para evitar que sejam criados registros com o código duplicado. Alterar solução quando for implementado o cache compartilhado + for (int i = 5; i > 0 && uniqueConstraintViolate; i--) { + try { + entrada = this.entradaService.save(SerializationUtils.clone(entity)); + uniqueConstraintViolate = false; + } catch (Throwable e) { + if (e.getCause() instanceof ConstraintViolationException) { + ConstraintViolationException ex = (ConstraintViolationException) e.getCause(); + if (ex.getSQLException().getMessage().contains("codigo_unico")) { + uniqueConstraintViolate = true; + } else { + throw e; + } + } else { throw e; } - }else{ - throw e; } } + + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(entrada, getEditView()); + + return responseBody; + } else { + MyRetornoStatus retorno = new MyRetornoStatus(); + retorno.data = entity; + retorno.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.warning, "MSG.ORGANIZACAO_EM_FECHAMENTO_MES")); + + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retorno, getEditView()); + + return responseBody; } - - ResponseBodyWrapper responseBody = new ResponseBodyWrapper(entrada, getEditView()); - - return responseBody; } + @RequestMapping(method = RequestMethod.POST, value = "/update") + @ResponseBody + public ResponseBodyWrapper update(@RequestBody EntradaPatrimonio objeto) { + Organizacao organizacao = this.organizacaoService.find(this.getUsuario().getOrganizacao().getId()); + + if (!organizacao.getEmFechamento()) { + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(this.entradaService.merge(objeto), getEditView()); + + return responseBody; + } else { + MyRetornoStatus retorno = new MyRetornoStatus(); + retorno.data = objeto; + retorno.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.warning, "MSG.ORGANIZACAO_EM_FECHAMENTO_MES")); + + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retorno, getEditView()); + + return responseBody; + } + } /** * Método responsável por listar Entrada por codigo e Organizacao - * + * * @author geovane.filho - * + * * @param value * @param idOrganizacao * @return ResponseBodyWrapper @@ -167,11 +209,23 @@ public class EntradaController extends GenericController { return responseBody; } - + @RequestMapping(method = RequestMethod.POST, value = "/concluir") @ResponseBody public ResponseBodyWrapper concluir(@RequestBody EntradaPatrimonio entrada) { - return new ResponseBodyWrapper(entradaService.concluir(entrada), getEditView()); + Organizacao organizacao = this.organizacaoService.find(this.getUsuario().getOrganizacao().getId()); + + if (!organizacao.getEmFechamento()) { + return new ResponseBodyWrapper(entradaService.concluir(entrada), getEditView()); + } else { + MyRetornoStatus retorno = new MyRetornoStatus(); + retorno.data = entrada; + retorno.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.warning, "MSG.ORGANIZACAO_EM_FECHAMENTO_MES")); + + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retorno, getEditView()); + + return responseBody; + } } @RequestMapping(value = "/{id}", method = RequestMethod.GET) @@ -180,11 +234,11 @@ public class EntradaController extends GenericController { List listaBemPatrimopnial = null; EntradaPatrimonio entrada = this.entradaService.find(id); - if(entrada.getEntradasIten() != null){ + if (entrada.getEntradasIten() != null) { for (EntradaPatrimonioItem entradaItem : entrada.getEntradasIten()) { listaBemPatrimopnial = new ArrayList(); for (BemPatrimonial bemPatrimonial : entradaItem.getBensPatrimoniais()) { - if(bemPatrimonial.getDataInativo() == null){ + if (bemPatrimonial.getDataInativo() == null) { listaBemPatrimopnial.add(bemPatrimonial); } } @@ -198,24 +252,26 @@ public class EntradaController extends GenericController { return responseBody; } - + @RequestMapping(value = "/existemBemSemDataContabil", method = RequestMethod.GET, produces = "application/json") @ResponseBody public boolean existemBemSemDataContabil(@RequestParam(value = "idEntrada") Long idEntrada) { + return this.entradaService.existeBemSemDataContabil(idEntrada); - } - + } + @RequestMapping(method = RequestMethod.GET, value = "/validaExistenciaBemMaterialEntrada", produces = "application/json") @ResponseBody public boolean validaExistenciaBemMaterialEntrada(@RequestParam(value = "idEntrada", required = false) Long idEntrada) { + return entradaService.verificaExistenciaBensPatrimoniaisEntrada(idEntrada); } - + @RequestMapping(method = RequestMethod.GET, value = "/verificaExistenciaBemPatrimonialTemporarioEntrada", produces = "application/json") @ResponseBody public boolean verificaExistenciaBemPatrimonialTemporario(@RequestParam(value = "idEntrada", required = false) Long idEntrada) { + return entradaService.verificaExistenciaBensPatrimoniaisTemporariosEntrada(idEntrada); } - - + } diff --git a/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/OrganizacaoPatrimonioController.java b/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/OrganizacaoPatrimonioController.java index f566723..20ce4df 100644 --- a/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/OrganizacaoPatrimonioController.java +++ b/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/OrganizacaoPatrimonioController.java @@ -107,56 +107,61 @@ public class OrganizacaoPatrimonioController { Long tipoDepreciacaoCodigo = requisicaoFechamento.get("tipoDepreciacao"); if (!organizacao.getEmFechamento()) { - this.organizacaoService.iniciarFechamentoDeMes(organizacao.getId()); - - MyRetornoStatus retornoFechamentoBens = new MyRetornoStatus(); - - MyRetornoStatus retornoBensNaEstruturaAlmoxarifado = new MyRetornoStatus(); + try { + this.organizacaoService.iniciarFechamentoDeMes(organizacao.getId()); - retornoBensNaEstruturaAlmoxarifado.status = this.bemPatrimonialService.validarBensNaEstruturaAlmoxarifado(organizacao.getId()); - retornoBensNaEstruturaAlmoxarifado.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.error, "MSG.BENS_NA_ESTRUTURA_ALMOXARIFADO")); - - if(!retornoBensNaEstruturaAlmoxarifado.status) { - ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retornoBensNaEstruturaAlmoxarifado, Views.EstruturaOrganizacionalEditView.class); - return responseBody; - } - - retornoFechamentoBens.status = this.bemPatrimonialService.fecharValoresBens(organizacao.getId(), user.getId()); - - MyRetornoStatus retornoFechamentoContas = new MyRetornoStatus(); - retornoFechamentoContas.status = this.contaContabilSaldoService.fechaSaldoContasContabeisTipoPermanente(organizacao); - - if (retornoFechamentoBens.status && retornoFechamentoContas.status) { - MyRetornoStatus retornoDepreciacao = new MyRetornoStatus(); - - Dominio tipoDepreciacao = this.dominioService.findByChaveAndCodigo(Dominio.TIPO_DEPRECIACAO, tipoDepreciacaoCodigo); + MyRetornoStatus retornoFechamentoBens = new MyRetornoStatus(); - Depreciacao depreciacao = this.depreciacaoService.geraDepreciacao(organizacao, tipoDepreciacao, user.getId()); + MyRetornoStatus retornoBensNaEstruturaAlmoxarifado = new MyRetornoStatus(); + + retornoBensNaEstruturaAlmoxarifado.status = this.bemPatrimonialService.validarBensNaEstruturaAlmoxarifado(organizacao.getId()); + retornoBensNaEstruturaAlmoxarifado.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.error, "MSG.BENS_NA_ESTRUTURA_ALMOXARIFADO")); - if (depreciacao != null) { - retornoDepreciacao = new MyRetornoStatus(depreciacao); - } else { - if (tipoDepreciacao == null) { - MyMensagemRetorno mensagem = new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.error, "MSG.FECHAR_MES_REFERENCIA_SEM_DEPRECIACAO"); - retornoDepreciacao.mensagens.add(mensagem); - } + if(!retornoBensNaEstruturaAlmoxarifado.status) { + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retornoBensNaEstruturaAlmoxarifado, Views.EstruturaOrganizacionalEditView.class); + return responseBody; } - - if (retornoDepreciacao.status) { // Se a depreciação foi realizada com sucesso eu atualizo o mês de referencia - retornoFechamentoContas.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.success, "MSG.SUCESSO_DEPRECIACAO")); - organizacao.getDataReferenciaVigente().add(Calendar.MONTH, 1); - this.organizacaoService.merge(organizacao); - retornoFechamentoContas.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.success, "MSG.SUCESSO_MES_REFERENCIA")); - } else { - retornoFechamentoContas.status = retornoDepreciacao.status; - retornoFechamentoContas.mensagens.addAll(retornoDepreciacao.mensagens); + + retornoFechamentoBens.status = this.bemPatrimonialService.fecharValoresBens(organizacao.getId(), user.getId()); + + MyRetornoStatus retornoFechamentoContas = new MyRetornoStatus(); + retornoFechamentoContas.status = this.contaContabilSaldoService.fechaSaldoContasContabeisTipoPermanente(organizacao); + + if (retornoFechamentoBens.status && retornoFechamentoContas.status) { + MyRetornoStatus retornoDepreciacao = new MyRetornoStatus(); + + Dominio tipoDepreciacao = this.dominioService.findByChaveAndCodigo(Dominio.TIPO_DEPRECIACAO, tipoDepreciacaoCodigo); + + Depreciacao depreciacao = this.depreciacaoService.geraDepreciacao(organizacao, tipoDepreciacao, user.getId()); + + if (depreciacao != null) { + retornoDepreciacao = new MyRetornoStatus(depreciacao); + } else { + if (tipoDepreciacao == null) { + MyMensagemRetorno mensagem = new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.error, "MSG.FECHAR_MES_REFERENCIA_SEM_DEPRECIACAO"); + retornoDepreciacao.mensagens.add(mensagem); + } + } + + if (retornoDepreciacao.status) { // Se a depreciação foi realizada com sucesso eu atualizo o mês de referencia + retornoFechamentoContas.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.success, "MSG.SUCESSO_DEPRECIACAO")); + organizacao.getDataReferenciaVigente().add(Calendar.MONTH, 1); + this.organizacaoService.merge(organizacao); + retornoFechamentoContas.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.success, "MSG.SUCESSO_MES_REFERENCIA")); + } else { + retornoFechamentoContas.status = retornoDepreciacao.status; + retornoFechamentoContas.mensagens.addAll(retornoDepreciacao.mensagens); + } } + + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retornoFechamentoContas, Views.EstruturaOrganizacionalEditView.class); + this.organizacaoService.terminarFechamentoDeMes(organizacao.getId()); + + return responseBody; + } catch (Exception ex) { + this.organizacaoService.terminarFechamentoDeMes(organizacao.getId()); + throw ex; } - - ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retornoFechamentoContas, Views.EstruturaOrganizacionalEditView.class); - this.organizacaoService.terminarFechamentoDeMes(organizacao.getId()); - - return responseBody; } else { MyRetornoStatus retornoFechamentoContas = new MyRetornoStatus(); retornoFechamentoContas.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.warning, "MSG.ORGANIZACAO_EM_FECHAMENTO_MES")); diff --git a/citgrp-patrimonio-web/src/main/webapp/assets/js/angular/custom/controller/EntradaController.js b/citgrp-patrimonio-web/src/main/webapp/assets/js/angular/custom/controller/EntradaController.js index ca07e67..a812d05 100644 --- a/citgrp-patrimonio-web/src/main/webapp/assets/js/angular/custom/controller/EntradaController.js +++ b/citgrp-patrimonio-web/src/main/webapp/assets/js/angular/custom/controller/EntradaController.js @@ -31,11 +31,11 @@ citApp.factory('PatrimonioService', ['BemPatrimonialRepository', '$rootScope', f citApp.controller('EntradaController', ['$scope', '$timeout', 'FileUploader', 'EntradaRepository', 'DominioRepository', 'EntradaItemRepository', 'EstruturaOrganizacionalRepository', 'FornecedorRepository', 'ParceiroRepository', 'BemPatrimonialTemporarioRepository', 'MaterialRepository', 'BemPatrimonialRepository', '$filter', '$translate', '$modal', '$rootScope', - 'ConfiguracaoParametroSistemaRepository', '$q', 'EstruturaOrganizacionalPatrimonioRepository', 'TransferenciaItemRepository', 'ContaContabilRepository', + 'ConfiguracaoParametroSistemaRepository', '$q', 'EstruturaOrganizacionalPatrimonioRepository', 'TransferenciaItemRepository', 'ContaContabilRepository', 'OrganizacaoRepository', function EntradaController($scope, $timeout, FileUploader, EntradaRepository, DominioRepository, EntradaItemRepository, EstruturaOrganizacionalRepository, FornecedorRepository, ParceiroRepository, BemPatrimonialTemporarioRepository, MaterialRepository, BemPatrimonialRepository, $filter, $translate, $modal, $rootScope, ConfiguracaoParametroSistemaRepository, $q, - EstruturaOrganizacionalPatrimonioRepository, TransferenciaItemRepository, ContaContabilRepository) { + EstruturaOrganizacionalPatrimonioRepository, TransferenciaItemRepository, ContaContabilRepository, OrganizacaoRepository) { var CODIGO_DOMINIO_TIPO_RECEBIMENTO_COMPRA_ORCAMENTARIA = 1; @@ -275,77 +275,84 @@ citApp.controller('EntradaController', ['$scope', '$timeout', 'FileUploader', 'E valorUnitario: $scope.entradaItem.valorUnitario }; - EntradaItemRepository.save(entradaItemTemp).then(function(resultEntradaItem) { - - var entradaItem = resultEntradaItem.originalElement; - if ($scope.bemPatrimonial.dataInicialGarantia){ - - entradaItem.dataInicialGarantia = $scope.bemPatrimonial.dataInicialGarantia; - } - - if ($scope.bemPatrimonial.dataFinalGarantia) { - - entradaItem.dataFinalGarantia = $scope.bemPatrimonial.dataFinalGarantia; - } - - if (idOld) { - $scope.itensDeEntrada.forEach(function(entrada) { - if (entrada.$checked) { - entrada.material = entradaItem.material; - entrada.quantidade = entradaItem.quantidade; - entrada.valor = entradaItem.valor; - } - }); - $scope.editaInfoEntrada = false; - } else { - $scope.checkEntradaItem(entradaItem); - $scope.itensDeEntrada.push(entradaItem); - } - - $scope.entradaItem.material = ''; - $scope.entradaItem.quantidade = ''; - $scope.entradaItem.valor = ''; - $scope.valorUnitario = ''; - $scope.calcularValorTotal(); - $scope.showAtributosEmMassa = false; - $scope.checkAllItem = false; - - var situacaoFisica = null; - if ($scope.bemPatrimonial.dominioSituacaoFisica) { - situacaoFisica = {codigo: $scope.bemPatrimonial.dominioSituacaoFisica.codigo}; - } - - var statusBem = null; - if ($scope.bemPatrimonial.dominioStatus) { - statusBem = {codigo: $scope.bemPatrimonial.dominioStatus.codigo}; - } - - var bemReferencia = { - entradaItem: { - id: entradaItem.id - }, - material: {id : $scope.entradaItem.material.id}, - numeroPatrimonial: numeroPatrimonialInicial, - dominioSituacaoFisica: situacaoFisica, - dominioStatus: statusBem, - dataInicialGarantia: $scope.bemPatrimonial.dataInicialGarantia, - dataFinalGarantia: $scope.bemPatrimonial.dataFinalGarantia, - vidaUtilOriginal: $scope.bemPatrimonial.vidaUtilOriginal, - percentualNaoDepreciavel: $scope.bemPatrimonial.percentualNaoDepreciavel - }; - $scope.$modalInstance.dismiss('cancel'); - - if (quantidade >= 500){ - $scope.setLoading(true, $translate.instant('PATRIMONIO.MSG.SALVANDO_MATERIAIS_ENTRADA_PATRIMONIO_GRANDE_QTD')); - } - - BemPatrimonialTemporarioRepository.geraBensTemp(bemReferencia).then(function(result) { - - formEntradaItem.$submitted = false; - $scope.setLoading(false); - }); - - + OrganizacaoRepository.get($scope.usuarioLogado.organizacao.id).then(function (result) { + $scope.organizacao = result.originalElement; + + if (!$scope.organizacao.emFechamento) { + EntradaItemRepository.save(entradaItemTemp).then(function(resultEntradaItem) { + + var entradaItem = resultEntradaItem.originalElement; + if ($scope.bemPatrimonial.dataInicialGarantia){ + + entradaItem.dataInicialGarantia = $scope.bemPatrimonial.dataInicialGarantia; + } + + if ($scope.bemPatrimonial.dataFinalGarantia) { + + entradaItem.dataFinalGarantia = $scope.bemPatrimonial.dataFinalGarantia; + } + + if (idOld) { + $scope.itensDeEntrada.forEach(function(entrada) { + if (entrada.$checked) { + entrada.material = entradaItem.material; + entrada.quantidade = entradaItem.quantidade; + entrada.valor = entradaItem.valor; + } + }); + $scope.editaInfoEntrada = false; + } else { + $scope.checkEntradaItem(entradaItem); + $scope.itensDeEntrada.push(entradaItem); + } + + $scope.entradaItem.material = ''; + $scope.entradaItem.quantidade = ''; + $scope.entradaItem.valor = ''; + $scope.valorUnitario = ''; + $scope.calcularValorTotal(); + $scope.showAtributosEmMassa = false; + $scope.checkAllItem = false; + + var situacaoFisica = null; + if ($scope.bemPatrimonial.dominioSituacaoFisica) { + situacaoFisica = {codigo: $scope.bemPatrimonial.dominioSituacaoFisica.codigo}; + } + + var statusBem = null; + if ($scope.bemPatrimonial.dominioStatus) { + statusBem = {codigo: $scope.bemPatrimonial.dominioStatus.codigo}; + } + + var bemReferencia = { + entradaItem: { + id: entradaItem.id + }, + material: {id : $scope.entradaItem.material.id}, + numeroPatrimonial: numeroPatrimonialInicial, + dominioSituacaoFisica: situacaoFisica, + dominioStatus: statusBem, + dataInicialGarantia: $scope.bemPatrimonial.dataInicialGarantia, + dataFinalGarantia: $scope.bemPatrimonial.dataFinalGarantia, + vidaUtilOriginal: $scope.bemPatrimonial.vidaUtilOriginal, + percentualNaoDepreciavel: $scope.bemPatrimonial.percentualNaoDepreciavel + }; + $scope.$modalInstance.dismiss('cancel'); + + if (quantidade >= 500){ + $scope.setLoading(true, $translate.instant('PATRIMONIO.MSG.SALVANDO_MATERIAIS_ENTRADA_PATRIMONIO_GRANDE_QTD')); + } + + BemPatrimonialTemporarioRepository.geraBensTemp(bemReferencia).then(function(result) { + + formEntradaItem.$submitted = false; + $scope.setLoading(false); + }); + }); + } else { + $scope.setLoading(false); + $scope.showAlert('warning', $translate.instant('MSG.ORGANIZACAO_EM_FECHAMENTO_MES')); + } }); }else{ $scope.setLoading(false); @@ -671,7 +678,7 @@ citApp.controller('EntradaController', ['$scope', '$timeout', 'FileUploader', 'E item.checked ? $scope.qtdeChecked++ : null; }); } - } + }; // prepara a exclusao da entrada abrindo o modal de confirmacao $scope.remove = function(workspace) { @@ -1154,25 +1161,31 @@ citApp.controller('EntradaController', ['$scope', '$timeout', 'FileUploader', 'E }); EntradaRepository.save($scope.entrada).then(function(result) { + if (result.originalElement.status != undefined && !result.originalElement.status && result.originalElement.mensagens) { + $scope.setLoading(false); + angular.forEach(result.originalElement.mensagens, function (mensagem) { + $scope.showAlert(mensagem.tipoMensagem, $translate.instant(mensagem.mensagem)); + }); + } else { + $scope.entrada = result.originalElement; + + if ($scope.entrada.fornecedor) { + $scope.entrada.fornecedor['pessoa.nome'] = $scope.entrada.fornecedor.pessoa.nome; + } - $scope.entrada = result.originalElement; - - if ($scope.entrada.fornecedor) { - $scope.entrada.fornecedor['pessoa.nome'] = $scope.entrada.fornecedor.pessoa.nome; - } - - $scope.setLoading(false); + $scope.setLoading(false); - // depois de salvar a baixa ja tendo uma referencia do id da baixa, esse metodo ira salvar os documentos se existir - salvarListaDocumentos(entradaTemp); + // depois de salvar a baixa ja tendo uma referencia do id da baixa, esse metodo ira salvar os documentos se existir + salvarListaDocumentos(entradaTemp); - EntradaItemRepository.findAllByEntrada($scope.entrada.id).then(function(result) { - $scope.itensDeEntrada = []; - for (var i = 0; i < result.length; i++) { - $scope.itensDeEntrada.push(result[i].originalElement); - } - $scope.calcularValorTotal(); - }); + EntradaItemRepository.findAllByEntrada($scope.entrada.id).then(function(result) { + $scope.itensDeEntrada = []; + for (var i = 0; i < result.length; i++) { + $scope.itensDeEntrada.push(result[i].originalElement); + } + $scope.calcularValorTotal(); + }); + } }); }); @@ -1333,46 +1346,53 @@ citApp.controller('EntradaController', ['$scope', '$timeout', 'FileUploader', 'E EntradaRepository.save($scope.entrada).then(function(result) { - $scope.entrada = result.originalElement; - - if ($scope.entrada.fornecedor) { - $scope.entrada.fornecedor['pessoa.nome'] = $scope.entrada.fornecedor.pessoa.nome; - } - - $scope.setLoading(false); - - // depois de salvar a baixa ja tendo uma referencia do id da baixa, esse metodo ira salvar os documentos se existir - salvarListaDocumentos(entradaTemp); - - EntradaItemRepository.findAllByEntrada($scope.entrada.id).then(function(result) { - $scope.itensDeEntrada = []; - for (var i = 0; i < result.length; i++) { - $scope.itensDeEntrada.push(result[i].originalElement); - } - $scope.calcularValorTotal(); - - - var dataContabilAntiga = angular.copy($scope.entrada.dataContabil); - - $scope.setLoadingSalva(true); - - if (dataContabilAntiga && !dataContabil) { - TransferenciaItemRepository.buscarTransferenciaComBensPatrimonaisDaEntrada($scope.entrada.id).then(function(result) { - if (result.length > 0) { - var transferencias = ""; - for (var i = 0; i < result.length; i++) { - transferencias += result[i] + "; "; - } - $scope.setLoading(false); - $scope.showAlert('warning', $translate.instant('PATRIMONIO.VALIDACAO.ENTRADA_DESCONTABILIZACAO_COM_TRANSFERENCIA') + transferencias); - } else { - concluir(dataContabil); - } - }); - } else { - concluir(dataContabil); - } - }); + if (result.originalElement.status != undefined && !result.originalElement.status && result.originalElement.mensagens) { + $scope.setLoading(false); + angular.forEach(result.originalElement.mensagens, function (mensagem) { + $scope.showAlert(mensagem.tipoMensagem, $translate.instant(mensagem.mensagem)); + }); + } else { + $scope.entrada = result.originalElement; + + if ($scope.entrada.fornecedor) { + $scope.entrada.fornecedor['pessoa.nome'] = $scope.entrada.fornecedor.pessoa.nome; + } + + $scope.setLoading(false); + + // depois de salvar a baixa ja tendo uma referencia do id da baixa, esse metodo ira salvar os documentos se existir + salvarListaDocumentos(entradaTemp); + + EntradaItemRepository.findAllByEntrada($scope.entrada.id).then(function(result) { + $scope.itensDeEntrada = []; + for (var i = 0; i < result.length; i++) { + $scope.itensDeEntrada.push(result[i].originalElement); + } + $scope.calcularValorTotal(); + + + var dataContabilAntiga = angular.copy($scope.entrada.dataContabil); + + $scope.setLoadingSalva(true); + + if (dataContabilAntiga && !dataContabil) { + TransferenciaItemRepository.buscarTransferenciaComBensPatrimonaisDaEntrada($scope.entrada.id).then(function(result) { + if (result.length > 0) { + var transferencias = ""; + for (var i = 0; i < result.length; i++) { + transferencias += result[i] + "; "; + } + $scope.setLoading(false); + $scope.showAlert('warning', $translate.instant('PATRIMONIO.VALIDACAO.ENTRADA_DESCONTABILIZACAO_COM_TRANSFERENCIA') + transferencias); + } else { + concluir(dataContabil); + } + }); + } else { + concluir(dataContabil); + } + }); + } }); } else { @@ -1882,8 +1902,8 @@ citApp.controller('EntradaController', ['$scope', '$timeout', 'FileUploader', 'E // Controla se o usuario pode avancar o fluxo no wizard, validando os itens obrigatórios function permiteAvancoFluxo() { - - $scope.permitidoAvancar = true; + + $scope.permitidoAvancar = true; $scope.dadosEntradaForm.$submitted = false; $scope.materiaisEntradaForm.$submitted = false; $scope.bensPatrimoniaisMaterialForm.$submitted = false; @@ -1943,7 +1963,7 @@ citApp.controller('EntradaController', ['$scope', '$timeout', 'FileUploader', 'E } - if (!$scope.permitidoAvancar && !$scope.stepValid) { + if (!$scope.permitidoAvancar && !$scope.stepValid && !$scope.organizacao.emFechamento) { //Mensagem de erro de campos obrigatorios nao preenchidos $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'), " ", false); @@ -1971,44 +1991,48 @@ citApp.controller('EntradaController', ['$scope', '$timeout', 'FileUploader', 'E $scope.setCurrentStep = function(step) { $scope.setLoadingGet(true); - - // Condicional apenas porque as datas perdem o formato na mudanca de passos - if (step === 0) { - - $scope.entrada.dataRecebimento = $filter('date')($scope.entrada.dataRecebimento, "dd/MM/yyyy"); - $scope.entrada.dataContabil = $filter('date')($scope.entrada.dataContabil, "dd/MM/yyyy"); - $scope.entrada.dataReferencia = $filter('date')($scope.entrada.dataReferencia, "dd/MM/yyyy"); - if ($scope.entrada.fornecedor) { - $scope.entrada.fornecedor['pessoa.nome'] = $scope.entrada.fornecedor.pessoa.nome; - } - - $scope.associarCaracteristicas = false; - } - - if (step <= ($scope.step - 1)) { - - $scope.step = step; - - } else { - - if (!$scope.edit) { - - $scope.permitidoAvancar = true; - - } else { - - permiteAvancoFluxo(); - - } - - if ($scope.permitidoAvancar) { - - $scope.step = step; - - } - } - - $scope.setLoading(false); + + OrganizacaoRepository.get($scope.usuarioLogado.organizacao.id).then(function (result) { + $scope.organizacao = result.originalElement; + + // Condicional apenas porque as datas perdem o formato na mudanca de passos + if (step === 0) { + + $scope.entrada.dataRecebimento = $filter('date')($scope.entrada.dataRecebimento, "dd/MM/yyyy"); + $scope.entrada.dataContabil = $filter('date')($scope.entrada.dataContabil, "dd/MM/yyyy"); + $scope.entrada.dataReferencia = $filter('date')($scope.entrada.dataReferencia, "dd/MM/yyyy"); + if ($scope.entrada.fornecedor) { + $scope.entrada.fornecedor['pessoa.nome'] = $scope.entrada.fornecedor.pessoa.nome; + } + + $scope.associarCaracteristicas = false; + } + + if (step <= ($scope.step - 1)) { + + $scope.step = step; + + } else { + + if (!$scope.edit) { + + $scope.permitidoAvancar = true; + + } else { + + permiteAvancoFluxo(); + + } + + if ($scope.permitidoAvancar) { + + $scope.step = step; + + } + } + + $scope.setLoading(false); + }); }; @@ -2049,7 +2073,10 @@ citApp.controller('EntradaController', ['$scope', '$timeout', 'FileUploader', 'E $scope.handleNext = function () { - $scope.setLoadingGet(true); + $scope.setLoadingGet(true); + + OrganizacaoRepository.get($scope.usuarioLogado.organizacao.id).then(function (result) { + $scope.organizacao = result.originalElement; if(!$scope.edit){ @@ -2068,60 +2095,72 @@ citApp.controller('EntradaController', ['$scope', '$timeout', 'FileUploader', 'E } $scope.setLoading(false); + }); }; // Funcao especifica que retorna se o formulario de dados da entrada esta valido function validStepDadosEntrada() { + $scope.stepValid = true; + if (!$scope.organizacao.emFechamento) { + + if ($scope.dadosEntradaForm.$invalid) { - $scope.stepValid = true; + $scope.stepValid = false; - if ($scope.dadosEntradaForm.$invalid) { + } else if ($scope.entrada.dataContabil) { - $scope.stepValid = false; + if (!$scope.validarDataTransferencia($scope.entrada.dataContabil)) { - } else if ($scope.entrada.dataContabil) { + $scope.permitidoAvancar = false; + $scope.showAlert('error', $translate.instant('MSG.MN019')); + } - if (!$scope.validarDataTransferencia($scope.entrada.dataContabil)) { + } else if (!validarDataRecebimento($scope.entrada.dataRecebimento)) { $scope.permitidoAvancar = false; - $scope.showAlert('error', $translate.instant('MSG.MN019')); - } - - } else if (!validarDataRecebimento($scope.entrada.dataRecebimento)) { + $scope.showAlert('error', $translate.instant('PATRIMONIO.VALIDACAO.DATA_RECEBIMENTO')); - $scope.permitidoAvancar = false; - $scope.showAlert('error', $translate.instant('PATRIMONIO.VALIDACAO.DATA_RECEBIMENTO')); - - } + } - return $scope.stepValid; + return $scope.stepValid; + } else { + $scope.showAlert('warning', $translate.instant('MSG.ORGANIZACAO_EM_FECHAMENTO_MES')); + + $scope.permitidoAvancar = false; + return $scope.stepValid; + } }; // Funcao especifica que retorna se o formulario de materiais da entrada esta valido function validStepMateriaisEntrada() { + $scope.stepValid = true; + if (!$scope.organizacao.emFechamento) { - $scope.stepValid = true; - - if($scope.materiaisEntradaForm.$invalid){ + if($scope.materiaisEntradaForm.$invalid){ - $scope.stepValid = false; + $scope.stepValid = false; - } else if ($scope.itensDeEntrada && $scope.itensDeEntrada.length === 0){ + } else if ($scope.itensDeEntrada && $scope.itensDeEntrada.length === 0){ - $scope.stepValid = false; - $scope.permitidoAvancar = false; - - } else if($scope.entrada.valorTotalNota < $scope.valorTotalLancado) { - - $scope.showAlert('error', $translate.instant('ALMOXARIFADO.VALIDACAO.NOTA_FISCAL_IGUAL_VALOR_INFORMADO')); - $scope.permitidoAvancar = false; - } + $scope.stepValid = false; + $scope.permitidoAvancar = false; - return $scope.stepValid; + } else if($scope.entrada.valorTotalNota < $scope.valorTotalLancado) { + + $scope.showAlert('error', $translate.instant('ALMOXARIFADO.VALIDACAO.NOTA_FISCAL_IGUAL_VALOR_INFORMADO')); + $scope.permitidoAvancar = false; + } + return $scope.stepValid; + } else { + $scope.showAlert('warning', $translate.instant('MSG.ORGANIZACAO_EM_FECHAMENTO_MES')); + + $scope.permitidoAvancar = false; + return $scope.stepValid; + } }; // Funcao especifica que retorna se o formulario de bens Patrimoniais esta valido @@ -2140,15 +2179,21 @@ citApp.controller('EntradaController', ['$scope', '$timeout', 'FileUploader', 'E // Funcao especifica que retorna se o formulario de documentos da entrada esta valido function validStepDocumentosEntrada() { - $scope.stepValid = true; + $scope.stepValid = true; + if (!$scope.organizacao.emFechamento) { + if ($scope.documentosEntradaForm.$invalid || !$scope.entrada.documentos.length > 0){ - if ($scope.documentosEntradaForm.$invalid || !$scope.entrada.documentos.length > 0){ - - $scope.stepValid = false; - } + $scope.stepValid = false; + } - return $scope.stepValid; + return $scope.stepValid; + } else { + $scope.showAlert('warning', $translate.instant('MSG.ORGANIZACAO_EM_FECHAMENTO_MES')); + + $scope.permitidoAvancar = false; + return $scope.stepValid; + } };; diff --git a/citgrp-patrimonio-web/src/main/webapp/html/entrada/entradaList.html b/citgrp-patrimonio-web/src/main/webapp/html/entrada/entradaList.html index dabcad2..dc38a14 100644 --- a/citgrp-patrimonio-web/src/main/webapp/html/entrada/entradaList.html +++ b/citgrp-patrimonio-web/src/main/webapp/html/entrada/entradaList.html @@ -3,7 +3,7 @@
- -- libgit2 0.21.2