From baef5a8e20c6d9aeef89a26724481f037694b736 Mon Sep 17 00:00:00 2001 From: geovane.filho Date: Tue, 12 Apr 2016 14:03:56 -0300 Subject: [PATCH] Redmine #4444 Refatoração para realizar o fechamento de mês em uma única transação. --- citgrp-patrimonio-api/src/main/resources/scripts-bd/postgres/v1.13.0/01-cit-patrimonio-v1.13.0-postgres.sql | 9 +++++++++ citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/OrganizacaoPatrimonioController.java | 158 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ citgrp-patrimonio-web/src/main/webapp/assets/js/angular/custom/repository/OrganizacaoPatrimonioRepository.js | 23 +++++++++++++++++++++++ 3 files changed, 190 insertions(+), 0 deletions(-) create mode 100644 citgrp-patrimonio-api/src/main/resources/scripts-bd/postgres/v1.13.0/01-cit-patrimonio-v1.13.0-postgres.sql create mode 100644 citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/OrganizacaoPatrimonioController.java create mode 100644 citgrp-patrimonio-web/src/main/webapp/assets/js/angular/custom/repository/OrganizacaoPatrimonioRepository.js diff --git a/citgrp-patrimonio-api/src/main/resources/scripts-bd/postgres/v1.13.0/01-cit-patrimonio-v1.13.0-postgres.sql b/citgrp-patrimonio-api/src/main/resources/scripts-bd/postgres/v1.13.0/01-cit-patrimonio-v1.13.0-postgres.sql new file mode 100644 index 0000000..3a7a877 --- /dev/null +++ b/citgrp-patrimonio-api/src/main/resources/scripts-bd/postgres/v1.13.0/01-cit-patrimonio-v1.13.0-postgres.sql @@ -0,0 +1,9 @@ +-- Geovane 12/04/2016 +-- Alterando fechamento do mês para patrimonio apenas +UPDATE menufile + SET caminho = '/citgrp-patrimonio-web/assets/js/angular/custom/repository/OrganizacaoPatrimonioRepository.js' + WHERE caminho = '/cit-adm-materiais-web/assets/js/angular/custom/repository/OrganizacaoAdmMateriaisRepository.js'; + +UPDATE menufile + SET caminho = '/citgrp-patrimonio-web/assets/js/angular/custom/repository/OrganizacaoPatrimonioRepository.min.js' + WHERE caminho = '/cit-adm-materiais-web/assets/js/angular/custom/repository/OrganizacaoAdmMateriaisRepository.min.js'; \ No newline at end of file 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 new file mode 100644 index 0000000..b3f3485 --- /dev/null +++ b/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/OrganizacaoPatrimonioController.java @@ -0,0 +1,158 @@ +package br.com.centralit.controller; + +import java.util.Calendar; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import br.com.centralit.api.model.Depreciacao; +import br.com.centralit.api.model.MyMensagemRetorno; +import br.com.centralit.api.model.MyRetornoStatus; +import br.com.centralit.api.service.BemPatrimonialService; +import br.com.centralit.api.service.ContaContabilSaldoService; +import br.com.centralit.api.service.DepreciacaoService; +import br.com.centralit.api.service.DominioService; +import br.com.centralit.api.service.ModuloService; +import br.com.centralit.api.service.OrganizacaoService; +import br.com.centralit.framework.json.ResponseBodyWrapper; +import br.com.centralit.framework.json.Views; +import br.com.centralit.framework.model.Dominio; +import br.com.centralit.framework.model.Organizacao; +import br.com.centralit.framework.model.Usuario; + +/** + * + *

+ * + *

Company: Central IT - Governança Corporativa -

+ * + *

Title:

+ * + *

Description:

+ * + *

Iniciativa(s): NUMERO_INICIATIVA

+ * + *

Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO

+ * + * @since 12/04/2016 - 09:23:49 + * + * @version 1.0.0 + * + * @author geovane.filho + * + */ +@Controller +@RequestMapping("/rest/organizacaoPatrimonio") +public class OrganizacaoPatrimonioController { + + /** Atributo organizacaoService. */ + @Autowired + private OrganizacaoService organizacaoService; + + /** Atributo contaContabilSaldoService. */ + @Autowired + private ContaContabilSaldoService contaContabilSaldoService; + + /** Atributo bemPatrimonialService. */ + @Autowired + private BemPatrimonialService bemPatrimonialService; + + /** Atributo depreciacaoService. */ + @Autowired + private DepreciacaoService depreciacaoService; + + /** Atributo dominioService. */ + @Autowired + private DominioService dominioService; + + /** Atributo moduloService. */ + @Autowired + private ModuloService moduloService; + + /** Atributo request. */ + @Autowired + private HttpServletRequest request; + + /** + * + *

+ * Iniciativa(s): NUMERO_INICIATIVA + *

+ * + *

+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *

+ * + * Método responsável por realizar o fechamento do mes de referencia da Organizacao O fechamento do mês de referência contempla também a depreciação dos bens patrimoniais, o fechamento dos saldos das contas contabeis e a atualização do novo mês de referencia. + * + * @author geovane.filho + * + * @param request + * Pedido de fechamento do mes contendo a organização e o tipo de depreciação a ser realizado + * @return ResponseBodyWrapper contendo a atualização da organização após o fechamento + */ + @RequestMapping(value = "/fecharMes", method = RequestMethod.POST) + @ResponseBody + public ResponseBodyWrapper fecharMes(@RequestBody Map requisicaoFechamento) { + Usuario user = (Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); + Organizacao organizacao = this.organizacaoService.find(requisicaoFechamento.get("organizacao")); + Long tipoDepreciacaoCodigo = requisicaoFechamento.get("tipoDepreciacao"); + + MyRetornoStatus retornoFechamentoBens = new MyRetornoStatus(); + + 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(!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); + + 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); + + return responseBody; + } + +} \ No newline at end of file diff --git a/citgrp-patrimonio-web/src/main/webapp/assets/js/angular/custom/repository/OrganizacaoPatrimonioRepository.js b/citgrp-patrimonio-web/src/main/webapp/assets/js/angular/custom/repository/OrganizacaoPatrimonioRepository.js new file mode 100644 index 0000000..89a010b --- /dev/null +++ b/citgrp-patrimonio-web/src/main/webapp/assets/js/angular/custom/repository/OrganizacaoPatrimonioRepository.js @@ -0,0 +1,23 @@ +'use strict'; + +citApp.factory('OrganizacaoPatrimonioRepository', ['RestangularPatrimonio', 'AbstractRepository', function (restangularPatrimonio, AbstractRepository) { + + function OrganizacaoPatrimonioRepository() { + AbstractRepository.call(this, restangularPatrimonio, 'rest/organizacaoPatrimonio'); + + //Método para realizar o fechamento do mês de um orgão passando o tipo de depreciação a ser realizada + this.fecharMes = function(organizacaoId, tipoDepreciacaoId) { + var request = { + organizacao : organizacaoId, + tipoDepreciacao : tipoDepreciacaoId + }; + + return restangularPatrimonio.all(this.route + '/fecharMes').post(request); + }; + + } + + AbstractRepository.extend(OrganizacaoPatrimonioRepository); + + return new OrganizacaoPatrimonioRepository(); +}]); -- libgit2 0.21.2