Commit 0283220090bbedde2178fe918c8775b898443983
1 parent
1bb0d511
Exists in
master
[Redmine Atendimento #4788]Validação remoção local estoque do material
Showing
3 changed files
with
44 additions
and
23 deletions
Show diff stats
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> |