Commit 42db6471295f47c0ab7c67a2af40e8b808934fc3

Authored by Ronan Tavares Camargo
2 parents 7317eb3e a06a649b
Exists in master

Merge branch 'tarefa-3822' of http://ferramentasgo.centralit.com.br:8080/scm/git…

…/cit-grp-almoxarifado into tarefa-3822

# Conflicts:
#	cit-almoxarifado-web/src/main/java/br/com/centralit/listener/StartupListenerAlmoxarifado.java
#	cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/AtendimentoRequisicaoConsumoListController.js
#	cit-almoxarifado-web/src/main/webapp/html/atendimentoRequisicaoConsumo/atendimentoRequisicaoConsumoList.html
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/AtendimentoRequisicaoConsumoService.java
@@ -65,4 +65,8 @@ public interface AtendimentoRequisicaoConsumoService extends GenericService<Aten @@ -65,4 +65,8 @@ public interface AtendimentoRequisicaoConsumoService extends GenericService<Aten
65 65
66 boolean removerAtendimentoRequisicao(String idsRequisicaoConsumo, Long idOrganizacao); 66 boolean removerAtendimentoRequisicao(String idsRequisicaoConsumo, Long idOrganizacao);
67 67
  68 + Boolean finalizarRequisicoes(List<Long> idsRequisicao, Long idOrganizacao);
  69 +
  70 + Boolean excluirAtendimentos(List<Long> idsRequisicao, Long idOrganizacao);
  71 +
68 } 72 }
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/AtendimentoRequisicaoConsumoServiceImpl.java
@@ -6,6 +6,7 @@ import java.util.HashMap; @@ -6,6 +6,7 @@ import java.util.HashMap;
6 import java.util.List; 6 import java.util.List;
7 import java.util.Map; 7 import java.util.Map;
8 8
  9 +import org.apache.commons.lang3.StringUtils;
9 import org.springframework.beans.factory.annotation.Autowired; 10 import org.springframework.beans.factory.annotation.Autowired;
10 import org.springframework.beans.factory.annotation.Qualifier; 11 import org.springframework.beans.factory.annotation.Qualifier;
11 import org.springframework.stereotype.Service; 12 import org.springframework.stereotype.Service;
@@ -19,6 +20,7 @@ import br.com.centralit.api.service.AtendimentoRequisicaoConsumoItemService; @@ -19,6 +20,7 @@ import br.com.centralit.api.service.AtendimentoRequisicaoConsumoItemService;
19 import br.com.centralit.api.service.AtendimentoRequisicaoConsumoService; 20 import br.com.centralit.api.service.AtendimentoRequisicaoConsumoService;
20 import br.com.centralit.api.service.ContaContabilMovimentoService; 21 import br.com.centralit.api.service.ContaContabilMovimentoService;
21 import br.com.centralit.api.service.DominioService; 22 import br.com.centralit.api.service.DominioService;
  23 +import br.com.centralit.api.service.InternacionalizacaoService;
22 import br.com.centralit.api.service.MaterialConsumoService; 24 import br.com.centralit.api.service.MaterialConsumoService;
23 import br.com.centralit.api.service.MovimentoEstoqueService; 25 import br.com.centralit.api.service.MovimentoEstoqueService;
24 import br.com.centralit.api.service.ConfiguracaoParametroSistemaService; 26 import br.com.centralit.api.service.ConfiguracaoParametroSistemaService;
@@ -27,6 +29,7 @@ import br.com.centralit.api.service.RequisicaoConsumoService; @@ -27,6 +29,7 @@ import br.com.centralit.api.service.RequisicaoConsumoService;
27 import br.com.centralit.api.viewHelper.InformacoesAtendimentoVH; 29 import br.com.centralit.api.viewHelper.InformacoesAtendimentoVH;
28 import br.com.centralit.framework.exception.BusinessException; 30 import br.com.centralit.framework.exception.BusinessException;
29 import br.com.centralit.framework.exception.CodigoErro; 31 import br.com.centralit.framework.exception.CodigoErro;
  32 +import br.com.centralit.framework.model.Dominio;
30 import br.com.centralit.framework.service.arquitetura.GenericServiceImpl; 33 import br.com.centralit.framework.service.arquitetura.GenericServiceImpl;
31 import br.com.centralit.framework.util.UtilColecao; 34 import br.com.centralit.framework.util.UtilColecao;
32 import br.com.centralit.framework.util.UtilDate; 35 import br.com.centralit.framework.util.UtilDate;
@@ -98,7 +101,19 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl&lt; @@ -98,7 +101,19 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl&lt;
98 101
99 @Autowired 102 @Autowired
100 private ContaContabilMovimentoService contaContabilMovimentoService; 103 private ContaContabilMovimentoService contaContabilMovimentoService;
  104 +
  105 + @Autowired
  106 + private InternacionalizacaoService internacionalizacaoService;
101 107
  108 + private Dominio idioma;
  109 +
  110 + private Dominio getIdioma() {
  111 + if(!UtilObjeto.isReferencia(idioma)){
  112 + idioma = this.dominioService.findByChaveAndCodigo("tipoIdioma", Dominio.TIPO_IDIOMA_PT_BR_CODIGO);
  113 + }
  114 + return idioma;
  115 + }
  116 +
102 /** 117 /**
103 * Responsável pela criação de novas instâncias desta classe. 118 * Responsável pela criação de novas instâncias desta classe.
104 * 119 *
@@ -462,4 +477,40 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl&lt; @@ -462,4 +477,40 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl&lt;
462 return true; 477 return true;
463 } 478 }
464 479
  480 + @Override
  481 + public Boolean finalizarRequisicoes(List<Long> idsRequisicao, Long idOrganizacao) {
  482 + for (Long idRequisicao : idsRequisicao) {
  483 + List<AtendimentoRequisicaoConsumo> listaAtendimentoPorRequisicaoConsumo = this.listaAtendimentoPorRequisicaoConsumo(idRequisicao, idOrganizacao);
  484 + for (AtendimentoRequisicaoConsumo atendimentoRequisicaoConsumo : listaAtendimentoPorRequisicaoConsumo) {
  485 + atendimentoRequisicaoConsumo.getRequisicaoConsumo().setTipoStatusRequisicao(this.dominioService.findByChaveAndCodigo(DominioAlmoxarifado.TIPO_STATUS_REQUISICAO, DominioAlmoxarifado.TIPO_STATUS_FINALIZADA));
  486 + super.merge(atendimentoRequisicaoConsumo);
  487 + }
  488 + }
  489 + return true;
  490 + }
  491 +
  492 + @Override
  493 + public Boolean excluirAtendimentos(List<Long> idsRequisicao, Long idOrganizacao) {
  494 + for (Long idRequisicao : idsRequisicao) {
  495 + List<AtendimentoRequisicaoConsumo> listaAtendimentoPorRequisicaoConsumo = this.listaAtendimentoPorRequisicaoConsumo(idRequisicao, idOrganizacao);
  496 + StringBuilder mensagem = new StringBuilder();
  497 + for (AtendimentoRequisicaoConsumo atendimentoRequisicaoConsumo : listaAtendimentoPorRequisicaoConsumo) {
  498 + if (!UtilDate.isDentroMes(atendimentoRequisicaoConsumo.getRequisicaoConsumo().getDataFinalizacaoAtendimento(), atendimentoRequisicaoConsumo.getRequisicaoConsumo().getOrganizacao().getDataReferenciaVigente())) {
  499 + String validacao = this.internacionalizacaoService.getTranslate("ALMOXARIFADO.VALIDACAO.DATA_FINALIZACAO_FORA_REFERENCIA", this.getIdioma());
  500 + validacao = String.format(validacao, atendimentoRequisicaoConsumo.getRequisicaoConsumo().getNumeroRequisicao());
  501 + validacao += "</br></br>";
  502 + mensagem.append(validacao);
  503 + }
  504 + }
  505 + if(StringUtils.isNotBlank(mensagem.toString())){
  506 + throw new BusinessException(mensagem.toString(), CodigoErro.REGRA_NEGOCIO.getValue());
  507 + }else{
  508 + for (AtendimentoRequisicaoConsumo atendimentoRequisicaoConsumo : listaAtendimentoPorRequisicaoConsumo) {
  509 + this.remove(atendimentoRequisicaoConsumo);
  510 + }
  511 + }
  512 + }
  513 + return true;
  514 + }
  515 +
465 } 516 }
cit-almoxarifado-web/src/main/java/br/com/centralit/controller/AtendimentoRequisicaoConsumoController.java
@@ -10,10 +10,14 @@ import org.springframework.web.bind.annotation.RequestMethod; @@ -10,10 +10,14 @@ import org.springframework.web.bind.annotation.RequestMethod;
10 import org.springframework.web.bind.annotation.RequestParam; 10 import org.springframework.web.bind.annotation.RequestParam;
11 import org.springframework.web.bind.annotation.ResponseBody; 11 import org.springframework.web.bind.annotation.ResponseBody;
12 12
  13 +import com.googlecode.genericdao.search.Search;
  14 +import com.googlecode.genericdao.search.SearchResult;
  15 +
13 import br.com.centralit.api.framework.json.ViewsAlmoxarifado; 16 import br.com.centralit.api.framework.json.ViewsAlmoxarifado;
14 import br.com.centralit.api.model.AtendimentoRequisicaoConsumo; 17 import br.com.centralit.api.model.AtendimentoRequisicaoConsumo;
15 import br.com.centralit.api.model.RequisicaoConsumo; 18 import br.com.centralit.api.model.RequisicaoConsumo;
16 import br.com.centralit.api.service.AtendimentoRequisicaoConsumoService; 19 import br.com.centralit.api.service.AtendimentoRequisicaoConsumoService;
  20 +import br.com.centralit.api.viewHelper.AtendimentoVH;
17 import br.com.centralit.api.viewHelper.InformacoesAtendimentoVH; 21 import br.com.centralit.api.viewHelper.InformacoesAtendimentoVH;
18 import br.com.centralit.framework.controller.GenericController; 22 import br.com.centralit.framework.controller.GenericController;
19 import br.com.centralit.framework.dao.arquitetura.SearchSeven; 23 import br.com.centralit.framework.dao.arquitetura.SearchSeven;
@@ -23,9 +27,6 @@ import br.com.centralit.framework.model.SearchParams; @@ -23,9 +27,6 @@ import br.com.centralit.framework.model.SearchParams;
23 import br.com.centralit.framework.view.GridVH; 27 import br.com.centralit.framework.view.GridVH;
24 import br.com.centralit.framework.view.ResultResponseVH; 28 import br.com.centralit.framework.view.ResultResponseVH;
25 29
26 -import com.googlecode.genericdao.search.Search;  
27 -import com.googlecode.genericdao.search.SearchResult;  
28 -  
29 /** 30 /**
30 * <p><img src="http://centralit.com.br/images/logo_central.png"></p> 31 * <p><img src="http://centralit.com.br/images/logo_central.png"></p>
31 * 32 *
@@ -195,5 +196,21 @@ public class AtendimentoRequisicaoConsumoController extends GenericController&lt;At @@ -195,5 +196,21 @@ public class AtendimentoRequisicaoConsumoController extends GenericController&lt;At
195 196
196 return new ResponseBodyWrapper(this.atendimentoRequisicaoConsumoService.removerAtendimentoRequisicao(idsRequisicaoConsumo, idOrganizacao), this.getEditView()); 197 return new ResponseBodyWrapper(this.atendimentoRequisicaoConsumoService.removerAtendimentoRequisicao(idsRequisicaoConsumo, idOrganizacao), this.getEditView());
197 } 198 }
  199 +
  200 + @RequestMapping(value = "/finalizarRequisicoes", method = RequestMethod.POST, produces = "application/json")
  201 + @ResponseBody
  202 + public Boolean finalizarRequisicoes(@RequestBody AtendimentoVH atendimentoVH) {
  203 +
  204 + return this.atendimentoRequisicaoConsumoService.finalizarRequisicoes(atendimentoVH.getIdsRequisicao(), atendimentoVH.getIdOrganizacao());
  205 +
  206 + }
  207 +
  208 + @RequestMapping(value = "/excluirAtendimentos", method = RequestMethod.POST, produces = "application/json")
  209 + @ResponseBody
  210 + public Boolean excluirAtendimentos(@RequestBody AtendimentoVH atendimentoVH) {
  211 +
  212 + return this.atendimentoRequisicaoConsumoService.excluirAtendimentos(atendimentoVH.getIdsRequisicao(), atendimentoVH.getIdOrganizacao());
  213 +
  214 + }
198 215
199 } 216 }
cit-almoxarifado-web/src/main/java/br/com/centralit/listener/StartupListenerAlmoxarifado.java
@@ -322,6 +322,7 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat @@ -322,6 +322,7 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat
322 322
323 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.ATENDIMENTO_S", "Atendimento(s)", dominio, modulo)); 323 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.ATENDIMENTO_S", "Atendimento(s)", dominio, modulo));
324 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.BAIXA_S", "Baixa(s)", dominio, modulo)); 324 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.BAIXA_S", "Baixa(s)", dominio, modulo));
  325 + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.EXCLUIR_ATENDIMENTO", "Excluir atendimento", dominio, modulo));
325 } 326 }
326 327
327 private void gerarValidacao(Dominio dominio, Modulo modulo, List<Internacionalizacao> internacionalizacaoList) { 328 private void gerarValidacao(Dominio dominio, Modulo modulo, List<Internacionalizacao> internacionalizacaoList) {
@@ -397,6 +398,14 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat @@ -397,6 +398,14 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat
397 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.ENTRADA_ENDERECOS_ESTOQUE_DESVINCULADOS_MATERIAL", "Todos os materiais desta entrada tiveram seu endereço de estoque retirados!", dominio, modulo)); 398 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.ENTRADA_ENDERECOS_ESTOQUE_DESVINCULADOS_MATERIAL", "Todos os materiais desta entrada tiveram seu endereço de estoque retirados!", dominio, modulo));
398 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.ENTRADA_ENDERECOS_ESTOQUE_PADRAO_VINCULADOS_MATERIAL", "Todos os materiais desta entrada que tinham endereços padrões neste almoxarifado foram vinculados a ele!", dominio, modulo)); 399 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.ENTRADA_ENDERECOS_ESTOQUE_PADRAO_VINCULADOS_MATERIAL", "Todos os materiais desta entrada que tinham endereços padrões neste almoxarifado foram vinculados a ele!", dominio, modulo));
399 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.EXCLUSAO_ULTIMO_ITEM_ENTRADA", "É necessário existir ao menos um item nesta lista, para continuar exclua a entrada inteira ou adicione outro item primeiro!", dominio, modulo)); 400 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.EXCLUSAO_ULTIMO_ITEM_ENTRADA", "É necessário existir ao menos um item nesta lista, para continuar exclua a entrada inteira ou adicione outro item primeiro!", dominio, modulo));
  401 +
  402 + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.FINALIZAR_ATENDIMENTO_SOMENTE_ATENDIMENTO_PARCIAL", "A finalização de atendimento somente é permitido para requisições com a situação igual a 'Atendida parcialmente'.", dominio, modulo));
  403 + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.EXCLUIR_ATENDIMENTO_SOMENTE_ATENDIMENTO_PARCIAL_FINALIZADA", "A exclusão de atendimento somente é permitido para requisições com a situação igual a 'Atendida parcialmente' ou 'Finalizada'.", dominio, modulo));
  404 + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.CONFIRMA_FINALIZAR_REQUISICAO", "Confirma finalização das requisições selecionados?", dominio, modulo));
  405 + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.CONFIRMA_EXCLUSAO_ATENDIMENTO_REQUISICAO", "Confirma exclusão dos atendimentos selecionados?", dominio, modulo));
  406 + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.NAO_PERMITIDO_ATENDER_REQUISICAO_FINALIZADA", "Atendimento não permitido pois há requisições finalizadas selecionadas para atendimento. Desmarque as requisições finalizadas e clique novamente em 'Atender'.", dominio, modulo));
  407 + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.DATA_FINALIZACAO_FORA_REFERENCIA", "Exclusão não permitida. Data de finalização da requisição %s fora da referência vigente.", dominio, modulo));
  408 +
400 } 409 }
401 } 410 }
402 411
cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/AtendimentoRequisicaoConsumoController.js
@@ -10,6 +10,7 @@ citApp.controller( &#39;AtendimentoRequisicaoConsumoController&#39;, @@ -10,6 +10,7 @@ citApp.controller( &#39;AtendimentoRequisicaoConsumoController&#39;,
10 'RequisicaoConsumoRepository', 10 'RequisicaoConsumoRepository',
11 'EstruturaOrganizacionalAlmoxarifadoRepository', 11 'EstruturaOrganizacionalAlmoxarifadoRepository',
12 'DominioRepository', 'EstruturaOrganizacionalPatrimonioRepository', 12 'DominioRepository', 'EstruturaOrganizacionalPatrimonioRepository',
  13 + 'MaterialLocalEstoqueRepository',
13 function AtendimentoRequisicaoConsumoController($scope, 14 function AtendimentoRequisicaoConsumoController($scope,
14 $translate, 15 $translate,
15 $timeout, 16 $timeout,
@@ -18,7 +19,8 @@ citApp.controller( &#39;AtendimentoRequisicaoConsumoController&#39;, @@ -18,7 +19,8 @@ citApp.controller( &#39;AtendimentoRequisicaoConsumoController&#39;,
18 AtendimentoRequisicaoConsumoItemRepository, 19 AtendimentoRequisicaoConsumoItemRepository,
19 RequisicaoConsumoRepository, 20 RequisicaoConsumoRepository,
20 EstruturaOrganizacionalAlmoxarifadoRepository, 21 EstruturaOrganizacionalAlmoxarifadoRepository,
21 - DominioRepository, EstruturaOrganizacionalPatrimonioRepository) { 22 + DominioRepository, EstruturaOrganizacionalPatrimonioRepository,
  23 + MaterialLocalEstoqueRepository) {
22 24
23 $scope.TIPO_STATUS_REQUISICAO = "tipoStatusRequisicao"; 25 $scope.TIPO_STATUS_REQUISICAO = "tipoStatusRequisicao";
24 26
@@ -275,6 +277,7 @@ citApp.controller( &#39;AtendimentoRequisicaoConsumoController&#39;, @@ -275,6 +277,7 @@ citApp.controller( &#39;AtendimentoRequisicaoConsumoController&#39;,
275 $scope.edit = true; 277 $scope.edit = true;
276 $scope.atendimentos = []; 278 $scope.atendimentos = [];
277 $scope.idsRequisicoesSelecionados = []; 279 $scope.idsRequisicoesSelecionados = [];
  280 + $scope.atendimentoRequisicaoConsumo.dataAtendimento = new Date();
278 $scope.requisicoesSelecionadas = []; 281 $scope.requisicoesSelecionadas = [];
279 $scope.requisicoesSelecionadas = listaSelecionados; 282 $scope.requisicoesSelecionadas = listaSelecionados;
280 listaSelecionados.forEach(function(requisicao){ 283 listaSelecionados.forEach(function(requisicao){
@@ -310,23 +313,36 @@ citApp.controller( &#39;AtendimentoRequisicaoConsumoController&#39;, @@ -310,23 +313,36 @@ citApp.controller( &#39;AtendimentoRequisicaoConsumoController&#39;,
310 result.forEach(function (requisicao) { 313 result.forEach(function (requisicao) {
311 $scope.addRequisicaoConsumoAoAtendimento(requisicao.originalElement); 314 $scope.addRequisicaoConsumoAoAtendimento(requisicao.originalElement);
312 }); 315 });
313 - $scope.$openModal('/cit-almoxarifado-web/html/atendimentoRequisicaoConsumo/atendimentoRequisicaoConsumoEditModal.html', 'lg'); 316 + //$scope.$openModal('/cit-almoxarifado-web/html/atendimentoRequisicaoConsumo/atendimentoRequisicaoConsumoEditModal.html', 'lg');
  317 + $scope.$showPageEditWorkspace($scope.workspace);
314 $scope.setLoading(false); 318 $scope.setLoading(false);
315 }); 319 });
316 } 320 }
317 321
318 $scope.addRequisicaoConsumoAoAtendimento = function(req){ 322 $scope.addRequisicaoConsumoAoAtendimento = function(req){
319 var atendimento = {requisicaoConsumo : req}; 323 var atendimento = {requisicaoConsumo : req};
320 - if(atendimento.requisicaoConsumo.tipoStatusRequisicao.codigo == $scope.TIPO_STATUS_PRONTA_PARA_ATENDIMENTO  
321 - || atendimento.requisicaoConsumo.tipoStatusRequisicao.codigo == $scope.TIPO_STATUS_ATENDIDA_PARCIALMENTE){ 324 +
  325 + if(atendimento.requisicaoConsumo.tipoStatusRequisicao.codigo == $scope.TIPO_STATUS_PRONTA_PARA_ATENDIMENTO || atendimento.requisicaoConsumo.tipoStatusRequisicao.codigo == $scope.TIPO_STATUS_ATENDIDA_PARCIALMENTE){
  326 +
322 atendimento.requisicaoConsumo.requisicaoConsumoItens.forEach(function (requisicaoConsumoItem) { 327 atendimento.requisicaoConsumo.requisicaoConsumoItens.forEach(function (requisicaoConsumoItem) {
323 if(!atendimento.atendimentoRequisicaoConsumoItems){ 328 if(!atendimento.atendimentoRequisicaoConsumoItems){
324 atendimento.atendimentoRequisicaoConsumoItems = []; 329 atendimento.atendimentoRequisicaoConsumoItems = [];
325 } 330 }
  331 +
326 var atendimentoItem = { 332 var atendimentoItem = {
327 material : requisicaoConsumoItem.materialConsumo, 333 material : requisicaoConsumoItem.materialConsumo,
328 - requisicaoConsumoItem : requisicaoConsumoItem 334 + requisicaoConsumoItem : requisicaoConsumoItem,
  335 + locaisEstoque: []
329 }; 336 };
  337 +
  338 + MaterialLocalEstoqueRepository.buscarLocaisEstoquePorIdMaterialIdAlmoxarifado(requisicaoConsumoItem.materialConsumo.id, req.almoxarifado.id).then(function(result) {
  339 + atendimentoItem.locaisEstoque = result;
  340 +
  341 + result.forEach(function(localEstoque){
  342 + if(localPrincipal)
  343 + });
  344 + });
  345 +
330 atendimento.atendimentoRequisicaoConsumoItems.push(atendimentoItem); 346 atendimento.atendimentoRequisicaoConsumoItems.push(atendimentoItem);
331 }); 347 });
332 $scope.atendimentos.push(atendimento); 348 $scope.atendimentos.push(atendimento);
cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/AtendimentoRequisicaoConsumoListController.js
@@ -21,7 +21,7 @@ citApp.controller(&#39;AtendimentoRequisicaoConsumoListController&#39;, [&#39;$scope&#39;, &#39;Aten @@ -21,7 +21,7 @@ citApp.controller(&#39;AtendimentoRequisicaoConsumoListController&#39;, [&#39;$scope&#39;, &#39;Aten
21 $scope.filterCriteria = { 21 $scope.filterCriteria = {
22 start : 1, 22 start : 1,
23 dir : 'asc', 23 dir : 'asc',
24 - sort : 'id', 24 + sort : 'desc:numeroRequisicao;tipoStatusRequisicao.codigo',
25 limit : 10, 25 limit : 10,
26 fields: ['id', 'numeroRequisicao', 'tipoStatusRequisicao.descricao', 'dataRequisicao', 'unidadeRequisitante.nome', 'almoxarifado.nome', 'centroCusto.descricao', 'tipoStatusRequisicao.codigo'], 26 fields: ['id', 'numeroRequisicao', 'tipoStatusRequisicao.descricao', 'dataRequisicao', 'unidadeRequisitante.nome', 'almoxarifado.nome', 'centroCusto.descricao', 'tipoStatusRequisicao.codigo'],
27 filters : [ {type : 'numeric-range', field : 'numeroRequisicao' } , 27 filters : [ {type : 'numeric-range', field : 'numeroRequisicao' } ,
@@ -31,8 +31,8 @@ citApp.controller(&#39;AtendimentoRequisicaoConsumoListController&#39;, [&#39;$scope&#39;, &#39;Aten @@ -31,8 +31,8 @@ citApp.controller(&#39;AtendimentoRequisicaoConsumoListController&#39;, [&#39;$scope&#39;, &#39;Aten
31 {type : 'string', field : 'almoxarifado.nome' } , 31 {type : 'string', field : 'almoxarifado.nome' } ,
32 {type : 'string', field : 'centroCusto.descricao' }] 32 {type : 'string', field : 'centroCusto.descricao' }]
33 }; 33 };
34 -  
35 - $scope.filterCriteria.filters.push({type: 'string', field: 'tipoStatusRequisicao.nome', value: 'FINALIZADA', comparison: 'ne', notFilter : true}); 34 +
  35 + $scope.filterCriteria.filters.push({type: 'string', field: 'tipoStatusRequisicao.nome', value: 'DEVOLVIDA', comparison: 'ne', notFilter : true});
36 $scope.filterCriteria.filters.push({type: 'string', field: 'tipoStatusRequisicao.nome', value: 'NAO_CONCLUIDA', comparison: 'ne', notFilter : true}); 36 $scope.filterCriteria.filters.push({type: 'string', field: 'tipoStatusRequisicao.nome', value: 'NAO_CONCLUIDA', comparison: 'ne', notFilter : true});
37 }; 37 };
38 38
@@ -41,7 +41,7 @@ citApp.controller(&#39;AtendimentoRequisicaoConsumoListController&#39;, [&#39;$scope&#39;, &#39;Aten @@ -41,7 +41,7 @@ citApp.controller(&#39;AtendimentoRequisicaoConsumoListController&#39;, [&#39;$scope&#39;, &#39;Aten
41 DominioRepository.findAllDominio('tipoStatusRequisicao').then(function(result) { 41 DominioRepository.findAllDominio('tipoStatusRequisicao').then(function(result) {
42 var listaDominio = []; 42 var listaDominio = [];
43 angular.forEach(result, function(dominio){ 43 angular.forEach(result, function(dominio){
44 - if(dominio.nome != 'FINALIZADA' && dominio.nome != 'NAO_CONCLUIDA'){ 44 + if(dominio.nome != 'NAO_CONCLUIDA' && dominio.nome != 'DEVOLVIDA'){
45 listaDominio.push(dominio) 45 listaDominio.push(dominio)
46 } 46 }
47 47
@@ -85,7 +85,96 @@ citApp.controller(&#39;AtendimentoRequisicaoConsumoListController&#39;, [&#39;$scope&#39;, &#39;Aten @@ -85,7 +85,96 @@ citApp.controller(&#39;AtendimentoRequisicaoConsumoListController&#39;, [&#39;$scope&#39;, &#39;Aten
85 }; 85 };
86 86
87 $scope.iniciarAtendimento = function(){ 87 $scope.iniciarAtendimento = function(){
88 - angular.element('#editAtendimentoRequisicaoConsumo').scope().prepararAtendimentoRequisicoes($scope.listaSelecionados); 88 +
  89 + if($scope.listaSelecionados && $scope.listaSelecionados.length == 0) {
  90 + $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_AO_MENOS_UM_ITEM'));
  91 + return;
  92 + }
  93 +
  94 + var permiteAtender = true;
  95 + angular.forEach($scope.listaSelecionados, function (requisicaoSelecionado) {
  96 + if(requisicaoSelecionado['tipoStatusRequisicao.codigo'] == 5){
  97 + permiteAtender = false;
  98 + $scope.showAlert('warning', $translate.instant('ALMOXARIFADO.MSG.NAO_PERMITIDO_ATENDER_REQUISICAO_FINALIZADA'));
  99 + }
  100 + });
  101 +
  102 + if(permiteAtender){
  103 + angular.element('#editAtendimentoRequisicaoConsumo').scope().prepararAtendimentoRequisicoes($scope.listaSelecionados);
  104 + }
89 }; 105 };
90 - 106 +
  107 + function getIdsRequisicao(){
  108 + $scope.idsSelecionados = [];
  109 + angular.forEach($scope.listaSelecionados, function (requisicaoSelecionado) {
  110 + $scope.idsSelecionados.push(requisicaoSelecionado.id);
  111 + });
  112 + }
  113 +
  114 + $scope.finalizarRequisicao = function(){
  115 +
  116 + if($scope.listaSelecionados && $scope.listaSelecionados.length == 0) {
  117 + $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_AO_MENOS_UM_ITEM'));
  118 + return;
  119 + }
  120 +
  121 + var permiteFinalizar = true;
  122 + angular.forEach($scope.listaSelecionados, function (requisicaoSelecionado) {
  123 + if(requisicaoSelecionado['tipoStatusRequisicao.codigo'] != 1){
  124 + permiteFinalizar = false;
  125 + $scope.showAlert('warning', $translate.instant('ALMOXARIFADO.MSG.FINALIZAR_ATENDIMENTO_SOMENTE_ATENDIMENTO_PARCIAL'));
  126 + }
  127 + });
  128 +
  129 + if(permiteFinalizar){
  130 + $scope.$openModalConfirm({
  131 + message: $translate.instant('ALMOXARIFADO.MSG.CONFIRMA_FINALIZAR_REQUISICAO'),
  132 + callback: function () {
  133 +
  134 + getIdsRequisicao();
  135 + var atendimentoVH = {idsRequisicao : $scope.idsSelecionados, idOrganizacao : $scope.usuarioLogado.organizacao.id};
  136 + AtendimentoRequisicaoConsumoRepository.finalizarRequisicoes(atendimentoVH).then(function(result) {
  137 + $scope.$modalConfirmInstance.dismiss('cancel');
  138 + $scope.showAlert('success', $translate.instant('MSG.MG001'), " ", false);
  139 + $scope.recarregar();
  140 + });
  141 + }
  142 + });
  143 + }
  144 +
  145 + };
  146 +
  147 + $scope.excluirAtendimento = function(){
  148 +
  149 + if($scope.listaSelecionados && $scope.listaSelecionados.length == 0) {
  150 + $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_AO_MENOS_UM_ITEM'));
  151 + return;
  152 + }
  153 +
  154 + var permiteExcluir = true;
  155 + angular.forEach($scope.listaSelecionados, function (requisicaoSelecionado) {
  156 + if(requisicaoSelecionado['tipoStatusRequisicao.codigo'] != 1 || requisicaoSelecionado['tipoStatusRequisicao.codigo'] != 5){
  157 + permiteExcluir = false;
  158 + $scope.showAlert('warning', $translate.instant('ALMOXARIFADO.MSG.EXCLUIR_ATENDIMENTO_SOMENTE_ATENDIMENTO_PARCIAL_FINALIZADA'));
  159 + }
  160 + });
  161 +
  162 + if(permiteExcluir){
  163 + $scope.$openModalConfirm({
  164 + message: $translate.instant('ALMOXARIFADO.MSG.CONFIRMA_EXCLUSAO_ATENDIMENTO_REQUISICAO'),
  165 + callback: function () {
  166 +
  167 + getIdsRequisicao();
  168 + var atendimentoVH = {idsRequisicao : $scope.idsSelecionados, idOrganizacao : $scope.usuarioLogado.organizacao.id};
  169 + AtendimentoRequisicaoConsumoRepository.excluirAtendimentos(atendimentoVH).then(function(result) {
  170 + $scope.$modalConfirmInstance.dismiss('cancel');
  171 + $scope.showAlert('success', $translate.instant('MSG.MG001'), " ", false);
  172 + $scope.recarregar();
  173 + });
  174 + }
  175 + });
  176 + }
  177 +
  178 + };
  179 +
91 }]); 180 }]);
92 \ No newline at end of file 181 \ No newline at end of file
cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/repository/AtendimentoRequisicaoConsumoRepository.js
@@ -21,7 +21,15 @@ citApp.factory(&#39;AtendimentoRequisicaoConsumoRepository&#39;, [&#39;RestangularAlmoxarifa @@ -21,7 +21,15 @@ citApp.factory(&#39;AtendimentoRequisicaoConsumoRepository&#39;, [&#39;RestangularAlmoxarifa
21 this.removerAtendimentoRequisicao = function (idsRequisicaoConsumo, idOrganizacao) { 21 this.removerAtendimentoRequisicao = function (idsRequisicaoConsumo, idOrganizacao) {
22 return this.restangular.one(this.route +'/removerAtendimentoRequisicao').get({idsRequisicaoConsumo : idsRequisicaoConsumo, idOrganizacao : idOrganizacao}).then(); 22 return this.restangular.one(this.route +'/removerAtendimentoRequisicao').get({idsRequisicaoConsumo : idsRequisicaoConsumo, idOrganizacao : idOrganizacao}).then();
23 }; 23 };
24 - 24 +
  25 + this.finalizarRequisicoes = function(atendimentoVH){
  26 + return restangularAlmoxarifado.all(this.route + '/finalizarRequisicoes').post(atendimentoVH).then();
  27 + };
  28 +
  29 + this.excluirAtendimentos = function(atendimentoVH){
  30 + return restangularAlmoxarifado.all(this.route + '/excluirAtendimentos').post(atendimentoVH).then();
  31 + };
  32 +
25 } 33 }
26 34
27 AbstractRepository.extend(AtendimentoRequisicaoConsumoRepository); 35 AbstractRepository.extend(AtendimentoRequisicaoConsumoRepository);
cit-almoxarifado-web/src/main/webapp/html/atendimentoRequisicaoConsumo/atendimentoRequisicaoConsumoEdit.html
@@ -43,120 +43,170 @@ @@ -43,120 +43,170 @@
43 </p> 43 </p>
44 <div class="modal-body"> 44 <div class="modal-body">
45 45
46 - <fieldset>  
47 - <legend><translate>ALMOXARIFADO.LABEL.DADOS_REQUISICAO_CONSUMO</translate></legend>  
48 - <div class="row">  
49 - <div class="col-md-4">  
50 - <label-input-number ng-id="requisicaoConsumo.numeroRequisicao" ng-label="ALMOXARIFADO.LABEL.NUMERO_REQUISICAO"  
51 - ng-model="requisicaoConsumo.numeroRequisicao"  
52 - ng-obrigatorio="false" ng-disabled="true" />  
53 - </div>  
54 - <div class="col-md-4">  
55 - <label-input ng-id="requisicaoConsumo.tipoStatusRequisicao.descricao" ng-label="LABEL.SITUACAO"  
56 - ng-model="requisicaoConsumo.tipoStatusRequisicao.descricao" ng-disabled="true" />  
57 - </div>  
58 - <div class="col-md-4">  
59 - <label-input-data ng-id="requisicaoConsumo.dataRequisicao" ng-label="ALMOXARIFADO.LABEL.DATA_REQUISICAO"  
60 - ng-model="requisicaoConsumo.dataRequisicao" ng-disabled="true"  
61 - ng-mode="day" ng-format="dd/MM/yyyy" />  
62 - </div>  
63 - </div>  
64 - <div class="col-sm-12" style="margin-top: 20px">  
65 - <div class="row margin-top">  
66 - <div class="col-sm-12">  
67 - <div class="panel panel-default">  
68 - <!-- .panel-heading -->  
69 - <table class="table table-striped table-bordered table-hover">  
70 - <thead>  
71 - <tr>  
72 - <th width="45%" class="text-center"><translate>LABEL.DESCRICAO</translate></th>  
73 - <th width="25%" class="text-center"><translate>LABEL.UNIDADE_MEDIDA</translate></th>  
74 - <th width="25%" class="text-center"><translate>ALMOXARIFADO.LABEL.QUANTIDADE_REQUERIDA</translate></th>  
75 -  
76 - </tr>  
77 - </thead>  
78 - <tbody>  
79 - <tr ng-repeat="requisicaoConsumoItem in requisicaoConsumo.requisicaoConsumoItens">  
80 - <td class="text-center">{{requisicaoConsumoItem.materialConsumo.descricao}}</td>  
81 - <td class="text-center">{{requisicaoConsumoItem.materialConsumo.unidadeArmazenamento.descricao}}</td>  
82 - <td>  
83 - <div class="col-md-12">  
84 - <label-input-decimal ng-id="requisicaoConsumoItem.quantidade$index"  
85 - ng-model="requisicaoConsumoItem.quantidade" form="requisicaoConsumoForm" ng-disabled="true" ng-custom-maxlength="14"  
86 - ng-precisao="requisicaoConsumoItem.materialConsumo.unidadeArmazenamento.tipoNumerico.codigo === 1 ? 0 : 2"/>  
87 - </div>  
88 - </td>  
89 - </tr>  
90 - <tr ng-hide="requisicaoConsumo.requisicaoConsumoItens.length > 0">  
91 - <td colspan="4" class="text-center"><translate>LABEL.TABELA_VAZIA</translate></td>  
92 - </tr>  
93 - </tbody>  
94 - </table>  
95 - <div class="row">  
96 - <div class="col-sm-4 text-left">  
97 - <a ng-href="#top"></a> 46 + <fieldset id="tableAtendimentos" ng-show="atendimentos.length > 0">
  47 + <legend id="top">
  48 + <label ng-class="{'has-error' : formDialogAtendimento.$submitted && atendimentos && atendimentos.length < 1}">
  49 + <translate>ALMOXARIFADO.LABEL.DADOS_ATENDIMENTO_REQUISICAO_CONSUMO</translate>
  50 + <span class='red'>*</span> <i ng-show="formDialogAtendimento.$submitted && atendimentos && atendimentos.length < 1"
  51 + class='fa fa-warning red'
  52 + tooltip="{{$translate.instant('DADOS_ATENDIMENTO_REQUISICAO_CONSUMO') + ' ' +$translate.instant('LABEL.CAMPO_OBRIGATORIO')}}"
  53 + tooltip-placement='top'></i>
  54 + </label>
  55 + </legend>
  56 + <!-- <div class="row"> -->
  57 + <!-- <div class="col-sm-12"> -->
  58 + <!-- <auto-complete ng-id="almoxarifado" ng-label="ALMOXARIFADO.LABEL.ALMOXARIFADO" ng-model="estruturaAlmoxarifadoPadrao" ng-obrigatorio="true" ng-find="findAutoCompleteAlmoxarifado(value)" ng-item="item.nome + ' - ' + item.classificacao" /> -->
  59 + <!-- </div> -->
  60 + <!-- </div> -->
  61 + <div class="row">
  62 + <div class="col-md-6">
  63 + <label-input-data ng-id="atendimentoRequisicaoConsumo.dataAtendimento" ng-label="ALMOXARIFADO.LABEL.DATA_ATENDIMENTO"
  64 + ng-model="atendimentoRequisicaoConsumo.dataAtendimento" form="formDialogAtendimento" ng-obrigatorio="true"
  65 + ng-disabled="!edit" ng-mode="day" ng-format="dd/MM/yyyy" />
  66 + </div>
  67 + </div>
  68 + <div class="row" style="margin-top: 20px" ng-repeat="atendimento in atendimentos">
  69 + <div class="widget-box margin-bottom">
  70 + <div class="widget-header">
  71 + <h2 class="widget-title" style="font-size: 16px !important">
  72 + <label><translate>ALMOXARIFADO.LABEL.REQUISICAO</translate>: {{atendimento.requisicaoConsumo.numeroRequisicao}}</label>
  73 + </h2>
  74 + <div class="widget-toolbar">
  75 + <a href="#void" ng-click="widgetAtendimentoCollapsed = !widgetAtendimentoCollapsed">
  76 + <i class="fa" ng-class="{'fa-chevron-up': widgetAtendimentoCollapsed, 'fa-chevron-down': !widgetAtendimentoCollapsed}"></i>
  77 + </a>
  78 + </div>
  79 + </div>
  80 + <div collapse="!widgetAtendimentoCollapsed" class="widget-body">
  81 + <div class="widget-main clearfix">
  82 + <div class="row">
  83 + <div class="col-md-3">
  84 + <label-input-number ng-id="atendimento.requisicaoConsumo.numeroRequisicao$index" ng-label="ALMOXARIFADO.LABEL.NUMERO_ATENDIMENTO"
  85 + ng-model="atendimento.requisicaoConsumo.numeroRequisicao" ng-disabled="true" />
  86 + </div>
  87 + <div class="col-md-3">
  88 + <label-input ng-type="text" ng-id="atendimento.requisicaoConsumo.tipoStatusRequisicao.descricao$index" ng-label="ALMOXARIFADO.LABEL.STATUS_ATUAL"
  89 + ng-model="atendimento.requisicaoConsumo.tipoStatusRequisicao.descricao" ng-disabled="true" />
  90 + </div>
  91 + <div class="col-md-3">
  92 + <label-input ng-type="text" ng-id="atendimento.requisicaoConsumo.dataRequisicao$index" ng-label="ALMOXARIFADO.LABEL.DATA_REQUISICAO"
  93 + ng-model="atendimento.requisicaoConsumo.dataRequisicao" ng-disabled="true" />
  94 + </div>
  95 + </div>
  96 + <div class="row">
  97 + <div class="col-md-6">
  98 + <label-input ng-type="text" ng-id="atendimento.requisicaoConsumo.almoxarifado.codigoENome$index" ng-label="ALMOXARIFADO.LABEL.ALMOXARIFADO"
  99 + ng-model="atendimento.requisicaoConsumo.almoxarifado.codigoENome" ng-disabled="true" />
  100 + </div>
  101 + <div class="col-md-6">
  102 + <label-input ng-type="text" ng-id="atendimento.requisicaoConsumo.unidadeRequisitante.codigoENome$index" ng-label="ALMOXARIFADO.LABEL.UNIDADE_REQUISITANTE"
  103 + ng-model="atendimento.requisicaoConsumo.unidadeRequisitante.codigoENome" ng-disabled="true" />
  104 + </div>
  105 + </div>
  106 + <div class="row margin-top">
  107 + <div class="col-sm-12">
  108 + <div class="panel panel-default">
  109 + <!-- .panel-heading -->
  110 + <table class="table table-striped table-bordered table-hover">
  111 + <thead>
  112 + <tr>
  113 + <th class="text-center" ng-show="edit"><translate>ALMOXARIFADO.LABEL.INFO</translate></th>
  114 + <th class="text-center" width="30%"><translate>LABEL.MATERIAL</translate></th>
  115 + <th class="text-center"><translate>LABEL.UNIDADE_MEDIDA</translate></th>
  116 + <th class="text-center"><translate>ALMOXARIFADO.LABEL.QTD_EM_ESTOQUE</translate></th>
  117 + <th class="text-center"><translate>ALMOXARIFADO.LABEL.QTD_FORNECIDA_REQUISICAO</translate></th>
  118 + <th class="text-center"><translate>ALMOXARIFADO.LABEL.QUANTIDADE_PEDIDA</translate></th>
  119 + <th class="text-center"><translate>ALMOXARIFADO.LABEL.QUANTIDADE_ATENDIDA</translate></th>
  120 + <th class="text-center"><translate>ALMOXARIFADO.LABEL.ENDERECO_ESTOQUE</translate></th>
  121 + <th class="text-center"><translate>ALMOXARIFADO.LABEL.ATENDER</translate><span class="red">*</span></th>
  122 + </tr>
  123 + </thead>
  124 + <tbody>
  125 + <tr ng-repeat-start="atendimentoRequisicaoConsumoItem in atendimento.atendimentoRequisicaoConsumoItems">
  126 + <td class="text-center" ng-show="edit">
  127 + <button type="button" ng-click="buscarInformacoesParaAtendimento(atendimentoRequisicaoConsumoItem)">
  128 + <i class="ace-icon fa {{atendimentoRequisicaoConsumoItem.$verInfo ? 'fa-minus' : 'fa-plus'}} bigger-125"></i>
  129 + </button>
  130 + </td>
  131 + <td class="text-center">{{atendimentoRequisicaoConsumoItem.material.descricao}}</td>
  132 + <td class="text-center">{{atendimentoRequisicaoConsumoItem.material.unidadeArmazenamento.sigla}}</td>
  133 + <td class="text-center">{{atendimentoRequisicaoConsumoItem.$info.qtdEstoque}}</td>
  134 + <td class="text-center">{{atendimentoRequisicaoConsumoItem.$info.qtdFornecidaUltimaRequisicao}}</td>
  135 + <td class="text-center">{{atendimentoRequisicaoConsumoItem.requisicaoConsumoItem.quantidade}}</td>
  136 + <td class="text-center" ng-show="novoAtendimento">{{atendimentoRequisicaoConsumoItem.requisicaoConsumoItem.quantidadeAtendida
  137 + ? atendimentoRequisicaoConsumoItem.requisicaoConsumoItem.quantidadeAtendida : 0}}</td>
  138 + <td class="text-center" ng-hide="novoAtendimento">{{atendimentoRequisicaoConsumoItem.requisicaoConsumoItem.quantidadeAtendida
  139 + - atendimentoRequisicaoConsumoItem.$quantidade}}</td>
  140 +
  141 + <td class="text-center">
  142 + <label-select ng-id="atendimentoRequisicaoConsumoItem.localEstoque$index" ng-obrigatorio="true"
  143 + ng-model="atendimentoRequisicaoConsumoItem.localEstoque" ng-list="atendimentoRequisicaoConsumoItem.locaisEstoque"
  144 + form="formDialogAtendimento"
  145 + ng-custom-options="localEstoque as localEstoque.endereco.descricao for localEstoque"></label-select>
  146 +
  147 + </td>
  148 +
  149 + <td ng-if="atendimentoRequisicaoConsumoItem.requisicaoConsumoItem.quantidade != atendimentoRequisicaoConsumoItem.requisicaoConsumoItem.quantidadeAtendida" class="text-center">
  150 + <label-input-decimal ng-id="atendimentoRequisicaoConsumoItem.quantidade$index" ng-obrigatorio="true" ng-evento-blur="aplicarValidacaoDecimal"
  151 + ng-model="atendimentoRequisicaoConsumoItem.quantidade" form="formDialogAtendimento" ng-disabled="!edit" ng-custom-maxlength="{{atendimentoRequisicaoConsumoItem.material.unidadeArmazenamento.tipoNumerico.codigo === 1 ? 4 : 11}}"
  152 + ng-precisao="{{atendimentoRequisicaoConsumoItem.material.unidadeArmazenamento.tipoNumerico.codigo === 1 ? 0 : 'decimal'}}" />
  153 + </td>
  154 + <td class="text-center" ng-show="atendimentoRequisicaoConsumoItem.requisicaoConsumoItem.quantidade == atendimentoRequisicaoConsumoItem.requisicaoConsumoItem.quantidadeAtendida">
  155 + <i class='fa fa-check green' tooltip="{{$translate.instant('ALMOXARIFADO.LABEL.ATENDIDA')}}"></i>
  156 + </td>
  157 +
  158 + </tr>
  159 + <tr ng-show="atendimentoRequisicaoConsumoItem.$verInfo == true" class="table-subgrid" ng-repeat-end>
  160 + <td colspan="9">
  161 + <table class="table table-bordered table-striped">
  162 + <thead>
  163 + <tr>
  164 + <th class="text-center" colspan="1"><translate>LABEL.GERAL</translate></th>
  165 + <th class="text-center" colspan="8"><translate>ALMOXARIFADO.LABEL.UNIDADE_REQUISITANTE</translate></th>
  166 + </tr>
  167 + <tr>
  168 + <th class="text-center"><translate>ALMOXARIFADO.LABEL.QTD_EM_ESTOQUE</translate></th>
  169 + <th class="text-center"><translate>ALMOXARIFADO.LABEL.CONSUMO_MEDIO_MENSAL</translate></th>
  170 + <th class="text-center"><translate>ALMOXARIFADO.LABEL.CONSUMO_EXERCICIO_ANTERIOR</translate></th>
  171 + <th class="text-center"><translate>ALMOXARIFADO.LABEL.CONSUMO_EXERCICIO_ATUAL</translate></th>
  172 + <th class="text-center"><translate>ALMOXARIFADO.LABEL.CONSUMO_12_MESES</translate></th>
  173 + <th class="text-center"><translate>ALMOXARIFADO.LABEL.CONSUMO_MEDIO_MENSAL</translate></th>
  174 + <th class="text-center"><translate>ALMOXARIFADO.LABEL.NUMERO_ULTIMA_REQUISICAO</translate></th>
  175 + <th class="text-center"><translate>ALMOXARIFADO.LABEL.DATA_ULTIMA_REQUISICAO</translate></th>
  176 + <th class="text-center"><translate>ALMOXARIFADO.LABEL.QTD_REQUERIDA_REQUISICAO</translate></th>
  177 + <th class="text-center"><translate>ALMOXARIFADO.LABEL.QTD_FORNECIDA_REQUISICAO</translate></th>
  178 + </tr>
  179 + </thead>
  180 + <tbody>
  181 + <td class="text-center">{{atendimentoRequisicaoConsumoItem.$info.qtdEstoque}}</td>
  182 + <td class="text-center">{{atendimentoRequisicaoConsumoItem.$info.consumoMedioMensalMaterial}}</td>
  183 + <td class="text-center">{{atendimentoRequisicaoConsumoItem.$info.consumoExercicioAnterior}}</td>
  184 + <td class="text-center">{{atendimentoRequisicaoConsumoItem.$info.consumoExercicioAtual}}</td>
  185 + <td class="text-center">{{atendimentoRequisicaoConsumoItem.$info.consumo12meses}}</td>
  186 + <td class="text-center">{{atendimentoRequisicaoConsumoItem.$info.consumoMedioMensalUR}}</td>
  187 + <td class="text-center">{{atendimentoRequisicaoConsumoItem.$info.numeroUltimaRequisicao}}</td>
  188 + <td class="text-center">{{atendimentoRequisicaoConsumoItem.$info.dataUltimaRequisicao | dateBR}}</td>
  189 + <td class="text-center">{{atendimentoRequisicaoConsumoItem.$info.qtdRequeridaUltimaRequisicao}}</td>
  190 + <td class="text-center">{{atendimentoRequisicaoConsumoItem.$info.qtdFornecidaUltimaRequisicao}}</td>
  191 + </tbody>
  192 + </table>
  193 + </td>
  194 + </tr>
  195 + </tbody>
  196 + </table>
  197 + <div class="row">
  198 + <div class="col-sm-4 text-left">
  199 + <a ng-href="#top"></a>
  200 + </div>
  201 + </div>
  202 + </div>
  203 + </div>
98 </div> 204 </div>
99 </div> 205 </div>
100 </div> 206 </div>
101 </div> 207 </div>
102 </div> 208 </div>
103 - </div>  
104 - </fieldset>  
105 -  
106 - <fieldset>  
107 -  
108 - <legend id="top">  
109 - <label ng-class="{'has-error' : formDialogAtendimento.$submitted && atendimentos && atendimentos.length < 1}">  
110 - <translate>ALMOXARIFADO.LABEL.DADOS_ATENDIMENTO</translate>  
111 - <span class='red'>*</span> <i ng-show="formDialogAtendimento.$submitted && atendimentos && atendimentos.length < 1"  
112 - class='fa fa-warning red'  
113 - tooltip="{{$translate.instant('DADOS_ATENDIMENTO_REQUISICAO_CONSUMO') + ' ' +$translate.instant('LABEL.CAMPO_OBRIGATORIO')}}"  
114 - tooltip-placement='top'></i>  
115 - </label>  
116 - </legend>  
117 - <div class="row">  
118 - <table class="table table-striped table-bordered table-hover">  
119 - <thead>  
120 - <tr>  
121 - <th width="5%" class="text-center"> </th>  
122 - <th class="text-center"><translate>ALMOXARIFADO.LABEL.NUMERO_ATENDIMENTO</translate></th>  
123 - <th class="text-center"><translate>ALMOXARIFADO.LABEL.DATA_ATENDIMENTO</translate></th>  
124 - </tr>  
125 - </thead>  
126 - <tbody>  
127 - <tr ng-repeat-start="atendimento in atendimentos">  
128 - <td class="text-center">  
129 - <button type="button" ng-click="apresentarInfoAtendimentoItem(atendimento)">  
130 - <i class="ace-icon fa {{atendimento.$verInfo ? 'fa-minus' : 'fa-plus'}} bigger-125"></i>  
131 - </button>  
132 - </td>  
133 - <td class="text-center">{{atendimento.numeroAtendimento}}</td>  
134 - <td class="text-center">{{atendimento.dataAtendimento}}</td>  
135 - </tr>  
136 - <tr ng-show="atendimento.$verInfo == true" class="table-subgrid" ng-repeat-end>  
137 - <td colspan="6">  
138 - <table class="table table-bordered table-striped">  
139 - <thead>  
140 - <tr>  
141 - <th class="text-center"><translate>LABEL.MATERIAL</translate></th>  
142 - <th class="text-center"><translate>ALMOXARIFADO.LABEL.QUANTIDADE_ATENDIDA</translate></th>  
143 - </tr>  
144 - </thead>  
145 - <tbody>  
146 - <tr ng-repeat="atendimentoItem in atendimento.atendimentoRequisicaoConsumoItems">  
147 - <td style="width: 56%" class="text-center">{{atendimentoItem.material.descricao}}</td>  
148 - <td class="text-center"><label-input-decimal ng-id="atendimentoItem.quantidade$index" ng-obrigatorio="true"  
149 - ng-model="atendimentoItem.quantidade" ng-custom-maxlength="14" ng-disabled="!edit"  
150 - ng-precisao="atendimentoItem.material.unidadeArmazenamento.tipoNumerico.codigo === 1 ? 0 : 2" /></td>  
151 - </tr>  
152 - </tbody>  
153 - </table>  
154 - </td>  
155 - </tr>  
156 - </tbody>  
157 - </table>  
158 - </div>  
159 - </fieldset>  
160 - </div> 209 + </fieldset>
  210 + </div>
161 </form> 211 </form>
162 </div> 212 </div>
cit-almoxarifado-web/src/main/webapp/html/atendimentoRequisicaoConsumo/atendimentoRequisicaoConsumoEditModal.html
@@ -13,10 +13,9 @@ @@ -13,10 +13,9 @@
13 </li> 13 </li>
14 </ul> 14 </ul>
15 </div> 15 </div>
16 - <button ng-click="$dismiss('cancel');" class="btn btn-clear">  
17 - <i class="fa fa-times red"></i>  
18 - <translate>LABEL.FECHAR</translate>  
19 - </button> 16 + <button class="btn btn-clear" ng-click="$showPageSearchWorkspace(workspace); atualizaPaginaPesquisa();">
  17 + <i class="fa fa-search"></i> <translate>LABEL.PESQUISAR</translate>
  18 + </button>
20 </div><!-- .modal-header --> 19 </div><!-- .modal-header -->
21 20
22 <div class="modal-body"> 21 <div class="modal-body">
cit-almoxarifado-web/src/main/webapp/html/atendimentoRequisicaoConsumo/atendimentoRequisicaoConsumoList.html
@@ -5,23 +5,23 @@ @@ -5,23 +5,23 @@
5 5
6 <button class="btn btn-clear" ng-click="iniciarAtendimento();"> 6 <button class="btn btn-clear" ng-click="iniciarAtendimento();">
7 <i class="fa fa-plus-circle yellow-dark"></i> 7 <i class="fa fa-plus-circle yellow-dark"></i>
8 - <translate>ALMOXARIFADO.LABEL.INICIAR_ATENDIMENTO</translate> 8 + <translate>ALMOXARIFADO.LABEL.ATENDER</translate>
9 </button> 9 </button>
10 10
11 - <button ng-show="listaSelecionados.length == 1" class="btn btn-clear" ng-click="abrirVisualizar(false);">  
12 - <i class="fa fa-search blue"></i>  
13 - <translate>LABEL.VISUALIZAR</translate> 11 + <button class="btn btn-clear" ng-click="finalizarRequisicao();">
  12 + <i class="fa fa-file-text-o green"></i>
  13 + <translate>ALMOXARIFADO.LABEL.FINALIZAR_REQUISICAO</translate>
14 </button> 14 </button>
15 15
16 - <button ng-show="listaSelecionados.length == 1" class="btn btn-clear" ng-click="abrirVisualizar(true);">  
17 - <i class="fa fa-pencil blue"></i>  
18 - <translate>LABEL.EDITAR</translate> 16 + <button class="btn btn-clear" ng-click="excluirAtendimento()">
  17 + <i class="fa fa-times red"></i>
  18 + <translate>ALMOXARIFADO.LABEL.EXCLUIR_ATENDIMENTO</translate>
19 </button> 19 </button>
20 20
21 -<!-- <button class="btn btn-clear" ng-click="removerAtendimentoRequisicao();"> -->  
22 -<!-- <i class="fa fa-times red"></i> -->  
23 -<!-- <translate>LABEL.REMOVER</translate> -->  
24 -<!-- </button> --> 21 + <button ng-show="listaSelecionados.length == 1" class="btn btn-clear" ng-click="abrirVisualizar(false);">
  22 + <i class="fa fa-search blue"></i>
  23 + <translate>LABEL.VISUALIZAR</translate>
  24 + </button>
25 25
26 <span class="divider-vertical"></span> 26 <span class="divider-vertical"></span>
27 27