Commit 780c52826b1abbedfffacc448d17dc1db4612afd

Authored by erick.sato
2 parents c79bf513 8179cf90
Exists in master

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

…/cit-grp-almoxarifado into tarefa-3822
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/MovimentoEstoqueServiceImpl.java
... ... @@ -432,7 +432,7 @@ public class MovimentoEstoqueServiceImpl extends GenericServiceImpl<MovimentoEst
432 432  
433 433 for (AtendimentoRequisicaoConsumoItemEndereco atendimentoRequisicaoConsumoItemEndereco : atendimentoRequisicaoConsumoItem.getAtendimentoRequisicaoConsumoItemEnderecos()) {
434 434  
435   - MovimentoEstoque movimentoEstoque = new MovimentoEstoque(atendimento.getDataAtendimento(), atendimentoRequisicaoConsumoItem.getQuantidade().multiply(BigDecimal.valueOf(-1)),
  435 + MovimentoEstoque movimentoEstoque = new MovimentoEstoque(atendimento.getDataAtendimento(), atendimentoRequisicaoConsumoItemEndereco.getQuantidade().multiply(BigDecimal.valueOf(-1)),
436 436 valorMovimentoFIFO.multiply(BigDecimal.valueOf(-1)), valorMovimentoMediaMovel.multiply(BigDecimal.valueOf(-1)), tipoMovimento); //Movimentos negativos pois o valor esta saindo do estoque.
437 437  
438 438 movimentoEstoque.setDominioClasseReferencia(classeReferenciaAtendimento);
... ...
cit-almoxarifado-web/src/main/java/br/com/centralit/listener/StartupListenerAlmoxarifado.java
... ... @@ -377,6 +377,8 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat
377 377 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.SOMA_ITENS_ATENDER_MAIOR_ESTOQUE", "A soma das quantidades informadas para atendimento ultrapassam o saldo disponivel no endereço de estoque selecionado no(s) seguinte(s) material(ais):", dominio, modulo));
378 378 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.SOMA_ITENS_ATENDER_MAIOR_ESTOQUE_TOOLTIP", "A soma das quantidades à atender informadas para este material ultrapassaram o saldo disponivel no(s) endereço(s) de estoque.", dominio, modulo));
379 379 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.QUANTIDADE_ATENDER_SUPERIOR_SALDO_ESTOQUE", "A quantidade a ser atendida é superior ao saldo disponível no(s) seguinte(s) endereço(s) de estoque: ", dominio, modulo));
  380 +
  381 + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.QUANTIDADE_ATENDIDA_MAIOR_REQUISITADA", "A quantidade a ser atendida é superior a quantidade requisitada.", dominio, modulo));
380 382 }
381 383  
382 384 private void gerarMensagem(Dominio dominio, Modulo modulo, List<Internacionalizacao> internacionalizacaoList) {
... ...
cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/AtendimentoRequisicaoConsumoController.js
... ... @@ -284,8 +284,8 @@ citApp.controller( &#39;AtendimentoRequisicaoConsumoController&#39;,
284 284 });
285 285 };
286 286  
287   - $scope.prepararAtendimentoRequisicoes = function(atendimentoVH) {
288   - $scope.edit = true;
  287 + $scope.prepararAtendimentoRequisicoes = function(atendimentoVH, edit) {
  288 + $scope.edit = edit;
289 289 $scope.atendimentos = [];
290 290 $scope.idsRequisicoesSelecionados = [];
291 291 $scope.atendimentoRequisicaoConsumo.dataAtendimento = new Date();
... ... @@ -324,83 +324,78 @@ citApp.controller( &#39;AtendimentoRequisicaoConsumoController&#39;,
324 324 atendimento.requisicaoConsumo = req;
325 325  
326 326  
327   - if(atendimento.requisicaoConsumo.tipoStatusRequisicao.codigo == $scope.TIPO_STATUS_PRONTA_PARA_ATENDIMENTO || atendimento.requisicaoConsumo.tipoStatusRequisicao.codigo == $scope.TIPO_STATUS_ATENDIDA_PARCIALMENTE){
328   - var contem = false;
329   - for(var index = atendimento.atendimentoRequisicaoConsumoItems.length - 1; index >= 0; index--){
330   - atendimento.requisicaoConsumo.requisicaoConsumoItens.forEach(function(item){
331   - if(item.id === atendimento.atendimentoRequisicaoConsumoItems[index].requisicaoConsumoItem.id){
332   - contem = true;
333   - }
334   - });
335   -
336   - if(!contem){
337   - atendimento.atendimentoRequisicaoConsumoItems.splice(index, 1);
338   - }else{
339   - contem = false;
  327 + var contem = false;
  328 + for(var index = atendimento.atendimentoRequisicaoConsumoItems.length - 1; index >= 0; index--){
  329 + atendimento.requisicaoConsumo.requisicaoConsumoItens.forEach(function(item){
  330 + if(item.id === atendimento.atendimentoRequisicaoConsumoItems[index].requisicaoConsumoItem.id){
  331 + contem = true;
340 332 }
341   - }
  333 + });
342 334  
343   - atendimento.atendimentoRequisicaoConsumoItems.forEach(function(atendimentoItem){
344   - atendimentoItem.$locaisEstoque = [];
345   - MaterialLocalEstoqueRepository.buscarLocaisEstoquePorIdMaterialIdAlmoxarifado(atendimentoItem.material.id, req.almoxarifado.id).then(function(result) {
346   - result.forEach(function(localEstoque){
347   - var atendimentoRequisicaoConsumoItemEndereco = {
348   - materialLocalEstoque: localEstoque.originalElement
349   - };
350   -
351   - atendimentoItem.$locaisEstoque.push(atendimentoRequisicaoConsumoItemEndereco);
352   - });
  335 + if(!contem){
  336 + atendimento.atendimentoRequisicaoConsumoItems.splice(index, 1);
  337 + }else{
  338 + contem = false;
  339 + }
  340 + }
  341 +
  342 + atendimento.atendimentoRequisicaoConsumoItems.forEach(function(atendimentoItem){
  343 + atendimentoItem.$locaisEstoque = [];
  344 + MaterialLocalEstoqueRepository.buscarLocaisEstoquePorIdMaterialIdAlmoxarifado(atendimentoItem.material.id, req.almoxarifado.id).then(function(result) {
  345 + result.forEach(function(localEstoque){
  346 + var atendimentoRequisicaoConsumoItemEndereco = {
  347 + materialLocalEstoque: localEstoque.originalElement
  348 + };
  349 +
  350 + atendimentoItem.$locaisEstoque.push(atendimentoRequisicaoConsumoItemEndereco);
353 351 });
354   -
355   - atendimentoItem.$somaQtdAtendida = 0;
356   - if(atendimentoItem.atendimentoRequisicaoConsumoItemEnderecos.length > 1){
357   - atendimentoItem.atendimentoRequisicaoConsumoItemEnderecos.forEach(function(atendimentoItemEndereco){
358   - atendimentoItem.$somaQtdAtendida += parseFloat(atendimentoItemEndereco.quantidade);
359   - });
360   - }
361   -
362   - buscarInformacoesParaAtendimento(atendimentoItem);
363 352 });
364   - $scope.atendimentos.push(atendimento);
365   - }
  353 +
  354 + atendimentoItem.$somaQtdAtendida = 0;
  355 + if(atendimentoItem.atendimentoRequisicaoConsumoItemEnderecos.length > 1){
  356 + atendimentoItem.atendimentoRequisicaoConsumoItemEnderecos.forEach(function(atendimentoItemEndereco){
  357 + atendimentoItem.$somaQtdAtendida += parseFloat(atendimentoItemEndereco.quantidade);
  358 + });
  359 + }
  360 +
  361 + buscarInformacoesParaAtendimento(atendimentoItem);
  362 + });
  363 + $scope.atendimentos.push(atendimento);
366 364  
367 365 }else{
368 366 var atendimento = {requisicaoConsumo : req};
369   - if(atendimento.requisicaoConsumo.tipoStatusRequisicao.codigo == $scope.TIPO_STATUS_PRONTA_PARA_ATENDIMENTO || atendimento.requisicaoConsumo.tipoStatusRequisicao.codigo == $scope.TIPO_STATUS_ATENDIDA_PARCIALMENTE){
  367 +
  368 + atendimento.requisicaoConsumo.requisicaoConsumoItens.forEach(function (requisicaoConsumoItem) {
  369 + if(!atendimento.atendimentoRequisicaoConsumoItems){
  370 + atendimento.atendimentoRequisicaoConsumoItems = [];
  371 + }
370 372  
371   - atendimento.requisicaoConsumo.requisicaoConsumoItens.forEach(function (requisicaoConsumoItem) {
372   - if(!atendimento.atendimentoRequisicaoConsumoItems){
373   - atendimento.atendimentoRequisicaoConsumoItems = [];
374   - }
375   -
376   - var atendimentoItem = {
377   - material : requisicaoConsumoItem.materialConsumo,
378   - requisicaoConsumoItem : requisicaoConsumoItem,
379   - $locaisEstoque: [],
380   - atendimentoRequisicaoConsumoItemEnderecos: []
381   - };
382   -
383   - MaterialLocalEstoqueRepository.buscarLocaisEstoquePorIdMaterialIdAlmoxarifado(requisicaoConsumoItem.materialConsumo.id, req.almoxarifado.id).then(function(result) {
384   - result.forEach(function(localEstoque){
385   - var atendimentoRequisicaoConsumoItemEndereco = {
386   - materialLocalEstoque: localEstoque.originalElement
387   - };
388   -
389   - atendimentoItem.$locaisEstoque.push(atendimentoRequisicaoConsumoItemEndereco);
390   -
391   - if(localEstoque.localPrincipal){
392   - atendimentoItem.atendimentoRequisicaoConsumoItemEnderecos.push(atendimentoRequisicaoConsumoItemEndereco);
393   - }
394   - });
  373 + var atendimentoItem = {
  374 + material : requisicaoConsumoItem.materialConsumo,
  375 + requisicaoConsumoItem : requisicaoConsumoItem,
  376 + $locaisEstoque: [],
  377 + atendimentoRequisicaoConsumoItemEnderecos: []
  378 + };
  379 +
  380 + MaterialLocalEstoqueRepository.buscarLocaisEstoquePorIdMaterialIdAlmoxarifado(requisicaoConsumoItem.materialConsumo.id, req.almoxarifado.id).then(function(result) {
  381 + result.forEach(function(localEstoque){
  382 + var atendimentoRequisicaoConsumoItemEndereco = {
  383 + materialLocalEstoque: localEstoque.originalElement
  384 + };
  385 +
  386 + atendimentoItem.$locaisEstoque.push(atendimentoRequisicaoConsumoItemEndereco);
  387 +
  388 + if(localEstoque.localPrincipal){
  389 + atendimentoItem.atendimentoRequisicaoConsumoItemEnderecos.push(atendimentoRequisicaoConsumoItemEndereco);
  390 + }
395 391 });
396   -
397   - buscarInformacoesParaAtendimento(atendimentoItem);
398   -
399   - atendimento.atendimentoRequisicaoConsumoItems.push(atendimentoItem);
400 392 });
401   - $scope.atendimentos.push(atendimento);
402   - }
403   -
  393 +
  394 + buscarInformacoesParaAtendimento(atendimentoItem);
  395 +
  396 + atendimento.atendimentoRequisicaoConsumoItems.push(atendimentoItem);
  397 + });
  398 + $scope.atendimentos.push(atendimento);
404 399 }
405 400  
406 401 if($scope.atendimentoRequisicaoConsumo && $scope.atendimentoRequisicaoConsumo.dataAtendimento){
... ... @@ -502,7 +497,8 @@ citApp.controller( &#39;AtendimentoRequisicaoConsumoController&#39;,
502 497 });
503 498  
504 499 if(atendimentoItem.$somaQtdAtendida > atendimentoItem.requisicaoConsumoItem.quantidade){
505   - $scope.showAlert("error", "Deu erro ai cara, arruma sáporra aew", " ", false);
  500 + atendimentoItem.$hasError = true;
  501 + $scope.showAlert("error", $translate.instant('ALMOXARIFADO.VALIDACAO.QUANTIDADE_ATENDIDA_MAIOR_REQUISITADA'), " ", false);
506 502 }
507 503 }
508 504  
... ...
cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/AtendimentoRequisicaoConsumoListController.js
... ... @@ -67,15 +67,22 @@ citApp.controller(&#39;AtendimentoRequisicaoConsumoListController&#39;, [&#39;$scope&#39;, &#39;Aten
67 67 });
68 68  
69 69 // ABRI AtendimentoRequisicaoConsumo SELECIONADA
70   - $scope.abrirVisualizar = function(edit){
71   - var requisicaoConsumo = $scope.atendimentoRequisicaoConsumoChecked;
72   -
73   - if(!requisicaoConsumo) {
74   - $scope.showAlert('warning', !edit ? $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_VISUALIZACAO') : $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_EDICAO'));
  70 + $scope.abrirVisualizar = function(){
  71 +
  72 + if($scope.listaSelecionados && $scope.listaSelecionados.length == 0) {
  73 + $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_AO_MENOS_UM_ITEM'));
75 74 return;
76 75 }
77   - angular.element('#editAtendimentoRequisicaoConsumo').scope().getAtendimentoRequisicaoConsumo(requisicaoConsumo, edit);
78   - $scope.$showPageEditWorkspace($scope.workspace);
  76 +
  77 + var idsRequisicoesSelecionados = [];
  78 + $scope.listaSelecionados.forEach(function(requisicao){
  79 + idsRequisicoesSelecionados.push(requisicao.id);
  80 + });
  81 + $scope.atendimentoVH.idsRequisicao = idsRequisicoesSelecionados;
  82 + $scope.atendimentoVH.requisicoesSelecionadas = $scope.listaSelecionados;
  83 + $scope.listaSelecionados = [];
  84 + angular.element('#editAtendimentoRequisicaoConsumo').scope().prepararAtendimentoRequisicoes($scope.atendimentoVH, false);
  85 + $scope.recarregar();
79 86 };
80 87  
81 88 $scope.removerAtendimentoRequisicao = function(){
... ... @@ -132,7 +139,7 @@ citApp.controller(&#39;AtendimentoRequisicaoConsumoListController&#39;, [&#39;$scope&#39;, &#39;Aten
132 139 $scope.atendimentoVH.idsRequisicao = idsRequisicoesSelecionados;
133 140 $scope.atendimentoVH.requisicoesSelecionadas = $scope.listaSelecionados;
134 141 $scope.listaSelecionados = [];
135   - angular.element('#editAtendimentoRequisicaoConsumo').scope().prepararAtendimentoRequisicoes($scope.atendimentoVH);
  142 + angular.element('#editAtendimentoRequisicaoConsumo').scope().prepararAtendimentoRequisicoes($scope.atendimentoVH, true);
136 143 $scope.recarregar();
137 144 }
138 145 };
... ...
cit-almoxarifado-web/src/main/webapp/html/atendimentoRequisicaoConsumo/atendimentoRequisicaoConsumoEdit.html
... ... @@ -54,7 +54,7 @@
54 54 <div class="col-md-6">
55 55 <label-input-data ng-id="atendimentoRequisicaoConsumo.dataAtendimento" ng-label="ALMOXARIFADO.LABEL.DATA_ATENDIMENTO"
56 56 ng-model="atendimentoRequisicaoConsumo.dataAtendimento" form="atendimentoRequisicaoConsumoForm" ng-obrigatorio="true"
57   - ng-disabled="!edit" ng-mode="day" ng-format="dd/MM/yyyy" />
  57 + ng-show="edit" ng-mode="day" ng-format="dd/MM/yyyy" />
58 58 </div>
59 59 <div class="col-md-6" ng-if="atendimentos.length == 1">
60 60 <p>
... ... @@ -77,7 +77,7 @@
77 77 <a href="#void" ng-click="widgetAtendimentoCollapsed = !widgetAtendimentoCollapsed">
78 78 <i class="fa" ng-class="{'fa-chevron-up': widgetAtendimentoCollapsed, 'fa-chevron-down': !widgetAtendimentoCollapsed}"></i>
79 79 </a>
80   - <a href="#void" style="margin-left: 3px" ng-click="removerRequisicaoDoAtendimento($index) ">
  80 + <a href="#void" style="margin-left: 3px" ng-click="removerRequisicaoDoAtendimento($index)" ng-show="edit">
81 81 <i class="fa fa-trash-o bigger-130 red" tooltip="{{$translate.instant('ALMOXARIFADO.MSG.REMOVER_REQUISICAO_ATENDIMENTO')}}"></i>
82 82 </a>
83 83 </div>
... ... @@ -150,7 +150,7 @@
150 150 <table style="width: 100%">
151 151 <tr>
152 152 <td ng-show="atendimentoRequisicaoConsumoItem.atendimentoRequisicaoConsumoItemEnderecos.length <= 1">
153   - <label-select ng-id="atendimentoRequisicaoConsumoItem.materialLocalEstoque$index" ng-obrigatorio="true"
  153 + <label-select ng-id="atendimentoRequisicaoConsumoItem.materialLocalEstoque$index" ng-obrigatorio="true" ng-disabled="!edit"
154 154 ng-model="atendimentoRequisicaoConsumoItem.atendimentoRequisicaoConsumoItemEnderecos[0]" ng-list="atendimentoRequisicaoConsumoItem.$locaisEstoque"
155 155 form="atendimentoRequisicaoConsumoForm" track-by="track by atendimentoRequisicaoConsumoItemEndereco.materialLocalEstoque.id"
156 156 ng-custom-options="atendimentoRequisicaoConsumoItemEndereco as atendimentoRequisicaoConsumoItemEndereco.materialLocalEstoque.endereco.descricao for atendimentoRequisicaoConsumoItemEndereco"></label-select>
... ...
cit-almoxarifado-web/src/main/webapp/html/atendimentoRequisicaoConsumo/atendimentoRequisicaoConsumoList.html
... ... @@ -18,7 +18,7 @@
18 18 <translate>ALMOXARIFADO.LABEL.EXCLUIR_ATENDIMENTO</translate>
19 19 </button>
20 20  
21   - <button ng-show="listaSelecionados.length == 1" class="btn btn-clear" ng-click="abrirVisualizar(false);">
  21 + <button class="btn btn-clear" ng-click="abrirVisualizar();">
22 22 <i class="fa fa-search blue"></i>
23 23 <translate>LABEL.VISUALIZAR</translate>
24 24 </button>
... ...
cit-almoxarifado-web/src/main/webapp/html/atendimentoRequisicaoConsumo/dialog_atendimento_item_enderecos.html
1 1 <div class="modal-header">
2 2 <button class="btn btn-clear" type="button" ng-click="saveListaEnderecos()"
3   - title="{{$translate.instant('LABEL.SALVAR')}}"
  3 + title="{{$translate.instant('LABEL.SALVAR')}}" ng-show="edit"
4 4 alt="{{$translate.instant('LABEL.SALVAR')}}">
5 5 <i class="fa fa-save green"></i>
6 6 <translate>LABEL.SALVAR</translate>
... ... @@ -21,7 +21,7 @@
21 21  
22 22 <div class="row">
23 23 <div class="col-md-12">
24   - <label-select ng-model="itemAtendimentoRequisicaoConsumoItemEndereco" ng-list="listaEnderecosSelect"
  24 + <label-select ng-model="itemAtendimentoRequisicaoConsumoItemEndereco" ng-list="listaEnderecosSelect" ng-show="edit"
25 25 ng-custom-options="itemAtendimentoRequisicaoConsumoItemEndereco as itemAtendimentoRequisicaoConsumoItemEndereco.materialLocalEstoque.endereco.descricao for itemAtendimentoRequisicaoConsumoItemEndereco"></label-select>
26 26 </div>
27 27 </div>
... ... @@ -29,12 +29,12 @@
29 29 <div class="col-sm-12">
30 30 <div class="panel panel-default">
31 31 <div class="panel-heading clearfix">
32   - <button class="btn btn-clear" type="button" ng-disabled="listaEnderecosSelect.length == 0 || !itemAtendimentoRequisicaoConsumoItemEndereco"
  32 + <button class="btn btn-clear" type="button" ng-disabled="listaEnderecosSelect.length == 0 || !itemAtendimentoRequisicaoConsumoItemEndereco || !edit"
33 33 ng-click="addEnderecoToList(itemAtendimentoRequisicaoConsumoItemEndereco)">
34 34 <i class="fa fa-plus-circle yellow-dark"></i>
35 35 <translate>LABEL.ADICIONAR</translate>
36 36 </button>
37   - <button class="btn btn-clear" type="button" ng-click="removeEnderecoFromList()">
  37 + <button class="btn btn-clear" type="button" ng-click="removeEnderecoFromList()" ng-disabled="!edit">
38 38 <i class="fa fa-times red"></i>
39 39 <translate>LABEL.REMOVER</translate>
40 40 </button>
... ... @@ -54,8 +54,8 @@
54 54 <td class="text-center">{{atendimentoRequisicaoConsumoItemEndereco.materialLocalEstoque.endereco.descricao}}</td>
55 55 <td class="text-center">{{atendimentoRequisicaoConsumoItemEndereco.materialLocalEstoque.quantidade}}</td>
56 56 <td class="text-center">
57   - <label-input-decimal ng-id="atendimentoRequisicaoConsumoItemEndereco.quantidade" ng-obrigatorio="true" ng-evento-blur="aplicarValidacaoDecimal"
58   - ng-model="atendimentoRequisicaoConsumoItemEndereco.quantidade" form="atendimentoRequisicaoConsumoForm" ng-evento-keyup="validarQuantidadesAtendidas()"
  57 + <label-input-decimal ng-id="atendimentoRequisicaoConsumoItemEndereco.quantidade" ng-obrigatorio="true" ng-evento-blur="aplicarValidacaoDecimal" ng-disabled="!edit"
  58 + ng-model="atendimentoRequisicaoConsumoItemEndereco.quantidade" form="atendimentoRequisicaoConsumoForm" ng-evento-keyup="validarQuantidades(atendimentoItemEmEdicao)"
59 59 ng-custom-maxlength="{{atendimentoRequisicaoConsumoItemEndereco.materialLocalEstoque.materialEstoque.material.unidadeArmazenamento.tipoNumerico.codigo === 1 ? 4 : 11}}"
60 60 ng-precisao="{{atendimentoRequisicaoConsumoItemEndereco.materialLocalEstoque.materialEstoque.material.unidadeArmazenamento.tipoNumerico.codigo === 1 ? 0 : 'decimal'}}" />
61 61 </td>
... ...