From 08f527446de460ddbc9a12989314ee7ded30fba5 Mon Sep 17 00:00:00 2001 From: geovane.filho Date: Mon, 9 May 2016 16:14:24 -0300 Subject: [PATCH] Redmine #4783 Terminando reestruturação de telas da entrada --- cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/EntradaAlmoxarifadoController.js | 282 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------------------------------------------------------------------------- cit-almoxarifado-web/src/main/webapp/html/entradaAlmoxarifado/dialog_add_materiais.html | 34 +++++++++++++++++----------------- cit-almoxarifado-web/src/main/webapp/html/entradaAlmoxarifado/entradaAlmoxarifadoEdit.html | 6 +++--- cit-almoxarifado-web/src/main/webapp/html/entradaAlmoxarifado/entradaAlmoxarifadoPg2.html | 24 ++++++++++++++---------- 4 files changed, 204 insertions(+), 142 deletions(-) diff --git a/cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/EntradaAlmoxarifadoController.js b/cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/EntradaAlmoxarifadoController.js index 461b79b..1636a7a 100644 --- a/cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/EntradaAlmoxarifadoController.js +++ b/cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/EntradaAlmoxarifadoController.js @@ -34,6 +34,10 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp // Limpa formulário para novo cadastro $scope.resetForm = function() { $scope.limparEntradaAlmoxarifado(); + + $scope.listaEntradaItemSelecao = []; + + $scope.atualizarListaSizeSelectEntradaItem(); $scope.edit = true; $timeout(function(){ $scope.entradaAlmoxarifadoForm.$submitted = false; @@ -55,7 +59,7 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp dataRecebimento : '', dataContabil : '', documentos : [], - entradasIten : [], + entradasItem : [], dominioTipoEntrada : $scope.dominioTipoEntrada ? $scope.dominioTipoEntrada : null, dominioTipoRecebimento : $scope.dominioTipoRecebimento ? $scope.dominioTipoRecebimento : null, observacoes : [], @@ -131,6 +135,7 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp }); $scope.calcularValorTotalMateriais(); + $scope.atualizarListaSizeSelectEntradaItem(); $scope.edit = edit; $scope.setLoading(false); }); @@ -186,7 +191,8 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp }); $scope.inicializarModalMateriais = function(){ - $scope.editEntrada = true; + $scope.editEntrada = false; + $scope.newEntrada = true; $scope.limparModalMateriais(); $scope.$openModal('modal-materiais-consumo.html', 'lg'); }; @@ -227,81 +233,50 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp $scope.setLoading(false); } }; - - $scope.limparCamposMaterial = function(){ - - $scope.unidadesMedidasEntrada = []; - }; - - $scope.definirTipoNumerico = function(){ - $timeout(function(){ - if($scope.entradaItem.unidadeMedidaEntrada){ - if($scope.entradaItem.unidadeMedidaEntrada.tipoNumerico && $scope.entradaItem.unidadeMedidaEntrada.tipoNumerico.codigo == $scope.TIPO_NUMERICO_INTEIRO ){ - $scope.tipoNumerico = 0; - }else{ - $scope.tipoNumerico = 2; - }; - - if($scope.entradaItem.unidadeMedidaEntrada.sigla){ - if($scope.entradaItem.unidadeMedidaEntrada.quantidadePadrao && $scope.entradaItem.unidadeMedidaEntrada.quantidadePadrao > 0){ - $scope.entradaItem.quantidadeDominioTipoUnidadeEntrada = $scope.entradaItem.unidadeMedidaEntrada.quantidadePadrao; - } - } - } else{ - $scope.entradaItem.quantidadeDominioTipoUnidadeEntrada = null; - } - }); - }; - - $scope.calcularQuantidadeEValores = function(){ - $timeout(function(){ - if($scope.entradaItem.quantidadeDominioTipoUnidadeEntrada && $scope.entradaItem.$quantidadeEntrada){ - $scope.entradaItem.quantidade = $scope.entradaItem.$quantidadeEntrada * $scope.entradaItem.quantidadeDominioTipoUnidadeEntrada; - } - if($scope.entradaItem.valorTotal && $scope.entradaItem.quantidade){ - $scope.entradaItem.valorUnitario = $scope.entradaItem.valorTotal / $scope.entradaItem.quantidade; - } - }); - }; $scope.addEntradaItem = function(formDialogMateriais) { formDialogMateriais.$submitted = true; if(formDialogMateriais.$valid){ - if($scope.entradaItem.$quantidadeEntrada > 0){ - - if($scope.entradaItem.$validarPrecoMedio){ - - var idAlmoxarifado = $scope.entradaAlmoxarifado.almoxarifado ? $scope.entradaAlmoxarifado.almoxarifado.id : null; - - EntradaAlmoxarifadoItemRepository.validarPrecoMedio($scope.entradaItem.valorUnitario, $scope.entradaItem.material.id, idAlmoxarifado).then(function(result) {}); + if(!$scope.entradaItem.$quantidadeEntrada || $scope.entradaItem.$quantidadeEntrada <= 0){ + $scope.showAlert('error', $translate.instant('VALIDACAO.QUANTIDADE_MAIOR_ZERO')); + return; + } + + if(!$scope.entradaItem.valorTotal || $scope.entradaItem.valorTotal <= 0){ + $scope.showAlert('error', $translate.instant('ADMINISTRACAODEMATERIAIS.VALIDACAO.VALOR_TOTAL_MAIOR_ZERO')); + return; + } + + if($scope.entradaItem.$validarPrecoMedio){ - } + var idAlmoxarifado = $scope.entradaAlmoxarifado.almoxarifado ? $scope.entradaAlmoxarifado.almoxarifado.id : null; - if(!$scope.entradaItem.uuid){ - $scope.entradaItem.uuid = getUuid(); - $scope.entradaAlmoxarifado.entradasIten.push($scope.entradaItem); - }else{ - var entradasItemTemp = []; - $scope.entradaAlmoxarifado.entradasIten.forEach(function (entradaItem, $index) { - if(entradaItem.uuid === $scope.entradaItem.uuid){ - entradasItemTemp.push($scope.entradaItem); - }else{ - entradasItemTemp.push(entradaItem); - } - }); - $scope.entradaAlmoxarifado.entradasIten = entradasItemTemp; - } + EntradaAlmoxarifadoItemRepository.validarPrecoMedio($scope.entradaItem.valorUnitario, $scope.entradaItem.material.id, idAlmoxarifado).then(function(result) {}); - $scope.calcularValorTotalMateriais(); + } - $scope.$modalInstance.dismiss('cancel'); - + if(!$scope.entradaItem.uuid){ + $scope.entradaItem.uuid = getUuid(); + $scope.entradaAlmoxarifado.entradasItem.push($scope.entradaItem); }else{ - $scope.showAlert('error', $translate.instant('VALIDACAO.QUANTIDADE_MAIOR_ZERO')); + var entradasItemTemp = []; + $scope.entradaAlmoxarifado.entradasItem.forEach(function (entradaItem, $index) { + if(entradaItem.uuid === $scope.entradaItem.uuid){ + entradasItemTemp.push($scope.entradaItem); + }else{ + entradasItemTemp.push(entradaItem); + } + }); + $scope.entradaAlmoxarifado.entradasItem = entradasItemTemp; } + $scope.calcularValorTotalMateriais(); + + $scope.$modalInstance.dismiss('cancel'); + $scope.atualizarListaSizeSelectEntradaItem(); + }else{ $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS')); } @@ -309,36 +284,79 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp $scope.entradaItemSelecionado = null; }; - - $scope.abrirEntradaItem = function(editar){ - - if($scope.entradaItemSelecionado){ - - $scope.editEntrada = editar; - $scope.entradaItem = clone($scope.entradaItemSelecionado); - $scope.entradaItem.$quantidadeEntrada = $scope.entradaItem.quantidade / $scope.entradaItem.quantidadeDominioTipoUnidadeEntrada; - $scope.unidadesMedidasEntrada = $scope.entradaItem.material.tiposUnidadeMedidaEntrada.map(function(item){ - return item.unidadeMedida; - });; - $scope.caracteristicas = $scope.entradaItem.caracteristicas; - - $scope.caracteristicas.forEach(function(bemPatrimonialCaracteristica) { - if(bemPatrimonialCaracteristica.materialCaracteristica.caracteristica.dominioTipoDado.nome == 'ARQUIVO'){ - $scope.uploaderCaracteristica.queue = clone(bemPatrimonialCaracteristica.uploadAnexo); + + // Seleciona todos os itens da entrada + $scope.checkAllEntradaItem = function(value) { + $scope.listaEntradaItemSelecao = []; + angular.forEach($scope.entradaAlmoxarifado.entradasItem, function (item) { + item.$checked = value; + $scope.listaEntradaItemSelecao.push(item); + }); + if(!value){ + $scope.listaEntradaItemSelecao = []; + } + $scope.atualizarListaSizeSelectEntradaItem(); + }; + + $scope.checkEntradaItem = function(item){ + if(item.$checked){ + $scope.listaEntradaItemSelecao.push(item); + }else{ + $scope.listaEntradaItemSelecao.splice($scope.listaEntradaItemSelecao.indexOf(item), 1); + } + }; + + $scope.atualizarListaSizeSelectEntradaItem = function() { + if(!$scope.listaEntradaItemSize){ + $scope.listaEntradaItemSize = 0; + }; + var lista = $scope.getEntradaItemChecked(); + $scope.listaEntradaItemSize = lista.length; + }; + + // recupera as entradas itens selecionadas + $scope.getEntradaItemChecked = function() { + var entradaItemChecked = []; + + if ($scope.entradaAlmoxarifado.entradasItem) { + for (var i = 0; i < $scope.entradaAlmoxarifado.entradasItem.length; i++) { + if ($scope.entradaAlmoxarifado.entradasItem[i].$checked) { + entradaItemChecked.push(angular.copy($scope.entradaAlmoxarifado.entradasItem[i])); } - }); - - if($scope.entradaItem.dataValidade && !$scope.entradaItem.id){ - $scope.entradaItem.dataValidade = $filter('date')($scope.entradaItem.dataValidade, "dd/MM/yyyy"); } + } - $scope.$openModal('modal-materiais-consumo.html', 'lg'); + return entradaItemChecked; + }; - }else{ + $scope.abrirEntradaItem = function(editar){ + $scope.entradaItem = null; + // recupera os itens de entrada selecionados + var itensSelecionados = $scope.getEntradaItemChecked(); - $scope.showAlert('warning', editar ? $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_EDICAO') : $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_VISUALIZACAO')); + if (itensSelecionados.length > 1) { + $scope.showAlert('warning', editar? $translate.instant('MSG.SELECIONE_APENAS_UM_ITEM_PARA_EDICAO') : $translate.instant('MSG.SELECIONE_APENAS_UM_ITEM_PARA_VISUALIZACAO')); + return; } + if(itensSelecionados.length === 0) { + $scope.showAlert('warning', editar? $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_EDICAO') : $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_VISUALIZACAO')); + return; + } + + $scope.newEntrada = false; + $scope.editEntrada = editar; + $scope.entradaItem = itensSelecionados[0]; + $scope.entradaItem.$quantidadeEntrada = $scope.entradaItem.quantidade / $scope.entradaItem.unidadeMedidaEntrada.quantidadePadrao; + $scope.unidadesMedidasEntrada = $scope.entradaItem.material.tiposUnidadeMedidaEntrada.map(function(item){ + return item.unidadeMedida; + }); + + if($scope.entradaItem.dataValidade && !$scope.entradaItem.id){ + $scope.entradaItem.dataValidade = $filter('date')($scope.entradaItem.dataValidade, "dd/MM/yyyy"); + } + + $scope.$openModal('modal-materiais-consumo.html', 'lg'); }; $scope.removerEntradaItem = function(){ @@ -378,19 +396,20 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp $scope.excluirItemAlmoxarifadoDaLista = function(entradaItemSelecionada){ var index = 0; $scope.valorTotalMateriais = 0.0; - $scope.entradaAlmoxarifado.entradasIten.forEach(function (entradaItem, key) { + $scope.entradaAlmoxarifado.entradasItem.forEach(function (entradaItem, key) { if(entradaItemSelecionada.uuid === entradaItem.uuid) { index = key; } }); - $scope.entradaAlmoxarifado.entradasIten.splice(index, 1); + $scope.entradaAlmoxarifado.entradasItem.splice(index, 1); $scope.calcularValorTotalMateriais(); + $scope.atualizarListaSizeSelectEntradaItem(); $scope.$modalConfirmInstance.dismiss('cancel'); }; $scope.calcularValorTotalMateriais = function(){ $scope.valorTotalMateriais = 0.0; - $scope.entradaAlmoxarifado.entradasIten.forEach(function (entradaItem) { + $scope.entradaAlmoxarifado.entradasItem.forEach(function (entradaItem) { $scope.valorTotalMateriais = converterMoedaToNumber(entradaItem.valorTotal) + $scope.valorTotalMateriais; }); }; @@ -480,7 +499,7 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp var formularioValido = true; - if(!form.$valid || !$scope.entradaAlmoxarifado.entradasIten.length > 0 || !$scope.entradaAlmoxarifado.documentos.length > 0){ + if(!form.$valid || !$scope.entradaAlmoxarifado.entradasItem.length > 0 || !$scope.entradaAlmoxarifado.documentos.length > 0){ $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS')); formularioValido = false; @@ -664,20 +683,22 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp //Watch para controlar as definições de material selecionado na modal de adição de materiais $scope.$watch('entradaItem.material', function() { $timeout(function() { - if (!$scope.entradaItem) { - $scope.entradaItem = { - $validarPrecoMedio : true - }; + if ($scope.newEntrada) { + if (!$scope.entradaItem) { + $scope.entradaItem = { + $validarPrecoMedio : true + }; + } + $scope.entradaItem.quantidade = null; + $scope.entradaItem.valorTotal = null; + $scope.entradaItem.valorUnitario = null; + $scope.entradaItem.unidadeMedidaEntrada = null; + $scope.entradaItem.materialLocalEstoque = null; + $scope.unidadesMedidasEntrada = []; + $scope.enderecosMaterial = []; } - $scope.entradaItem.quantidade = null; - $scope.entradaItem.quantidadeDominioTipoUnidadeEntrada = null; - $scope.entradaItem.valorTotal = null; - $scope.entradaItem.valorUnitario = null; - $scope.entradaItem.unidadeMedidaEntrada = null; - $scope.entradaItem.materialLocalEstoque = null; - $scope.unidadesMedidasEntrada = []; - if ($scope.entradaItem.material) { + if ($scope.entradaItem.material) { $scope.unidadesMedidasEntrada = $scope.entradaItem.material.tiposUnidadeMedidaEntrada.map(function(item){ if (item.isPadrao && !$scope.entradaItem.unidadeMedidaEntrada) { $scope.entradaItem.unidadeMedidaEntrada = item.unidadeMedida; @@ -685,20 +706,57 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp return item.unidadeMedida; }); - $scope.enderecosMaterial = []; MaterialLocalEstoqueRepository.listarMaterialEstoquePorMaterial($scope.entradaItem.material.id).then(function(result) { - for (var i = 0; i < result.length; i++) { - $scope.enderecosMaterial.push(result[i].originalElement); + $scope.enderecosMaterial = []; + for (var i = 0; i < result.length; i++) { + $scope.enderecosMaterial.push(result[i].originalElement); - if (result[i].localPrincipal && !$scope.entradaItem.materialLocalEstoque) { - $scope.entradaItem.materialLocalEstoque = result[i].originalElement; - } - } + if (result[i].localPrincipal && !$scope.entradaItem.materialLocalEstoque) { + $scope.entradaItem.materialLocalEstoque = result[i].originalElement; + } + } }); } }); }); + //Watch para controlar as mudanças da quantidade na entrada de materiais + $scope.$watch('entradaItem.$quantidadeEntrada', function() { + $timeout(function(){ + if($scope.entradaItem.$quantidadeEntrada && $scope.entradaItem.unidadeMedidaEntrada){ + $scope.entradaItem.quantidade = $scope.entradaItem.$quantidadeEntrada * $scope.entradaItem.unidadeMedidaEntrada.quantidadePadrao; + } else { + delete $scope.entradaItem.quantidade; + } + if($scope.entradaItem.quantidade && $scope.entradaItem.valorTotal){ + $scope.entradaItem.valorUnitario = $scope.entradaItem.valorTotal / $scope.entradaItem.quantidade; + } else { + delete $scope.entradaItem.valorUnitario; + } + }); + }); + + //Watch para controlar as mudanças da unidade de medida na entrada de materiais + $scope.$watch('entradaItem.unidadeMedidaEntrada', function() { + $timeout(function(){ + if($scope.entradaItem.$quantidadeEntrada && $scope.entradaItem.unidadeMedidaEntrada){ + $scope.entradaItem.quantidade = $scope.entradaItem.$quantidadeEntrada * $scope.entradaItem.unidadeMedidaEntrada.quantidadePadrao; + } else { + delete $scope.entradaItem.quantidade; + } + }); + }); + + //Watch para controlar as mudanças do valor total da entrada de materiais + $scope.$watch('entradaItem.valorTotal', function() { + $timeout(function(){ + if($scope.entradaItem.quantidade && $scope.entradaItem.valorTotal){ + $scope.entradaItem.valorUnitario = $scope.entradaItem.valorTotal / $scope.entradaItem.quantidade; + } else { + delete $scope.entradaItem.valorUnitario; + } + }); + }); @@ -837,7 +895,7 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp function validStepMateriais() { $scope.stepValid = true; - if ($scope.entradaAlmoxarifadoForm.materiaisForm.$invalid) { + if ($scope.entradaAlmoxarifadoForm.materiaisForm.$invalid || !($scope.entradaAlmoxarifado.entradasItem.length > 0)) { $scope.stepValid = false; } @@ -847,7 +905,7 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp //Funcao especifica que retorna se o formulario de documentos esta valido function validStepDocumentos() { $scope.stepValid = true; - if ($scope.entradaAlmoxarifadoForm.documentosForm.$invalid || !$scope.entradaAlmoxarifado.documentos.length > 0) { + if ($scope.entradaAlmoxarifadoForm.documentosForm.$invalid || !($scope.entradaAlmoxarifado.documentos.length > 0)) { $scope.stepValid = false; } return $scope.stepValid; diff --git a/cit-almoxarifado-web/src/main/webapp/html/entradaAlmoxarifado/dialog_add_materiais.html b/cit-almoxarifado-web/src/main/webapp/html/entradaAlmoxarifado/dialog_add_materiais.html index a5685c8..d5a496c 100644 --- a/cit-almoxarifado-web/src/main/webapp/html/entradaAlmoxarifado/dialog_add_materiais.html +++ b/cit-almoxarifado-web/src/main/webapp/html/entradaAlmoxarifado/dialog_add_materiais.html @@ -1,6 +1,6 @@