Commit 3b5996259a658553bd4e75c375854e92a1ba4b85

Authored by geovane.filho
2 parents 63d6a8cc 45ffd366
Exists in master

Merge branch 'master' into adm-1.13.0

Showing 20 changed files with 989 additions and 495 deletions   Show diff stats
citgrp-patrimonio-api/src/main/resources/scripts-bd/postgres/v1.13.0/01-cit-patrimonio-v1.13.0-postgres.sql
... ... @@ -8,6 +8,10 @@ UPDATE menufile
8 8 SET caminho = '/citgrp-patrimonio-web/assets/js/angular/custom/repository/OrganizacaoPatrimonioRepository.min.js'
9 9 WHERE caminho = '/cit-adm-materiais-web/assets/js/angular/custom/repository/OrganizacaoAdmMateriaisRepository.min.js';
10 10  
  11 +-- Geovane 13/04/2016
  12 +-- Adicionando atributo para verificação de quando a organização estiver em fechamento de mês
  13 +ALTER TABLE organizacao ADD COLUMN emFechamento boolean NOT NULL default(false);
  14 +
11 15 -- Thiago 14/04/2016
12 16 -- Adicionada a coluna 'iscontabilizada' a tabela 'entrada' e 'entrada_aud'
13 17 alter table
... ...
citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/BaixaController.java
... ... @@ -4,6 +4,7 @@ import org.apache.commons.lang3.SerializationUtils;
4 4 import org.hibernate.exception.ConstraintViolationException;
5 5 import org.springframework.beans.factory.annotation.Autowired;
6 6 import org.springframework.stereotype.Controller;
  7 +import org.springframework.web.bind.annotation.PathVariable;
7 8 import org.springframework.web.bind.annotation.RequestBody;
8 9 import org.springframework.web.bind.annotation.RequestMapping;
9 10 import org.springframework.web.bind.annotation.RequestMethod;
... ... @@ -11,10 +12,14 @@ import org.springframework.web.bind.annotation.RequestParam;
11 12 import org.springframework.web.bind.annotation.ResponseBody;
12 13  
13 14 import br.com.centralit.api.model.BaixaPatrimonio;
  15 +import br.com.centralit.api.model.MyMensagemRetorno;
  16 +import br.com.centralit.api.model.MyRetornoStatus;
14 17 import br.com.centralit.api.service.BaixaService;
  18 +import br.com.centralit.api.service.OrganizacaoService;
15 19 import br.com.centralit.framework.controller.GenericController;
16 20 import br.com.centralit.framework.json.ResponseBodyWrapper;
17 21 import br.com.centralit.framework.json.Views;
  22 +import br.com.centralit.framework.model.Organizacao;
18 23 import br.com.centralit.framework.util.UtilDate;
19 24  
20 25 /**
... ... @@ -46,6 +51,9 @@ import br.com.centralit.framework.util.UtilDate;
46 51 public class BaixaController extends GenericController<BaixaPatrimonio> {
47 52  
48 53 private BaixaService baixaService;
  54 +
  55 + @Autowired
  56 + private OrganizacaoService organizacaoService;
49 57  
50 58 public BaixaController() {
51 59 super();
... ... @@ -83,32 +91,87 @@ public class BaixaController extends GenericController&lt;BaixaPatrimonio&gt; {
83 91 @RequestMapping(method = RequestMethod.POST, value = "")
84 92 @ResponseBody
85 93 public ResponseBodyWrapper save(@RequestBody BaixaPatrimonio entity) throws Exception{
86   - boolean uniqueConstraintViolate = true;
87   -
88   - BaixaPatrimonio baixa = new BaixaPatrimonio();
89   -
90   - //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
91   - for(int i = 5; i > 0 && uniqueConstraintViolate; i--){
92   - try{
93   - baixa = this.baixaService.save(SerializationUtils.clone(entity));
94   - uniqueConstraintViolate = false;
95   - }catch(Throwable e){
96   - if(e.getCause() instanceof ConstraintViolationException){
97   - ConstraintViolationException ex = (ConstraintViolationException) e.getCause();
98   - if(ex.getSQLException().getMessage().contains("codigo_unico")){
99   - uniqueConstraintViolate = true;
  94 + Organizacao organizacao = this.organizacaoService.find(this.getUsuario().getOrganizacao().getId());
  95 +
  96 + if (!organizacao.getEmFechamento()) {
  97 +
  98 + boolean uniqueConstraintViolate = true;
  99 +
  100 + BaixaPatrimonio baixa = new BaixaPatrimonio();
  101 +
  102 + //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
  103 + for(int i = 5; i > 0 && uniqueConstraintViolate; i--){
  104 + try{
  105 + baixa = this.baixaService.save(SerializationUtils.clone(entity));
  106 + uniqueConstraintViolate = false;
  107 + }catch(Throwable e){
  108 + if(e.getCause() instanceof ConstraintViolationException){
  109 + ConstraintViolationException ex = (ConstraintViolationException) e.getCause();
  110 + if(ex.getSQLException().getMessage().contains("codigo_unico")){
  111 + uniqueConstraintViolate = true;
  112 + }else{
  113 + throw e;
  114 + }
100 115 }else{
101 116 throw e;
102 117 }
103   - }else{
104   - throw e;
105 118 }
106 119 }
  120 +
  121 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(baixa, getEditView());
  122 +
  123 + return responseBody;
  124 +
  125 + } else {
  126 + MyRetornoStatus retorno = new MyRetornoStatus();
  127 + retorno.data = entity;
  128 + retorno.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.warning, "MSG.ORGANIZACAO_EM_FECHAMENTO_MES"));
  129 +
  130 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retorno, getEditView());
  131 +
  132 + return responseBody;
107 133 }
  134 + }
  135 +
  136 + @RequestMapping(method = RequestMethod.POST, value = "/update")
  137 + @ResponseBody
  138 + public ResponseBodyWrapper update(@RequestBody BaixaPatrimonio objeto) {
  139 + Organizacao organizacao = this.organizacaoService.find(this.getUsuario().getOrganizacao().getId());
  140 +
  141 + if (!organizacao.getEmFechamento()) {
  142 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(this.baixaService.merge(objeto), getEditView());
  143 +
  144 + return responseBody;
  145 + } else {
  146 + MyRetornoStatus retorno = new MyRetornoStatus();
  147 + retorno.data = objeto;
  148 + retorno.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.warning, "MSG.ORGANIZACAO_EM_FECHAMENTO_MES"));
  149 +
  150 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retorno, getEditView());
  151 +
  152 + return responseBody;
  153 + }
  154 + }
  155 +
  156 + @RequestMapping(method = RequestMethod.DELETE, value = "/{id}")
  157 + @ResponseBody
  158 + public ResponseBodyWrapper delete(@PathVariable("id") Long id) {
108 159  
109   - ResponseBodyWrapper responseBody = new ResponseBodyWrapper(baixa, getEditView());
110   -
111   - return responseBody;
  160 + Organizacao organizacao = this.organizacaoService.find(this.getUsuario().getOrganizacao().getId());
  161 +
  162 + if (!organizacao.getEmFechamento()) {
  163 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(baixaService.removeById(id), getEditView());
  164 +
  165 + return responseBody;
  166 + } else {
  167 + MyRetornoStatus retorno = new MyRetornoStatus();
  168 + retorno.data = id;
  169 + retorno.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.warning, "MSG.ORGANIZACAO_EM_FECHAMENTO_MES"));
  170 +
  171 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retorno, getEditView());
  172 +
  173 + return responseBody;
  174 + }
112 175 }
113 176  
114 177 @RequestMapping(value = "/findIdsBemPatrimonialPorData", method = RequestMethod.GET, produces = "application/json")
... ...
citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/BaixaItemController.java
... ... @@ -8,11 +8,15 @@ import org.springframework.web.bind.annotation.RequestMethod;
8 8 import org.springframework.web.bind.annotation.ResponseBody;
9 9  
10 10 import br.com.centralit.api.model.BaixaPatrimonioItem;
  11 +import br.com.centralit.api.model.MyMensagemRetorno;
  12 +import br.com.centralit.api.model.MyRetornoStatus;
11 13 import br.com.centralit.api.service.BaixaItemService;
  14 +import br.com.centralit.api.service.OrganizacaoService;
12 15 import br.com.centralit.api.viewHelper.EstornoBaixaItemVH;
13 16 import br.com.centralit.framework.controller.GenericController;
14 17 import br.com.centralit.framework.json.ResponseBodyWrapper;
15 18 import br.com.centralit.framework.json.Views;
  19 +import br.com.centralit.framework.model.Organizacao;
16 20  
17 21 /**
18 22 * <p>
... ... @@ -43,6 +47,9 @@ import br.com.centralit.framework.json.Views;
43 47 public class BaixaItemController extends GenericController<BaixaPatrimonioItem> {
44 48  
45 49 private BaixaItemService baixaItemService;
  50 +
  51 + @Autowired
  52 + private OrganizacaoService organizacaoService;
46 53  
47 54 public BaixaItemController() {
48 55 super();
... ... @@ -74,10 +81,22 @@ public class BaixaItemController extends GenericController&lt;BaixaPatrimonioItem&gt;
74 81 @RequestMapping(method = RequestMethod.POST, value = "/estornarListaBaixaItem")
75 82 @ResponseBody
76 83 public ResponseBodyWrapper estornarListaBaixaItem(@RequestBody EstornoBaixaItemVH estornoBaixaItemVH) throws Exception {
  84 +
  85 + Organizacao organizacao = this.organizacaoService.find(this.getUsuario().getOrganizacao().getId());
  86 +
  87 + if (!organizacao.getEmFechamento()) {
  88 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(this.baixaItemService.estornarItensBaixa(estornoBaixaItemVH), getEditView());
  89 +
  90 + return responseBody;
  91 + } else {
  92 + MyRetornoStatus retorno = new MyRetornoStatus();
  93 + retorno.data = estornoBaixaItemVH;
  94 + retorno.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.warning, "MSG.ORGANIZACAO_EM_FECHAMENTO_MES"));
77 95  
78   - ResponseBodyWrapper responseBody = new ResponseBodyWrapper(this.baixaItemService.estornarItensBaixa(estornoBaixaItemVH), getEditView());
  96 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retorno, getEditView());
79 97  
80   - return responseBody;
  98 + return responseBody;
  99 + }
81 100 }
82 101  
83 102 /**
... ...
citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/BemPatrimonialController.java
... ... @@ -20,10 +20,12 @@ import org.springframework.web.bind.annotation.ResponseBody;
20 20 import br.com.centralit.api.model.BemPatrimonial;
21 21 import br.com.centralit.api.model.EntradaPatrimonioItem;
22 22 import br.com.centralit.api.model.InventarioBemPatrimonial;
  23 +import br.com.centralit.api.model.MyMensagemRetorno;
23 24 import br.com.centralit.api.model.MyRetornoStatus;
24 25 import br.com.centralit.api.service.AdicaoBemPrincipalService;
25 26 import br.com.centralit.api.service.BemPatrimonialService;
26 27 import br.com.centralit.api.service.EntradaItemService;
  28 +import br.com.centralit.api.service.OrganizacaoService;
27 29 import br.com.centralit.api.service.UsuarioService;
28 30 import br.com.centralit.api.viewHelper.AlteracaoBemVH;
29 31 import br.com.centralit.api.viewHelper.BemPatrimonialVH;
... ... @@ -31,6 +33,7 @@ import br.com.centralit.api.viewHelper.TratamentoInconsistenciaVH;
31 33 import br.com.centralit.framework.controller.GenericController;
32 34 import br.com.centralit.framework.json.ResponseBodyWrapper;
33 35 import br.com.centralit.framework.json.Views;
  36 +import br.com.centralit.framework.model.Organizacao;
34 37 import br.com.centralit.framework.util.UtilDate;
35 38 import br.com.centralit.framework.util.UtilObjeto;
36 39  
... ... @@ -48,6 +51,9 @@ public class BemPatrimonialController extends GenericController&lt;BemPatrimonial&gt;
48 51  
49 52 @Autowired
50 53 private UsuarioService usuarioService;
  54 +
  55 + @Autowired
  56 + private OrganizacaoService organizacaoService;
51 57  
52 58 public BemPatrimonialController() {
53 59  
... ... @@ -173,10 +179,24 @@ public class BemPatrimonialController extends GenericController&lt;BemPatrimonial&gt;
173 179 @RequestMapping(method = RequestMethod.POST, produces = "application/json", value = "alterarBem")
174 180 @ResponseBody
175 181 public ResponseBodyWrapper alterarBem(@RequestBody AlteracaoBemVH alteracaoBemVH) throws Exception {
  182 +
  183 + Organizacao organizacao = this.organizacaoService.find(this.getUsuario().getOrganizacao().getId());
176 184  
177   - ResponseBodyWrapper responseBody = new ResponseBodyWrapper(this.bemPatrimonialService.alterarBemPatrimonial(alteracaoBemVH), getEditView());
  185 + if (!organizacao.getEmFechamento()) {
178 186  
179   - return responseBody;
  187 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(this.bemPatrimonialService.alterarBemPatrimonial(alteracaoBemVH), getEditView());
  188 +
  189 + return responseBody;
  190 +
  191 + } else {
  192 + MyRetornoStatus retorno = new MyRetornoStatus();
  193 + retorno.data = alteracaoBemVH;
  194 + retorno.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.warning, "MSG.ORGANIZACAO_EM_FECHAMENTO_MES"));
  195 +
  196 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retorno, getEditView());
  197 +
  198 + return responseBody;
  199 + }
180 200 }
181 201  
182 202 @RequestMapping(value = "/findSequencia", method = RequestMethod.GET, produces = "application/json")
... ... @@ -523,19 +543,46 @@ public class BemPatrimonialController extends GenericController&lt;BemPatrimonial&gt;
523 543 @RequestMapping(method = RequestMethod.POST, produces = "application/json", value = "/alterarListaBemInconsistenciaTipo2")
524 544 @ResponseBody
525 545 public ResponseBodyWrapper alterarListaBemInconsistenciaTipo2(@RequestBody TratamentoInconsistenciaVH tratamentoInconsistenciaVH) throws Exception {
  546 + Organizacao organizacao = this.organizacaoService.find(this.getUsuario().getOrganizacao().getId());
526 547  
527   - ResponseBodyWrapper responseBody = new ResponseBodyWrapper(this.bemPatrimonialService.alterarListaBemInconsistenciaTipo2(tratamentoInconsistenciaVH), getEditView());
  548 + if (!organizacao.getEmFechamento()) {
528 549  
529   - return responseBody;
  550 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(this.bemPatrimonialService.alterarListaBemInconsistenciaTipo2(tratamentoInconsistenciaVH), getEditView());
  551 +
  552 + return responseBody;
  553 +
  554 + } else {
  555 + MyRetornoStatus retorno = new MyRetornoStatus();
  556 + retorno.data = tratamentoInconsistenciaVH;
  557 + retorno.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.warning, "MSG.ORGANIZACAO_EM_FECHAMENTO_MES"));
  558 +
  559 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retorno, getEditView());
  560 +
  561 + return responseBody;
  562 + }
530 563 }
531 564  
532 565 @RequestMapping(method = RequestMethod.POST, produces = "application/json", value = "/alterarListaBemInconsistenciaTipo1")
533 566 @ResponseBody
534 567 public ResponseBodyWrapper alterarListaBemInconsistenciaTipo1(@RequestBody TratamentoInconsistenciaVH tratamentoInconsistenciaVH) throws Exception {
  568 +
  569 + Organizacao organizacao = this.organizacaoService.find(this.getUsuario().getOrganizacao().getId());
535 570  
536   - ResponseBodyWrapper responseBody = new ResponseBodyWrapper(this.bemPatrimonialService.alterarListaBemInconsistenciaTipo1(tratamentoInconsistenciaVH), getEditView());
  571 + if (!organizacao.getEmFechamento() && UtilObjeto.isReferencia(tratamentoInconsistenciaVH.getBaixa())) {
537 572  
538   - return responseBody;
  573 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(this.bemPatrimonialService.alterarListaBemInconsistenciaTipo1(tratamentoInconsistenciaVH), getEditView());
  574 +
  575 + return responseBody;
  576 +
  577 + } else {
  578 + MyRetornoStatus retorno = new MyRetornoStatus();
  579 + retorno.data = tratamentoInconsistenciaVH;
  580 + retorno.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.warning, "MSG.ORGANIZACAO_EM_FECHAMENTO_MES"));
  581 +
  582 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retorno, getEditView());
  583 +
  584 + return responseBody;
  585 + }
539 586 }
540 587  
541 588 @RequestMapping(method = RequestMethod.POST, produces = "application/json", value = "/alterarListaBemInconsistenciaTipo10")
... ...
citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/EntradaController.java
... ... @@ -19,49 +19,58 @@ import br.com.centralit.api.model.BemPatrimonial;
19 19 import br.com.centralit.api.model.Entrada;
20 20 import br.com.centralit.api.model.EntradaPatrimonio;
21 21 import br.com.centralit.api.model.EntradaPatrimonioItem;
  22 +import br.com.centralit.api.model.MyMensagemRetorno;
  23 +import br.com.centralit.api.model.MyRetornoStatus;
22 24 import br.com.centralit.api.service.EntradaService;
  25 +import br.com.centralit.api.service.OrganizacaoService;
23 26 import br.com.centralit.framework.controller.GenericController;
24 27 import br.com.centralit.framework.json.ResponseBodyWrapper;
25 28 import br.com.centralit.framework.json.Views;
  29 +import br.com.centralit.framework.model.Organizacao;
26 30 import br.com.centralit.framework.view.ResultResponseVH;
27 31  
28 32 /**
29 33 * <p>
30 34 * <img src="http://centralit.com.br/images/logo_central.png">
31 35 * </p>
32   - *
  36 + *
33 37 * <p>
34 38 * <b>Company: </b> Central IT - Governança Corporativa -
35 39 * </p>
36   - *
  40 + *
37 41 * <p>
38 42 * <b>Title: </b>
39 43 * </p>
40   - *
  44 + *
41 45 * <p>
42 46 * <b>Description: </b>
43 47 * </p>
44   - *
  48 + *
45 49 * @since 03/01/2015 - 11:19:18
46   - *
  50 + *
47 51 * @version 1.0.0
48   - *
  52 + *
49 53 * @author wilker.machado
50   - *
  54 + *
51 55 */
52 56 @Controller
53 57 @RequestMapping("/rest/entrada")
54 58 public class EntradaController extends GenericController<EntradaPatrimonio> {
55 59  
  60 + @Autowired
56 61 private EntradaService entradaService;
57 62  
  63 + @Autowired
  64 + private OrganizacaoService organizacaoService;
  65 +
58 66 public EntradaController() {
  67 +
59 68 super();
60 69 }
61 70  
62 71 /**
63 72 * Responsável pela criação de novas instâncias desta classe.
64   - *
  73 + *
65 74 * @param entradaService
66 75 */
67 76 @Autowired
... ... @@ -72,7 +81,6 @@ public class EntradaController extends GenericController&lt;EntradaPatrimonio&gt; {
72 81 this.entradaService = entradaService;
73 82 }
74 83  
75   -
76 84 @RequestMapping(value = "/verificarMovimentacaoBensEntrada", method = RequestMethod.POST)
77 85 @ResponseBody
78 86 public ResponseBodyWrapper verificarMovimentacaoBensEntrada(@RequestBody EntradaPatrimonio entrada) {
... ... @@ -102,57 +110,91 @@ public class EntradaController extends GenericController&lt;EntradaPatrimonio&gt; {
102 110  
103 111 /**
104 112 * Método responsável por realizar o upload dos anexos que estão ligadas a bem patrimonial Caracteristicas
105   - *
  113 + *
106 114 * @author wilker.machado
107   - *
  115 + *
108 116 * @param name
109 117 * @param file
110 118 * @param idAnexo
111 119 */
112 120 @RequestMapping(value = "/uploadAnexoCaracteristica", method = RequestMethod.POST)
113   - public @ResponseBody void uploadAnexoCaracteristica(@RequestParam(value = "filename", required = false) String name, @RequestParam("file") MultipartFile file, @RequestParam(value = "idEntradaItem", required = false) Long idEntradaItem) {
  121 + public @ResponseBody
  122 + void uploadAnexoCaracteristica(@RequestParam(value = "filename", required = false) String name, @RequestParam("file") MultipartFile file, @RequestParam(value = "idEntradaItem", required = false) Long idEntradaItem) {
114 123  
115 124 this.entradaService.uploadAnexoCaracteristica(file, idEntradaItem);
116 125  
117 126 }
118   -
  127 +
119 128 @RequestMapping(method = RequestMethod.POST, value = "")
120 129 @ResponseBody
121   - public ResponseBodyWrapper save(@RequestBody EntradaPatrimonio entity) throws Exception{
122   - boolean uniqueConstraintViolate = true;
123   -
124   - EntradaPatrimonio entrada = new EntradaPatrimonio();
125   -
126   - //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
127   - for(int i = 5; i > 0 && uniqueConstraintViolate; i--){
128   - try{
129   - entrada = this.entradaService.save(SerializationUtils.clone(entity));
130   - uniqueConstraintViolate = false;
131   - }catch(Throwable e){
132   - if(e.getCause() instanceof ConstraintViolationException){
133   - ConstraintViolationException ex = (ConstraintViolationException) e.getCause();
134   - if(ex.getSQLException().getMessage().contains("codigo_unico")){
135   - uniqueConstraintViolate = true;
136   - }else{
  130 + public ResponseBodyWrapper save(@RequestBody EntradaPatrimonio entity) throws Exception {
  131 +
  132 + Organizacao organizacao = this.organizacaoService.find(this.getUsuario().getOrganizacao().getId());
  133 +
  134 + if (!organizacao.getEmFechamento()) {
  135 +
  136 + boolean uniqueConstraintViolate = true;
  137 +
  138 + EntradaPatrimonio entrada = new EntradaPatrimonio();
  139 +
  140 + // 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
  141 + for (int i = 5; i > 0 && uniqueConstraintViolate; i--) {
  142 + try {
  143 + entrada = this.entradaService.save(SerializationUtils.clone(entity));
  144 + uniqueConstraintViolate = false;
  145 + } catch (Throwable e) {
  146 + if (e.getCause() instanceof ConstraintViolationException) {
  147 + ConstraintViolationException ex = (ConstraintViolationException) e.getCause();
  148 + if (ex.getSQLException().getMessage().contains("codigo_unico")) {
  149 + uniqueConstraintViolate = true;
  150 + } else {
  151 + throw e;
  152 + }
  153 + } else {
137 154 throw e;
138 155 }
139   - }else{
140   - throw e;
141 156 }
142 157 }
  158 +
  159 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(entrada, getEditView());
  160 +
  161 + return responseBody;
  162 + } else {
  163 + MyRetornoStatus retorno = new MyRetornoStatus();
  164 + retorno.data = entity;
  165 + retorno.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.warning, "MSG.ORGANIZACAO_EM_FECHAMENTO_MES"));
  166 +
  167 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retorno, getEditView());
  168 +
  169 + return responseBody;
143 170 }
144   -
145   - ResponseBodyWrapper responseBody = new ResponseBodyWrapper(entrada, getEditView());
146   -
147   - return responseBody;
148 171 }
149 172  
  173 + @RequestMapping(method = RequestMethod.POST, value = "/update")
  174 + @ResponseBody
  175 + public ResponseBodyWrapper update(@RequestBody EntradaPatrimonio objeto) {
  176 + Organizacao organizacao = this.organizacaoService.find(this.getUsuario().getOrganizacao().getId());
  177 +
  178 + if (!organizacao.getEmFechamento()) {
  179 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(this.entradaService.merge(objeto), getEditView());
  180 +
  181 + return responseBody;
  182 + } else {
  183 + MyRetornoStatus retorno = new MyRetornoStatus();
  184 + retorno.data = objeto;
  185 + retorno.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.warning, "MSG.ORGANIZACAO_EM_FECHAMENTO_MES"));
  186 +
  187 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retorno, getEditView());
  188 +
  189 + return responseBody;
  190 + }
  191 + }
150 192  
151 193 /**
152 194 * Método responsável por listar <code>Entrada</code> por codigo e <code>Organizacao</code>
153   - *
  195 + *
154 196 * @author geovane.filho
155   - *
  197 + *
156 198 * @param value
157 199 * @param idOrganizacao
158 200 * @return <code>ResponseBodyWrapper</code>
... ... @@ -167,11 +209,44 @@ public class EntradaController extends GenericController&lt;EntradaPatrimonio&gt; {
167 209  
168 210 return responseBody;
169 211 }
170   -
  212 +
171 213 @RequestMapping(method = RequestMethod.POST, value = "/concluir")
172 214 @ResponseBody
173 215 public ResponseBodyWrapper concluir(@RequestBody EntradaPatrimonio entrada) {
174   - return new ResponseBodyWrapper(entradaService.concluir(entrada), getEditView());
  216 + Organizacao organizacao = this.organizacaoService.find(this.getUsuario().getOrganizacao().getId());
  217 +
  218 + if (!organizacao.getEmFechamento()) {
  219 + return new ResponseBodyWrapper(entradaService.concluir(entrada), getEditView());
  220 + } else {
  221 + MyRetornoStatus retorno = new MyRetornoStatus();
  222 + retorno.data = entrada;
  223 + retorno.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.warning, "MSG.ORGANIZACAO_EM_FECHAMENTO_MES"));
  224 +
  225 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retorno, getEditView());
  226 +
  227 + return responseBody;
  228 + }
  229 + }
  230 +
  231 + @RequestMapping(method = RequestMethod.DELETE, value = "/{id}")
  232 + @ResponseBody
  233 + public ResponseBodyWrapper delete(@PathVariable("id") Long id) {
  234 +
  235 + Organizacao organizacao = this.organizacaoService.find(this.getUsuario().getOrganizacao().getId());
  236 +
  237 + if (!organizacao.getEmFechamento()) {
  238 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(entradaService.removeById(id), getEditView());
  239 +
  240 + return responseBody;
  241 + } else {
  242 + MyRetornoStatus retorno = new MyRetornoStatus();
  243 + retorno.data = id;
  244 + retorno.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.warning, "MSG.ORGANIZACAO_EM_FECHAMENTO_MES"));
  245 +
  246 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retorno, getEditView());
  247 +
  248 + return responseBody;
  249 + }
175 250 }
176 251  
177 252 @RequestMapping(value = "/{id}", method = RequestMethod.GET)
... ... @@ -180,11 +255,11 @@ public class EntradaController extends GenericController&lt;EntradaPatrimonio&gt; {
180 255  
181 256 List<BemPatrimonial> listaBemPatrimopnial = null;
182 257 EntradaPatrimonio entrada = this.entradaService.find(id);
183   - if(entrada.getEntradasIten() != null){
  258 + if (entrada.getEntradasIten() != null) {
184 259 for (EntradaPatrimonioItem entradaItem : entrada.getEntradasIten()) {
185 260 listaBemPatrimopnial = new ArrayList<BemPatrimonial>();
186 261 for (BemPatrimonial bemPatrimonial : entradaItem.getBensPatrimoniais()) {
187   - if(bemPatrimonial.getDataInativo() == null){
  262 + if (bemPatrimonial.getDataInativo() == null) {
188 263 listaBemPatrimopnial.add(bemPatrimonial);
189 264 }
190 265 }
... ... @@ -198,24 +273,26 @@ public class EntradaController extends GenericController&lt;EntradaPatrimonio&gt; {
198 273  
199 274 return responseBody;
200 275 }
201   -
  276 +
202 277 @RequestMapping(value = "/existemBemSemDataContabil", method = RequestMethod.GET, produces = "application/json")
203 278 @ResponseBody
204 279 public boolean existemBemSemDataContabil(@RequestParam(value = "idEntrada") Long idEntrada) {
  280 +
205 281 return this.entradaService.existeBemSemDataContabil(idEntrada);
206   - }
207   -
  282 + }
  283 +
208 284 @RequestMapping(method = RequestMethod.GET, value = "/validaExistenciaBemMaterialEntrada", produces = "application/json")
209 285 @ResponseBody
210 286 public boolean validaExistenciaBemMaterialEntrada(@RequestParam(value = "idEntrada", required = false) Long idEntrada) {
  287 +
211 288 return entradaService.verificaExistenciaBensPatrimoniaisEntrada(idEntrada);
212 289 }
213   -
  290 +
214 291 @RequestMapping(method = RequestMethod.GET, value = "/verificaExistenciaBemPatrimonialTemporarioEntrada", produces = "application/json")
215 292 @ResponseBody
216 293 public boolean verificaExistenciaBemPatrimonialTemporario(@RequestParam(value = "idEntrada", required = false) Long idEntrada) {
  294 +
217 295 return entradaService.verificaExistenciaBensPatrimoniaisTemporariosEntrada(idEntrada);
218 296 }
219   -
220   -
  297 +
221 298 }
... ...
citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/EntradaItemController.java
... ... @@ -2,16 +2,21 @@ package br.com.centralit.controller;
2 2  
3 3 import org.springframework.beans.factory.annotation.Autowired;
4 4 import org.springframework.stereotype.Controller;
  5 +import org.springframework.web.bind.annotation.PathVariable;
5 6 import org.springframework.web.bind.annotation.RequestMapping;
6 7 import org.springframework.web.bind.annotation.RequestMethod;
7 8 import org.springframework.web.bind.annotation.RequestParam;
8 9 import org.springframework.web.bind.annotation.ResponseBody;
9 10  
10 11 import br.com.centralit.api.model.EntradaPatrimonioItem;
  12 +import br.com.centralit.api.model.MyMensagemRetorno;
  13 +import br.com.centralit.api.model.MyRetornoStatus;
11 14 import br.com.centralit.api.service.EntradaItemService;
  15 +import br.com.centralit.api.service.OrganizacaoService;
12 16 import br.com.centralit.framework.controller.GenericController;
13 17 import br.com.centralit.framework.json.ResponseBodyWrapper;
14 18 import br.com.centralit.framework.json.Views;
  19 +import br.com.centralit.framework.model.Organizacao;
15 20  
16 21  
17 22 /**
... ... @@ -40,6 +45,9 @@ public class EntradaItemController extends GenericController&lt;EntradaPatrimonioIt
40 45  
41 46  
42 47 private EntradaItemService entradaItemService;
  48 +
  49 + @Autowired
  50 + private OrganizacaoService organizacaoService;
43 51  
44 52 public EntradaItemController() {
45 53 super();
... ... @@ -65,6 +73,27 @@ public class EntradaItemController extends GenericController&lt;EntradaPatrimonioIt
65 73  
66 74 return Views.EntradaItemEditView.class;
67 75 }
  76 +
  77 + @RequestMapping(method = RequestMethod.DELETE, value = "/{id}")
  78 + @ResponseBody
  79 + public ResponseBodyWrapper delete(@PathVariable("id") Long id) {
  80 +
  81 + Organizacao organizacao = this.organizacaoService.find(this.getUsuario().getOrganizacao().getId());
  82 +
  83 + if (!organizacao.getEmFechamento()) {
  84 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(entradaItemService.removeById(id), getEditView());
  85 +
  86 + return responseBody;
  87 + } else {
  88 + MyRetornoStatus retorno = new MyRetornoStatus();
  89 + retorno.data = id;
  90 + retorno.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.warning, "MSG.ORGANIZACAO_EM_FECHAMENTO_MES"));
  91 +
  92 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retorno, getEditView());
  93 +
  94 + return responseBody;
  95 + }
  96 + }
68 97  
69 98 /**
70 99 *
... ...
citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/OrganizacaoPatrimonioController.java
... ... @@ -106,53 +106,70 @@ public class OrganizacaoPatrimonioController {
106 106 Organizacao organizacao = this.organizacaoService.find(requisicaoFechamento.get("organizacao"));
107 107 Long tipoDepreciacaoCodigo = requisicaoFechamento.get("tipoDepreciacao");
108 108  
109   - MyRetornoStatus retornoFechamentoBens = new MyRetornoStatus();
110   -
111   - MyRetornoStatus retornoBensNaEstruturaAlmoxarifado = new MyRetornoStatus();
112   -
113   - retornoBensNaEstruturaAlmoxarifado.status = this.bemPatrimonialService.validarBensNaEstruturaAlmoxarifado(organizacao.getId());
114   - retornoBensNaEstruturaAlmoxarifado.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.error, "MSG.BENS_NA_ESTRUTURA_ALMOXARIFADO"));
115   -
116   - if(!retornoBensNaEstruturaAlmoxarifado.status) {
117   - ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retornoBensNaEstruturaAlmoxarifado, Views.EstruturaOrganizacionalEditView.class);
118   - return responseBody;
119   - }
120   -
121   - retornoFechamentoBens.status = this.bemPatrimonialService.fecharValoresBens(organizacao.getId(), user.getId());
122   -
123   - MyRetornoStatus retornoFechamentoContas = new MyRetornoStatus();
124   - retornoFechamentoContas.status = this.contaContabilSaldoService.fechaSaldoContasContabeisTipoPermanente(organizacao);
125   -
126   - if (retornoFechamentoBens.status && retornoFechamentoContas.status) {
127   - MyRetornoStatus retornoDepreciacao = new MyRetornoStatus();
128   -
129   - Dominio tipoDepreciacao = this.dominioService.findByChaveAndCodigo(Dominio.TIPO_DEPRECIACAO, tipoDepreciacaoCodigo);
130   -
131   - Depreciacao depreciacao = this.depreciacaoService.geraDepreciacao(organizacao, tipoDepreciacao, user.getId());
132   -
133   - if (depreciacao != null) {
134   - retornoDepreciacao = new MyRetornoStatus(depreciacao);
135   - } else {
136   - if (tipoDepreciacao == null) {
137   - MyMensagemRetorno mensagem = new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.error, "MSG.FECHAR_MES_REFERENCIA_SEM_DEPRECIACAO");
138   - retornoDepreciacao.mensagens.add(mensagem);
  109 + if (!organizacao.getEmFechamento()) {
  110 + try {
  111 + this.organizacaoService.iniciarFechamentoDeMes(organizacao.getId());
  112 +
  113 + MyRetornoStatus retornoFechamentoBens = new MyRetornoStatus();
  114 +
  115 + MyRetornoStatus retornoBensNaEstruturaAlmoxarifado = new MyRetornoStatus();
  116 +
  117 + retornoBensNaEstruturaAlmoxarifado.status = this.bemPatrimonialService.validarBensNaEstruturaAlmoxarifado(organizacao.getId());
  118 + retornoBensNaEstruturaAlmoxarifado.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.error, "MSG.BENS_NA_ESTRUTURA_ALMOXARIFADO"));
  119 +
  120 + if(!retornoBensNaEstruturaAlmoxarifado.status) {
  121 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retornoBensNaEstruturaAlmoxarifado, Views.EstruturaOrganizacionalEditView.class);
  122 + return responseBody;
139 123 }
  124 +
  125 + retornoFechamentoBens.status = this.bemPatrimonialService.fecharValoresBens(organizacao.getId(), user.getId());
  126 +
  127 + MyRetornoStatus retornoFechamentoContas = new MyRetornoStatus();
  128 + retornoFechamentoContas.status = this.contaContabilSaldoService.fechaSaldoContasContabeisTipoPermanente(organizacao);
  129 +
  130 + if (retornoFechamentoBens.status && retornoFechamentoContas.status) {
  131 + MyRetornoStatus retornoDepreciacao = new MyRetornoStatus();
  132 +
  133 + Dominio tipoDepreciacao = this.dominioService.findByChaveAndCodigo(Dominio.TIPO_DEPRECIACAO, tipoDepreciacaoCodigo);
  134 +
  135 + Depreciacao depreciacao = this.depreciacaoService.geraDepreciacao(organizacao, tipoDepreciacao, user.getId());
  136 +
  137 + if (depreciacao != null) {
  138 + retornoDepreciacao = new MyRetornoStatus(depreciacao);
  139 + } else {
  140 + if (tipoDepreciacao == null) {
  141 + MyMensagemRetorno mensagem = new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.error, "MSG.FECHAR_MES_REFERENCIA_SEM_DEPRECIACAO");
  142 + retornoDepreciacao.mensagens.add(mensagem);
  143 + }
  144 + }
  145 +
  146 + if (retornoDepreciacao.status) { // Se a depreciação foi realizada com sucesso eu atualizo o mês de referencia
  147 + retornoFechamentoContas.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.success, "MSG.SUCESSO_DEPRECIACAO"));
  148 + organizacao.getDataReferenciaVigente().add(Calendar.MONTH, 1);
  149 + this.organizacaoService.merge(organizacao);
  150 + retornoFechamentoContas.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.success, "MSG.SUCESSO_MES_REFERENCIA"));
  151 + } else {
  152 + retornoFechamentoContas.status = retornoDepreciacao.status;
  153 + retornoFechamentoContas.mensagens.addAll(retornoDepreciacao.mensagens);
  154 + }
  155 + }
  156 +
  157 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retornoFechamentoContas, Views.EstruturaOrganizacionalEditView.class);
  158 + this.organizacaoService.terminarFechamentoDeMes(organizacao.getId());
  159 +
  160 + return responseBody;
  161 + } catch (Exception ex) {
  162 + this.organizacaoService.terminarFechamentoDeMes(organizacao.getId());
  163 + throw ex;
140 164 }
  165 + } else {
  166 + MyRetornoStatus retornoFechamentoContas = new MyRetornoStatus();
  167 + retornoFechamentoContas.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.warning, "MSG.ORGANIZACAO_EM_FECHAMENTO_MES"));
  168 +
  169 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retornoFechamentoContas, Views.EstruturaOrganizacionalEditView.class);
141 170  
142   - if (retornoDepreciacao.status) { // Se a depreciação foi realizada com sucesso eu atualizo o mês de referencia
143   - retornoFechamentoContas.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.success, "MSG.SUCESSO_DEPRECIACAO"));
144   - organizacao.getDataReferenciaVigente().add(Calendar.MONTH, 1);
145   - this.organizacaoService.merge(organizacao);
146   - retornoFechamentoContas.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.success, "MSG.SUCESSO_MES_REFERENCIA"));
147   - } else {
148   - retornoFechamentoContas.status = retornoDepreciacao.status;
149   - retornoFechamentoContas.mensagens.addAll(retornoDepreciacao.mensagens);
150   - }
  171 + return responseBody;
151 172 }
152   -
153   - ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retornoFechamentoContas, Views.EstruturaOrganizacionalEditView.class);
154   -
155   - return responseBody;
156 173 }
157 174  
158 175 }
159 176 \ No newline at end of file
... ...
citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/TransferenciaController.java
... ... @@ -37,11 +37,14 @@ import org.springframework.web.bind.annotation.RequestMethod;
37 37 import org.springframework.web.bind.annotation.RequestParam;
38 38 import org.springframework.web.bind.annotation.ResponseBody;
39 39  
  40 +import br.com.centralit.api.model.MyMensagemRetorno;
  41 +import br.com.centralit.api.model.MyRetornoStatus;
40 42 import br.com.centralit.api.model.Transferencia;
41 43 import br.com.centralit.api.model.TransferenciaItem;
42 44 import br.com.centralit.api.service.BemPatrimonialService;
43 45 import br.com.centralit.api.service.DominioService;
44 46 import br.com.centralit.api.service.InternacionalizacaoService;
  47 +import br.com.centralit.api.service.OrganizacaoService;
45 48 import br.com.centralit.api.service.TransferenciaItemService;
46 49 import br.com.centralit.api.service.TransferenciaService;
47 50 import br.com.centralit.api.service.UsuarioService;
... ... @@ -53,6 +56,7 @@ import br.com.centralit.framework.json.Views;
53 56 import br.com.centralit.framework.json.Views.TransferenciaEditView;
54 57 import br.com.centralit.framework.json.Views.TransferenciaListView;
55 58 import br.com.centralit.framework.model.Dominio;
  59 +import br.com.centralit.framework.model.Organizacao;
56 60 import br.com.centralit.framework.model.Usuario;
57 61 import br.com.centralit.framework.util.UtilColecao;
58 62 import br.com.centralit.framework.util.UtilDataBase;
... ... @@ -106,6 +110,9 @@ public class TransferenciaController extends GenericController&lt;Transferencia&gt;{
106 110  
107 111 @Autowired
108 112 private TransferenciaItemService transferenciaItemService;
  113 +
  114 + @Autowired
  115 + private OrganizacaoService organizacaoService;
109 116  
110 117 /** Atributo idioma. */
111 118 private Dominio idioma;
... ... @@ -336,41 +343,85 @@ public class TransferenciaController extends GenericController&lt;Transferencia&gt;{
336 343 @RequestMapping(method = RequestMethod.POST, value = "")
337 344 @ResponseBody
338 345 public ResponseBodyWrapper save(@RequestBody Transferencia objeto) throws Exception {
339   - boolean uniqueConstraintViolate = true;
340   - List<Transferencia> transferencias = new LinkedList<Transferencia>();
341   -
342   - //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
343   - for(int i = 5; i > 0 && uniqueConstraintViolate; i--){
344   - try{
345   - Transferencia transferencia = (Transferencia) BeanUtilsBean.getInstance().cloneBean(objeto);
346   - transferencias = this.transferenciaService.salvarTransferencia(transferencia);
347   - uniqueConstraintViolate = false;
348   - }catch(PersistenceException e){
349   - if(e.getCause() instanceof ConstraintViolationException){
350   - ConstraintViolationException ex = (ConstraintViolationException) e.getCause();
351   - if(ex.getSQLException().getMessage().contains("codigo_unico")){
352   - uniqueConstraintViolate = true;
  346 + Organizacao organizacao = this.organizacaoService.find(this.getUsuario().getOrganizacao().getId());
  347 +
  348 + if (!organizacao.getEmFechamento()) {
  349 + boolean uniqueConstraintViolate = true;
  350 + List<Transferencia> transferencias = new LinkedList<Transferencia>();
  351 +
  352 + //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
  353 + for(int i = 5; i > 0 && uniqueConstraintViolate; i--){
  354 + try{
  355 + Transferencia transferencia = (Transferencia) BeanUtilsBean.getInstance().cloneBean(objeto);
  356 + transferencias = this.transferenciaService.salvarTransferencia(transferencia);
  357 + uniqueConstraintViolate = false;
  358 + }catch(PersistenceException e){
  359 + if(e.getCause() instanceof ConstraintViolationException){
  360 + ConstraintViolationException ex = (ConstraintViolationException) e.getCause();
  361 + if(ex.getSQLException().getMessage().contains("codigo_unico")){
  362 + uniqueConstraintViolate = true;
  363 + }else{
  364 + throw e;
  365 + }
353 366 }else{
354 367 throw e;
355 368 }
356   - }else{
357   - throw e;
358 369 }
359 370 }
360   - }
361 371  
362   - ResponseBodyWrapper responseBody = new ResponseBodyWrapper(transferencias, getEditView());
  372 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(transferencias, getEditView());
363 373  
364   - return responseBody;
  374 + return responseBody;
  375 + } else {
  376 + MyRetornoStatus retorno = new MyRetornoStatus();
  377 + retorno.data = objeto;
  378 + retorno.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.warning, "MSG.ORGANIZACAO_EM_FECHAMENTO_MES"));
  379 +
  380 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retorno, getEditView());
  381 +
  382 + return responseBody;
  383 + }
365 384 }
366 385  
367 386 @RequestMapping(method = RequestMethod.POST, value = "/update")
368 387 @ResponseBody
369 388 public ResponseBodyWrapper update(@RequestBody Transferencia objeto) {
  389 + Organizacao organizacao = this.organizacaoService.find(this.getUsuario().getOrganizacao().getId());
370 390  
371   - ResponseBodyWrapper responseBody = new ResponseBodyWrapper(this.transferenciaService.update(objeto), getEditView());
  391 + if (!organizacao.getEmFechamento()) {
  392 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(this.transferenciaService.update(objeto), getEditView());
372 393  
373   - return responseBody;
  394 + return responseBody;
  395 + } else {
  396 + MyRetornoStatus retorno = new MyRetornoStatus();
  397 + retorno.data = objeto;
  398 + retorno.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.warning, "MSG.ORGANIZACAO_EM_FECHAMENTO_MES"));
  399 +
  400 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retorno, getEditView());
  401 +
  402 + return responseBody;
  403 + }
  404 + }
  405 +
  406 + @RequestMapping(method = RequestMethod.DELETE, value = "/{id}")
  407 + @ResponseBody
  408 + public ResponseBodyWrapper delete(@PathVariable("id") Long id) {
  409 +
  410 + Organizacao organizacao = this.organizacaoService.find(this.getUsuario().getOrganizacao().getId());
  411 +
  412 + if (!organizacao.getEmFechamento()) {
  413 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(transferenciaService.removeById(id), getEditView());
  414 +
  415 + return responseBody;
  416 + } else {
  417 + MyRetornoStatus retorno = new MyRetornoStatus();
  418 + retorno.data = id;
  419 + retorno.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.warning, "MSG.ORGANIZACAO_EM_FECHAMENTO_MES"));
  420 +
  421 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retorno, getEditView());
  422 +
  423 + return responseBody;
  424 + }
374 425 }
375 426  
376 427 @RequestMapping(value = "/validarTransferenciaMesmoDia", method = RequestMethod.POST)
... ...
citgrp-patrimonio-web/src/main/java/br/com/centralit/listener/StartupListenerPatrimonio.java
... ... @@ -648,6 +648,7 @@ public class StartupListenerPatrimonio extends UtilStartup implements Applicatio
648 648 internacionalizacaoList.add(new Internacionalizacao("PATRIMONIO.VALIDACAO.NUMERO_BEM_PATRIMONIAL_REPETIDO", "Já existe um bem patrimonial com esse número!", dominio, modulo));
649 649 internacionalizacaoList.add(new Internacionalizacao("PATRIMONIO.VALIDACAO.DATA_CONTABIL_DATA_RECEBIMENTO", "A data de contabilização não pode ser menor que a data de recebimento!", dominio, modulo));
650 650 internacionalizacaoList.add(new Internacionalizacao("PATRIMONIO.VALIDACAO.DATA_CONTABIL_ALTERADA_TRANSFERENCIA", "Você não pode alterar a data de contabilização após realizar movimentações nos bens da mesma!", dominio, modulo));
  651 + internacionalizacaoList.add(new Internacionalizacao("VALIDACAO.EXCLUSAO_BAIXA", "A baixa ou um dos seus itens só pode ser excluído se a situação for 'EM ANDAMENTO'", dominio, modulo));
651 652  
652 653 }
653 654  
... ...
citgrp-patrimonio-web/src/main/webapp/assets/js/angular/custom/controller/AlteracaoBemPatrimonialController.js
... ... @@ -175,21 +175,26 @@ citApp.controller(&#39;AlteracaoBemPatrimonialController&#39;, [&#39;$scope&#39;, &#39;BemPatrimonia
175 175 };
176 176  
177 177 BemPatrimonialRepository.alterarBem(alteracaoBemVH).then(function(result) {
  178 + if (result.originalElement && result.originalElement.status != undefined && !result.originalElement.status && result.originalElement.mensagens) {
  179 + $scope.setLoading(false);
  180 + angular.forEach(result.originalElement.mensagens, function (mensagem) {
  181 + $scope.showAlert(mensagem.tipoMensagem, $translate.instant(mensagem.mensagem));
  182 + });
  183 + } else {
  184 + $scope.setLoading(false);
178 185  
179   - $scope.setLoading(false);
  186 + $scope.formAlterarBemPatrimonial.$submitted = false;
180 187  
181   - $scope.formAlterarBemPatrimonial.$submitted = false;
182   -
183   - $scope.showAlert("success", $translate.instant('MSG.MG001'));
  188 + $scope.showAlert("success", $translate.instant('MSG.MG001'));
184 189  
185   - $scope.resetForm();
  190 + $scope.resetForm();
186 191  
187   - $scope.limparDadosPosAlteracao();
  192 + $scope.limparDadosPosAlteracao();
188 193  
189   - buscarProxinoNumeroPatrimonial();
190   -
191   - $scope.$modalInstance.dismiss('cancel');
  194 + buscarProxinoNumeroPatrimonial();
192 195  
  196 + $scope.$modalInstance.dismiss('cancel');
  197 + }
193 198 });
194 199 };
195 200  
... ...
citgrp-patrimonio-web/src/main/webapp/assets/js/angular/custom/controller/BaixaController.js
... ... @@ -417,13 +417,20 @@ citApp.controller(&#39;BaixaController&#39;,
417 417  
418 418 // realiza o estorno via rest
419 419 BaixaItemRepository.estornarItens(estornoBaixaItemVH).then(function(result) {
420   - $scope.baixa.baixaItens = [];
421   - angular.forEach(result, function (item, key) {
422   - $scope.baixa.baixaItens.push(item.originalElement);
423   - });
424   - $scope.visualizarEditar($scope.baixa.id, true);
425   - $scope.showAlert('success', $translate.instant('MSG.ESTORNADO_COM_SUCESSO'));
426   - $scope.$modalConfirmInstance.dismiss('cancel');
  420 + if (result.originalElement && result.originalElement.status != undefined && !result.originalElement.status && result.originalElement.mensagens) {
  421 + $scope.setLoading(false);
  422 + angular.forEach(result.originalElement.mensagens, function (mensagem) {
  423 + $scope.showAlert(mensagem.tipoMensagem, $translate.instant(mensagem.mensagem));
  424 + });
  425 + } else {
  426 + $scope.baixa.baixaItens = [];
  427 + angular.forEach(result, function (item, key) {
  428 + $scope.baixa.baixaItens.push(item.originalElement);
  429 + });
  430 + $scope.visualizarEditar($scope.baixa.id, true);
  431 + $scope.showAlert('success', $translate.instant('MSG.ESTORNADO_COM_SUCESSO'));
  432 + $scope.$modalConfirmInstance.dismiss('cancel');
  433 + }
427 434 });
428 435 $scope.$modalConfirmInstance.dismiss('cancel');
429 436  
... ... @@ -744,27 +751,32 @@ citApp.controller(&#39;BaixaController&#39;,
744 751 $scope.setLoadingSalva(true);
745 752  
746 753 BaixaRepository.save($scope.baixa).then(function(result) {
  754 + if (result.originalElement && result.originalElement.status != undefined && !result.originalElement.status && result.originalElement.mensagens) {
  755 + $scope.setLoading(false);
  756 + angular.forEach(result.originalElement.mensagens, function (mensagem) {
  757 + $scope.showAlert(mensagem.tipoMensagem, $translate.instant(mensagem.mensagem));
  758 + });
  759 + } else {
  760 + $scope.baixa = result.originalElement;
747 761  
748   - $scope.baixa = result.originalElement;
749   -
750   - $scope.atualizarDominioSituacaoBaixa($scope.baixa);
751   -
752   - if($scope.baixa.portador){
753   - $scope.baixa.portador['pessoa.nome'] = $scope.baixa.portador.pessoa.nome;
754   - }
755   - if($scope.baixa.destino){
756   - $scope.baixa.destino['pessoa.nome'] = $scope.baixa.destino.pessoa.nome;
757   - }
  762 + $scope.atualizarDominioSituacaoBaixa($scope.baixa);
758 763  
759   - // depois de salvar a baixa ja tendo uma referencia do id da baixa, esse metodo ira salvar os documentos se existir
760   - salvarListaDocumentos($scope.baixaTemp);
  764 + if($scope.baixa.portador){
  765 + $scope.baixa.portador['pessoa.nome'] = $scope.baixa.portador.pessoa.nome;
  766 + }
  767 + if($scope.baixa.destino){
  768 + $scope.baixa.destino['pessoa.nome'] = $scope.baixa.destino.pessoa.nome;
  769 + }
761 770  
762   - $scope.setLoading(false);
  771 + // depois de salvar a baixa ja tendo uma referencia do id da baixa, esse metodo ira salvar os documentos se existir
  772 + salvarListaDocumentos($scope.baixaTemp);
763 773  
764   - // exibe a MSG de sucesso de acordo com a especificacao do caso de uso
765   - exibeMsgSucesso();
766   - $scope.resetForm();
  774 + $scope.setLoading(false);
767 775  
  776 + // exibe a MSG de sucesso de acordo com a especificacao do caso de uso
  777 + exibeMsgSucesso();
  778 + $scope.resetForm();
  779 + }
768 780 });
769 781 }
770 782  
... ... @@ -846,11 +858,18 @@ citApp.controller(&#39;BaixaController&#39;,
846 858 $scope.excluirBaixa = function(){
847 859 var baixa = this.item;
848 860  
849   - BaixaRepository.remove(baixa).then(function() {
850   - $scope.$modalConfirmInstance.dismiss('cancel');
851   - $scope.showAlert('success', $translate.instant('MSG.REGISTRO_EXCLUIDO'));
852   - $scope.atualizarLista();
853   - $scope.$showPageSearchWorkspace($scope.workspace);
  861 + BaixaRepository.remove(baixa).then(function(result) {
  862 + if (result.originalElement && result.originalElement.status != undefined && !result.originalElement.status && result.originalElement.mensagens) {
  863 + $scope.setLoading(false);
  864 + angular.forEach(result.originalElement.mensagens, function (mensagem) {
  865 + $scope.showAlert(mensagem.tipoMensagem, $translate.instant(mensagem.mensagem));
  866 + });
  867 + } else {
  868 + $scope.$modalConfirmInstance.dismiss('cancel');
  869 + $scope.showAlert('success', $translate.instant('MSG.REGISTRO_EXCLUIDO'));
  870 + $scope.atualizarLista();
  871 + $scope.$showPageSearchWorkspace($scope.workspace);
  872 + }
854 873 });
855 874  
856 875 };
... ...
citgrp-patrimonio-web/src/main/webapp/assets/js/angular/custom/controller/BaixaListController.js
... ... @@ -196,11 +196,18 @@ citApp.controller(&#39;BaixaListController&#39;, [&#39;$scope&#39;, &#39;BaixaRepository&#39;, &#39;$transla
196 196 $scope.setLoadingGet(true);
197 197 // realiza estorno da baixa
198 198 BaixaItemRepository.estornarItens(estornoBaixaItemVH).then(function(result) {
199   - baixa.baixaItens = result;
200   - $scope.showAlert('success', $translate.instant('MSG.ESTORNADO_COM_SUCESSO'));
201   - $scope.$modalConfirmInstance.dismiss('cancel');
202   - $scope.$dataEstorno = null;
203   - $scope.setLoading(false);
  199 + if (result.originalElement && result.originalElement.status != undefined && !result.originalElement.status && result.originalElement.mensagens) {
  200 + $scope.setLoading(false);
  201 + angular.forEach(result.originalElement.mensagens, function (mensagem) {
  202 + $scope.showAlert(mensagem.tipoMensagem, $translate.instant(mensagem.mensagem));
  203 + });
  204 + } else {
  205 + baixa.baixaItens = result;
  206 + $scope.showAlert('success', $translate.instant('MSG.ESTORNADO_COM_SUCESSO'));
  207 + $scope.$modalConfirmInstance.dismiss('cancel');
  208 + $scope.$dataEstorno = null;
  209 + $scope.setLoading(false);
  210 + }
204 211 });
205 212  
206 213 };
... ... @@ -216,6 +223,42 @@ citApp.controller(&#39;BaixaListController&#39;, [&#39;$scope&#39;, &#39;BaixaRepository&#39;, &#39;$transla
216 223 return true;
217 224 }
218 225 };
  226 +
  227 + // MODAL DE CONFIRMAÇÃO E REMOÇÃO DO REGISTRO
  228 + $scope.remover = function(){
  229 +
  230 + var baixa = $scope.baixaChecked;
  231 +
  232 + if(baixa) {
  233 +
  234 + $scope.$openModalConfirm({
  235 + message: $translate.instant("MSG.CONFIRMA_EXCLUSAO"),
  236 + callback: function () {
  237 + $scope.setLoadingRemove(true);
  238 +
  239 + BaixaRepository.remove(baixa).then(function(result) {
  240 + if (result.originalElement && result.originalElement.status != undefined && !result.originalElement.status && result.originalElement.mensagens) {
  241 + $scope.setLoading(false);
  242 + angular.forEach(result.originalElement.mensagens, function (mensagem) {
  243 + $scope.showAlert(mensagem.tipoMensagem, $translate.instant(mensagem.mensagem));
  244 + });
  245 + } else {
  246 + $scope.$modalConfirmInstance.dismiss('cancel');
  247 + $scope.showAlert('success', $translate.instant('MSG.REGISTRO_EXCLUIDO'));
  248 + $scope.fetchResult();
  249 + $scope.setLoading(false);
  250 + }
  251 + });
  252 +
  253 + }
  254 + });
  255 +
  256 + } else {
  257 +
  258 + $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_SER_REMOVIDO'));
  259 + }
  260 +
  261 + };
219 262  
220 263  
221 264 //INICIO DE METODOS REFERENTES AOS RELATORIOS
... ...
citgrp-patrimonio-web/src/main/webapp/assets/js/angular/custom/controller/BemPatrimonialController.js
... ... @@ -204,11 +204,18 @@ citApp.controller(&#39;BemPatrimonialController&#39;, [&#39;$scope&#39;, &#39;BemPatrimonialReposito
204 204 $scope.setLoadingSalva(true);
205 205  
206 206 BemPatrimonialRepository.alterarBem($scope.bemPatrimonialAlteracao).then(function(result) {
207   - $scope.showAlert("success", $translate.instant('MSG.MG001'));
208   - $scope.bemPatrimonialForm.$submitted = false;
209   - $scope.setLoading(false);
  207 + if (result.originalElement && result.originalElement.status != undefined && !result.originalElement.status && result.originalElement.mensagens) {
  208 + $scope.setLoading(false);
  209 + angular.forEach(result.originalElement.mensagens, function (mensagem) {
  210 + $scope.showAlert(mensagem.tipoMensagem, $translate.instant(mensagem.mensagem));
  211 + });
  212 + } else {
  213 + $scope.showAlert("success", $translate.instant('MSG.MG001'));
  214 + $scope.bemPatrimonialForm.$submitted = false;
  215 + $scope.setLoading(false);
210 216  
211   - $scope.getBemPatrimonial($scope.bemPatrimonial.id, $scope.edit);
  217 + $scope.getBemPatrimonial($scope.bemPatrimonial.id, $scope.edit);
  218 + }
212 219 });
213 220 };
214 221  
... ...
citgrp-patrimonio-web/src/main/webapp/assets/js/angular/custom/controller/EntradaController.js
... ... @@ -31,11 +31,11 @@ citApp.factory(&#39;PatrimonioService&#39;, [&#39;BemPatrimonialRepository&#39;, &#39;$rootScope&#39;, f
31 31 citApp.controller('EntradaController', ['$scope', '$timeout', 'FileUploader', 'EntradaRepository', 'DominioRepository', 'EntradaItemRepository',
32 32 'EstruturaOrganizacionalRepository', 'FornecedorRepository', 'ParceiroRepository', 'BemPatrimonialTemporarioRepository',
33 33 'MaterialRepository', 'BemPatrimonialRepository', '$filter', '$translate', '$modal', '$rootScope',
34   - 'ConfiguracaoParametroSistemaRepository', '$q', 'EstruturaOrganizacionalPatrimonioRepository', 'TransferenciaItemRepository', 'ContaContabilRepository',
  34 + 'ConfiguracaoParametroSistemaRepository', '$q', 'EstruturaOrganizacionalPatrimonioRepository', 'TransferenciaItemRepository', 'ContaContabilRepository', 'OrganizacaoRepository',
35 35 function EntradaController($scope, $timeout, FileUploader, EntradaRepository, DominioRepository, EntradaItemRepository,
36 36 EstruturaOrganizacionalRepository, FornecedorRepository, ParceiroRepository, BemPatrimonialTemporarioRepository,
37 37 MaterialRepository, BemPatrimonialRepository, $filter, $translate, $modal, $rootScope, ConfiguracaoParametroSistemaRepository, $q,
38   - EstruturaOrganizacionalPatrimonioRepository, TransferenciaItemRepository, ContaContabilRepository) {
  38 + EstruturaOrganizacionalPatrimonioRepository, TransferenciaItemRepository, ContaContabilRepository, OrganizacaoRepository) {
39 39  
40 40 var CODIGO_DOMINIO_TIPO_RECEBIMENTO_COMPRA_ORCAMENTARIA = 1;
41 41  
... ... @@ -275,77 +275,84 @@ citApp.controller(&#39;EntradaController&#39;, [&#39;$scope&#39;, &#39;$timeout&#39;, &#39;FileUploader&#39;, &#39;E
275 275 valorUnitario: $scope.entradaItem.valorUnitario
276 276 };
277 277  
278   - EntradaItemRepository.save(entradaItemTemp).then(function(resultEntradaItem) {
279   -
280   - var entradaItem = resultEntradaItem.originalElement;
281   - if ($scope.bemPatrimonial.dataInicialGarantia){
282   -
283   - entradaItem.dataInicialGarantia = $scope.bemPatrimonial.dataInicialGarantia;
284   - }
285   -
286   - if ($scope.bemPatrimonial.dataFinalGarantia) {
287   -
288   - entradaItem.dataFinalGarantia = $scope.bemPatrimonial.dataFinalGarantia;
289   - }
290   -
291   - if (idOld) {
292   - $scope.itensDeEntrada.forEach(function(entrada) {
293   - if (entrada.$checked) {
294   - entrada.material = entradaItem.material;
295   - entrada.quantidade = entradaItem.quantidade;
296   - entrada.valor = entradaItem.valor;
297   - }
298   - });
299   - $scope.editaInfoEntrada = false;
300   - } else {
301   - $scope.checkEntradaItem(entradaItem);
302   - $scope.itensDeEntrada.push(entradaItem);
303   - }
304   -
305   - $scope.entradaItem.material = '';
306   - $scope.entradaItem.quantidade = '';
307   - $scope.entradaItem.valor = '';
308   - $scope.valorUnitario = '';
309   - $scope.calcularValorTotal();
310   - $scope.showAtributosEmMassa = false;
311   - $scope.checkAllItem = false;
312   -
313   - var situacaoFisica = null;
314   - if ($scope.bemPatrimonial.dominioSituacaoFisica) {
315   - situacaoFisica = {codigo: $scope.bemPatrimonial.dominioSituacaoFisica.codigo};
316   - }
317   -
318   - var statusBem = null;
319   - if ($scope.bemPatrimonial.dominioStatus) {
320   - statusBem = {codigo: $scope.bemPatrimonial.dominioStatus.codigo};
321   - }
322   -
323   - var bemReferencia = {
324   - entradaItem: {
325   - id: entradaItem.id
326   - },
327   - material: {id : $scope.entradaItem.material.id},
328   - numeroPatrimonial: numeroPatrimonialInicial,
329   - dominioSituacaoFisica: situacaoFisica,
330   - dominioStatus: statusBem,
331   - dataInicialGarantia: $scope.bemPatrimonial.dataInicialGarantia,
332   - dataFinalGarantia: $scope.bemPatrimonial.dataFinalGarantia,
333   - vidaUtilOriginal: $scope.bemPatrimonial.vidaUtilOriginal,
334   - percentualNaoDepreciavel: $scope.bemPatrimonial.percentualNaoDepreciavel
335   - };
336   - $scope.$modalInstance.dismiss('cancel');
337   -
338   - if (quantidade >= 500){
339   - $scope.setLoading(true, $translate.instant('PATRIMONIO.MSG.SALVANDO_MATERIAIS_ENTRADA_PATRIMONIO_GRANDE_QTD'));
340   - }
341   -
342   - BemPatrimonialTemporarioRepository.geraBensTemp(bemReferencia).then(function(result) {
343   -
344   - formEntradaItem.$submitted = false;
345   - $scope.setLoading(false);
346   - });
347   -
348   -
  278 + OrganizacaoRepository.get($scope.usuarioLogado.organizacao.id).then(function (result) {
  279 + $scope.organizacao = result.originalElement;
  280 +
  281 + if (!$scope.organizacao.emFechamento) {
  282 + EntradaItemRepository.save(entradaItemTemp).then(function(resultEntradaItem) {
  283 +
  284 + var entradaItem = resultEntradaItem.originalElement;
  285 + if ($scope.bemPatrimonial.dataInicialGarantia){
  286 +
  287 + entradaItem.dataInicialGarantia = $scope.bemPatrimonial.dataInicialGarantia;
  288 + }
  289 +
  290 + if ($scope.bemPatrimonial.dataFinalGarantia) {
  291 +
  292 + entradaItem.dataFinalGarantia = $scope.bemPatrimonial.dataFinalGarantia;
  293 + }
  294 +
  295 + if (idOld) {
  296 + $scope.itensDeEntrada.forEach(function(entrada) {
  297 + if (entrada.$checked) {
  298 + entrada.material = entradaItem.material;
  299 + entrada.quantidade = entradaItem.quantidade;
  300 + entrada.valor = entradaItem.valor;
  301 + }
  302 + });
  303 + $scope.editaInfoEntrada = false;
  304 + } else {
  305 + $scope.checkEntradaItem(entradaItem);
  306 + $scope.itensDeEntrada.push(entradaItem);
  307 + }
  308 +
  309 + $scope.entradaItem.material = '';
  310 + $scope.entradaItem.quantidade = '';
  311 + $scope.entradaItem.valor = '';
  312 + $scope.valorUnitario = '';
  313 + $scope.calcularValorTotal();
  314 + $scope.showAtributosEmMassa = false;
  315 + $scope.checkAllItem = false;
  316 +
  317 + var situacaoFisica = null;
  318 + if ($scope.bemPatrimonial.dominioSituacaoFisica) {
  319 + situacaoFisica = {codigo: $scope.bemPatrimonial.dominioSituacaoFisica.codigo};
  320 + }
  321 +
  322 + var statusBem = null;
  323 + if ($scope.bemPatrimonial.dominioStatus) {
  324 + statusBem = {codigo: $scope.bemPatrimonial.dominioStatus.codigo};
  325 + }
  326 +
  327 + var bemReferencia = {
  328 + entradaItem: {
  329 + id: entradaItem.id
  330 + },
  331 + material: {id : $scope.entradaItem.material.id},
  332 + numeroPatrimonial: numeroPatrimonialInicial,
  333 + dominioSituacaoFisica: situacaoFisica,
  334 + dominioStatus: statusBem,
  335 + dataInicialGarantia: $scope.bemPatrimonial.dataInicialGarantia,
  336 + dataFinalGarantia: $scope.bemPatrimonial.dataFinalGarantia,
  337 + vidaUtilOriginal: $scope.bemPatrimonial.vidaUtilOriginal,
  338 + percentualNaoDepreciavel: $scope.bemPatrimonial.percentualNaoDepreciavel
  339 + };
  340 + $scope.$modalInstance.dismiss('cancel');
  341 +
  342 + if (quantidade >= 500){
  343 + $scope.setLoading(true, $translate.instant('PATRIMONIO.MSG.SALVANDO_MATERIAIS_ENTRADA_PATRIMONIO_GRANDE_QTD'));
  344 + }
  345 +
  346 + BemPatrimonialTemporarioRepository.geraBensTemp(bemReferencia).then(function(result) {
  347 +
  348 + formEntradaItem.$submitted = false;
  349 + $scope.setLoading(false);
  350 + });
  351 + });
  352 + } else {
  353 + $scope.setLoading(false);
  354 + $scope.showAlert('warning', $translate.instant('MSG.ORGANIZACAO_EM_FECHAMENTO_MES'));
  355 + }
349 356 });
350 357 }else{
351 358 $scope.setLoading(false);
... ... @@ -502,9 +509,16 @@ citApp.controller(&#39;EntradaController&#39;, [&#39;$scope&#39;, &#39;$timeout&#39;, &#39;FileUploader&#39;, &#39;E
502 509  
503 510 $scope.$modalConfirmInstance.dismiss('cancel');
504 511 EntradaItemRepository.remove($scope.entradaItem).then(function(result) {
505   - $scope.itensDeEntrada.splice(index, 1);
506   - $scope.calcularValorTotal();
507   - $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO'));
  512 + if (result.originalElement && result.originalElement.status != undefined && !result.originalElement.status && result.originalElement.mensagens) {
  513 + $scope.setLoading(false);
  514 + angular.forEach(result.originalElement.mensagens, function (mensagem) {
  515 + $scope.showAlert(mensagem.tipoMensagem, $translate.instant(mensagem.mensagem));
  516 + });
  517 + } else {
  518 + $scope.itensDeEntrada.splice(index, 1);
  519 + $scope.calcularValorTotal();
  520 + $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO'));
  521 + }
508 522 });
509 523 }
510 524 });
... ... @@ -671,7 +685,7 @@ citApp.controller(&#39;EntradaController&#39;, [&#39;$scope&#39;, &#39;$timeout&#39;, &#39;FileUploader&#39;, &#39;E
671 685 item.checked ? $scope.qtdeChecked++ : null;
672 686 });
673 687 }
674   - }
  688 + };
675 689  
676 690 // prepara a exclusao da entrada abrindo o modal de confirmacao
677 691 $scope.remove = function(workspace) {
... ... @@ -696,14 +710,21 @@ citApp.controller(&#39;EntradaController&#39;, [&#39;$scope&#39;, &#39;$timeout&#39;, &#39;FileUploader&#39;, &#39;E
696 710 var workspace = this.item;
697 711  
698 712 EntradaRepository.remove($scope.entrada).then(function(result) {
699   - if (result) {
700   - $scope.showAlert('success', $translate.instant('MSG.REGISTRO_EXCLUIDO'));
701   - $scope.$showPageSearchWorkspace(workspace);
702   - $scope.atualizarLista('EntradaListControllerId');
703   - } else {
704   - $scope.showAlert('error', $translate.instant('PATRIMONIO.VALIDACAO.EXCLUSAO_ENTRADA_IMPOSSIVEL'));
705   - }
706   - $scope.$modalConfirmInstance.dismiss('cancel');
  713 + if (result.originalElement && result.originalElement.status != undefined && !result.originalElement.status && result.originalElement.mensagens) {
  714 + $scope.setLoading(false);
  715 + angular.forEach(result.originalElement.mensagens, function (mensagem) {
  716 + $scope.showAlert(mensagem.tipoMensagem, $translate.instant(mensagem.mensagem));
  717 + });
  718 + } else {
  719 + if (result) {
  720 + $scope.showAlert('success', $translate.instant('MSG.REGISTRO_EXCLUIDO'));
  721 + $scope.$showPageSearchWorkspace(workspace);
  722 + $scope.atualizarLista('EntradaListControllerId');
  723 + } else {
  724 + $scope.showAlert('error', $translate.instant('PATRIMONIO.VALIDACAO.EXCLUSAO_ENTRADA_IMPOSSIVEL'));
  725 + }
  726 + $scope.$modalConfirmInstance.dismiss('cancel');
  727 + }
707 728 });
708 729  
709 730 };
... ... @@ -1154,25 +1175,31 @@ citApp.controller(&#39;EntradaController&#39;, [&#39;$scope&#39;, &#39;$timeout&#39;, &#39;FileUploader&#39;, &#39;E
1154 1175 });
1155 1176  
1156 1177 EntradaRepository.save($scope.entrada).then(function(result) {
  1178 + if (result.originalElement.status != undefined && !result.originalElement.status && result.originalElement.mensagens) {
  1179 + $scope.setLoading(false);
  1180 + angular.forEach(result.originalElement.mensagens, function (mensagem) {
  1181 + $scope.showAlert(mensagem.tipoMensagem, $translate.instant(mensagem.mensagem));
  1182 + });
  1183 + } else {
  1184 + $scope.entrada = result.originalElement;
  1185 +
  1186 + if ($scope.entrada.fornecedor) {
  1187 + $scope.entrada.fornecedor['pessoa.nome'] = $scope.entrada.fornecedor.pessoa.nome;
  1188 + }
1157 1189  
1158   - $scope.entrada = result.originalElement;
1159   -
1160   - if ($scope.entrada.fornecedor) {
1161   - $scope.entrada.fornecedor['pessoa.nome'] = $scope.entrada.fornecedor.pessoa.nome;
1162   - }
  1190 + $scope.setLoading(false);
1163 1191  
1164   - $scope.setLoading(false);
1165   -
1166   - // depois de salvar a baixa ja tendo uma referencia do id da baixa, esse metodo ira salvar os documentos se existir
1167   - salvarListaDocumentos(entradaTemp);
  1192 + // depois de salvar a baixa ja tendo uma referencia do id da baixa, esse metodo ira salvar os documentos se existir
  1193 + salvarListaDocumentos(entradaTemp);
1168 1194  
1169   - EntradaItemRepository.findAllByEntrada($scope.entrada.id).then(function(result) {
1170   - $scope.itensDeEntrada = [];
1171   - for (var i = 0; i < result.length; i++) {
1172   - $scope.itensDeEntrada.push(result[i].originalElement);
1173   - }
1174   - $scope.calcularValorTotal();
1175   - });
  1195 + EntradaItemRepository.findAllByEntrada($scope.entrada.id).then(function(result) {
  1196 + $scope.itensDeEntrada = [];
  1197 + for (var i = 0; i < result.length; i++) {
  1198 + $scope.itensDeEntrada.push(result[i].originalElement);
  1199 + }
  1200 + $scope.calcularValorTotal();
  1201 + });
  1202 + }
1176 1203 });
1177 1204 });
1178 1205  
... ... @@ -1333,46 +1360,53 @@ citApp.controller(&#39;EntradaController&#39;, [&#39;$scope&#39;, &#39;$timeout&#39;, &#39;FileUploader&#39;, &#39;E
1333 1360  
1334 1361 EntradaRepository.save($scope.entrada).then(function(result) {
1335 1362  
1336   - $scope.entrada = result.originalElement;
1337   -
1338   - if ($scope.entrada.fornecedor) {
1339   - $scope.entrada.fornecedor['pessoa.nome'] = $scope.entrada.fornecedor.pessoa.nome;
1340   - }
1341   -
1342   - $scope.setLoading(false);
1343   -
1344   - // depois de salvar a baixa ja tendo uma referencia do id da baixa, esse metodo ira salvar os documentos se existir
1345   - salvarListaDocumentos(entradaTemp);
1346   -
1347   - EntradaItemRepository.findAllByEntrada($scope.entrada.id).then(function(result) {
1348   - $scope.itensDeEntrada = [];
1349   - for (var i = 0; i < result.length; i++) {
1350   - $scope.itensDeEntrada.push(result[i].originalElement);
1351   - }
1352   - $scope.calcularValorTotal();
1353   -
1354   -
1355   - var dataContabilAntiga = angular.copy($scope.entrada.dataContabil);
1356   -
1357   - $scope.setLoadingSalva(true);
1358   -
1359   - if (dataContabilAntiga && !dataContabil) {
1360   - TransferenciaItemRepository.buscarTransferenciaComBensPatrimonaisDaEntrada($scope.entrada.id).then(function(result) {
1361   - if (result.length > 0) {
1362   - var transferencias = "";
1363   - for (var i = 0; i < result.length; i++) {
1364   - transferencias += result[i] + "; ";
1365   - }
1366   - $scope.setLoading(false);
1367   - $scope.showAlert('warning', $translate.instant('PATRIMONIO.VALIDACAO.ENTRADA_DESCONTABILIZACAO_COM_TRANSFERENCIA') + transferencias);
1368   - } else {
1369   - concluir(dataContabil);
1370   - }
1371   - });
1372   - } else {
1373   - concluir(dataContabil);
1374   - }
1375   - });
  1363 + if (result.originalElement.status != undefined && !result.originalElement.status && result.originalElement.mensagens) {
  1364 + $scope.setLoading(false);
  1365 + angular.forEach(result.originalElement.mensagens, function (mensagem) {
  1366 + $scope.showAlert(mensagem.tipoMensagem, $translate.instant(mensagem.mensagem));
  1367 + });
  1368 + } else {
  1369 + $scope.entrada = result.originalElement;
  1370 +
  1371 + if ($scope.entrada.fornecedor) {
  1372 + $scope.entrada.fornecedor['pessoa.nome'] = $scope.entrada.fornecedor.pessoa.nome;
  1373 + }
  1374 +
  1375 + $scope.setLoading(false);
  1376 +
  1377 + // depois de salvar a baixa ja tendo uma referencia do id da baixa, esse metodo ira salvar os documentos se existir
  1378 + salvarListaDocumentos(entradaTemp);
  1379 +
  1380 + EntradaItemRepository.findAllByEntrada($scope.entrada.id).then(function(result) {
  1381 + $scope.itensDeEntrada = [];
  1382 + for (var i = 0; i < result.length; i++) {
  1383 + $scope.itensDeEntrada.push(result[i].originalElement);
  1384 + }
  1385 + $scope.calcularValorTotal();
  1386 +
  1387 +
  1388 + var dataContabilAntiga = angular.copy($scope.entrada.dataContabil);
  1389 +
  1390 + $scope.setLoadingSalva(true);
  1391 +
  1392 + if (dataContabilAntiga && !dataContabil) {
  1393 + TransferenciaItemRepository.buscarTransferenciaComBensPatrimonaisDaEntrada($scope.entrada.id).then(function(result) {
  1394 + if (result.length > 0) {
  1395 + var transferencias = "";
  1396 + for (var i = 0; i < result.length; i++) {
  1397 + transferencias += result[i] + "; ";
  1398 + }
  1399 + $scope.setLoading(false);
  1400 + $scope.showAlert('warning', $translate.instant('PATRIMONIO.VALIDACAO.ENTRADA_DESCONTABILIZACAO_COM_TRANSFERENCIA') + transferencias);
  1401 + } else {
  1402 + concluir(dataContabil);
  1403 + }
  1404 + });
  1405 + } else {
  1406 + concluir(dataContabil);
  1407 + }
  1408 + });
  1409 + }
1376 1410 });
1377 1411  
1378 1412 } else {
... ... @@ -1882,8 +1916,8 @@ citApp.controller(&#39;EntradaController&#39;, [&#39;$scope&#39;, &#39;$timeout&#39;, &#39;FileUploader&#39;, &#39;E
1882 1916  
1883 1917 // Controla se o usuario pode avancar o fluxo no wizard, validando os itens obrigatórios
1884 1918 function permiteAvancoFluxo() {
1885   -
1886   - $scope.permitidoAvancar = true;
  1919 +
  1920 + $scope.permitidoAvancar = true;
1887 1921 $scope.dadosEntradaForm.$submitted = false;
1888 1922 $scope.materiaisEntradaForm.$submitted = false;
1889 1923 $scope.bensPatrimoniaisMaterialForm.$submitted = false;
... ... @@ -1943,7 +1977,7 @@ citApp.controller(&#39;EntradaController&#39;, [&#39;$scope&#39;, &#39;$timeout&#39;, &#39;FileUploader&#39;, &#39;E
1943 1977  
1944 1978 }
1945 1979  
1946   - if (!$scope.permitidoAvancar && !$scope.stepValid) {
  1980 + if (!$scope.permitidoAvancar && !$scope.stepValid && !$scope.organizacao.emFechamento) {
1947 1981  
1948 1982 //Mensagem de erro de campos obrigatorios nao preenchidos
1949 1983 $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'), " ", false);
... ... @@ -1971,44 +2005,48 @@ citApp.controller(&#39;EntradaController&#39;, [&#39;$scope&#39;, &#39;$timeout&#39;, &#39;FileUploader&#39;, &#39;E
1971 2005 $scope.setCurrentStep = function(step) {
1972 2006  
1973 2007 $scope.setLoadingGet(true);
1974   -
1975   - // Condicional apenas porque as datas perdem o formato na mudanca de passos
1976   - if (step === 0) {
1977   -
1978   - $scope.entrada.dataRecebimento = $filter('date')($scope.entrada.dataRecebimento, "dd/MM/yyyy");
1979   - $scope.entrada.dataContabil = $filter('date')($scope.entrada.dataContabil, "dd/MM/yyyy");
1980   - $scope.entrada.dataReferencia = $filter('date')($scope.entrada.dataReferencia, "dd/MM/yyyy");
1981   - if ($scope.entrada.fornecedor) {
1982   - $scope.entrada.fornecedor['pessoa.nome'] = $scope.entrada.fornecedor.pessoa.nome;
1983   - }
1984   -
1985   - $scope.associarCaracteristicas = false;
1986   - }
1987   -
1988   - if (step <= ($scope.step - 1)) {
1989   -
1990   - $scope.step = step;
1991   -
1992   - } else {
1993   -
1994   - if (!$scope.edit) {
1995   -
1996   - $scope.permitidoAvancar = true;
1997   -
1998   - } else {
1999   -
2000   - permiteAvancoFluxo();
2001   -
2002   - }
2003   -
2004   - if ($scope.permitidoAvancar) {
2005   -
2006   - $scope.step = step;
2007   -
2008   - }
2009   - }
2010   -
2011   - $scope.setLoading(false);
  2008 +
  2009 + OrganizacaoRepository.get($scope.usuarioLogado.organizacao.id).then(function (result) {
  2010 + $scope.organizacao = result.originalElement;
  2011 +
  2012 + // Condicional apenas porque as datas perdem o formato na mudanca de passos
  2013 + if (step === 0) {
  2014 +
  2015 + $scope.entrada.dataRecebimento = $filter('date')($scope.entrada.dataRecebimento, "dd/MM/yyyy");
  2016 + $scope.entrada.dataContabil = $filter('date')($scope.entrada.dataContabil, "dd/MM/yyyy");
  2017 + $scope.entrada.dataReferencia = $filter('date')($scope.entrada.dataReferencia, "dd/MM/yyyy");
  2018 + if ($scope.entrada.fornecedor) {
  2019 + $scope.entrada.fornecedor['pessoa.nome'] = $scope.entrada.fornecedor.pessoa.nome;
  2020 + }
  2021 +
  2022 + $scope.associarCaracteristicas = false;
  2023 + }
  2024 +
  2025 + if (step <= ($scope.step - 1)) {
  2026 +
  2027 + $scope.step = step;
  2028 +
  2029 + } else {
  2030 +
  2031 + if (!$scope.edit) {
  2032 +
  2033 + $scope.permitidoAvancar = true;
  2034 +
  2035 + } else {
  2036 +
  2037 + permiteAvancoFluxo();
  2038 +
  2039 + }
  2040 +
  2041 + if ($scope.permitidoAvancar) {
  2042 +
  2043 + $scope.step = step;
  2044 +
  2045 + }
  2046 + }
  2047 +
  2048 + $scope.setLoading(false);
  2049 + });
2012 2050  
2013 2051 };
2014 2052  
... ... @@ -2049,7 +2087,10 @@ citApp.controller(&#39;EntradaController&#39;, [&#39;$scope&#39;, &#39;$timeout&#39;, &#39;FileUploader&#39;, &#39;E
2049 2087 $scope.handleNext = function () {
2050 2088  
2051 2089  
2052   - $scope.setLoadingGet(true);
  2090 + $scope.setLoadingGet(true);
  2091 +
  2092 + OrganizacaoRepository.get($scope.usuarioLogado.organizacao.id).then(function (result) {
  2093 + $scope.organizacao = result.originalElement;
2053 2094  
2054 2095 if(!$scope.edit){
2055 2096  
... ... @@ -2068,60 +2109,72 @@ citApp.controller(&#39;EntradaController&#39;, [&#39;$scope&#39;, &#39;$timeout&#39;, &#39;FileUploader&#39;, &#39;E
2068 2109 }
2069 2110  
2070 2111 $scope.setLoading(false);
  2112 + });
2071 2113  
2072 2114 };
2073 2115  
2074 2116  
2075 2117 // Funcao especifica que retorna se o formulario de dados da entrada esta valido
2076 2118 function validStepDadosEntrada() {
  2119 + $scope.stepValid = true;
  2120 + if (!$scope.organizacao.emFechamento) {
  2121 +
  2122 + if ($scope.dadosEntradaForm.$invalid) {
2077 2123  
2078   - $scope.stepValid = true;
  2124 + $scope.stepValid = false;
2079 2125  
2080   - if ($scope.dadosEntradaForm.$invalid) {
  2126 + } else if ($scope.entrada.dataContabil) {
2081 2127  
2082   - $scope.stepValid = false;
  2128 + if (!$scope.validarDataTransferencia($scope.entrada.dataContabil)) {
2083 2129  
2084   - } else if ($scope.entrada.dataContabil) {
  2130 + $scope.permitidoAvancar = false;
  2131 + $scope.showAlert('error', $translate.instant('MSG.MN019'));
  2132 + }
2085 2133  
2086   - if (!$scope.validarDataTransferencia($scope.entrada.dataContabil)) {
  2134 + } else if (!validarDataRecebimento($scope.entrada.dataRecebimento)) {
2087 2135  
2088 2136 $scope.permitidoAvancar = false;
2089   - $scope.showAlert('error', $translate.instant('MSG.MN019'));
2090   - }
2091   -
2092   - } else if (!validarDataRecebimento($scope.entrada.dataRecebimento)) {
2093   -
2094   - $scope.permitidoAvancar = false;
2095   - $scope.showAlert('error', $translate.instant('PATRIMONIO.VALIDACAO.DATA_RECEBIMENTO'));
  2137 + $scope.showAlert('error', $translate.instant('PATRIMONIO.VALIDACAO.DATA_RECEBIMENTO'));
2096 2138  
2097   - }
  2139 + }
2098 2140  
2099   - return $scope.stepValid;
  2141 + return $scope.stepValid;
  2142 + } else {
  2143 + $scope.showAlert('warning', $translate.instant('MSG.ORGANIZACAO_EM_FECHAMENTO_MES'));
  2144 +
  2145 + $scope.permitidoAvancar = false;
  2146 + return $scope.stepValid;
  2147 + }
2100 2148  
2101 2149 };
2102 2150  
2103 2151 // Funcao especifica que retorna se o formulario de materiais da entrada esta valido
2104 2152 function validStepMateriaisEntrada() {
  2153 + $scope.stepValid = true;
  2154 + if (!$scope.organizacao.emFechamento) {
2105 2155  
2106   - $scope.stepValid = true;
2107   -
2108   - if($scope.materiaisEntradaForm.$invalid){
2109   -
2110   - $scope.stepValid = false;
  2156 + if($scope.materiaisEntradaForm.$invalid){
2111 2157  
2112   - } else if ($scope.itensDeEntrada && $scope.itensDeEntrada.length === 0){
  2158 + $scope.stepValid = false;
2113 2159  
2114   - $scope.stepValid = false;
2115   - $scope.permitidoAvancar = false;
  2160 + } else if ($scope.itensDeEntrada && $scope.itensDeEntrada.length === 0){
2116 2161  
2117   - } else if($scope.entrada.valorTotalNota < $scope.valorTotalLancado) {
2118   -
2119   - $scope.showAlert('error', $translate.instant('ALMOXARIFADO.VALIDACAO.NOTA_FISCAL_IGUAL_VALOR_INFORMADO'));
2120   - $scope.permitidoAvancar = false;
2121   - }
  2162 + $scope.stepValid = false;
  2163 + $scope.permitidoAvancar = false;
2122 2164  
2123   - return $scope.stepValid;
  2165 + } else if($scope.entrada.valorTotalNota < $scope.valorTotalLancado) {
  2166 +
  2167 + $scope.showAlert('error', $translate.instant('ALMOXARIFADO.VALIDACAO.NOTA_FISCAL_IGUAL_VALOR_INFORMADO'));
  2168 + $scope.permitidoAvancar = false;
  2169 + }
2124 2170  
  2171 + return $scope.stepValid;
  2172 + } else {
  2173 + $scope.showAlert('warning', $translate.instant('MSG.ORGANIZACAO_EM_FECHAMENTO_MES'));
  2174 +
  2175 + $scope.permitidoAvancar = false;
  2176 + return $scope.stepValid;
  2177 + }
2125 2178 };
2126 2179  
2127 2180 // Funcao especifica que retorna se o formulario de bens Patrimoniais esta valido
... ... @@ -2140,15 +2193,21 @@ citApp.controller(&#39;EntradaController&#39;, [&#39;$scope&#39;, &#39;$timeout&#39;, &#39;FileUploader&#39;, &#39;E
2140 2193 // Funcao especifica que retorna se o formulario de documentos da entrada esta valido
2141 2194 function validStepDocumentosEntrada() {
2142 2195  
2143   - $scope.stepValid = true;
2144   -
  2196 + $scope.stepValid = true;
  2197 + if (!$scope.organizacao.emFechamento) {
2145 2198  
2146   - if ($scope.documentosEntradaForm.$invalid || !$scope.entrada.documentos.length > 0){
  2199 + if ($scope.documentosEntradaForm.$invalid || !$scope.entrada.documentos.length > 0){
2147 2200  
2148   - $scope.stepValid = false;
2149   - }
  2201 + $scope.stepValid = false;
  2202 + }
2150 2203  
2151   - return $scope.stepValid;
  2204 + return $scope.stepValid;
  2205 + } else {
  2206 + $scope.showAlert('warning', $translate.instant('MSG.ORGANIZACAO_EM_FECHAMENTO_MES'));
  2207 +
  2208 + $scope.permitidoAvancar = false;
  2209 + return $scope.stepValid;
  2210 + }
2152 2211  
2153 2212 };;
2154 2213  
... ...
citgrp-patrimonio-web/src/main/webapp/assets/js/angular/custom/controller/EntradaListController.js
... ... @@ -110,14 +110,21 @@ citApp.controller(&#39;EntradaListController&#39;, [&#39;$scope&#39;, &#39;EntradaRepository&#39;, &#39;$tra
110 110 var entrada = this.item;
111 111  
112 112 EntradaRepository.remove(entrada).then(function(result) {
113   - $scope.setLoading(false);
114   - if(result){
115   - $scope.showAlert('success', $translate.instant('MSG.REGISTRO_EXCLUIDO'));
116   - $scope.atualizarLista('EntradaListControllerId');
117   - }else{
118   - $scope.showAlert('error', $translate.instant('PATRIMONIO.VALIDACAO.EXCLUSAO_ENTRADA_IMPOSSIVEL'));
  113 + if (result.originalElement && result.originalElement.status != undefined && !result.originalElement.status && result.originalElement.mensagens) {
  114 + $scope.setLoading(false);
  115 + angular.forEach(result.originalElement.mensagens, function (mensagem) {
  116 + $scope.showAlert(mensagem.tipoMensagem, $translate.instant(mensagem.mensagem));
  117 + });
  118 + } else {
  119 + $scope.setLoading(false);
  120 + if(result){
  121 + $scope.showAlert('success', $translate.instant('MSG.REGISTRO_EXCLUIDO'));
  122 + $scope.atualizarLista('EntradaListControllerId');
  123 + }else{
  124 + $scope.showAlert('error', $translate.instant('PATRIMONIO.VALIDACAO.EXCLUSAO_ENTRADA_IMPOSSIVEL'));
  125 + }
  126 + $scope.$modalConfirmInstance.dismiss('cancel');
119 127 }
120   - $scope.$modalConfirmInstance.dismiss('cancel');
121 128 });
122 129  
123 130 };
... ...
citgrp-patrimonio-web/src/main/webapp/assets/js/angular/custom/controller/InventarioController.js
... ... @@ -2390,38 +2390,42 @@ citApp.controller(&#39;InventarioController&#39;, [&#39;$scope&#39;, &#39;$filter&#39;, &#39;$translate&#39;, &#39;$
2390 2390  
2391 2391 // Salva transferência interna
2392 2392 TransferenciaRepository.save($scope.transferencia).then(function(result){
2393   -
2394   - $timeout(function(){
2395   - // Salva a alteração do dominío inconsistência - Data tratamento
2396   - DominioRepository.buscaDominioByCodigoAndChave(4, 'tipoTratamentoInconsistencia').then(function(result) {
2397   - if($scope.dominioInconsistencia){
2398   - $scope.dominioInconsistencia.dominioTrataInconsistencia = result.originalElement;
2399   - }else{
2400   - $scope.dominioInconsistencia = {dominioTrataInconsistencia : result.originalElement};
2401   - }
2402   - alterarDominioInconsistencia($scope.dominioInconsistencia);
  2393 + if (result.originalElement && result.originalElement.status != undefined && !result.originalElement.status && result.originalElement.mensagens) {
  2394 + $scope.setLoading(false);
  2395 + angular.forEach(result.originalElement.mensagens, function (mensagem) {
  2396 + $scope.showAlert(mensagem.tipoMensagem, $translate.instant(mensagem.mensagem));
  2397 + });
  2398 + } else {
  2399 + $timeout(function(){
  2400 + // Salva a alteração do dominío inconsistência - Data tratamento
  2401 + DominioRepository.buscaDominioByCodigoAndChave(4, 'tipoTratamentoInconsistencia').then(function(result) {
  2402 + if($scope.dominioInconsistencia){
  2403 + $scope.dominioInconsistencia.dominioTrataInconsistencia = result.originalElement;
  2404 + }else{
  2405 + $scope.dominioInconsistencia = {dominioTrataInconsistencia : result.originalElement};
  2406 + }
  2407 + alterarDominioInconsistencia($scope.dominioInconsistencia);
  2408 + });
2403 2409 });
2404   - });
2405 2410  
2406   - if($scope.executarTransferenciaModalConfirm){
2407   - $scope.$modalConfirmInstance.dismiss('cancel');
  2411 + if($scope.executarTransferenciaModalConfirm){
  2412 + $scope.$modalConfirmInstance.dismiss('cancel');
2408 2413  
2409   - $scope.tratarInconsistenciasAutomaticamente();
  2414 + $scope.tratarInconsistenciasAutomaticamente();
2410 2415  
2411   - } else {
2412   - $scope.$modalInstance.dismiss('cancel');
2413   - $scope.setLoading(false);
2414   - }
  2416 + } else {
  2417 + $scope.$modalInstance.dismiss('cancel');
  2418 + $scope.setLoading(false);
  2419 + }
2415 2420  
2416   - // Executou transferencia de bem que tem adicao bem principal
2417   - if($scope.bemPatrimonialTemp && $scope.bemPatrimonialTemp.bensAdicionais.length > 0 || $scope.bemPatrimonialTemp && $scope.bemPatrimonialTemp.possuiBemPrincipal) {
  2421 + // Executou transferencia de bem que tem adicao bem principal
  2422 + if($scope.bemPatrimonialTemp && $scope.bemPatrimonialTemp.bensAdicionais.length > 0 || $scope.bemPatrimonialTemp && $scope.bemPatrimonialTemp.possuiBemPrincipal) {
2418 2423  
2419   - InventarioBemPatrimonialRepository.alterarTratamentoInconsistenciaBemPrincipal($scope.bemPatrimonialTemp.id, $scope.inventario.id).then(function(result){
2420   - $scope.getBensPatrimoniaisEstruturaOrganizacional($scope.dadosBemPatrimonialSelecionado.inventarioBemPatrimonial.estruturaOrganizacionalAtual);
2421   - });
  2424 + InventarioBemPatrimonialRepository.alterarTratamentoInconsistenciaBemPrincipal($scope.bemPatrimonialTemp.id, $scope.inventario.id).then(function(result){
  2425 + $scope.getBensPatrimoniaisEstruturaOrganizacional($scope.dadosBemPatrimonialSelecionado.inventarioBemPatrimonial.estruturaOrganizacionalAtual);
  2426 + });
  2427 + }
2422 2428 }
2423   -
2424   -
2425 2429 });
2426 2430 };
2427 2431  
... ... @@ -2882,20 +2886,27 @@ citApp.controller(&#39;InventarioController&#39;, [&#39;$scope&#39;, &#39;$filter&#39;, &#39;$translate&#39;, &#39;$
2882 2886 // Salva a baixa
2883 2887 BaixaRepository.save($scope.baixaBem).then(function(result) {
2884 2888  
2885   - $timeout(function(){
2886   - // Salva a alteração do dominío inconsistência - Data tratamento
2887   - DominioRepository.buscaDominioByCodigoAndChave(2, 'tipoTratamentoInconsistencia').then(function(result) {
2888   - $scope.dominioInconsistencia.dominioTrataInconsistencia = result.originalElement;
2889   - alterarDominioInconsistencia($scope.dominioInconsistencia);
  2889 + if (result.originalElement && result.originalElement.status != undefined && !result.originalElement.status && result.originalElement.mensagens) {
  2890 + $scope.setLoading(false);
  2891 + angular.forEach(result.originalElement.mensagens, function (mensagem) {
  2892 + $scope.showAlert(mensagem.tipoMensagem, $translate.instant(mensagem.mensagem));
  2893 + });
  2894 + } else {
  2895 + $timeout(function(){
  2896 + // Salva a alteração do dominío inconsistência - Data tratamento
  2897 + DominioRepository.buscaDominioByCodigoAndChave(2, 'tipoTratamentoInconsistencia').then(function(result) {
  2898 + $scope.dominioInconsistencia.dominioTrataInconsistencia = result.originalElement;
  2899 + alterarDominioInconsistencia($scope.dominioInconsistencia);
  2900 + });
2890 2901 });
2891   - });
2892 2902  
2893   - if($scope.executarBaixaModalConfirm){
2894   - $scope.$modalConfirmInstance.dismiss('cancel');
2895   - $scope.tratarInconsistenciasAutomaticamente();
2896   - } else {
2897   - $scope.$modalInstance.dismiss('cancel');
2898   - $scope.setLoading(false);
  2903 + if($scope.executarBaixaModalConfirm){
  2904 + $scope.$modalConfirmInstance.dismiss('cancel');
  2905 + $scope.tratarInconsistenciasAutomaticamente();
  2906 + } else {
  2907 + $scope.$modalInstance.dismiss('cancel');
  2908 + $scope.setLoading(false);
  2909 + }
2899 2910 }
2900 2911  
2901 2912 });
... ... @@ -3551,14 +3562,21 @@ citApp.controller(&#39;InventarioController&#39;, [&#39;$scope&#39;, &#39;$filter&#39;, &#39;$translate&#39;, &#39;$
3551 3562 };
3552 3563  
3553 3564 BemPatrimonialRepository.alterarListaBemInconsistenciaTipo2(tratamentoInconsistencia).then(function(result){
3554   - $scope.$modalInstance.dismiss('cancel');
3555   - alterarDominioStatusInventarioEstrutura(result);
3556   - $scope.atualizarMultiplasInconsistenciasTipo2 = false;
3557   - $scope.setLoading(false);
3558   - $scope.scrollToCadastro('#atualizarMultiplosBensPatrimoniais');
3559   - $scope.showAlert("success", $translate.instant("MSG.MG001"));
3560   - $scope.getBensPatrimoniaisEstruturaOrganizacional($scope.estruturaOrganizacional);
3561   - $scope.irParaFim();
  3565 + if (result.originalElement && result.originalElement.status != undefined && !result.originalElement.status && result.originalElement.mensagens) {
  3566 + $scope.setLoading(false);
  3567 + angular.forEach(result.originalElement.mensagens, function (mensagem) {
  3568 + $scope.showAlert(mensagem.tipoMensagem, $translate.instant(mensagem.mensagem));
  3569 + });
  3570 + } else {
  3571 + $scope.$modalInstance.dismiss('cancel');
  3572 + alterarDominioStatusInventarioEstrutura(result);
  3573 + $scope.atualizarMultiplasInconsistenciasTipo2 = false;
  3574 + $scope.setLoading(false);
  3575 + $scope.scrollToCadastro('#atualizarMultiplosBensPatrimoniais');
  3576 + $scope.showAlert("success", $translate.instant("MSG.MG001"));
  3577 + $scope.getBensPatrimoniaisEstruturaOrganizacional($scope.estruturaOrganizacional);
  3578 + $scope.irParaFim();
  3579 + }
3562 3580 });
3563 3581  
3564 3582 };
... ... @@ -3858,13 +3876,20 @@ citApp.controller(&#39;InventarioController&#39;, [&#39;$scope&#39;, &#39;$filter&#39;, &#39;$translate&#39;, &#39;$
3858 3876 };
3859 3877  
3860 3878 BemPatrimonialRepository.alterarListaBemInconsistenciaTipo1(tratamentoInconsistencia).then(function(result){
3861   - alterarDominioStatusInventarioEstrutura(result);
3862   - $scope.setLoading(false);
3863   - $scope.scrollToCadastro('#atualizarMultiplosBensPatrimoniais');
3864   - $scope.showAlert("success", $translate.instant("MSG.MG001"));
3865   - $scope.getBensPatrimoniaisEstruturaOrganizacional($scope.estruturaOrganizacional);
3866   - $scope.$modalInstance.dismiss('cancel');
3867   - $scope.irParaFim();
  3879 + if (result.originalElement && result.originalElement.status != undefined && !result.originalElement.status && result.originalElement.mensagens) {
  3880 + $scope.setLoading(false);
  3881 + angular.forEach(result.originalElement.mensagens, function (mensagem) {
  3882 + $scope.showAlert(mensagem.tipoMensagem, $translate.instant(mensagem.mensagem));
  3883 + });
  3884 + } else {
  3885 + alterarDominioStatusInventarioEstrutura(result);
  3886 + $scope.setLoading(false);
  3887 + $scope.scrollToCadastro('#atualizarMultiplosBensPatrimoniais');
  3888 + $scope.showAlert("success", $translate.instant("MSG.MG001"));
  3889 + $scope.getBensPatrimoniaisEstruturaOrganizacional($scope.estruturaOrganizacional);
  3890 + $scope.$modalInstance.dismiss('cancel');
  3891 + $scope.irParaFim();
  3892 + }
3868 3893 });
3869 3894  
3870 3895 };
... ...
citgrp-patrimonio-web/src/main/webapp/assets/js/angular/custom/controller/TransferenciaController.js
... ... @@ -330,30 +330,37 @@ citApp.controller(&#39;TransferenciaController&#39;, [&#39;$scope&#39;, &#39;$filter&#39;, &#39;$timeout&#39;, &#39;
330 330  
331 331 function saveAposValidacoes(result) {
332 332 TransferenciaRepository.save($scope.transferencia).then(function(result) {
333   - $scope.estruturaOrganizacionalAdm = null;
334   - angular.forEach(result, function(transferencia) {
335   - angular.forEach(transferencia.documentos, function(documentoSalvo, key) {
336   - // verifica se a entidade documento foi salva
337   - if(documentoSalvo !== undefined && documentoSalvo.id !== undefined){
338   - // percorre todos os documentos temporarios para verificacao do numero do documento
339   - angular.forEach($scope.saidaTemp.documentos, function(documentoTransient, key) {
340   - // verifica se o numero do documento salvo e igual ao numero do documento transient que o anexo ainda esta vinculado
341   - if(documentoSalvo.numero === documentoTransient.numero){
342   - //salva o anexo ao documento que tiver o mesmo numero do documento transient
343   - salvarUpload(documentoSalvo, documentoTransient.uploadsDocumento);
344   - }
345   - });
346   - }
  333 + if (result.originalElement && result.originalElement.status != undefined && !result.originalElement.status && result.originalElement.mensagens) {
  334 + $scope.setLoading(false);
  335 + angular.forEach(result.originalElement.mensagens, function (mensagem) {
  336 + $scope.showAlert(mensagem.tipoMensagem, $translate.instant(mensagem.mensagem));
  337 + });
  338 + } else {
  339 + $scope.estruturaOrganizacionalAdm = null;
  340 + angular.forEach(result, function(transferencia) {
  341 + angular.forEach(transferencia.documentos, function(documentoSalvo, key) {
  342 + // verifica se a entidade documento foi salva
  343 + if(documentoSalvo !== undefined && documentoSalvo.id !== undefined){
  344 + // percorre todos os documentos temporarios para verificacao do numero do documento
  345 + angular.forEach($scope.saidaTemp.documentos, function(documentoTransient, key) {
  346 + // verifica se o numero do documento salvo e igual ao numero do documento transient que o anexo ainda esta vinculado
  347 + if(documentoSalvo.numero === documentoTransient.numero){
  348 + //salva o anexo ao documento que tiver o mesmo numero do documento transient
  349 + salvarUpload(documentoSalvo, documentoTransient.uploadsDocumento);
  350 + }
  351 + });
  352 + }
  353 + });
347 354 });
348   - });
349 355  
350 356  
351   - $scope.setLoading(false);
352   - $scope.showAlert("success", $translate.instant("MSG.MG001"));
353   - if(!$scope.edit){
354   - $scope.gerarReport();
  357 + $scope.setLoading(false);
  358 + $scope.showAlert("success", $translate.instant("MSG.MG001"));
  359 + if(!$scope.edit){
  360 + $scope.gerarReport();
  361 + }
  362 + $scope.resetForm();
355 363 }
356   - $scope.resetForm();
357 364 });
358 365 };
359 366  
... ... @@ -434,13 +441,20 @@ citApp.controller(&#39;TransferenciaController&#39;, [&#39;$scope&#39;, &#39;$filter&#39;, &#39;$timeout&#39;, &#39;
434 441 message: $translate.instant("MSG.CONFIRMA_EXCLUSAO"),
435 442 callback: function () {
436 443 $scope.setLoadingRemove(true);
437   - TransferenciaRepository.remove($scope.transferencia).then(function() {
438   - $scope.showAlert('success', $translate.instant('MSG.EXCLUSAO_SUCESSO'), " ", false);
439   - angular.element('#searchTransferencia').scope().fetchResult();
440   - $scope.$showPageSearchWorkspace($scope.workspace);
441   - angular.element('#searchTransferencia').scope().listaSelecionados = [];
442   - $scope.$modalConfirmInstance.dismiss('cancel');
443   - $scope.setLoading(false);
  444 + TransferenciaRepository.remove($scope.transferencia).then(function(result) {
  445 + if (result.originalElement && result.originalElement.status != undefined && !result.originalElement.status && result.originalElement.mensagens) {
  446 + $scope.setLoading(false);
  447 + angular.forEach(result.originalElement.mensagens, function (mensagem) {
  448 + $scope.showAlert(mensagem.tipoMensagem, $translate.instant(mensagem.mensagem));
  449 + });
  450 + } else {
  451 + $scope.showAlert('success', $translate.instant('MSG.EXCLUSAO_SUCESSO'), " ", false);
  452 + angular.element('#searchTransferencia').scope().fetchResult();
  453 + $scope.$showPageSearchWorkspace($scope.workspace);
  454 + angular.element('#searchTransferencia').scope().listaSelecionados = [];
  455 + $scope.$modalConfirmInstance.dismiss('cancel');
  456 + $scope.setLoading(false);
  457 + }
444 458 });
445 459  
446 460 }
... ...
citgrp-patrimonio-web/src/main/webapp/assets/js/angular/custom/controller/TransferenciaListController.js
... ... @@ -97,12 +97,19 @@ citApp.controller(&#39;TransferenciaListController&#39;, [&#39;$scope&#39;, &#39;$filter&#39;, &#39;$transla
97 97 callback: function () {
98 98 $scope.setLoadingRemove(true);
99 99  
100   - TransferenciaRepository.remove(transferencia).then(function() {
101   - $scope.showAlert('success', $translate.instant('MSG.EXCLUSAO_SUCESSO'), " ", false);
102   - $scope.listaSelecionados = [];
103   - $scope.fetchResult();
104   - $scope.$modalConfirmInstance.dismiss('cancel');
105   - $scope.setLoading(false);
  100 + TransferenciaRepository.remove(transferencia).then(function(result) {
  101 + if (result.originalElement && result.originalElement.status != undefined && !result.originalElement.status && result.originalElement.mensagens) {
  102 + $scope.setLoading(false);
  103 + angular.forEach(result.originalElement.mensagens, function (mensagem) {
  104 + $scope.showAlert(mensagem.tipoMensagem, $translate.instant(mensagem.mensagem));
  105 + });
  106 + } else {
  107 + $scope.showAlert('success', $translate.instant('MSG.EXCLUSAO_SUCESSO'), " ", false);
  108 + $scope.listaSelecionados = [];
  109 + $scope.fetchResult();
  110 + $scope.$modalConfirmInstance.dismiss('cancel');
  111 + $scope.setLoading(false);
  112 + }
106 113 });
107 114  
108 115 }
... ...
citgrp-patrimonio-web/src/main/webapp/html/baixa/baixaList.html
... ... @@ -18,7 +18,7 @@
18 18 <translate>LABEL.EDITAR</translate>
19 19 </button>
20 20  
21   - <button title="{{$translate.instant('LABEL.REMOVER')}}" alt="{{$translate.instant('LABEL.REMOVER')}}" class="btn btn-clear" type="button" ng-click="remove()">
  21 + <button title="{{$translate.instant('LABEL.REMOVER')}}" alt="{{$translate.instant('LABEL.REMOVER')}}" class="btn btn-clear" type="button" ng-click="remover()">
22 22 <i class="fa fa-times red"></i>
23 23 <translate>LABEL.REMOVER</translate>
24 24 </button>
... ...
citgrp-patrimonio-web/src/main/webapp/html/entrada/entradaList.html
... ... @@ -3,7 +3,7 @@
3 3 <div class="bar-buttons-action fixed">
4 4 <div class="row">
5 5 <div class="col-sm-9 text-left">
6   - <button title="{{$translate.instant('LABEL.ADICIONAR_NOVO')}}" alt="{{$translate.instant('LABEL.ADICIONAR_NOVO')}}" class="btn btn-clear" type="button" ng-click="$showPageEditWorkspace(workspace); resetForm(); cadastrarNovaEntrada();">
  6 + <button title="{{$translate.instant('PORTAL.LABEL.ADICIONAR_NOVO')}}" alt="{{$translate.instant('LABEL.ADICIONAR_NOVO')}}" class="btn btn-clear" type="button" ng-click="$showPageEditWorkspace(workspace); resetForm(); cadastrarNovaEntrada();">
7 7 <i class="fa fa-plus-circle yellow-dark"></i>
8 8 <translate>LABEL.CADASTRAR</translate>
9 9 </button>
... ...