Commit 52dc0c10d4eb9e3df449a5210dc7e3f2c32c08ea
1 parent
4c092b18
Exists in
master
[Redmine #5011]Impedimento para atendimento simultâneos na mesma requisição
Showing
9 changed files
with
131 additions
and
29 deletions
Show diff stats
cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/RequisicaoConsumo.java
... | ... | @@ -10,6 +10,7 @@ import javax.persistence.FetchType; |
10 | 10 | import javax.persistence.GeneratedValue; |
11 | 11 | import javax.persistence.GenerationType; |
12 | 12 | import javax.persistence.Id; |
13 | +import javax.persistence.JoinColumn; | |
13 | 14 | import javax.persistence.ManyToOne; |
14 | 15 | import javax.persistence.OneToMany; |
15 | 16 | import javax.persistence.Table; |
... | ... | @@ -26,6 +27,7 @@ import br.com.centralit.framework.json.JsonCalendarSimpleDateDeserializer; |
26 | 27 | import br.com.centralit.framework.json.JsonCalendarSimpleDateSerializer; |
27 | 28 | import br.com.centralit.framework.json.Views; |
28 | 29 | import br.com.centralit.framework.model.Dominio; |
30 | +import br.com.centralit.framework.model.Usuario; | |
29 | 31 | import br.com.centralit.framework.model.arquitetura.PersistentObjectAuditOrganizacao; |
30 | 32 | |
31 | 33 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; |
... | ... | @@ -68,8 +70,8 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize; |
68 | 70 | @Audited |
69 | 71 | @AuditTable(value = "alm_requisicaoconsumo_aud") |
70 | 72 | @Entity |
71 | -@Table(name="alm_requisicaoconsumo") | |
72 | -@JsonIgnoreProperties({"$checked"}) | |
73 | +@Table(name = "alm_requisicaoconsumo") | |
74 | +@JsonIgnoreProperties({ "$checked" }) | |
73 | 75 | public class RequisicaoConsumo extends PersistentObjectAuditOrganizacao { |
74 | 76 | |
75 | 77 | public static final Long TIPO_STATUS_REQUISICAO_NAO_CONCLUIDA_CODIGO = 1L; |
... | ... | @@ -88,17 +90,22 @@ public class RequisicaoConsumo extends PersistentObjectAuditOrganizacao { |
88 | 90 | /** Atributo id. */ |
89 | 91 | @Id |
90 | 92 | @GeneratedValue(strategy = GenerationType.AUTO) |
91 | - @JsonView({ Views.GenericView.class, ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, ViewsAlmoxarifado.DevolucaoEditView.class }) | |
93 | + @JsonView({ Views.GenericView.class, ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, | |
94 | + ViewsAlmoxarifado.DevolucaoEditView.class }) | |
92 | 95 | private Long id; |
93 | 96 | |
94 | 97 | /** Atributo almoxaifado. */ |
95 | 98 | @ManyToOne(fetch = FetchType.LAZY, optional = false) |
96 | - @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, ViewsAlmoxarifado.DevolucaoListView.class, ViewsAlmoxarifado.DevolucaoEditView.class, Views.MaterialConsultaInfo.class, ViewsAdmMateriais.RequisicaoConsumo.class }) | |
99 | + @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, | |
100 | + ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, ViewsAlmoxarifado.DevolucaoListView.class, | |
101 | + ViewsAlmoxarifado.DevolucaoEditView.class, Views.MaterialConsultaInfo.class, | |
102 | + ViewsAdmMateriais.RequisicaoConsumo.class }) | |
97 | 103 | private EstruturaOrganizacional almoxarifado; |
98 | 104 | |
99 | 105 | /** Atributo centroCusto. */ |
100 | 106 | @ManyToOne(fetch = FetchType.LAZY) |
101 | - @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, Views.MaterialConsultaInfo.class, ViewsAdmMateriais.RequisicaoConsumo.class }) | |
107 | + @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, Views.MaterialConsultaInfo.class, | |
108 | + ViewsAdmMateriais.RequisicaoConsumo.class }) | |
102 | 109 | private CentroCusto centroCusto; |
103 | 110 | |
104 | 111 | /** Atributo dataRequisicao. */ |
... | ... | @@ -106,28 +113,33 @@ public class RequisicaoConsumo extends PersistentObjectAuditOrganizacao { |
106 | 113 | @Temporal(TemporalType.TIMESTAMP) |
107 | 114 | @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class) |
108 | 115 | @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class) |
109 | - @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, ViewsAlmoxarifado.DevolucaoEditView.class, | |
110 | - ViewsAlmoxarifado.DevolucaoListView.class, ViewsAdmMateriais.RequisicaoConsumo.class }) | |
116 | + @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, | |
117 | + ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, ViewsAlmoxarifado.DevolucaoEditView.class, | |
118 | + ViewsAlmoxarifado.DevolucaoListView.class, ViewsAdmMateriais.RequisicaoConsumo.class }) | |
111 | 119 | private Calendar dataRequisicao; |
112 | 120 | |
113 | 121 | @Column(name = "dataFinalizacaoAtendimento", nullable = true) |
114 | 122 | @Temporal(TemporalType.TIMESTAMP) |
115 | 123 | @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class) |
116 | 124 | @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class) |
117 | - @JsonView({ ViewsAlmoxarifado.DevolucaoEditView.class, ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, ViewsAlmoxarifado.DevolucaoListView.class, | |
118 | - Views.MaterialConsultaInfo.class, ViewsAdmMateriais.RequisicaoConsumoEditView.class, ViewsAdmMateriais.RequisicaoConsumo.class }) | |
125 | + @JsonView({ ViewsAlmoxarifado.DevolucaoEditView.class, ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, | |
126 | + ViewsAlmoxarifado.DevolucaoListView.class, Views.MaterialConsultaInfo.class, | |
127 | + ViewsAdmMateriais.RequisicaoConsumoEditView.class, ViewsAdmMateriais.RequisicaoConsumo.class }) | |
119 | 128 | private Calendar dataFinalizacaoAtendimento; |
120 | 129 | |
121 | 130 | /** Atributo materiais. */ |
122 | 131 | @OneToMany(fetch = FetchType.LAZY, mappedBy = "requisicaoConsumo", cascade = CascadeType.ALL, orphanRemoval = true) |
123 | - @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, ViewsAlmoxarifado.DevolucaoEditView.class, | |
124 | - Views.MaterialConsultaInfo.class, ViewsAdmMateriais.RequisicaoConsumo.class }) | |
132 | + @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, | |
133 | + ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, ViewsAlmoxarifado.DevolucaoEditView.class, | |
134 | + Views.MaterialConsultaInfo.class, ViewsAdmMateriais.RequisicaoConsumo.class }) | |
125 | 135 | private Collection<RequisicaoConsumoItem> requisicaoConsumoItens; |
126 | 136 | |
127 | 137 | /** Atributo numeroRequisicao. */ |
128 | 138 | @Column(length = 30) |
129 | - @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, ViewsAlmoxarifado.DevolucaoEditView.class, | |
130 | - ViewsAlmoxarifado.DevolucaoListView.class, Views.MaterialConsultaInfo.class, ViewsAdmMateriais.RequisicaoConsumo.class }) | |
139 | + @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, | |
140 | + ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, ViewsAlmoxarifado.DevolucaoEditView.class, | |
141 | + ViewsAlmoxarifado.DevolucaoListView.class, Views.MaterialConsultaInfo.class, | |
142 | + ViewsAdmMateriais.RequisicaoConsumo.class }) | |
131 | 143 | private String numeroRequisicao; |
132 | 144 | |
133 | 145 | /** Atributo observacoes. */ |
... | ... | @@ -138,16 +150,27 @@ public class RequisicaoConsumo extends PersistentObjectAuditOrganizacao { |
138 | 150 | |
139 | 151 | /** Atributo statusRequisicao. */ |
140 | 152 | @ManyToOne(fetch = FetchType.LAZY, optional = false) |
141 | - @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, ViewsAdmMateriais.AtendimentoRequisicaoConsumoItemView.class, Views.MaterialConsultaInfo.class, | |
142 | - ViewsAdmMateriais.RequisicaoConsumo.class }) | |
153 | + @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, | |
154 | + ViewsAdmMateriais.AtendimentoRequisicaoConsumoItemView.class, Views.MaterialConsultaInfo.class, | |
155 | + ViewsAdmMateriais.RequisicaoConsumo.class }) | |
143 | 156 | private Dominio tipoStatusRequisicao; |
144 | 157 | |
145 | 158 | /** Atributo unidadeRequisitante. */ |
146 | 159 | @ManyToOne(fetch = FetchType.LAZY, optional = false) |
147 | - @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, ViewsAlmoxarifado.DevolucaoListView.class, | |
148 | - ViewsAlmoxarifado.DevolucaoEditView.class, Views.MaterialConsultaInfo.class, ViewsAdmMateriais.RequisicaoConsumo.class }) | |
160 | + @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, | |
161 | + ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, ViewsAlmoxarifado.DevolucaoListView.class, | |
162 | + ViewsAlmoxarifado.DevolucaoEditView.class, Views.MaterialConsultaInfo.class, | |
163 | + ViewsAdmMateriais.RequisicaoConsumo.class }) | |
149 | 164 | private EstruturaOrganizacional unidadeRequisitante; |
150 | 165 | |
166 | + @JsonView({ ViewsAlmoxarifado.AtendimentoRequisicaoConsumoEditView.class }) | |
167 | + private boolean emAtendimento; | |
168 | + | |
169 | + @ManyToOne(fetch = FetchType.LAZY) | |
170 | + @JoinColumn(name = "atendente_id") | |
171 | + @JsonView({ ViewsAlmoxarifado.AtendimentoRequisicaoConsumoEditView.class }) | |
172 | + private Usuario atendente; | |
173 | + | |
151 | 174 | /** |
152 | 175 | * Retorna o valor do atributo <code>id</code> |
153 | 176 | * |
... | ... | @@ -351,4 +374,20 @@ public class RequisicaoConsumo extends PersistentObjectAuditOrganizacao { |
351 | 374 | this.dataFinalizacaoAtendimento = dataFinalizacaoAtendimento; |
352 | 375 | } |
353 | 376 | |
377 | + public boolean isEmAtendimento() { | |
378 | + return emAtendimento; | |
379 | + } | |
380 | + | |
381 | + public void setEmAtendimento(boolean emAtendimento) { | |
382 | + this.emAtendimento = emAtendimento; | |
383 | + } | |
384 | + | |
385 | + public Usuario getAtendente() { | |
386 | + return atendente; | |
387 | + } | |
388 | + | |
389 | + public void setAtendente(Usuario atendente) { | |
390 | + this.atendente = atendente; | |
391 | + } | |
392 | + | |
354 | 393 | } | ... | ... |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/RequisicaoConsumoService.java
... | ... | @@ -129,4 +129,6 @@ public interface RequisicaoConsumoService extends GenericService<RequisicaoConsu |
129 | 129 | |
130 | 130 | List<RequisicaoConsumo> findRequisicoesParaAtendimento(AtendimentoVH atendimentoVH); |
131 | 131 | |
132 | + Boolean atualizarSituacaoAtendimento(Long idRequisicao, boolean situacaoAtendimento); | |
133 | + | |
132 | 134 | } | ... | ... |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/RequisicaoConsumoServiceImpl.java
... | ... | @@ -522,7 +522,31 @@ public class RequisicaoConsumoServiceImpl extends GenericServiceImpl<RequisicaoC |
522 | 522 | |
523 | 523 | @Override |
524 | 524 | public List<RequisicaoConsumo> findRequisicoesParaAtendimento(AtendimentoVH atendimentoVH) { |
525 | - return this.requisicaoConsumoDao.findRequisicoesParaAtendimento(atendimentoVH); | |
525 | + List<RequisicaoConsumo> requisicoes = this.requisicaoConsumoDao.findRequisicoesParaAtendimento(atendimentoVH); | |
526 | + this.atualizarStatusAtendimento(requisicoes); | |
527 | + return requisicoes; | |
528 | + } | |
529 | + | |
530 | + private void atualizarStatusAtendimento(List<RequisicaoConsumo> requisicoes) { | |
531 | + Usuario usuarioLogado = (Usuario) usuarioService.find(( (Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal() ).getId()); | |
532 | + for (RequisicaoConsumo requisicaoConsumo : requisicoes) { | |
533 | + requisicaoConsumo.setEmAtendimento(Boolean.TRUE); | |
534 | + requisicaoConsumo.setAtendente(usuarioLogado); | |
535 | + super.merge(requisicaoConsumo); | |
536 | + flush(); | |
537 | + } | |
538 | + | |
539 | + } | |
540 | + | |
541 | + @Override | |
542 | + public Boolean atualizarSituacaoAtendimento(Long idRequisicao, boolean situacaoAtendimento) { | |
543 | + RequisicaoConsumo requisicaoConsumo = this.find(idRequisicao); | |
544 | + requisicaoConsumo.setEmAtendimento(situacaoAtendimento); | |
545 | + if(!situacaoAtendimento){ | |
546 | + requisicaoConsumo.setAtendente(null); | |
547 | + } | |
548 | + super.merge(requisicaoConsumo); | |
549 | + return true; | |
526 | 550 | } |
527 | 551 | |
528 | 552 | } | ... | ... |
cit-almoxarifado-web/src/main/java/br/com/centralit/controller/RequisicaoConsumoController.java
... | ... | @@ -239,4 +239,14 @@ public class RequisicaoConsumoController extends GenericController<RequisicaoCon |
239 | 239 | return responseBody; |
240 | 240 | } |
241 | 241 | |
242 | + @RequestMapping(value = "/atualizarSituacaoAtendimento", method = RequestMethod.GET, produces = "application/json") | |
243 | + @ResponseBody | |
244 | + public ResponseBodyWrapper atualizarSituacaoAtendimento(@RequestParam(value = "idRequisicao") Long idRequisicao, @RequestParam(value = "situacaoAtendimento") boolean situacaoAtendimento) { | |
245 | + | |
246 | + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(this.requisicaoConsumoService.atualizarSituacaoAtendimento(idRequisicao, situacaoAtendimento), getEditView()); | |
247 | + | |
248 | + return responseBody; | |
249 | + } | |
250 | + | |
251 | + | |
242 | 252 | } | ... | ... |
cit-almoxarifado-web/src/main/java/br/com/centralit/listener/StartupListenerAlmoxarifado.java
... | ... | @@ -329,6 +329,8 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat |
329 | 329 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.LIMPAR_BUSCA_AVANCADA", "Limpar busca avançada", dominio, modulo)); |
330 | 330 | |
331 | 331 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.ATENDIMENTO_REQUISICAO", "Atendimento de requisição consumo", dominio, modulo)); |
332 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.ATENDIMENTO_INICIADO", "Atendimento iniciado", dominio, modulo)); | |
333 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.INTERROMPER_ATENDIMENTO_INICIADO", "Interromper atendimento iniciado", dominio, modulo)); | |
332 | 334 | } |
333 | 335 | |
334 | 336 | private void gerarValidacao(Dominio dominio, Modulo modulo, List<Internacionalizacao> internacionalizacaoList) { |
... | ... | @@ -417,6 +419,8 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat |
417 | 419 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.INFO_FILTRO_MATERIAL_REQUISICAO", "O atendimento será realizado para os materiais selecionados na busca avançada.", dominio, modulo)); |
418 | 420 | |
419 | 421 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.REMOVER_REQUISICAO_ATENDIMENTO", "Remover requisição deste atendimento", dominio, modulo)); |
422 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.REQUISICAO_EM_ATENDIMENTO", "está em atendimento pelo atendente ", dominio, modulo)); | |
423 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.DESMARQUE_REQUISICAO_EM_ATENDIMENTO", "Desmarque esta requisição de consumo para prosseguir o atendimento.", dominio, modulo)); | |
420 | 424 | |
421 | 425 | } |
422 | 426 | } | ... | ... |
cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/AtendimentoRequisicaoConsumoController.js
... | ... | @@ -90,14 +90,16 @@ citApp.controller( 'AtendimentoRequisicaoConsumoController', |
90 | 90 | $scope.$openModalConfirm({ |
91 | 91 | message: $translate.instant('MSG.CONFIRMA_EXCLUSAO'), |
92 | 92 | callback: function(){ |
93 | - $scope.atendimentos.splice(index, 1); | |
93 | + var requisicaoRemover = $scope.atendimentos[index]; | |
94 | + RequisicaoConsumoRepository.atualizarSituacaoAtendimento(requisicaoRemover.requisicaoConsumo.id, false).then(function(result) { | |
95 | + $scope.atendimentos.splice(index, 1); | |
96 | + $scope.$modalConfirmInstance.dismiss('cancel'); | |
97 | + if($scope.atendimentos.length == 0){ | |
98 | + $scope.$showPageSearchWorkspace($scope.workspace); | |
99 | + $scope.atualizaPaginaPesquisa(); | |
100 | + } | |
101 | + }); | |
94 | 102 | |
95 | - $scope.$modalConfirmInstance.dismiss('cancel'); | |
96 | - | |
97 | - if($scope.atendimentos.length == 0){ | |
98 | - $scope.$showPageSearchWorkspace($scope.workspace); | |
99 | - $scope.atualizaPaginaPesquisa(); | |
100 | - } | |
101 | 103 | } |
102 | 104 | }); |
103 | 105 | }; | ... | ... |
cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/AtendimentoRequisicaoConsumoListController.js
... | ... | @@ -6,6 +6,7 @@ citApp.controller('AtendimentoRequisicaoConsumoListController', ['$scope', 'Aten |
6 | 6 | function AtendimentoRequisicaoConsumoListController($scope, AtendimentoRequisicaoConsumoRepository, $translate, |
7 | 7 | $timeout, DominioRepository, RequisicaoConsumoRepository, EstruturaOrganizacionalAlmoxarifadoRepository, MaterialConsumoRepository, $filter) { |
8 | 8 | $scope.$showAdvancedFilters = false; |
9 | + $scope.permiteInterromperAtendimento = false; | |
9 | 10 | $scope.listaSelecionados = []; |
10 | 11 | $scope.resetForm = function() { |
11 | 12 | angular.element("#editAtendimentoRequisicaoConsumo").scope().resetForm(); |
... | ... | @@ -22,19 +23,22 @@ citApp.controller('AtendimentoRequisicaoConsumoListController', ['$scope', 'Aten |
22 | 23 | {title : $translate.instant('ALMOXARIFADO.LABEL.STATUS_REQUISICAO'), value : 'tipoStatusRequisicao.descricao' } , |
23 | 24 | {title : $translate.instant('ALMOXARIFADO.LABEL.DATA_REQUISICAO'), value : 'dataRequisicao' , filter : 'dateBR', tamanho : 28} , |
24 | 25 | {title : $translate.instant('ALMOXARIFADO.LABEL.UNIDADE_REQUISITANTE'), value : 'unidadeRequisitante.nome' } , |
25 | - {title : $translate.instant('ALMOXARIFADO.LABEL.ALMOXARIFADO'), value : 'almoxarifado.nome' } ]; | |
26 | + {title : $translate.instant('ALMOXARIFADO.LABEL.ALMOXARIFADO'), value : 'almoxarifado.nome' }, | |
27 | + {title : $translate.instant('ALMOXARIFADO.LABEL.ATENDIMENTO_INICIADO'), value : 'emAtendimento'}]; | |
26 | 28 | // DIFINE FILTROS DE PESQUISA E CAMPOS QUE DEVEM SER APRESENTADOS NA LISTAGEM |
27 | 29 | $scope.filterCriteria = { |
28 | 30 | start : 1, |
29 | 31 | dir : 'asc', |
30 | 32 | sort : 'desc:numeroRequisicao;tipoStatusRequisicao.codigo', |
31 | 33 | limit : 10, |
32 | - fields: ['id', 'numeroRequisicao', 'tipoStatusRequisicao.descricao', 'dataRequisicao', 'unidadeRequisitante.nome', 'almoxarifado.nome', 'tipoStatusRequisicao.codigo'], | |
34 | + fields: ['id', 'numeroRequisicao', 'tipoStatusRequisicao.descricao', 'dataRequisicao', 'unidadeRequisitante.nome', 'almoxarifado.nome', 'tipoStatusRequisicao.codigo', | |
35 | + 'emAtendimento', 'atendente.id', 'atendente.username'], | |
33 | 36 | filters : [ {type : 'numeric-range', field : 'numeroRequisicao' } , |
34 | 37 | {type : 'dominio', field : 'tipoStatusRequisicao.descricao', listaDominio : []} , |
35 | 38 | {type : 'date-range', field : 'dataRequisicao' } , |
36 | 39 | {type : 'string', field : 'unidadeRequisitante.nome' } , |
37 | - {type : 'string', field : 'almoxarifado.nome' } ] | |
40 | + {type : 'string', field : 'almoxarifado.nome' }, | |
41 | + {type : 'boolean', field : 'emAtendimento' }] | |
38 | 42 | }; |
39 | 43 | |
40 | 44 | $scope.filterCriteria.filters.push({type: 'string', field: 'tipoStatusRequisicao.nome', value: 'DEVOLVIDA', comparison: 'ne', notFilter : true}); |
... | ... | @@ -108,6 +112,13 @@ citApp.controller('AtendimentoRequisicaoConsumoListController', ['$scope', 'Aten |
108 | 112 | permiteAtender = false; |
109 | 113 | $scope.showAlert('warning', $translate.instant('ALMOXARIFADO.MSG.NAO_PERMITIDO_ATENDER_REQUISICAO_FINALIZADA')); |
110 | 114 | } |
115 | + if(requisicaoSelecionado.emAtendimento && requisicaoSelecionado['atendente.id'] != $scope.usuarioLogado.id){ | |
116 | + permiteAtender = false; | |
117 | + $scope.showAlert('warning', $translate.instant('ALMOXARIFADO.LABEL.REQUISICAO_CONSUMO') + ' ' + requisicaoSelecionado.numeroRequisicao | |
118 | + + ' ' + $translate.instant('ALMOXARIFADO.MSG.REQUISICAO_EM_ATENDIMENTO') + ' ' + requisicaoSelecionado['atendente.username'] | |
119 | + + ' ' + $translate.instant('ALMOXARIFADO.MSG.DESMARQUE_REQUISICAO_EM_ATENDIMENTO')); | |
120 | + return; | |
121 | + } | |
111 | 122 | }); |
112 | 123 | |
113 | 124 | if(permiteAtender){ |
... | ... | @@ -323,4 +334,5 @@ citApp.controller('AtendimentoRequisicaoConsumoListController', ['$scope', 'Aten |
323 | 334 | |
324 | 335 | }; |
325 | 336 | |
337 | + | |
326 | 338 | }]); |
327 | 339 | \ No newline at end of file | ... | ... |
cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/repository/RequisicaoConsumoRepository.js
... | ... | @@ -26,6 +26,10 @@ citApp.factory('RequisicaoConsumoRepository', ['RestangularAlmoxarifado', 'Abstr |
26 | 26 | this.filtrarRequisicoesAtendimento = function(atendimentoVH) { |
27 | 27 | return this.restangular.all(this.route+ "/filtrarRequisicoesAtendimento").post(atendimentoVH); |
28 | 28 | }; |
29 | + | |
30 | + this.atualizarSituacaoAtendimento = function(idRequisicao, situacaoAtendimento){ | |
31 | + return this.restangular.one(this.route + "/atualizarSituacaoAtendimento").get({'idRequisicao': idRequisicao, 'situacaoAtendimento': situacaoAtendimento}).then(); | |
32 | + }; | |
29 | 33 | } |
30 | 34 | |
31 | 35 | AbstractRepository.extend(RequisicaoConsumoRepository); | ... | ... |
cit-almoxarifado-web/src/main/webapp/html/atendimentoRequisicaoConsumo/atendimentoRequisicaoConsumoList.html
... | ... | @@ -23,6 +23,11 @@ |
23 | 23 | <translate>LABEL.VISUALIZAR</translate> |
24 | 24 | </button> |
25 | 25 | |
26 | + <button ng-show="permiteInterromperAtendimento" class="btn btn-clear" ng-click="interromperAtendimentoIniciado()"> | |
27 | + <i class="fa fa-times-circle-o orange"></i> | |
28 | + <translate>ALMOXARIFADO.LABEL.INTERROMPER_ATENDIMENTO_INICIADO</translate> | |
29 | + </button> | |
30 | + | |
26 | 31 | <span class="divider-vertical"></span> |
27 | 32 | |
28 | 33 | <filtros ng-filter="filterCriteria" ng-workspace="workspace"></filtros> |
... | ... | @@ -58,7 +63,7 @@ |
58 | 63 | |
59 | 64 | <list-view ng-lista="atendimentoRequisicaoConsumoList" ng-repository="RequisicaoConsumoRepository" ng-use-custom-remove="false" |
60 | 65 | ng-headers="headers" ng-filter-criteria="filterCriteria" ng-item-selecionado="atendimentoRequisicaoConsumoChecked" |
61 | - ng-lista-itens-selecionados="listaSelecionados" ng-check-on="true" | |
66 | + ng-lista-itens-selecionados="listaSelecionados" ng-check-on="true" ng-exibir-boolean-sim-nao="true" | |
62 | 67 | set-total-pages="setTotalPages" set-total-itens="setTotalItens" |
63 | 68 | use-custom-filter-temp="filtrarCustomizado" ng-custom-filter="filtrarRequisicoes()"></list-view> |
64 | 69 | ... | ... |