Commit e97a64629ec3279fce8867f75fdf7026e3cb17fb

Authored by erick.sato
2 parents 2165330a aec6076a
Exists in master

Merge branch 'tarefa-4574' into adm-1.13.0

citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/OrganizacaoPatrimonioController.java
1 package br.com.centralit.controller; 1 package br.com.centralit.controller;
2 2
  3 +import java.util.ArrayList;
3 import java.util.Calendar; 4 import java.util.Calendar;
  5 +import java.util.Date;
  6 +import java.util.List;
4 import java.util.Map; 7 import java.util.Map;
5 8
6 import javax.servlet.http.HttpServletRequest; 9 import javax.servlet.http.HttpServletRequest;
@@ -21,13 +24,17 @@ import br.com.centralit.api.service.ContaContabilSaldoService; @@ -21,13 +24,17 @@ import br.com.centralit.api.service.ContaContabilSaldoService;
21 import br.com.centralit.api.service.DepreciacaoService; 24 import br.com.centralit.api.service.DepreciacaoService;
22 import br.com.centralit.api.service.DominioService; 25 import br.com.centralit.api.service.DominioService;
23 import br.com.centralit.api.service.EntradaService; 26 import br.com.centralit.api.service.EntradaService;
  27 +import br.com.centralit.api.service.InternacionalizacaoService;
24 import br.com.centralit.api.service.ModuloService; 28 import br.com.centralit.api.service.ModuloService;
25 import br.com.centralit.api.service.OrganizacaoService; 29 import br.com.centralit.api.service.OrganizacaoService;
26 import br.com.centralit.framework.json.ResponseBodyWrapper; 30 import br.com.centralit.framework.json.ResponseBodyWrapper;
27 import br.com.centralit.framework.json.Views; 31 import br.com.centralit.framework.json.Views;
28 import br.com.centralit.framework.model.Dominio; 32 import br.com.centralit.framework.model.Dominio;
  33 +import br.com.centralit.framework.model.Notificacao;
29 import br.com.centralit.framework.model.Organizacao; 34 import br.com.centralit.framework.model.Organizacao;
30 import br.com.centralit.framework.model.Usuario; 35 import br.com.centralit.framework.model.Usuario;
  36 +import br.com.centralit.framework.util.UtilColecao;
  37 +import br.com.centralit.framework.util.UtilDate;
31 38
32 /** 39 /**
33 * 40 *
@@ -84,6 +91,9 @@ public class OrganizacaoPatrimonioController { @@ -84,6 +91,9 @@ public class OrganizacaoPatrimonioController {
84 /** Atributo request. */ 91 /** Atributo request. */
85 @Autowired 92 @Autowired
86 private HttpServletRequest request; 93 private HttpServletRequest request;
  94 +
  95 + @Autowired
  96 + private InternacionalizacaoService internacionalizacaoService;
87 97
88 /** 98 /**
89 * 99 *
@@ -109,85 +119,122 @@ public class OrganizacaoPatrimonioController { @@ -109,85 +119,122 @@ public class OrganizacaoPatrimonioController {
109 Usuario user = (Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); 119 Usuario user = (Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
110 Organizacao organizacao = this.organizacaoService.find(requisicaoFechamento.get("organizacao")); 120 Organizacao organizacao = this.organizacaoService.find(requisicaoFechamento.get("organizacao"));
111 Long tipoDepreciacaoCodigo = requisicaoFechamento.get("tipoDepreciacao"); 121 Long tipoDepreciacaoCodigo = requisicaoFechamento.get("tipoDepreciacao");
112 -  
113 - if (!organizacao.getEmFechamento()) {  
114 - try {  
115 - this.organizacaoService.iniciarFechamentoDeMes(organizacao.getId());  
116 -  
117 - MyRetornoStatus retornoFechamentoBens = new MyRetornoStatus();  
118 -  
119 - MyRetornoStatus retornoBensNaEstruturaAlmoxarifado = new MyRetornoStatus();  
120 -  
121 - retornoBensNaEstruturaAlmoxarifado.status = this.bemPatrimonialService.validarBensNaEstruturaAlmoxarifado(organizacao.getId());  
122 - retornoBensNaEstruturaAlmoxarifado.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.error, "MSG.BENS_NA_ESTRUTURA_ALMOXARIFADO"));  
123 -  
124 - if(!retornoBensNaEstruturaAlmoxarifado.status) {  
125 - this.organizacaoService.terminarFechamentoDeMes(organizacao.getId());  
126 -  
127 - ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retornoBensNaEstruturaAlmoxarifado, Views.EstruturaOrganizacionalEditView.class);  
128 - return responseBody;  
129 - }  
130 -  
131 - MyRetornoStatus retornoEntradasCompletas = new MyRetornoStatus();  
132 -  
133 - retornoEntradasCompletas.status = !this.entradaService.existemEntradasIncompletas(organizacao.getId());  
134 - retornoEntradasCompletas.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.error, "ADMINISTRACAODEMATERIAIS.MSG.FECHAMENTO_ENTRADAS_INCOMPLETAS"));  
135 -  
136 - if(!retornoEntradasCompletas.status) {  
137 - this.organizacaoService.terminarFechamentoDeMes(organizacao.getId());  
138 -  
139 - ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retornoEntradasCompletas, Views.EstruturaOrganizacionalEditView.class);  
140 - return responseBody;  
141 - }  
142 -  
143 - retornoFechamentoBens.status = this.bemPatrimonialService.fecharValoresBens(organizacao.getId(), user.getId());  
144 -  
145 - MyRetornoStatus retornoFechamentoContas = new MyRetornoStatus();  
146 - retornoFechamentoContas.status = this.contaContabilSaldoService.fechaSaldoContasContabeisTipoPermanente(organizacao);  
147 -  
148 - if (retornoFechamentoBens.status && retornoFechamentoContas.status) {  
149 - MyRetornoStatus retornoDepreciacao = new MyRetornoStatus();  
150 -  
151 - Dominio tipoDepreciacao = this.dominioService.findByChaveAndCodigo(Dominio.TIPO_DEPRECIACAO, tipoDepreciacaoCodigo);  
152 -  
153 - Depreciacao depreciacao = this.depreciacaoService.geraDepreciacao(organizacao, tipoDepreciacao, user.getId());  
154 -  
155 - if (depreciacao != null) {  
156 - retornoDepreciacao = new MyRetornoStatus(depreciacao);  
157 - } else {  
158 - if (tipoDepreciacao == null) {  
159 - MyMensagemRetorno mensagem = new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.error, "MSG.FECHAR_MES_REFERENCIA_SEM_DEPRECIACAO");  
160 - retornoDepreciacao.mensagens.add(mensagem);  
161 - }  
162 - }  
163 -  
164 - if (retornoDepreciacao.status) { // Se a depreciação foi realizada com sucesso eu atualizo o mês de referencia  
165 - retornoFechamentoContas.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.success, "MSG.SUCESSO_DEPRECIACAO"));  
166 - organizacao.getDataReferenciaVigente().add(Calendar.MONTH, 1);  
167 - this.organizacaoService.merge(organizacao);  
168 - retornoFechamentoContas.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.success, "MSG.SUCESSO_MES_REFERENCIA"));  
169 - } else {  
170 - retornoFechamentoContas.status = retornoDepreciacao.status;  
171 - retornoFechamentoContas.mensagens.addAll(retornoDepreciacao.mensagens); 122 +
  123 + try {
  124 + MyRetornoStatus retornoFechamentoBens = new MyRetornoStatus();
  125 +
  126 + retornoFechamentoBens.status = this.bemPatrimonialService.fecharValoresBens(organizacao.getId(), user.getId());
  127 +
  128 + MyRetornoStatus retornoFechamentoContas = new MyRetornoStatus();
  129 + retornoFechamentoContas.status = this.contaContabilSaldoService.fechaSaldoContasContabeisTipoPermanente(organizacao);
  130 +
  131 + if (retornoFechamentoBens.status && retornoFechamentoContas.status) {
  132 + MyRetornoStatus retornoDepreciacao = new MyRetornoStatus();
  133 +
  134 + Dominio tipoDepreciacao = this.dominioService.findByChaveAndCodigo(Dominio.TIPO_DEPRECIACAO, tipoDepreciacaoCodigo);
  135 +
  136 + Depreciacao depreciacao = this.depreciacaoService.geraDepreciacao(organizacao, tipoDepreciacao, user.getId());
  137 +
  138 + if (depreciacao != null) {
  139 + retornoDepreciacao = new MyRetornoStatus(depreciacao);
  140 + } else {
  141 + if (tipoDepreciacao == null) {
  142 + MyMensagemRetorno mensagem = new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.error, "MSG.FECHAR_MES_REFERENCIA_SEM_DEPRECIACAO");
  143 + retornoDepreciacao.mensagens.add(mensagem);
172 } 144 }
173 } 145 }
174 -  
175 - ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retornoFechamentoContas, Views.EstruturaOrganizacionalEditView.class); 146 +
  147 + if (retornoDepreciacao.status) { // Se a depreciação foi realizada com sucesso eu atualizo o mês de referencia
  148 + retornoFechamentoContas.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.success, "MSG.SUCESSO_DEPRECIACAO"));
  149 + organizacao.getDataReferenciaVigente().add(Calendar.MONTH, 1);
  150 + this.organizacaoService.merge(organizacao);
  151 + retornoFechamentoContas.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.success, "MSG.SUCESSO_MES_REFERENCIA"));
  152 + } else {
  153 + retornoFechamentoContas.status = retornoDepreciacao.status;
  154 + retornoFechamentoContas.mensagens.addAll(retornoDepreciacao.mensagens);
  155 + }
  156 + }
  157 +
  158 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retornoFechamentoContas, Views.EstruturaOrganizacionalEditView.class);
  159 + this.organizacaoService.terminarFechamentoDeMes(organizacao.getId());
  160 +
  161 + this.notificaUsuarioSobreFechamento(retornoFechamentoContas.mensagens, organizacao.getDataReferenciaVigente().getTime(), user);
  162 +
  163 + return responseBody;
  164 + } catch (Exception ex) {
  165 + this.organizacaoService.terminarFechamentoDeMes(organizacao.getId());
  166 + throw ex;
  167 + }
  168 + }
  169 +
  170 + @RequestMapping(value = "/bloquearValidarFechamentoMes", method = RequestMethod.POST)
  171 + @ResponseBody
  172 + public ResponseBodyWrapper bloquearValidarFechamentoMes(@RequestBody Map<String, Long> requisicaoFechamento) {
  173 +
  174 + Organizacao organizacao = this.organizacaoService.find(requisicaoFechamento.get("organizacao"));
  175 +
  176 + if (!organizacao.getEmFechamento()) {
  177 + this.organizacaoService.iniciarFechamentoDeMes(organizacao.getId());
  178 +
  179 + MyRetornoStatus retornoBensNaEstruturaAlmoxarifado = new MyRetornoStatus();
  180 +
  181 + retornoBensNaEstruturaAlmoxarifado.status = this.bemPatrimonialService.validarBensNaEstruturaAlmoxarifado(organizacao.getId());
  182 + retornoBensNaEstruturaAlmoxarifado.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.error, "MSG.BENS_NA_ESTRUTURA_ALMOXARIFADO"));
  183 +
  184 + if(!retornoBensNaEstruturaAlmoxarifado.status) {
176 this.organizacaoService.terminarFechamentoDeMes(organizacao.getId()); 185 this.organizacaoService.terminarFechamentoDeMes(organizacao.getId());
177 - 186 +
  187 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retornoBensNaEstruturaAlmoxarifado, Views.EstruturaOrganizacionalEditView.class);
178 return responseBody; 188 return responseBody;
179 - } catch (Exception ex) { 189 + }
  190 +
  191 + MyRetornoStatus retornoEntradasCompletas = new MyRetornoStatus();
  192 +
  193 + retornoEntradasCompletas.status = !this.entradaService.existemEntradasIncompletas(organizacao.getId());
  194 + retornoEntradasCompletas.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.error, "ADMINISTRACAODEMATERIAIS.MSG.FECHAMENTO_ENTRADAS_INCOMPLETAS"));
  195 +
  196 + if(!retornoEntradasCompletas.status) {
180 this.organizacaoService.terminarFechamentoDeMes(organizacao.getId()); 197 this.organizacaoService.terminarFechamentoDeMes(organizacao.getId());
181 - throw ex; 198 +
  199 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retornoEntradasCompletas, Views.EstruturaOrganizacionalEditView.class);
  200 + return responseBody;
182 } 201 }
  202 +
  203 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(Boolean.TRUE, Views.EstruturaOrganizacionalEditView.class);
  204 + return responseBody;
  205 +
183 } else { 206 } else {
184 MyRetornoStatus retornoFechamentoContas = new MyRetornoStatus(); 207 MyRetornoStatus retornoFechamentoContas = new MyRetornoStatus();
185 retornoFechamentoContas.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.warning, "MSG.ORGANIZACAO_EM_FECHAMENTO_MES")); 208 retornoFechamentoContas.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.warning, "MSG.ORGANIZACAO_EM_FECHAMENTO_MES"));
186 - 209 +
187 ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retornoFechamentoContas, Views.EstruturaOrganizacionalEditView.class); 210 ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retornoFechamentoContas, Views.EstruturaOrganizacionalEditView.class);
188 211
189 return responseBody; 212 return responseBody;
190 } 213 }
191 } 214 }
192 215
  216 + @SuppressWarnings("deprecation")
  217 + private void notificaUsuarioSobreFechamento(List<MyMensagemRetorno> mensagens, Date dateFechado, Usuario user) {
  218 +
  219 + dateFechado.setMonth(dateFechado.getMonth() - 1);
  220 + Dominio idioma = this.dominioService.findByChaveAndCodigo("tipoIdioma", Dominio.TIPO_IDIOMA_PT_BR_CODIGO);
  221 + String assunto = this.internacionalizacaoService.getTranslate("ADMINISTRACAODEMATERIAIS.LABEL.FECHAMENTO_MES_REFERENCIA", idioma) +" " + UtilDate.formatarDataParaMesAno(dateFechado);
  222 + Dominio tipoNotificacao = this.dominioService.findByChaveAndCodigo(Dominio.TIPO_NOTIFICACAO, Dominio.TIPO_NOTIFICACAO_PATRIMONIO);
  223 + Dominio tipoPrioridade = this.dominioService.findByChaveAndCodigo(Dominio.TIPO_PRIORIDADE, Dominio.TIPO_PRIORIDADE_MEDIA);
  224 + List<Notificacao> listaNotificacoesFechamento = new ArrayList<Notificacao>();
  225 +
  226 + StringBuilder mensagem = new StringBuilder();
  227 + mensagem.append("<ul>");
  228 + if(!UtilColecao.isVazio(mensagens)){
  229 + for (MyMensagemRetorno myMensagemRetorno : mensagens) {
  230 + mensagem.append("<li>");
  231 + mensagem.append(this.internacionalizacaoService.getTranslate(myMensagemRetorno.mensagem, idioma));
  232 + mensagem.append("</li>");
  233 + }
  234 + mensagem.append("</ul>");
  235 + listaNotificacoesFechamento.add(new Notificacao(assunto, mensagem.toString(), tipoNotificacao, tipoPrioridade, user));
  236 + this.organizacaoService.notificarUsuarioFechamentoMes(listaNotificacoesFechamento);
  237 + }
  238 + }
  239 +
193 } 240 }
194 \ No newline at end of file 241 \ No newline at end of file
citgrp-patrimonio-web/src/main/webapp/assets/js/angular/custom/repository/OrganizacaoPatrimonioRepository.js
@@ -5,6 +5,14 @@ citApp.factory(&#39;OrganizacaoPatrimonioRepository&#39;, [&#39;RestangularPatrimonio&#39;, &#39;Abs @@ -5,6 +5,14 @@ citApp.factory(&#39;OrganizacaoPatrimonioRepository&#39;, [&#39;RestangularPatrimonio&#39;, &#39;Abs
5 function OrganizacaoPatrimonioRepository() { 5 function OrganizacaoPatrimonioRepository() {
6 AbstractRepository.call(this, restangularPatrimonio, 'rest/organizacaoPatrimonio'); 6 AbstractRepository.call(this, restangularPatrimonio, 'rest/organizacaoPatrimonio');
7 7
  8 + this.bloquearValidarFechamentoMes = function(organizacaoId) {
  9 + var request = {
  10 + organizacao : organizacaoId
  11 + };
  12 +
  13 + return restangularPatrimonio.all(this.route + '/bloquearValidarFechamentoMes').post(request);
  14 + };
  15 +
8 //Método para realizar o fechamento do mês de um orgão passando o tipo de depreciação a ser realizada 16 //Método para realizar o fechamento do mês de um orgão passando o tipo de depreciação a ser realizada
9 this.fecharMes = function(organizacaoId, tipoDepreciacaoId) { 17 this.fecharMes = function(organizacaoId, tipoDepreciacaoId) {
10 var request = { 18 var request = {