Commit 0283220090bbedde2178fe918c8775b898443983

Authored by erick.sato
1 parent 1bb0d511
Exists in master

[Redmine Atendimento #4788]Validação remoção local estoque do material

cit-adm-materiais-web/src/main/java/br/com/centralit/listener/StartupListenerAdmMaterial.java
@@ -245,6 +245,7 @@ public class StartupListenerAdmMaterial extends UtilStartup implements Applicati @@ -245,6 +245,7 @@ public class StartupListenerAdmMaterial extends UtilStartup implements Applicati
245 internacionalizacaoList.add(new Internacionalizacao("ADMINISTRACAODEMATERIAIS.MSG.EDITA_LOCAL_ESTOQUE_MATERIAL_PRINCIPAL", "Para definir esse endereço de estoque como não sendo principal, primeiramente informe outro endereço de estoque como principal para o almoxarifado.", dominio, modulo)); 245 internacionalizacaoList.add(new Internacionalizacao("ADMINISTRACAODEMATERIAIS.MSG.EDITA_LOCAL_ESTOQUE_MATERIAL_PRINCIPAL", "Para definir esse endereço de estoque como não sendo principal, primeiramente informe outro endereço de estoque como principal para o almoxarifado.", dominio, modulo));
246 internacionalizacaoList.add(new Internacionalizacao("ADMINISTRACAODEMATERIAIS.MSG.LOCAL_SALVA_ESTOQUE_MATERIAL_COMO_PRINCIPAL_PARA_ALMOXARIFADO", "Este endereço de estoque é o principal do almoxarifado ", dominio, modulo)); 246 internacionalizacaoList.add(new Internacionalizacao("ADMINISTRACAODEMATERIAIS.MSG.LOCAL_SALVA_ESTOQUE_MATERIAL_COMO_PRINCIPAL_PARA_ALMOXARIFADO", "Este endereço de estoque é o principal do almoxarifado ", dominio, modulo));
247 internacionalizacaoList.add(new Internacionalizacao("ADMINISTRACAODEMATERIAIS.MSG.LOCAL_ESTOQUE_JA_VINCULADO_MATERIAL", "Este endereço de estoque já possui vínculo ao material.", dominio, modulo)); 247 internacionalizacaoList.add(new Internacionalizacao("ADMINISTRACAODEMATERIAIS.MSG.LOCAL_ESTOQUE_JA_VINCULADO_MATERIAL", "Este endereço de estoque já possui vínculo ao material.", dominio, modulo));
  248 + internacionalizacaoList.add(new Internacionalizacao("ADMINISTRACAODEMATERIAIS.MSG.REMOVER_LOCAL_ESTOQUE_MATERIAL_VINCULADO_ENTRADA_ALMOX_ITEM", "Não é possível remover esse vínculo de endereço de estoque com o material, pois o endereço selecionado foi utilizado em um item de entrada do almoxarifado.", dominio, modulo));
248 } 249 }
249 250
250 } 251 }
251 \ No newline at end of file 252 \ No newline at end of file
cit-adm-materiais-web/src/main/webapp/assets/js/angular/custom/controller/MaterialController.js
@@ -696,7 +696,8 @@ citApp.controller('MaterialController', ['$scope', 'MaterialRepository', 'Classi @@ -696,7 +696,8 @@ citApp.controller('MaterialController', ['$scope', 'MaterialRepository', 'Classi
696 $scope.MaterialLocalEstoqueRepository = $injector.get(["MaterialLocalEstoqueRepository"]); 696 $scope.MaterialLocalEstoqueRepository = $injector.get(["MaterialLocalEstoqueRepository"]);
697 $scope.EstruturaOrganizacionalAlmoxarifadoRepository = $injector.get(["EstruturaOrganizacionalAlmoxarifadoRepository"]); 697 $scope.EstruturaOrganizacionalAlmoxarifadoRepository = $injector.get(["EstruturaOrganizacionalAlmoxarifadoRepository"]);
698 $scope.EnderecoEstoqueRepository = $injector.get(["EnderecoEstoqueRepository"]); 698 $scope.EnderecoEstoqueRepository = $injector.get(["EnderecoEstoqueRepository"]);
699 - 699 + $scope.EntradaAlmoxarifadoItemRepository = $injector.get(["EntradaAlmoxarifadoItemRepository"]);
  700 +
700 $scope.EstruturaOrganizacionalAlmoxarifadoRepository.getAlmoxarifadoPadrao($scope.usuarioLogado.organizacao.id).then(function(result){ 701 $scope.EstruturaOrganizacionalAlmoxarifadoRepository.getAlmoxarifadoPadrao($scope.usuarioLogado.organizacao.id).then(function(result){
701 $scope.almoxarifadoTemp = result.originalElement.estruturaOrganizacional; 702 $scope.almoxarifadoTemp = result.originalElement.estruturaOrganizacional;
702 }); 703 });
@@ -740,10 +741,20 @@ citApp.controller('MaterialController', ['$scope', 'MaterialRepository', 'Classi @@ -740,10 +741,20 @@ citApp.controller('MaterialController', ['$scope', 'MaterialRepository', 'Classi
740 return; 741 return;
741 } 742 }
742 } 743 }
743 - $scope.MaterialLocalEstoqueRepository.remove($scope.matEndEstoqueCheck).then(function(result) {  
744 - $scope.listaLocaisEstoqueMaterial();  
745 - $scope.setLoading(false); 744 +
  745 + $scope.EntradaAlmoxarifadoItemRepository.existeItemVinculadoAMaterialLocalEstoque($scope.matEndEstoqueCheck.id).then(function(result) {
  746 + if(result){
  747 + $scope.showAlert("warning", $translate.instant('ADMINISTRACAODEMATERIAIS.MSG.REMOVER_LOCAL_ESTOQUE_MATERIAL_VINCULADO_ENTRADA_ALMOX_ITEM'));
  748 + $scope.setLoading(false);
  749 + $scope.$modalConfirmInstance.dismiss('cancel');
  750 + return;
  751 + }
  752 + $scope.MaterialLocalEstoqueRepository.remove($scope.matEndEstoqueCheck).then(function(result) {
  753 + $scope.listaLocaisEstoqueMaterial();
  754 + $scope.setLoading(false);
  755 + });
746 }); 756 });
  757 +
747 $scope.$modalConfirmInstance.dismiss('cancel'); 758 $scope.$modalConfirmInstance.dismiss('cancel');
748 }); 759 });
749 } 760 }
@@ -771,22 +782,27 @@ citApp.controller('MaterialController', ['$scope', 'MaterialRepository', 'Classi @@ -771,22 +782,27 @@ citApp.controller('MaterialController', ['$scope', 'MaterialRepository', 'Classi
771 }); 782 });
772 }; 783 };
773 784
774 - $scope.salvarMaterialEnderecoEstoque = function(materialLocalEstoque, almoxarifadoTemp){  
775 - $scope.almoxarifadoTemp = almoxarifadoTemp;  
776 - $scope.setLoading(true);  
777 - if(!materialLocalEstoque.materialEstoque){  
778 - materialLocalEstoque.materialEstoque = {material : $scope.material};  
779 - }  
780 - materialLocalEstoque.endereco.estoque = {almoxarifado : $scope.almoxarifadoTemp};  
781 - $scope.MaterialLocalEstoqueRepository.save(materialLocalEstoque).then(function(result) {  
782 - if( result.originalElement.localPrincipal){  
783 - $scope.showAlert("warning", $translate.instant('ADMINISTRACAODEMATERIAIS.MSG.LOCAL_SALVA_ESTOQUE_MATERIAL_COMO_PRINCIPAL_PARA_ALMOXARIFADO') + $scope.almoxarifadoTemp.codigoENome); 785 + $scope.salvarMaterialEnderecoEstoque = function(formDialogMaterialEnderecoEstoque, materialLocalEstoque, almoxarifadoTemp){
  786 + formDialogMaterialEnderecoEstoque.$submitted = true;
  787 + if (formDialogMaterialEnderecoEstoque.$invalid) {
  788 + $scope.showAlert('error', $translate.instant('MSG.MN001'));
  789 + } else {
  790 + $scope.almoxarifadoTemp = almoxarifadoTemp;
  791 + $scope.setLoading(true);
  792 + if(!materialLocalEstoque.materialEstoque){
  793 + materialLocalEstoque.materialEstoque = {material : $scope.material};
784 } 794 }
785 - $scope.$modalInstance.dismiss('cancel');  
786 - $scope.listaLocaisEstoqueMaterial();  
787 - $scope.editEnderecoEstoque = false;  
788 - $scope.setLoading(false);  
789 - }); 795 + materialLocalEstoque.endereco.estoque = {almoxarifado : $scope.almoxarifadoTemp};
  796 + $scope.MaterialLocalEstoqueRepository.save(materialLocalEstoque).then(function(result) {
  797 + if( result.originalElement.localPrincipal){
  798 + $scope.showAlert("warning", $translate.instant('ADMINISTRACAODEMATERIAIS.MSG.LOCAL_SALVA_ESTOQUE_MATERIAL_COMO_PRINCIPAL_PARA_ALMOXARIFADO') + $scope.almoxarifadoTemp.codigoENome);
  799 + }
  800 + $scope.$modalInstance.dismiss('cancel');
  801 + $scope.listaLocaisEstoqueMaterial();
  802 + $scope.editEnderecoEstoque = false;
  803 + $scope.setLoading(false);
  804 + });
  805 + }
790 }; 806 };
791 807
792 $scope.listaLocaisEstoqueMaterial = function(){ 808 $scope.listaLocaisEstoqueMaterial = function(){
@@ -795,6 +811,7 @@ citApp.controller('MaterialController', ['$scope', 'MaterialRepository', 'Classi @@ -795,6 +811,7 @@ citApp.controller('MaterialController', ['$scope', 'MaterialRepository', 'Classi
795 $scope.MaterialLocalEstoqueRepository.listarMaterialEstoquePorMaterial($scope.material.id).then(function(result) { 811 $scope.MaterialLocalEstoqueRepository.listarMaterialEstoquePorMaterial($scope.material.id).then(function(result) {
796 $scope.listaMaterialEnderecoEstoque = result; 812 $scope.listaMaterialEnderecoEstoque = result;
797 $scope.matEndEstoqueCheck = null; 813 $scope.matEndEstoqueCheck = null;
  814 + $scope.alternaTipoNumericoUnidadeMedida();
798 $scope.setLoading(false); 815 $scope.setLoading(false);
799 }); 816 });
800 }; 817 };
cit-adm-materiais-web/src/main/webapp/html/material/materialEnderecoEstoque.html
@@ -81,9 +81,12 @@ @@ -81,9 +81,12 @@
81 <td> 81 <td>
82 {{matEndEstoque.endereco.estoque.almoxarifado.codigoENome}} 82 {{matEndEstoque.endereco.estoque.almoxarifado.codigoENome}}
83 </td> 83 </td>
84 - <td> 84 + <td ng-if="showInteiro">
85 {{matEndEstoque.capacidade}} 85 {{matEndEstoque.capacidade}}
86 </td> 86 </td>
  87 + <td ng-if="showDecimal">
  88 + {{matEndEstoque.capacidade | number:2}}
  89 + </td>
87 <td> 90 <td>
88 {{matEndEstoque.localPrincipal | booleanSimNao}} 91 {{matEndEstoque.localPrincipal | booleanSimNao}}
89 </td> 92 </td>
@@ -105,7 +108,7 @@ @@ -105,7 +108,7 @@
105 <script type="text/ng-template" id="modal-material-endereco-estoque.html"> 108 <script type="text/ng-template" id="modal-material-endereco-estoque.html">
106 <form name="formDialogMaterialEnderecoEstoque" novalidate > 109 <form name="formDialogMaterialEnderecoEstoque" novalidate >
107 <div class="modal-header"> 110 <div class="modal-header">
108 - <button title="{{$translate.instant('LABEL.SALVAR')}}" alt="{{$translate.instant('LABEL.SALVAR')}}" ng-click="salvarMaterialEnderecoEstoque(materialLocalEstoque, almoxarifadoTemp)" class="btn btn-clear" type="button"> 111 + <button title="{{$translate.instant('LABEL.SALVAR')}}" alt="{{$translate.instant('LABEL.SALVAR')}}" ng-click="salvarMaterialEnderecoEstoque(formDialogMaterialEnderecoEstoque, materialLocalEstoque, almoxarifadoTemp)" class="btn btn-clear" type="button">
109 <i class="fa fa-save green"></i> 112 <i class="fa fa-save green"></i>
110 <translate>LABEL.SALVAR</translate> 113 <translate>LABEL.SALVAR</translate>
111 </button> 114 </button>
@@ -127,10 +130,10 @@ @@ -127,10 +130,10 @@
127 <auto-complete ng-id="materialLocalEstoque.endereco" ng-label="ALMOXARIFADO.LABEL.ENDERECO_ESTOQUE" ng-model="materialLocalEstoque.endereco" form="formDialogMaterialEnderecoEstoque" ng-obrigatorio="true" ng-find="findAutoCompleteEndereco(value, almoxarifadoTemp)" ng-item="item.descricao" /> 130 <auto-complete ng-id="materialLocalEstoque.endereco" ng-label="ALMOXARIFADO.LABEL.ENDERECO_ESTOQUE" ng-model="materialLocalEstoque.endereco" form="formDialogMaterialEnderecoEstoque" ng-obrigatorio="true" ng-find="findAutoCompleteEndereco(value, almoxarifadoTemp)" ng-item="item.descricao" />
128 </div> 131 </div>
129 132
130 - <div class="col-md-5" ng-show="showInteiro"> 133 + <div class="col-md-5" ng-if="showInteiro">
131 <label-input-number ng-id="materialLocalEstoque.capacidade" ng-model="materialLocalEstoque.capacidade" ng-custom-maxlength="4" ng-type="text" ng-label="LABEL.CAPACIDADE" ng-obrigatorio="showInteiro" form="formDialogMaterialEnderecoEstoque"/> 134 <label-input-number ng-id="materialLocalEstoque.capacidade" ng-model="materialLocalEstoque.capacidade" ng-custom-maxlength="4" ng-type="text" ng-label="LABEL.CAPACIDADE" ng-obrigatorio="showInteiro" form="formDialogMaterialEnderecoEstoque"/>
132 </div> 135 </div>
133 - <div class="col-md-5" ng-show="showDecimal"> 136 + <div class="col-md-5" ng-if="showDecimal">
134 <label-input-decimal ng-precisao="decimal" ng-custom-maxlength="9" ng-evento-blur="aplicarValidacaoDecimal" ng-id="materialLocalEstoque.capacidade" ng-model="materialLocalEstoque.capacidade" ng-label="LABEL.CAPACIDADE" ng-obrigatorio="showDecimal" form="formDialogMaterialEnderecoEstoque"/> 137 <label-input-decimal ng-precisao="decimal" ng-custom-maxlength="9" ng-evento-blur="aplicarValidacaoDecimal" ng-id="materialLocalEstoque.capacidade" ng-model="materialLocalEstoque.capacidade" ng-label="LABEL.CAPACIDADE" ng-obrigatorio="showDecimal" form="formDialogMaterialEnderecoEstoque"/>
135 </div> 138 </div>
136 </div> 139 </div>