Commit af136b69b010f709e6f96e444cf7307da256bab0

Authored by joyfas.silva
2 parents 659ba633 1661f933
Exists in master

Merge branch 'tarefa-4667' into adm-1.15.0

# Conflicts:
#	cit-adm-materiais-web/src/main/java/br/com/centralit/listener/StartupListenerAdmMaterial.java
cit-adm-materiais-api/src/main/java/br/com/centralit/api/model/Material.java
... ... @@ -118,6 +118,7 @@ public class Material extends PersistentObjectAuditOrganizacao {
118 118  
119 119 /** Atributo codigo. */
120 120 @Column(length = 30)
  121 + @JsonView({ Views.MaterialEditView.class, ViewsAdmMateriais.MaterialConsultaInfo.class })
121 122 private String codigo;
122 123  
123 124  
... ...
cit-adm-materiais-api/src/main/java/br/com/centralit/api/model/MaterialConsumoTipoUnidadeMedidaEntrada.java
1 1 package br.com.centralit.api.model;
2 2  
  3 +import javax.persistence.Column;
3 4 import javax.persistence.Entity;
4 5 import javax.persistence.FetchType;
5 6 import javax.persistence.GeneratedValue;
... ... @@ -43,6 +44,11 @@ public class MaterialConsumoTipoUnidadeMedidaEntrada extends PersistentObject {
43 44 @JsonView({ Views.MaterialEditView.class, ViewsAdmMateriais.MaterialConsumoAutoCompleteView.class, ViewsAdmMateriais.EntradaAlmoxarifadoEditView.class, Views.MaterialConsultaInfo.class })
44 45 private UnidadeMedida unidadeMedida;
45 46  
  47 +
  48 + @Column
  49 + @JsonView({ Views.GenericView.class })
  50 + private Boolean isPadrao;
  51 +
46 52 /**
47 53 * Retorna o valor do atributo <code>materialConsumo</code>
48 54 *
... ... @@ -123,4 +129,11 @@ public class MaterialConsumoTipoUnidadeMedidaEntrada extends PersistentObject {
123 129 this.materialConsumoRemocao = materialConsumoRemocao;
124 130 }
125 131  
  132 + public Boolean getIsPadrao() {
  133 + return isPadrao;
  134 + }
  135 +
  136 + public void setIsPadrao(Boolean isPadrao) {
  137 + this.isPadrao = isPadrao;
  138 + }
126 139 }
... ...
cit-adm-materiais-web/src/main/java/br/com/centralit/listener/StartupListenerAdmMaterial.java
... ... @@ -28,43 +28,43 @@ import br.com.centralit.framework.model.UtilStartup;
28 28 * <p><b>Title: </b></p>
29 29 *
30 30 * <p><b>Description: </b></p>
31   - *
  31 + *
32 32 * <p><b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a></p>
33 33 *
34   - * <p><b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a></p>
35   - *
  34 + * <p><b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a></p>
  35 + *
36 36 * @since 22/02/2016 - 09:30:08
37 37 *
38 38 * @version 1.0.0
39 39 *
40 40 * @author rogerio.cassimiro
41   - *
  41 + *
42 42 */
43 43 @Component
44 44 public class StartupListenerAdmMaterial extends UtilStartup implements ApplicationListener<ContextRefreshedEvent>{
45 45  
46 46 @Autowired
47 47 DefaultFileService defaultFileService;
48   -
  48 +
49 49 @Autowired
50 50 private DominioService dominioService;
51   -
  51 +
52 52 @Autowired
53 53 private ModuloService moduloService;
54   -
  54 +
55 55 @Autowired
56 56 private InternacionalizacaoService internacionalizacaoService;
57   -
  57 +
58 58 @Override
59 59 public void onApplicationEvent(ContextRefreshedEvent event) {
60   - criarDominios();
  60 + criarDominios();
61 61 criarDefaultFile();
62 62 gerarInternacionalizacao();
63 63 }
64   -
  64 +
65 65 private void criarDominios() {
66 66 List<Dominio> list = new ArrayList<Dominio>();
67   -
  67 +
68 68 list.add(new Dominio("tipoBem", "Próprio contabilizado", "PROPRIO_CONTABILIZADO", 1L, Boolean.FALSE));
69 69 list.add(new Dominio("tipoBem", "Próprio controlado", "PROPRIO_CONTROLADO", 2L, Boolean.FALSE));
70 70 list.add(new Dominio("tipoBem", "De terceiros", "DE_TERCEIROS", 3L, Boolean.FALSE));
... ... @@ -149,30 +149,30 @@ public class StartupListenerAdmMaterial extends UtilStartup implements Applicati
149 149 list.add(new DefaultFile(CIT_ADM_MATERIAIS_WEB_ANGULAR_CUSTOM + "repository/ContaContabilMovimentoRepository.min.js", dominioJS, 147));
150 150 this.defaultFileService.saveListIfNotExist(list);
151 151 }
152   -
  152 +
153 153 /**
154   - *
  154 + *
155 155 * Método responsável por gerar internacionalização do módulo administração de materiais
156   - *
  156 + *
157 157 * @author rogerio.cassimiro
158   - *
  158 + *
159 159 */
160 160 private void gerarInternacionalizacao() {
161 161  
162 162 dominioPT_BR = this.dominioService.findByChaveAndCodigo(Dominio.TIPO_IDIOMA, Dominio.TIPO_IDIOMA_PT_BR_CODIGO);
163 163 moduloSelecionado = this.moduloService.getModuloPorBaseUrl(BASE_URL_ADM_MATERIAIS, null);
164 164 List<Internacionalizacao> internacionalizacaoList = new ArrayList<Internacionalizacao>();
165   -
  165 +
166 166 this.gerarLabel(dominioPT_BR, moduloSelecionado, internacionalizacaoList);
167 167 this.gerarValidacao(dominioPT_BR, moduloSelecionado, internacionalizacaoList);
168 168 this.gerarMensagem(dominioPT_BR, moduloSelecionado, internacionalizacaoList);
169   -
  169 +
170 170 this.internacionalizacaoService.saveListIfNotExist(internacionalizacaoList);
171 171 Logger.getLogger(StartupListenerAdmMaterial.class).info("Internacionalização executada - StartupListenerAdmMaterial!");
172 172 }
173   -
  173 +
174 174 private void gerarLabel(Dominio dominio, Modulo modulo, List<Internacionalizacao> internacionalizacaoList) {
175   -
  175 +
176 176 internacionalizacaoList.add(new Internacionalizacao("ADMINISTRACAODEMATERIAIS.LABEL.APRESENTAR_RELATORIO_DEPRECIACAO", "Apresentar no relatório de depreciação", dominio, modulo));
177 177 internacionalizacaoList.add(new Internacionalizacao("ADMINISTRACAODEMATERIAIS.LABEL.APRESENTAR_RELATORIO_INVENTARIO", "Apresentar relatório inventário", dominio, modulo));
178 178 internacionalizacaoList.add(new Internacionalizacao("ADMINISTRACAODEMATERIAIS.LABEL.APRESENTAR_RMA", "Apresentar no RMA", dominio, modulo));
... ... @@ -219,11 +219,11 @@ public class StartupListenerAdmMaterial extends UtilStartup implements Applicati
219 219  
220 220  
221 221 }
222   -
  222 +
223 223 private void gerarValidacao(Dominio dominio, Modulo modulo, List<Internacionalizacao> internacionalizacaoList) {
224 224 internacionalizacaoList.add(new Internacionalizacao("ADMINISTRACAODEMATERIAIS.VALIDACAO.DATA_TRANSFERENCIA_FORA_REFERENCIA", "A data de transferência deve estar dentro da referência vigente!", dominio, modulo));
225 225 }
226   -
  226 +
227 227 private void gerarMensagem(Dominio dominio, Modulo modulo, List<Internacionalizacao> internacionalizacaoList) {
228 228 internacionalizacaoList.add(new Internacionalizacao("ADMINISTRACAODEMATERIAIS.MSG.CONFIRMA_EXCLUIR_CONTA_CONTABIL", "Confirma a exclusão da conta contábil?", dominio, modulo));
229 229 internacionalizacaoList.add(new Internacionalizacao("ADMINISTRACAODEMATERIAIS.MSG.CONFIRMA_FECHAR_MES", "Tem certeza que deseja fechar o mês de referência? Fechamento de contas e depreciações de bens ocorrerão. Esta ação não poderá ser revertida. O processo será iniciado em segundo plano, quando o mesmo terminar, você será notificado.", dominio, modulo));
... ... @@ -237,9 +237,8 @@ public class StartupListenerAdmMaterial extends UtilStartup implements Applicati
237 237 internacionalizacaoList.add(new Internacionalizacao("ADMINISTRACAODEMATERIAIS.MSG.TRANSFERENCIA_SUCESS", "Transferência realizada com sucesso!", dominio, modulo));
238 238 internacionalizacaoList.add(new Internacionalizacao("ADMINISTRACAODEMATERIAIS.MSG.INFO_EDICAO_MATERIAL", "Para a edição de outro material, localize o nível detalhe da classificação do material.", dominio, modulo));
239 239 internacionalizacaoList.add(new Internacionalizacao("ADMINISTRACAODEMATERIAIS.MSG.FECHAMENTO_ENTRADAS_INCOMPLETAS", "Existem entradas de bens incompletas neste mês de referência! Por favor concluir as mesmas antes de realizar o fechamento do mês!", dominio, modulo));
240   -
241 240 internacionalizacaoList.add(new Internacionalizacao("ADMINISTRACAODEMATERIAIS.MSG.INFO_MSG_FECHAMENTO_MES_NOTIFICA_FIM", "Fechamento do mês de referência em execução. Quando o processo terminar, você será notificado!", dominio, modulo));
242   -
  241 + internacionalizacaoList.add(new Internacionalizacao("ADMINISTRACAODEMATERIAIS.MSG.CONFIRMA_ALTERAR_PADRAO", "Já foi definido uma Unidae de medida de entrada como padrão! Deseja Alterar?", dominio, modulo));
243 242 }
244   -
  243 +
245 244 }
246 245 \ No newline at end of file
... ...
cit-adm-materiais-web/src/main/webapp/assets/js/angular/custom/controller/MaterialController.js
... ... @@ -28,7 +28,7 @@ citApp.controller(&#39;MaterialController&#39;, [&#39;$scope&#39;, &#39;MaterialRepository&#39;, &#39;Classi
28 28 $scope.edit = true;
29 29 $scope.limpar();
30 30 };
31   -
  31 +
32 32 function verificaMaterialConsumoSetGenerico(){
33 33 if ($scope.material.dominioTipoMaterial && $scope.material.dominioTipoMaterial.codigo) {
34 34 if($scope.material.dominioTipoMaterial.codigo == 1){
... ... @@ -130,7 +130,7 @@ citApp.controller(&#39;MaterialController&#39;, [&#39;$scope&#39;, &#39;MaterialRepository&#39;, &#39;Classi
130 130 console.info('onCompleteItem', fileItem, response, status, headers);
131 131 };
132 132 uploader.onCompleteAll = function() {
133   - //uploader.clearQueue();
  133 + //uploader.clearQueue();
134 134 console.info('onCompleteAll');
135 135 };
136 136  
... ... @@ -273,13 +273,13 @@ citApp.controller(&#39;MaterialController&#39;, [&#39;$scope&#39;, &#39;MaterialRepository&#39;, &#39;Classi
273 273 if($scope.material.classificacaoMaterial){
274 274 $scope.MaterialDadosDetalhe = $scope.material.classificacaoMaterial.codigo + ' - ' + $scope.material.classificacaoMaterial.descricao;
275 275 }
276   - }
  276 + }
277 277 };
278   -
  278 +
279 279 $scope.$watch('material.dominioTipoMaterial.codigo', function() {
280 280 verificaMaterialConsumoSetGenerico();
281 281 });
282   -
  282 +
283 283  
284 284 DominioRepository.findAllDominio('tipoMaterial').then(function(result) {
285 285 $scope.tiposMaterial = result;
... ... @@ -317,12 +317,18 @@ citApp.controller(&#39;MaterialController&#39;, [&#39;$scope&#39;, &#39;MaterialRepository&#39;, &#39;Classi
317 317 $scope.unidadesMedida.push(item.originalElement);
318 318 $scope.unidadesMedidaMaterialConsumo.push(item.originalElement);
319 319 });
320   -
  320 +
321 321 $scope.unidadesMedidaMaterialConsumo.sort(function (a, b) {
322 322 return a.descricao.localeCompare(b.descricao);
323 323 });
324 324 });
325 325  
  326 + function addTipoUnidadeMedida(unidadeMedidaEntradaTemp){
  327 + unidadeMedidaEntradaTemp.isPadrao = angular.copy($scope.unidadeMedidaEntrada.isPadrao);
  328 + $scope.material.tiposUnidadeMedidaEntrada.push(unidadeMedidaEntradaTemp);
  329 + $scope.unidadesMedidaMaterialConsumo = $filter('idNotEqualUnidadeMedida')($scope.unidadesMedidaMaterialConsumo, $scope.material.tiposUnidadeMedidaEntrada);
  330 + $scope.unidadeMedidaEntrada = {};
  331 + }
326 332 //Método responsável por editar unidadeMedidaEntrada.
327 333 $scope.adicionarUnidadeMedidaEntrada = function() {
328 334 //Verifica se a lista tiposUnidadeMedidaEntrada não está vazia
... ... @@ -335,11 +341,32 @@ citApp.controller(&#39;MaterialController&#39;, [&#39;$scope&#39;, &#39;MaterialRepository&#39;, &#39;Classi
335 341 var unidadeMedidaEntradaTemp = {};
336 342 angular.copy($scope.unidadeMedidaEntrada, unidadeMedidaEntradaTemp);
337 343  
338   - $scope.material.tiposUnidadeMedidaEntrada.push(unidadeMedidaEntradaTemp);
339   - $scope.unidadesMedidaMaterialConsumo = $filter('idNotEqualUnidadeMedida')($scope.unidadesMedidaMaterialConsumo, $scope.material.tiposUnidadeMedidaEntrada);
340   - }
  344 + if($scope.unidadeMedidaEntrada.isPadrao){
  345 + var isPossuiPadrao = false;
341 346  
342   - $scope.unidadeMedidaEntrada = {};
  347 + angular.forEach($scope.material.tiposUnidadeMedidaEntrada, function(tipoUnidade) {
  348 + if(tipoUnidade.isPadrao){
  349 + isPossuiPadrao = true;
  350 + }
  351 + });
  352 +
  353 + if( isPossuiPadrao){
  354 + $scope.$openModalConfirm({message: $translate.instant('ADMINISTRACAODEMATERIAIS.MSG.CONFIRMA_ALTERAR_PADRAO'), callback:
  355 + function(){
  356 + angular.forEach($scope.material.tiposUnidadeMedidaEntrada, function(tipoUnidade) {
  357 + tipoUnidade.isPadrao = false;
  358 + });
  359 + addTipoUnidadeMedida(unidadeMedidaEntradaTemp);
  360 + $scope.$modalConfirmInstance.dismiss('cancel');
  361 + }
  362 + });
  363 + }else{
  364 + addTipoUnidadeMedida(unidadeMedidaEntradaTemp);
  365 + }
  366 + }else{
  367 + addTipoUnidadeMedida(unidadeMedidaEntradaTemp);
  368 + }
  369 + }
343 370 };
344 371  
345 372 $scope.exibirDialogRemocaoUnidadeMedida = function() {
... ... @@ -369,16 +396,16 @@ citApp.controller(&#39;MaterialController&#39;, [&#39;$scope&#39;, &#39;MaterialRepository&#39;, &#39;Classi
369 396 $scope.$modalConfirmInstance.dismiss('cancel');
370 397 };
371 398 });
372   -
  399 +
373 400 $scope.unidadesMedidaMaterialConsumo.sort(function (a, b) {
374 401 return a.descricao.localeCompare(b.descricao);
375 402 });
376 403 };
377   -
  404 +
378 405 $scope.getCheckUnidadeMedidaEntrada = function () {
379 406 $scope.material.tiposUnidadeMedidaEntrada.forEach(function (unidade) {
380 407 if(unidade.$checked){
381   - $scope.unidadeMedidaSelecionada = unidade;
  408 + $scope.unidadeMedidaSelecionada = unidade;
382 409 }
383 410 });
384 411 };
... ... @@ -480,11 +507,11 @@ citApp.controller(&#39;MaterialController&#39;, [&#39;$scope&#39;, &#39;MaterialRepository&#39;, &#39;Classi
480 507  
481 508 MaterialCaracteristicaRepository.save(materialCaracteristica).then(function(result) {
482 509 $scope.showAlert("success", $translate.instant('MSG.SUCESSO_BLOQUEIO_CARACTERISTICA'));
483   -
  510 +
484 511 materialCaracteristica.$checked = false;
485 512  
486 513 $scope.apresentarBloquearCaracteristica = false;
487   -
  514 +
488 515 materialCaracteristica.version = result.originalElement.version;
489 516 });
490 517 }
... ...
cit-adm-materiais-web/src/main/webapp/html/material/materialTipoUnidadeMedidaEntrada.html
... ... @@ -16,6 +16,16 @@
16 16 <label-select ng-id="unidadeMedidaEntrada.unidadeMedida" ng-model="unidadeMedidaEntrada.unidadeMedida" ng-label="ADMINISTRACAODEMATERIAIS.LABEL.TIPO_UNIDADE_MEDIDA_ENTRADA" ng-obrigatorio="false" ng-disabled="!edit" form="formMaterial"
17 17 ng-list="unidadesMedidaMaterialConsumo" ng-custom-options="unidadeMedidaEntrada as unidadeMedidaEntrada.descricao for unidadeMedidaEntrada" > </label-select>
18 18 </div>
  19 + <div class="col-sm-2">
  20 + <div class="form-group no-label">
  21 + <div class="input-group">
  22 + <label>
  23 + <input type="checkbox" ng-model="unidadeMedidaEntrada.isPadrao" ng-disabled="!edit"/>
  24 + <translate>LABEL.PADRAO</translate>
  25 + </label>
  26 + </div>
  27 + </div>
  28 + </div>
19 29 </div>
20 30 <div class="row">
21 31 <div class="col-sm-12">
... ... @@ -25,7 +35,7 @@
25 35 <i class="fa fa-plus-circle yellow-dark"></i>
26 36 <translate>LABEL.ADICIONAR</translate> </a>
27 37 </button>
28   -
  38 +
29 39 <button title="{{$translate.instant('LABEL.REMOVER')}}" alt="{{$translate.instant('LABEL.REMOVER')}}" class="btn btn-clear" ng-click="exibirDialogRemocaoUnidadeMedida()" ng-disabled="material.tiposUnidadeMedidaEntrada.length < 1 || !edit" type="button">
30 40 <i class="fa fa-close red"></i>
31 41 <translate>LABEL.REMOVER</translate> </a>
... ... @@ -35,13 +45,16 @@
35 45 <thead>
36 46 <tr>
37 47 <th class="text-center" style="width: 5%;"></th>
38   -
  48 +
39 49 <th style="width: 30%;">
40 50 <translate>LABEL.UNIDADE_MEDIDA</translate>
41 51 </th>
42 52 <th style="width: 30%;">
43 53 <translate>ADMINISTRACAODEMATERIAIS.LABEL.TIPO_NUMERICO</translate>
44 54 </th>
  55 + <th style="width: 8%;">
  56 + <translate>LABEL.PADRAO</translate>
  57 + </th>
45 58 </tr>
46 59 </thead>
47 60 <tbody>
... ... @@ -55,12 +68,15 @@
55 68 <td>
56 69 {{medidaEntrada.unidadeMedida.tipoNumerico.descricao}}
57 70 </td>
  71 + <td>
  72 + <input type="checkbox" ng-model="medidaEntrada.isPadrao" ng-disabled="true"/>
  73 + </td>
58 74 </tr>
59 75 </tbody>
60 76 </table>
61   -
  77 +
62 78 </div>
63   -
  79 +
64 80 </div>
65 81 </div><!-- .row -->
66 82 </div><!-- .widget-main -->
... ...