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 1 package br.com.centralit.controller;
2 2  
  3 +import java.util.ArrayList;
3 4 import java.util.Calendar;
  5 +import java.util.Date;
  6 +import java.util.List;
4 7 import java.util.Map;
5 8  
6 9 import javax.servlet.http.HttpServletRequest;
... ... @@ -21,13 +24,17 @@ import br.com.centralit.api.service.ContaContabilSaldoService;
21 24 import br.com.centralit.api.service.DepreciacaoService;
22 25 import br.com.centralit.api.service.DominioService;
23 26 import br.com.centralit.api.service.EntradaService;
  27 +import br.com.centralit.api.service.InternacionalizacaoService;
24 28 import br.com.centralit.api.service.ModuloService;
25 29 import br.com.centralit.api.service.OrganizacaoService;
26 30 import br.com.centralit.framework.json.ResponseBodyWrapper;
27 31 import br.com.centralit.framework.json.Views;
28 32 import br.com.centralit.framework.model.Dominio;
  33 +import br.com.centralit.framework.model.Notificacao;
29 34 import br.com.centralit.framework.model.Organizacao;
30 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 91 /** Atributo request. */
85 92 @Autowired
86 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 119 Usuario user = (Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
110 120 Organizacao organizacao = this.organizacaoService.find(requisicaoFechamento.get("organizacao"));
111 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 185 this.organizacaoService.terminarFechamentoDeMes(organizacao.getId());
177   -
  186 +
  187 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retornoBensNaEstruturaAlmoxarifado, Views.EstruturaOrganizacionalEditView.class);
178 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 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 206 } else {
184 207 MyRetornoStatus retornoFechamentoContas = new MyRetornoStatus();
185 208 retornoFechamentoContas.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.warning, "MSG.ORGANIZACAO_EM_FECHAMENTO_MES"));
186   -
  209 +
187 210 ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retornoFechamentoContas, Views.EstruturaOrganizacionalEditView.class);
188 211  
189 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 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 5 function OrganizacaoPatrimonioRepository() {
6 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 16 //Método para realizar o fechamento do mês de um orgão passando o tipo de depreciação a ser realizada
9 17 this.fecharMes = function(organizacaoId, tipoDepreciacaoId) {
10 18 var request = {
... ...