Commit 08f527446de460ddbc9a12989314ee7ded30fba5

Authored by geovane.filho
1 parent afd35325
Exists in master

Redmine #4783 Terminando reestruturação de telas da entrada

cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/EntradaAlmoxarifadoController.js
... ... @@ -34,6 +34,10 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp
34 34 // Limpa formulário para novo cadastro
35 35 $scope.resetForm = function() {
36 36 $scope.limparEntradaAlmoxarifado();
  37 +
  38 + $scope.listaEntradaItemSelecao = [];
  39 +
  40 + $scope.atualizarListaSizeSelectEntradaItem();
37 41 $scope.edit = true;
38 42 $timeout(function(){
39 43 $scope.entradaAlmoxarifadoForm.$submitted = false;
... ... @@ -55,7 +59,7 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp
55 59 dataRecebimento : '',
56 60 dataContabil : '',
57 61 documentos : [],
58   - entradasIten : [],
  62 + entradasItem : [],
59 63 dominioTipoEntrada : $scope.dominioTipoEntrada ? $scope.dominioTipoEntrada : null,
60 64 dominioTipoRecebimento : $scope.dominioTipoRecebimento ? $scope.dominioTipoRecebimento : null,
61 65 observacoes : [],
... ... @@ -131,6 +135,7 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp
131 135 });
132 136  
133 137 $scope.calcularValorTotalMateriais();
  138 + $scope.atualizarListaSizeSelectEntradaItem();
134 139 $scope.edit = edit;
135 140 $scope.setLoading(false);
136 141 });
... ... @@ -186,7 +191,8 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp
186 191 });
187 192  
188 193 $scope.inicializarModalMateriais = function(){
189   - $scope.editEntrada = true;
  194 + $scope.editEntrada = false;
  195 + $scope.newEntrada = true;
190 196 $scope.limparModalMateriais();
191 197 $scope.$openModal('modal-materiais-consumo.html', 'lg');
192 198 };
... ... @@ -227,81 +233,50 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp
227 233 $scope.setLoading(false);
228 234 }
229 235 };
230   -
231   - $scope.limparCamposMaterial = function(){
232   -
233   - $scope.unidadesMedidasEntrada = [];
234   - };
235   -
236   - $scope.definirTipoNumerico = function(){
237   - $timeout(function(){
238   - if($scope.entradaItem.unidadeMedidaEntrada){
239   - if($scope.entradaItem.unidadeMedidaEntrada.tipoNumerico && $scope.entradaItem.unidadeMedidaEntrada.tipoNumerico.codigo == $scope.TIPO_NUMERICO_INTEIRO ){
240   - $scope.tipoNumerico = 0;
241   - }else{
242   - $scope.tipoNumerico = 2;
243   - };
244   -
245   - if($scope.entradaItem.unidadeMedidaEntrada.sigla){
246   - if($scope.entradaItem.unidadeMedidaEntrada.quantidadePadrao && $scope.entradaItem.unidadeMedidaEntrada.quantidadePadrao > 0){
247   - $scope.entradaItem.quantidadeDominioTipoUnidadeEntrada = $scope.entradaItem.unidadeMedidaEntrada.quantidadePadrao;
248   - }
249   - }
250   - } else{
251   - $scope.entradaItem.quantidadeDominioTipoUnidadeEntrada = null;
252   - }
253   - });
254   - };
255   -
256   - $scope.calcularQuantidadeEValores = function(){
257   - $timeout(function(){
258   - if($scope.entradaItem.quantidadeDominioTipoUnidadeEntrada && $scope.entradaItem.$quantidadeEntrada){
259   - $scope.entradaItem.quantidade = $scope.entradaItem.$quantidadeEntrada * $scope.entradaItem.quantidadeDominioTipoUnidadeEntrada;
260   - }
261   - if($scope.entradaItem.valorTotal && $scope.entradaItem.quantidade){
262   - $scope.entradaItem.valorUnitario = $scope.entradaItem.valorTotal / $scope.entradaItem.quantidade;
263   - }
264   - });
265   - };
266 236  
267 237 $scope.addEntradaItem = function(formDialogMateriais) {
268 238 formDialogMateriais.$submitted = true;
269 239  
270 240 if(formDialogMateriais.$valid){
271 241  
272   - if($scope.entradaItem.$quantidadeEntrada > 0){
273   -
274   - if($scope.entradaItem.$validarPrecoMedio){
275   -
276   - var idAlmoxarifado = $scope.entradaAlmoxarifado.almoxarifado ? $scope.entradaAlmoxarifado.almoxarifado.id : null;
277   -
278   - EntradaAlmoxarifadoItemRepository.validarPrecoMedio($scope.entradaItem.valorUnitario, $scope.entradaItem.material.id, idAlmoxarifado).then(function(result) {});
  242 + if(!$scope.entradaItem.$quantidadeEntrada || $scope.entradaItem.$quantidadeEntrada <= 0){
  243 + $scope.showAlert('error', $translate.instant('VALIDACAO.QUANTIDADE_MAIOR_ZERO'));
  244 + return;
  245 + }
  246 +
  247 + if(!$scope.entradaItem.valorTotal || $scope.entradaItem.valorTotal <= 0){
  248 + $scope.showAlert('error', $translate.instant('ADMINISTRACAODEMATERIAIS.VALIDACAO.VALOR_TOTAL_MAIOR_ZERO'));
  249 + return;
  250 + }
  251 +
  252 + if($scope.entradaItem.$validarPrecoMedio){
279 253  
280   - }
  254 + var idAlmoxarifado = $scope.entradaAlmoxarifado.almoxarifado ? $scope.entradaAlmoxarifado.almoxarifado.id : null;
281 255  
282   - if(!$scope.entradaItem.uuid){
283   - $scope.entradaItem.uuid = getUuid();
284   - $scope.entradaAlmoxarifado.entradasIten.push($scope.entradaItem);
285   - }else{
286   - var entradasItemTemp = [];
287   - $scope.entradaAlmoxarifado.entradasIten.forEach(function (entradaItem, $index) {
288   - if(entradaItem.uuid === $scope.entradaItem.uuid){
289   - entradasItemTemp.push($scope.entradaItem);
290   - }else{
291   - entradasItemTemp.push(entradaItem);
292   - }
293   - });
294   - $scope.entradaAlmoxarifado.entradasIten = entradasItemTemp;
295   - }
  256 + EntradaAlmoxarifadoItemRepository.validarPrecoMedio($scope.entradaItem.valorUnitario, $scope.entradaItem.material.id, idAlmoxarifado).then(function(result) {});
296 257  
297   - $scope.calcularValorTotalMateriais();
  258 + }
298 259  
299   - $scope.$modalInstance.dismiss('cancel');
300   -
  260 + if(!$scope.entradaItem.uuid){
  261 + $scope.entradaItem.uuid = getUuid();
  262 + $scope.entradaAlmoxarifado.entradasItem.push($scope.entradaItem);
301 263 }else{
302   - $scope.showAlert('error', $translate.instant('VALIDACAO.QUANTIDADE_MAIOR_ZERO'));
  264 + var entradasItemTemp = [];
  265 + $scope.entradaAlmoxarifado.entradasItem.forEach(function (entradaItem, $index) {
  266 + if(entradaItem.uuid === $scope.entradaItem.uuid){
  267 + entradasItemTemp.push($scope.entradaItem);
  268 + }else{
  269 + entradasItemTemp.push(entradaItem);
  270 + }
  271 + });
  272 + $scope.entradaAlmoxarifado.entradasItem = entradasItemTemp;
303 273 }
304 274  
  275 + $scope.calcularValorTotalMateriais();
  276 +
  277 + $scope.$modalInstance.dismiss('cancel');
  278 + $scope.atualizarListaSizeSelectEntradaItem();
  279 +
305 280 }else{
306 281 $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'));
307 282 }
... ... @@ -309,36 +284,79 @@ citApp.controller(&#39;EntradaAlmoxarifadoController&#39;, [&#39;$scope&#39;, &#39;$filter&#39;, &#39;FileUp
309 284 $scope.entradaItemSelecionado = null;
310 285  
311 286 };
312   -
313   - $scope.abrirEntradaItem = function(editar){
314   -
315   - if($scope.entradaItemSelecionado){
316   -
317   - $scope.editEntrada = editar;
318   - $scope.entradaItem = clone($scope.entradaItemSelecionado);
319   - $scope.entradaItem.$quantidadeEntrada = $scope.entradaItem.quantidade / $scope.entradaItem.quantidadeDominioTipoUnidadeEntrada;
320   - $scope.unidadesMedidasEntrada = $scope.entradaItem.material.tiposUnidadeMedidaEntrada.map(function(item){
321   - return item.unidadeMedida;
322   - });;
323   - $scope.caracteristicas = $scope.entradaItem.caracteristicas;
324   -
325   - $scope.caracteristicas.forEach(function(bemPatrimonialCaracteristica) {
326   - if(bemPatrimonialCaracteristica.materialCaracteristica.caracteristica.dominioTipoDado.nome == 'ARQUIVO'){
327   - $scope.uploaderCaracteristica.queue = clone(bemPatrimonialCaracteristica.uploadAnexo);
  287 +
  288 + // Seleciona todos os itens da entrada
  289 + $scope.checkAllEntradaItem = function(value) {
  290 + $scope.listaEntradaItemSelecao = [];
  291 + angular.forEach($scope.entradaAlmoxarifado.entradasItem, function (item) {
  292 + item.$checked = value;
  293 + $scope.listaEntradaItemSelecao.push(item);
  294 + });
  295 + if(!value){
  296 + $scope.listaEntradaItemSelecao = [];
  297 + }
  298 + $scope.atualizarListaSizeSelectEntradaItem();
  299 + };
  300 +
  301 + $scope.checkEntradaItem = function(item){
  302 + if(item.$checked){
  303 + $scope.listaEntradaItemSelecao.push(item);
  304 + }else{
  305 + $scope.listaEntradaItemSelecao.splice($scope.listaEntradaItemSelecao.indexOf(item), 1);
  306 + }
  307 + };
  308 +
  309 + $scope.atualizarListaSizeSelectEntradaItem = function() {
  310 + if(!$scope.listaEntradaItemSize){
  311 + $scope.listaEntradaItemSize = 0;
  312 + };
  313 + var lista = $scope.getEntradaItemChecked();
  314 + $scope.listaEntradaItemSize = lista.length;
  315 + };
  316 +
  317 + // recupera as entradas itens selecionadas
  318 + $scope.getEntradaItemChecked = function() {
  319 + var entradaItemChecked = [];
  320 +
  321 + if ($scope.entradaAlmoxarifado.entradasItem) {
  322 + for (var i = 0; i < $scope.entradaAlmoxarifado.entradasItem.length; i++) {
  323 + if ($scope.entradaAlmoxarifado.entradasItem[i].$checked) {
  324 + entradaItemChecked.push(angular.copy($scope.entradaAlmoxarifado.entradasItem[i]));
328 325 }
329   - });
330   -
331   - if($scope.entradaItem.dataValidade && !$scope.entradaItem.id){
332   - $scope.entradaItem.dataValidade = $filter('date')($scope.entradaItem.dataValidade, "dd/MM/yyyy");
333 326 }
  327 + }
334 328  
335   - $scope.$openModal('modal-materiais-consumo.html', 'lg');
  329 + return entradaItemChecked;
  330 + };
336 331  
337   - }else{
  332 + $scope.abrirEntradaItem = function(editar){
  333 + $scope.entradaItem = null;
  334 + // recupera os itens de entrada selecionados
  335 + var itensSelecionados = $scope.getEntradaItemChecked();
338 336  
339   - $scope.showAlert('warning', editar ? $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_EDICAO') : $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_VISUALIZACAO'));
  337 + if (itensSelecionados.length > 1) {
  338 + $scope.showAlert('warning', editar? $translate.instant('MSG.SELECIONE_APENAS_UM_ITEM_PARA_EDICAO') : $translate.instant('MSG.SELECIONE_APENAS_UM_ITEM_PARA_VISUALIZACAO'));
  339 + return;
340 340 }
341 341  
  342 + if(itensSelecionados.length === 0) {
  343 + $scope.showAlert('warning', editar? $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_EDICAO') : $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_VISUALIZACAO'));
  344 + return;
  345 + }
  346 +
  347 + $scope.newEntrada = false;
  348 + $scope.editEntrada = editar;
  349 + $scope.entradaItem = itensSelecionados[0];
  350 + $scope.entradaItem.$quantidadeEntrada = $scope.entradaItem.quantidade / $scope.entradaItem.unidadeMedidaEntrada.quantidadePadrao;
  351 + $scope.unidadesMedidasEntrada = $scope.entradaItem.material.tiposUnidadeMedidaEntrada.map(function(item){
  352 + return item.unidadeMedida;
  353 + });
  354 +
  355 + if($scope.entradaItem.dataValidade && !$scope.entradaItem.id){
  356 + $scope.entradaItem.dataValidade = $filter('date')($scope.entradaItem.dataValidade, "dd/MM/yyyy");
  357 + }
  358 +
  359 + $scope.$openModal('modal-materiais-consumo.html', 'lg');
342 360 };
343 361  
344 362 $scope.removerEntradaItem = function(){
... ... @@ -378,19 +396,20 @@ citApp.controller(&#39;EntradaAlmoxarifadoController&#39;, [&#39;$scope&#39;, &#39;$filter&#39;, &#39;FileUp
378 396 $scope.excluirItemAlmoxarifadoDaLista = function(entradaItemSelecionada){
379 397 var index = 0;
380 398 $scope.valorTotalMateriais = 0.0;
381   - $scope.entradaAlmoxarifado.entradasIten.forEach(function (entradaItem, key) {
  399 + $scope.entradaAlmoxarifado.entradasItem.forEach(function (entradaItem, key) {
382 400 if(entradaItemSelecionada.uuid === entradaItem.uuid) {
383 401 index = key;
384 402 }
385 403 });
386   - $scope.entradaAlmoxarifado.entradasIten.splice(index, 1);
  404 + $scope.entradaAlmoxarifado.entradasItem.splice(index, 1);
387 405 $scope.calcularValorTotalMateriais();
  406 + $scope.atualizarListaSizeSelectEntradaItem();
388 407 $scope.$modalConfirmInstance.dismiss('cancel');
389 408 };
390 409  
391 410 $scope.calcularValorTotalMateriais = function(){
392 411 $scope.valorTotalMateriais = 0.0;
393   - $scope.entradaAlmoxarifado.entradasIten.forEach(function (entradaItem) {
  412 + $scope.entradaAlmoxarifado.entradasItem.forEach(function (entradaItem) {
394 413 $scope.valorTotalMateriais = converterMoedaToNumber(entradaItem.valorTotal) + $scope.valorTotalMateriais;
395 414 });
396 415 };
... ... @@ -480,7 +499,7 @@ citApp.controller(&#39;EntradaAlmoxarifadoController&#39;, [&#39;$scope&#39;, &#39;$filter&#39;, &#39;FileUp
480 499  
481 500 var formularioValido = true;
482 501  
483   - if(!form.$valid || !$scope.entradaAlmoxarifado.entradasIten.length > 0 || !$scope.entradaAlmoxarifado.documentos.length > 0){
  502 + if(!form.$valid || !$scope.entradaAlmoxarifado.entradasItem.length > 0 || !$scope.entradaAlmoxarifado.documentos.length > 0){
484 503 $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'));
485 504 formularioValido = false;
486 505  
... ... @@ -664,20 +683,22 @@ citApp.controller(&#39;EntradaAlmoxarifadoController&#39;, [&#39;$scope&#39;, &#39;$filter&#39;, &#39;FileUp
664 683 //Watch para controlar as definições de material selecionado na modal de adição de materiais
665 684 $scope.$watch('entradaItem.material', function() {
666 685 $timeout(function() {
667   - if (!$scope.entradaItem) {
668   - $scope.entradaItem = {
669   - $validarPrecoMedio : true
670   - };
  686 + if ($scope.newEntrada) {
  687 + if (!$scope.entradaItem) {
  688 + $scope.entradaItem = {
  689 + $validarPrecoMedio : true
  690 + };
  691 + }
  692 + $scope.entradaItem.quantidade = null;
  693 + $scope.entradaItem.valorTotal = null;
  694 + $scope.entradaItem.valorUnitario = null;
  695 + $scope.entradaItem.unidadeMedidaEntrada = null;
  696 + $scope.entradaItem.materialLocalEstoque = null;
  697 + $scope.unidadesMedidasEntrada = [];
  698 + $scope.enderecosMaterial = [];
671 699 }
672   - $scope.entradaItem.quantidade = null;
673   - $scope.entradaItem.quantidadeDominioTipoUnidadeEntrada = null;
674   - $scope.entradaItem.valorTotal = null;
675   - $scope.entradaItem.valorUnitario = null;
676   - $scope.entradaItem.unidadeMedidaEntrada = null;
677   - $scope.entradaItem.materialLocalEstoque = null;
678   - $scope.unidadesMedidasEntrada = [];
679 700  
680   - if ($scope.entradaItem.material) {
  701 + if ($scope.entradaItem.material) {
681 702 $scope.unidadesMedidasEntrada = $scope.entradaItem.material.tiposUnidadeMedidaEntrada.map(function(item){
682 703 if (item.isPadrao && !$scope.entradaItem.unidadeMedidaEntrada) {
683 704 $scope.entradaItem.unidadeMedidaEntrada = item.unidadeMedida;
... ... @@ -685,20 +706,57 @@ citApp.controller(&#39;EntradaAlmoxarifadoController&#39;, [&#39;$scope&#39;, &#39;$filter&#39;, &#39;FileUp
685 706 return item.unidadeMedida;
686 707 });
687 708  
688   - $scope.enderecosMaterial = [];
689 709 MaterialLocalEstoqueRepository.listarMaterialEstoquePorMaterial($scope.entradaItem.material.id).then(function(result) {
690   - for (var i = 0; i < result.length; i++) {
691   - $scope.enderecosMaterial.push(result[i].originalElement);
  710 + $scope.enderecosMaterial = [];
  711 + for (var i = 0; i < result.length; i++) {
  712 + $scope.enderecosMaterial.push(result[i].originalElement);
692 713  
693   - if (result[i].localPrincipal && !$scope.entradaItem.materialLocalEstoque) {
694   - $scope.entradaItem.materialLocalEstoque = result[i].originalElement;
695   - }
696   - }
  714 + if (result[i].localPrincipal && !$scope.entradaItem.materialLocalEstoque) {
  715 + $scope.entradaItem.materialLocalEstoque = result[i].originalElement;
  716 + }
  717 + }
697 718 });
698 719 }
699 720 });
700 721 });
701 722  
  723 + //Watch para controlar as mudanças da quantidade na entrada de materiais
  724 + $scope.$watch('entradaItem.$quantidadeEntrada', function() {
  725 + $timeout(function(){
  726 + if($scope.entradaItem.$quantidadeEntrada && $scope.entradaItem.unidadeMedidaEntrada){
  727 + $scope.entradaItem.quantidade = $scope.entradaItem.$quantidadeEntrada * $scope.entradaItem.unidadeMedidaEntrada.quantidadePadrao;
  728 + } else {
  729 + delete $scope.entradaItem.quantidade;
  730 + }
  731 + if($scope.entradaItem.quantidade && $scope.entradaItem.valorTotal){
  732 + $scope.entradaItem.valorUnitario = $scope.entradaItem.valorTotal / $scope.entradaItem.quantidade;
  733 + } else {
  734 + delete $scope.entradaItem.valorUnitario;
  735 + }
  736 + });
  737 + });
  738 +
  739 + //Watch para controlar as mudanças da unidade de medida na entrada de materiais
  740 + $scope.$watch('entradaItem.unidadeMedidaEntrada', function() {
  741 + $timeout(function(){
  742 + if($scope.entradaItem.$quantidadeEntrada && $scope.entradaItem.unidadeMedidaEntrada){
  743 + $scope.entradaItem.quantidade = $scope.entradaItem.$quantidadeEntrada * $scope.entradaItem.unidadeMedidaEntrada.quantidadePadrao;
  744 + } else {
  745 + delete $scope.entradaItem.quantidade;
  746 + }
  747 + });
  748 + });
  749 +
  750 + //Watch para controlar as mudanças do valor total da entrada de materiais
  751 + $scope.$watch('entradaItem.valorTotal', function() {
  752 + $timeout(function(){
  753 + if($scope.entradaItem.quantidade && $scope.entradaItem.valorTotal){
  754 + $scope.entradaItem.valorUnitario = $scope.entradaItem.valorTotal / $scope.entradaItem.quantidade;
  755 + } else {
  756 + delete $scope.entradaItem.valorUnitario;
  757 + }
  758 + });
  759 + });
702 760  
703 761  
704 762  
... ... @@ -837,7 +895,7 @@ citApp.controller(&#39;EntradaAlmoxarifadoController&#39;, [&#39;$scope&#39;, &#39;$filter&#39;, &#39;FileUp
837 895 function validStepMateriais() {
838 896 $scope.stepValid = true;
839 897  
840   - if ($scope.entradaAlmoxarifadoForm.materiaisForm.$invalid) {
  898 + if ($scope.entradaAlmoxarifadoForm.materiaisForm.$invalid || !($scope.entradaAlmoxarifado.entradasItem.length > 0)) {
841 899 $scope.stepValid = false;
842 900 }
843 901  
... ... @@ -847,7 +905,7 @@ citApp.controller(&#39;EntradaAlmoxarifadoController&#39;, [&#39;$scope&#39;, &#39;$filter&#39;, &#39;FileUp
847 905 //Funcao especifica que retorna se o formulario de documentos esta valido
848 906 function validStepDocumentos() {
849 907 $scope.stepValid = true;
850   - if ($scope.entradaAlmoxarifadoForm.documentosForm.$invalid || !$scope.entradaAlmoxarifado.documentos.length > 0) {
  908 + if ($scope.entradaAlmoxarifadoForm.documentosForm.$invalid || !($scope.entradaAlmoxarifado.documentos.length > 0)) {
851 909 $scope.stepValid = false;
852 910 }
853 911 return $scope.stepValid;
... ...
cit-almoxarifado-web/src/main/webapp/html/entradaAlmoxarifado/dialog_add_materiais.html
1 1 <ng-form name="formDialogMateriais" autocomplete="off">
2 2 <div class="modal-header">
3   - <button class="btn btn-clear" type="button" ng-hide="!editEntrada" ng-click="addEntradaItem(formDialogMateriais)">
  3 + <button class="btn btn-clear" type="button" ng-hide="!editEntrada && !newEntrada" ng-click="addEntradaItem(formDialogMateriais)">
4 4 <i class="fa fa-save green"></i>
5 5 <translate>{{entradaItem.id ? 'LABEL.SALVAR' : 'LABEL.ADICIONAR'}} </translate>
6 6 </button>
... ... @@ -13,54 +13,54 @@
13 13  
14 14 <div class="modal-body">
15 15 <h2 class="title-modal blue"><translate>ALMOXARIFADO.LABEL.MATERIAIS</translate></h2>
16   - <p ng-show="editEntrada">
  16 + <p ng-show="editEntrada || newEntrada">
17 17 <small>( <span class="red">*</span> ) <translate>LABEL.CAMPOS_OBRIGATORIOS</translate>
18 18 </small>
19 19 </p>
20 20 <div class="row">
21 21 <div class="col-md-4">
22   - <label-input-checkbox ng-model="entradaItem.$validarPrecoMedio" ng-disabled="!editEntrada" ng-label="ALMOXARIFADO.LABEL.VALIDAR_PRECO_MEDIO" ></label-input-checkbox>
  22 + <label-input-checkbox ng-model="entradaItem.$validarPrecoMedio" ng-disabled="!editEntrada && !newEntrada" ng-label="ALMOXARIFADO.LABEL.VALIDAR_PRECO_MEDIO" ></label-input-checkbox>
23 23 </div>
24 24 </div>
25 25  
26 26 <div class="row">
27 27 <br>
28 28 <div class="col-sm-6">
29   - <auto-complete ng-find="findMaterial(value)" ng-set-result="carregarItensMaterial(item)" ng-item="item.codigoEDescricao" ng-acao-borracha="limparCamposMaterial()"
30   - ng-id="entradaItem.material" form="formDialogMateriais" ng-label="LABEL.MATERIAL" ng-disabled="!editEntrada" ng-model="entradaItem.material" ng-obrigatorio="true">
  29 + <auto-complete ng-find="findMaterial(value)" ng-set-result="carregarItensMaterial(item)" ng-item="item.codigoEDescricao" ng-id="entradaItem.material" form="formDialogMateriais"
  30 + ng-label="LABEL.MATERIAL" ng-disabled="!newEntrada" ng-model="entradaItem.material" ng-obrigatorio="true">
31 31 </auto-complete>
32 32 </div>
33 33 <div class="col-sm-2">
34   - <label-select ng-id="entradaItem.unidadeMedidaEntrada" ng-custom-change="definirTipoNumerico()" ng-label="ALMOXARIFADO.LABEL.UN_MEDIDA" ng-model="entradaItem.unidadeMedidaEntrada"
35   - form="formDialogMateriais" ng-obrigatorio="editEntrada" ng-disabled="!editEntrada" ng-custom-options="unidadeMedida as unidadeMedida.sigla for unidadeMedida"
36   - track-by="track by unidadeMedida.id" ng-list="unidadesMedidasEntrada"/>
  34 + <label-select ng-id="entradaItem.unidadeMedidaEntrada" ng-label="ALMOXARIFADO.LABEL.UN_MEDIDA" ng-model="entradaItem.unidadeMedidaEntrada"
  35 + form="formDialogMateriais" ng-obrigatorio="editEntrada || newEntrada" ng-disabled="!editEntrada && !newEntrada"
  36 + ng-custom-options="unidadeMedida as unidadeMedida.sigla for unidadeMedida" track-by="track by unidadeMedida.id" ng-list="unidadesMedidasEntrada"/>
37 37 </div>
38 38 <div class="col-sm-4">
39 39 <label-select ng-id="entradaItem.materialLocalEstoque.endereco" ng-custom-change="" ng-label="ALMOXARIFADO.LABEL.ENDERECO_ESTOQUE" ng-model="entradaItem.materialLocalEstoque"
40   - form="formDialogMateriais" ng-obrigatorio="editEntrada" ng-disabled="!editEntrada" ng-custom-options="materialLocal as materialLocal.endereco.descricao for materialLocal"
41   - track-by="track by materialLocal.id" ng-list="enderecosMaterial"/>
  40 + form="formDialogMateriais" ng-obrigatorio="editEntrada || newEntrada" ng-disabled="!editEntrada && !newEntrada && !entradaItem.id"
  41 + ng-custom-options="materialLocal as materialLocal.endereco.descricao for materialLocal" track-by="track by materialLocal.id" ng-list="enderecosMaterial"/>
42 42 </div>
43 43 </div>
44 44  
45 45 <div class="row">
46 46 <div class="col-sm-3">
47   - <label-input-decimal ng-id="entradaItem.$quantidadeEntrada" ng-label="ALMOXARIFADO.LABEL.QUANTIDADE" ng-evento-change="calcularQuantidadeEValores()" ng-obrigatorio="editEntrada"
48   - ng-disabled="!editEntrada" form="formDialogMateriais" ng-model="entradaItem.$quantidadeEntrada" ng-precisao="tipoNumerico" ng-custom-maxlength="11"/>
  47 + <label-input-decimal ng-id="entradaItem.$quantidadeEntrada" ng-label="ALMOXARIFADO.LABEL.QUANTIDADE" ng-obrigatorio="editEntrada || newEntrada" ng-disabled="!editEntrada && !newEntrada"
  48 + form="formDialogMateriais" ng-model="entradaItem.$quantidadeEntrada" ng-precisao="tipoNumerico" ng-custom-maxlength="11"/>
49 49 </div>
50 50  
51 51 <div class="col-sm-3">
52   - <label-input-money ng-id="entradaItem.valorTotal" ng-evento-change="calcularQuantidadeEValores()" ng-label="ALMOXARIFADO.LABEL.VALOR_TOTAL_MATERIAL_SUBTOTAL" ng-obrigatorio="editEntrada"
53   - ng-disabled="!editEntrada" form="formDialogMateriais" ng-model="entradaItem.valorTotal" ng-custom-maxlength="19"/>
  52 + <label-input-money ng-id="entradaItem.valorTotal" ng-label="ALMOXARIFADO.LABEL.VALOR_TOTAL_MATERIAL_SUBTOTAL" ng-obrigatorio="editEntrada || newEntrada"
  53 + ng-disabled="!editEntrada && !newEntrada" form="formDialogMateriais" ng-model="entradaItem.valorTotal" ng-custom-maxlength="19"/>
54 54 </div>
55 55  
56 56 <div class="col-sm-3">
57   - <label-input ng-id="entradaItem.numeroLote" ng-label="ALMOXARIFADO.LABEL.NUMERO_LOTE" ng-obrigatorio="false" ng-disabled="!editEntrada" form="formDialogMateriais"
  57 + <label-input ng-id="entradaItem.numeroLote" ng-label="ALMOXARIFADO.LABEL.NUMERO_LOTE" ng-obrigatorio="false" ng-disabled="!editEntrada && !newEntrada" form="formDialogMateriais"
58 58 ng-model="entradaItem.numeroLote" />
59 59 </div>
60 60  
61 61 <div class="col-sm-3">
62   - <label-input-data ng-id="entradaItem.dataValidade" ng-label="ALMOXARIFADO.LABEL.DATA_VALIDADE" ng-obrigatorio="false" ng-disabled="!editEntrada" ng-model="entradaItem.dataValidade"
63   - form="formDialogMateriais" />
  62 + <label-input-data ng-id="entradaItem.dataValidade" ng-label="ALMOXARIFADO.LABEL.DATA_VALIDADE" ng-obrigatorio="false" ng-disabled="!editEntrada && !newEntrada"
  63 + ng-model="entradaItem.dataValidade" form="formDialogMateriais" />
64 64 </div>
65 65 </div>
66 66  
... ...
cit-almoxarifado-web/src/main/webapp/html/entradaAlmoxarifado/entradaAlmoxarifadoEdit.html
... ... @@ -52,19 +52,19 @@
52 52  
53 53 <div>
54 54 <ul class="wizard-steps">
55   - <li ng-class="{'active': isCurrentStep(0), 'complete' : !entradaAlmoxarifadoForm.dadosEntradaForm.$invalid, 'invalid' : (entradaAlmoxarifadoForm.dadosEntradaForm.$submitted && entradaAlmoxarifadoForm.dadosEntradaForm.$invalid)}"
  55 + <li ng-class="{'active': isCurrentStep(0), 'complete' : !entradaAlmoxarifadoForm.dadosEntradaForm.$invalid, 'incomplete' : (entradaAlmoxarifadoForm.dadosEntradaForm.$submitted && entradaAlmoxarifadoForm.dadosEntradaForm.$invalid)}"
56 56 ng-click="setCurrentStep(0)" title="{{$translate.instant('ALMOXARIFADO.LABEL.DADOS_ENTRADA')}}" alt="{{$translate.instant('ALMOXARIFADO.LABEL.DADOS_ENTRADA')}}">
57 57 <span class="step">1</span>
58 58 <a href="#void" class="title" style="text-decoration: none;"><translate>ALMOXARIFADO.LABEL.DADOS_ENTRADA</translate></a>
59 59 </li>
60 60  
61   - <li ng-class="{'active': isCurrentStep(1), 'complete' : ((isCurrentStep(1) || isCurrentStep(2) || isCurrentStep(3)) && !entradaAlmoxarifadoForm.materiaisForm.$invalid), 'invalid' : ((entradaAlmoxarifadoForm.materiaisForm.$submitted || step > 1) && entradaAlmoxarifadoForm.materiaisForm.$invalid) && (isCurrentStep(1) || isCurrentStep(2) || isCurrentStep(3))}"
  61 + <li ng-class="{'active': isCurrentStep(1), 'complete' : ((isCurrentStep(1) || isCurrentStep(2) || isCurrentStep(3)) && !entradaAlmoxarifadoForm.materiaisForm.$invalid && (entradaAlmoxarifado.entradasItem.length > 0)), 'incomplete' : ((entradaAlmoxarifadoForm.materiaisForm.$submitted || step > 1) && (entradaAlmoxarifadoForm.materiaisForm.$invalid || !(entradaAlmoxarifado.entradasItem.length > 0))) && (isCurrentStep(1) || isCurrentStep(2) || isCurrentStep(3))}"
62 62 ng-click="setCurrentStep(1)" title="{{$translate.instant('LABEL.MATERIAIS')}}" alt="{{$translate.instant('LABEL.MATERIAIS')}}">
63 63 <span class="step">2</span>
64 64 <a href="#void" class="title" style="text-decoration: none;"><translate>LABEL.MATERIAIS</translate></a>
65 65 </li>
66 66  
67   - <li ng-class="{'active': isCurrentStep(2), 'complete' : ((isCurrentStep(2) || isCurrentStep(3)) && !entradaAlmoxarifadoForm.documentosForm.$invalid), 'invalid' : ((entradaAlmoxarifadoForm.documentosForm.$submitted || step > 1) && entradaAlmoxarifadoForm.documentosForm.$invalid) && (isCurrentStep(2) || isCurrentStep(3)) && entradaAlmoxarifado.documentos.length < 1}"
  67 + <li ng-class="{'active': isCurrentStep(2), 'complete' : ((isCurrentStep(2) || isCurrentStep(3)) && (entradaAlmoxarifado.documentos.length > 0)), 'incomplete' : ((entradaAlmoxarifadoForm.documentosForm.$submitted || step > 2) && !(entradaAlmoxarifado.documentos.length > 0)) && (isCurrentStep(2) || isCurrentStep(3))}"
68 68 ng-click="setCurrentStep(2)" title="{{$translate.instant('ALMOXARIFADO.LABEL.DOCUMENTOS')}}" alt="{{$translate.instant('ALMOXARIFADO.LABEL.DOCUMENTOS')}}">
69 69 <span class="step">3</span>
70 70 <a href="#void" class="title" style="text-decoration: none;"><translate>ALMOXARIFADO.LABEL.DOCUMENTOS</translate></a>
... ...
cit-almoxarifado-web/src/main/webapp/html/entradaAlmoxarifado/entradaAlmoxarifadoPg2.html
... ... @@ -2,10 +2,10 @@
2 2 <div class="page-content">
3 3 <fieldset>
4 4 <legend>
5   - <label ng-class="{'has-error' : materiaisForm.$submitted && entradaAlmoxarifado.entradasIten && entradaAlmoxarifado.entradasIten.length < 1}">
  5 + <label ng-class="{'has-error' : materiaisForm.$submitted && entradaAlmoxarifado.entradasItem && entradaAlmoxarifado.entradasItem.length < 1}">
6 6 <translate>ALMOXARIFADO.LABEL.MATERIAIS</translate>
7 7 <span class='red' ng-if=" edit">*</span>
8   - <i ng-show="materiaisForm.$submitted && entradaAlmoxarifado.entradasIten && entradaAlmoxarifado.entradasIten.length < 1" class='fa fa-warning red'
  8 + <i ng-show="materiaisForm.$submitted && entradaAlmoxarifado.entradasItem && entradaAlmoxarifado.entradasItem.length < 1" class='fa fa-warning red'
9 9 tooltip="{{$translate.instant('ALMOXARIFADO.LABEL.MATERIAIS') + ' ' +$translate.instant('LABEL.CAMPO_OBRIGATORIO')}}" tooltip-placement='top'></i>
10 10 </label>
11 11 </legend>
... ... @@ -58,23 +58,27 @@
58 58 <thead>
59 59 <tr>
60 60 <th width="20px" class="text-center"></th>
61   - <th width="10%" class="text-center"><translate>LABEL.ITEM</translate></th>
62   - <th style="width: 25%;" class="text-center"><translate>LABEL.DESCRICAO_MATERIAL</translate></th>
  61 + <th width="7%" class="text-center"><translate>LABEL.ITEM</translate></th>
  62 + <th style="width: 20%;" class="text-center"><translate>LABEL.DESCRICAO_MATERIAL</translate></th>
  63 + <th style="width: 14%;" class="text-center"><translate>ALMOXARIFADO.LABEL.QUANTIDADE</translate></th>
63 64 <th style="width: 15%;" class="text-center"><translate>LABEL.UNIDADE_MEDIDA</translate></th>
64   - <th style="width: 15%;" class="text-center"><translate>ALMOXARIFADO.LABEL.UNIDADES</translate></th>
  65 + <th style="width: 14%;" class="text-center"><translate>ALMOXARIFADO.LABEL.ENTRADA_ESTOQUE</translate></th>
65 66 <th style="width: 15%;" class="text-center"><translate>LABEL.VALOR_UNITARIO</translate></th>
66 67 <th style="width: 15%;" class="text-center"><translate>ALMOXARIFADO.LABEL.SUBTOTAL</translate></th>
67 68 </tr>
68 69 </thead>
69 70 <tbody>
70   - <tr ng-hide="entradaAlmoxarifado.entradasIten.length != 0">
71   - <td colspan="7" class="text-center"><translate>LABEL.TABELA_VAZIA</translate></td>
  71 + <tr ng-hide="entradaAlmoxarifado.entradasItem.length != 0">
  72 + <td colspan="8" class="text-center"><translate>LABEL.TABELA_VAZIA</translate></td>
72 73 </tr>
73   - <tr ng-repeat="entradaItemLista in entradaAlmoxarifado.entradasIten">
74   - <td class="text-center"><input type="radio" name="entradaItemChecked" ng-value="entradaItemLista" ng-model="$parent.entradaItemSelecionado"/></td>
  74 + <tr ng-repeat="entradaItemLista in entradaAlmoxarifado.entradasItem">
  75 + <td class="text-center">
  76 + <input type="checkbox" name="entradaItemChecked" ng-model="entradaItemLista.$checked" ng-click="checkEntradaItem(entradaItemLista); atualizarListaSizeSelectEntradaItem()"/>
  77 + </td>
75 78 <td class="text-center">{{$index +1}}</td>
76 79 <td class="text-center">{{ entradaItemLista.material.descricao }}</td>
77   - <td class="text-center">{{ entradaItemLista.material.unidadeArmazenamento.descricao }}</td>
  80 + <td class="text-center">{{ entradaItemLista.quantidade / entradaItemLista.unidadeMedidaEntrada.quantidadePadrao }}</td>
  81 + <td class="text-center">{{ entradaItemLista.unidadeMedidaEntrada.descricao }}</td>
78 82 <td class="text-center">{{ entradaItemLista.quantidade }}</td>
79 83 <td class="text-center">{{ entradaItemLista.valorUnitario | currency:"R$":2}}</td>
80 84 <td class="text-center">{{ entradaItemLista.valorTotal | currency}}</td>
... ...