Commit c79bf5138be50f6b7fa7aa94dd3b6ec8e8190e97

Authored by erick.sato
1 parent 5a0b8704
Exists in master

Redmine #5043 Validação salvar atendimento

cit-almoxarifado-web/src/main/java/br/com/centralit/listener/StartupListenerAlmoxarifado.java
... ... @@ -334,6 +334,8 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat
334 334  
335 335 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.ENDERECOS_ESTOQUE", "Endereços de estoque", dominio, modulo));
336 336 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.MULTIPLOS_ENDERECOS", "Multiplos Endereços", dominio, modulo));
  337 + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.ATENDIMENTO_INICIADO_USUARIO", "Atendimento iniciado por", dominio, modulo));
  338 + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.CANCELAR_ATENDIMENTO_INICIADO", "Cancelar atendimento", dominio, modulo));
337 339  
338 340 }
339 341  
... ... @@ -380,7 +382,7 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat
380 382 private void gerarMensagem(Dominio dominio, Modulo modulo, List<Internacionalizacao> internacionalizacaoList) {
381 383 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.ATENDA_AO_MENOS_UMA_REQUISICAO", "Por favor, atenda ao menos uma requisição antes de continuar.", dominio, modulo));
382 384 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.CATALOGOS_CADASTRADOS_OPCOES", "Os seguintes catálogos existem no sistema com a mesma lista de materiais que você selecionou no seu cadastro, você pode selecionar uma das opções ou continuar salvando o cadastro atual.", dominio, modulo));
383   - internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.CONFIRMA_FINALIZAR_REQUISICOES", "Confirma a operação de finzalizar a(s) requisição(ões)?", dominio, modulo));
  385 + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.CONFIRMA_FINALIZAR_REQUISICOES", "Confirma a operação de finalizar a(s) requisição(ões)?", dominio, modulo));
384 386 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.MATERIAIS_CONSUMO_REQUISICAO_OBRIGATORIO", "Materiais de consumo são obrigatórios!", dominio, modulo));
385 387 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.MATERIAIS_QUANTIDADE_ZERO", "A quantidade dos itens que estão selecionados para baixa não pode ser zero!", dominio, modulo));
386 388 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.MATERIAL_ESTOQUE_SEM_ESTOQUE", "O material selecionado não contém saldo no estoque", dominio, modulo));
... ... @@ -431,6 +433,9 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat
431 433 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.INTERROMPER_ATENDIMENTO_INICIADO_OUTRO_ATENDENTE", "Somente é permitido realizar essa ação para requisições que foram iniciadas o atendimento por você. Desmarque as requisições que foram iniciadas por outros atendentes para prosseguir.", dominio, modulo));
432 434 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.CONFIRMA_FINALIZAR_REQUISICAO_NAO_ATENDIDA_COMPLETAMENTE", "Há requisições selecionados que não tiveram o atendimento completo, deseja realmente finalizar essas requisições?", dominio, modulo));
433 435 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.CONFIRMA_ALERTA_EXCLUSAO_ATENDIMENTO_REQUISICAO", "Deseja mesmo excluir o atendimento da requisição selecionada? Essa ação devolverá a quantidade de materiais fornecida para o estoque, bem como seus os movimentos financeiros e retornará a requisição para o status ‘Pronta para atendimento’.", dominio, modulo));
  436 + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.CONFIRMA_SALVAR_FINALIZAR_REQUISICAO", "Confirma a operação de finalizar a requisição?", dominio, modulo));
  437 + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.INFO_ATENDIMENTOS_INICIADOS", "Os atendimentos destas requisições estão disponíveis apenas para você até você salvar ou cancelar as mesmas. Outro usuário não poderá acessá-las enquanto isso.", dominio, modulo));
  438 + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.INFO_ATENDIMENTO_INICIADO", "O atendimento dessa requisição está disponível apenas para você até você salvar ou cancelar a mesma. Outro usuário não poderá acessá-la enquanto isso.", dominio, modulo));
434 439 }
435 440 }
436 441  
... ...
cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/AtendimentoRequisicaoConsumoController.js
... ... @@ -608,8 +608,9 @@ citApp.controller( &#39;AtendimentoRequisicaoConsumoController&#39;,
608 608 $scope.finalizarRequisicoes = function(atendimentoRequisicaoConsumo){
609 609 if($scope.idsRequisicoesSelecionados && $scope.idsRequisicoesSelecionados.length > 0){
610 610 $scope.$openModalConfirm({
611   - message: $translate.instant('ALMOXARIFADO.MSG.CONFIRMA_FINALIZAR_REQUISICOES'),
  611 + message: $translate.instant('ALMOXARIFADO.MSG.CONFIRMA_SALVAR_FINALIZAR_REQUISICAO'),
612 612 callback: function () {
  613 + $scope.$modalConfirmInstance.dismiss('cancel');
613 614 $scope.setLoadingSalva(true);
614 615 AtendimentoRequisicaoConsumoRepository.save(atendimentoRequisicaoConsumo).then(function(result) {
615 616 var idsRequisicoesSelecionados = [];
... ... @@ -619,8 +620,6 @@ citApp.controller( &#39;AtendimentoRequisicaoConsumoController&#39;,
619 620 RequisicaoConsumoRepository.finalizarRequisicoes({idsRequisicoes : idsRequisicoesSelecionados,
620 621 dataFinalizacao : atendimentoRequisicaoConsumo.$dataFinalizacao}).then(function() {
621 622 angular.element('#searchAtendimentoRequisicaoConsumo').scope().fetchResult();
622   - $scope.$modalConfirmInstance.dismiss('cancel');
623   - $scope.$modalInstance.dismiss('cancel');
624 623 $scope.listaSelecionados = [];
625 624 $scope.resetForm();
626 625 $scope.showAlert("success", $translate.instant('MSG.REGISTRO_SALVO'));
... ...
cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/AtendimentoRequisicaoConsumoListController.js
... ... @@ -18,13 +18,14 @@ citApp.controller(&#39;AtendimentoRequisicaoConsumoListController&#39;, [&#39;$scope&#39;, &#39;Aten
18 18 $scope.atendimentoVH = {};
19 19 $scope.listaUnidadesRequisitantesSelecionadas = [];
20 20 $scope.listaMateriaisConsumoSelecionados = [];
  21 + $scope.listaSelecionados = [];
21 22 // DEFINE CABEÇALHOS DA LISTAGEM
22 23 $scope.headers = [ {title : $translate.instant('ALMOXARIFADO.LABEL.NUMERO_REQUISICAO'), value : 'numeroRequisicao' } ,
23 24 {title : $translate.instant('ALMOXARIFADO.LABEL.STATUS_REQUISICAO'), value : 'tipoStatusRequisicao.descricao' } ,
24 25 {title : $translate.instant('ALMOXARIFADO.LABEL.DATA_REQUISICAO'), value : 'dataRequisicao' , filter : 'dateBR', tamanho : 28} ,
25 26 {title : $translate.instant('ALMOXARIFADO.LABEL.UNIDADE_REQUISITANTE'), value : 'unidadeRequisitante.nome' } ,
26 27 {title : $translate.instant('ALMOXARIFADO.LABEL.ALMOXARIFADO'), value : 'almoxarifado.nome' },
27   - {title : $translate.instant('ALMOXARIFADO.LABEL.ATENDIMENTO_INICIADO'), value : 'emAtendimento'}];
  28 + {title : $translate.instant('ALMOXARIFADO.LABEL.ATENDIMENTO_INICIADO_USUARIO'), value : 'atendente.username'}];
28 29 // DIFINE FILTROS DE PESQUISA E CAMPOS QUE DEVEM SER APRESENTADOS NA LISTAGEM
29 30 $scope.filterCriteria = {
30 31 start : 1,
... ... @@ -38,7 +39,7 @@ citApp.controller(&#39;AtendimentoRequisicaoConsumoListController&#39;, [&#39;$scope&#39;, &#39;Aten
38 39 {type : 'date-range', field : 'dataRequisicao' } ,
39 40 {type : 'string', field : 'unidadeRequisitante.nome' } ,
40 41 {type : 'string', field : 'almoxarifado.nome' },
41   - {type : 'boolean', field : 'emAtendimento' }]
  42 + {type : 'string', field : 'atendente.username' }]
42 43 };
43 44  
44 45 $scope.filterCriteria.filters.push({type: 'string', field: 'tipoStatusRequisicao.nome', value: 'DEVOLVIDA', comparison: 'ne', notFilter : true});
... ... @@ -381,8 +382,8 @@ citApp.controller(&#39;AtendimentoRequisicaoConsumoListController&#39;, [&#39;$scope&#39;, &#39;Aten
381 382 }
382 383 });
383 384  
384   - $scope.setLoading(true);
385 385 if(permiteInterromperAtendimentoIniciado){
  386 + $scope.setLoading(true);
386 387  
387 388 var idsRequisicoesSelecionados = [];
388 389 $scope.listaSelecionados.forEach(function(requisicao){
... ...
cit-almoxarifado-web/src/main/webapp/html/atendimentoRequisicaoConsumo/atendimentoRequisicaoConsumoEdit.html
... ... @@ -12,13 +12,13 @@
12 12 <a href="#void" ng-click="saveOrUpdate(false, atendimentoRequisicaoConsumoForm)" ><i class="fa fa-file-text-o red"></i> <translate>ALMOXARIFADO.LABEL.SALVAR_APENAS</translate></a>
13 13 </li>
14 14 <li>
15   - <a href="#void" ng-click="saveOrUpdate(false, atendimentoRequisicaoConsumoForm)" ><i class="fa fa-file-text green"></i> <translate>ALMOXARIFADO.LABEL.SALVAR_E_FINALIZAR_REQUISICOES</translate></a>
  15 + <a href="#void" ng-click="saveOrUpdate(true, atendimentoRequisicaoConsumoForm)" ><i class="fa fa-file-text green"></i> <translate>ALMOXARIFADO.LABEL.SALVAR_E_FINALIZAR_REQUISICOES</translate></a>
16 16 </li>
17 17 </ul>
18 18 </div>
19 19 <button class="btn btn-clear" ng-click="$showPageSearchWorkspace(workspace); atualizaPaginaPesquisa();">
20   - <i class="fa fa-search"></i>
21   - <translate>LABEL.PESQUISAR</translate>
  20 + <i class="fa fa-reply"></i>
  21 + <translate>ALMOXARIFADO.LABEL.CANCELAR_ATENDIMENTO_INICIADO</translate>
22 22 </button>
23 23 </div><!-- .col -->
24 24 <div class="col-sm-4 text-right">
... ... @@ -56,6 +56,16 @@
56 56 ng-model="atendimentoRequisicaoConsumo.dataAtendimento" form="atendimentoRequisicaoConsumoForm" ng-obrigatorio="true"
57 57 ng-disabled="!edit" ng-mode="day" ng-format="dd/MM/yyyy" />
58 58 </div>
  59 + <div class="col-md-6" ng-if="atendimentos.length == 1">
  60 + <p>
  61 + <small><span class="red" ><translate>ALMOXARIFADO.MSG.INFO_ATENDIMENTO_INICIADO</translate></span></small>
  62 + </p>
  63 + </div>
  64 + <div class="col-md-6" ng-if="atendimentos.length > 1">
  65 + <p>
  66 + <small><span class="red"><translate>ALMOXARIFADO.MSG.INFO_ATENDIMENTOS_INICIADOS</translate></span></small>
  67 + </p>
  68 + </div>
59 69 </div>
60 70 <div style="margin-top: 20px;" ng-repeat="atendimento in atendimentos">
61 71 <div class="widget-box margin-bottom">
... ...
cit-almoxarifado-web/src/main/webapp/html/atendimentoRequisicaoConsumo/atendimentoRequisicaoConsumoList.html
... ... @@ -64,7 +64,7 @@
64 64 <list-view ng-lista="atendimentoRequisicaoConsumoList" ng-repository="RequisicaoConsumoRepository" ng-use-custom-remove="false"
65 65 ng-headers="headers" ng-filter-criteria="filterCriteria" ng-item-selecionado="atendimentoRequisicaoConsumoChecked"
66 66 ng-lista-itens-selecionados="listaSelecionados" ng-check-on="true" ng-exibir-boolean-sim-nao="true"
67   - set-total-pages="setTotalPages" set-total-itens="setTotalItens"
  67 + set-total-pages="setTotalPages" set-total-itens="setTotalItens" ng-marcar-linha-grid-atributo="emAtendimento"
68 68 use-custom-filter-temp="filtrarCustomizado" ng-custom-filter="filtrarRequisicoes()"></list-view>
69 69  
70 70 </div><!-- .page-content -->
... ...