diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/EntradaAlmoxarifadoService.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/EntradaAlmoxarifadoService.java index 2afdac6..8a12819 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/EntradaAlmoxarifadoService.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/EntradaAlmoxarifadoService.java @@ -1,6 +1,5 @@ package br.com.centralit.api.service; -import java.util.List; import java.util.Map; import br.com.centralit.api.model.EntradaAlmoxarifado; @@ -10,6 +9,20 @@ public interface EntradaAlmoxarifadoService extends GenericService buscaValoresDocumentoEntrada(Long idEntrada); + /** + *

Iniciativa(s): NUMERO_INICIATIVA

+ * + *

Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO

+ * + * Método responsável por concluir uma entrada do almoxarifado + * + * @author geovane.filho + * + * @param entradaAlmoxarifado + * @return + */ + EntradaAlmoxarifado concluir(EntradaAlmoxarifado entradaAlmoxarifado); + } diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/MovimentoEstoqueService.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/MovimentoEstoqueService.java index 3b99b88..e83788c 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/MovimentoEstoqueService.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/MovimentoEstoqueService.java @@ -209,4 +209,18 @@ public interface MovimentoEstoqueService extends GenericService findAllByClasseReferencia(Dominio classeReferencia, Long idReferencia); + /** + *

Iniciativa(s): NUMERO_INICIATIVA

+ * + *

Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO

+ * + * Método responsável por buscar todos os códigos das operações de atendimentos e baixas que ocorreram com materiais da entrada passada como referência + * + * @author geovane.filho + * + * @param idEntrada + * @return + */ + String buscarMovimentosSaidaComMateriaisDaEntrada(Long idEntrada); + } diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/EntradaAlmoxarifadoServiceImpl.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/EntradaAlmoxarifadoServiceImpl.java index c862a88..143c610 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/EntradaAlmoxarifadoServiceImpl.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/EntradaAlmoxarifadoServiceImpl.java @@ -1,5 +1,6 @@ package br.com.centralit.api.service.impl; +import java.util.Calendar; import java.util.HashMap; import java.util.Map; @@ -9,7 +10,6 @@ import org.springframework.stereotype.Service; import org.springframework.validation.Validator; import br.com.centralit.api.dao.EntradaAlmoxarifadoDao; -import br.com.centralit.api.model.BemAlmoxarifadoCaracteristica; import br.com.centralit.api.model.EntradaAlmoxarifado; import br.com.centralit.api.model.EntradaAlmoxarifadoDocumento; import br.com.centralit.api.model.EntradaAlmoxarifadoItem; @@ -27,6 +27,7 @@ import br.com.centralit.api.service.MovimentoEstoqueService; import br.com.centralit.api.service.ParceiroService; import br.com.centralit.api.service.UnidadeMedidaService; import br.com.centralit.api.service.UsuarioService; +import br.com.centralit.api.service.validation.EntradaAlmoxarifadoAllValidator; import br.com.centralit.framework.exception.BusinessException; import br.com.centralit.framework.exception.CodigoErro; import br.com.centralit.framework.model.Dominio; @@ -68,12 +69,6 @@ public class EntradaAlmoxarifadoServiceImpl extends GenericServiceImpl clazz) { + + return EntradaAlmoxarifado.class.isAssignableFrom(clazz); + } + + @Override + public void validate(Object target, Errors errors) { + + ValidationUtils.rejectIfEmpty(errors, "dataContabil", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "LABEL.DATA_CONTABILIZACAO"); + + EntradaAlmoxarifado entrada = (EntradaAlmoxarifado) target; + + EntradaAlmoxarifado entradaOld = this.entradaAlmoxarifadoService.find(entrada.getId()); + + if (UtilObjeto.isReferencia(entradaOld.getDataContabil())) { + String codigosMovimentos = this.movimentoEstoqueService.buscarMovimentosSaidaComMateriaisDaEntrada(entradaOld.getId()); + boolean alteracaoData = false; + + if (!UtilObjeto.isReferencia(entrada.getDataContabil())) { + alteracaoData = true; + } else if (!UtilDate.compareCalendar(entrada.getDataContabil(), entradaOld.getDataContabil())) { + alteracaoData = true; + } + + if (alteracaoData && !codigosMovimentos.isEmpty()) { + errors.rejectValue("dataContabil", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "ALMOXARIFADO.VALIDACAO.DATA_CONTABIL_ALTERADA_SAIDAS"); + } + } + + if (UtilObjeto.isReferencia(entrada.getDataContabil())) { + + if (UtilColecao.isVazio(entrada.getDocumentos())) { + errors.rejectValue("documentos", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "CORPORATIVO.LABEL.ASSOCIAR_DOCUMENTOS"); + } + + BigDecimal valorTotalItens = new BigDecimal(0L); + + // repetição para verificar a soma de todos os itens da entrada e igual ao valor da nota + int item = 1; + for (EntradaAlmoxarifadoItem entradaItem : entrada.getEntradasItem()) { + if(entradaItem.getQuantidade() == null || entradaItem.getQuantidade() == BigDecimal.ZERO){ + errors.rejectValue("entradasItem", CodigoErro.VALIDACAO_CAMPOS.getValue().toString(),"VALIDACAO.QUANTIDADE_MAIOR_ZERO"); + } + //TODO validacaoBensCaracteristicasObrigatorias(errors, entradaItem, item); + valorTotalItens = valorTotalItens.add(entradaItem.getValorTotal()); + item++; + } + + // verificar se os valores da nota e da soma dos itens sao iguais, caso nao seja e lançada uma exceção + if (UtilObjeto.isReferencia(entrada.getValorTotalNota()) && valorTotalItens.compareTo(entrada.getValorTotalNota()) != 0) { + errors.rejectValue("valorTotalNota", CodigoErro.VALIDACAO_CAMPOS.getValue().toString(), "ALMOXARIFADO.VALIDACAO.NOTA_FISCAL_IGUAL_VALOR_INFORMADO"); + } + } + + } +} + diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/validation/EntradaAlmoxarifadoBasicValidator.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/validation/EntradaAlmoxarifadoBasicValidator.java new file mode 100644 index 0000000..8e3c03b --- /dev/null +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/validation/EntradaAlmoxarifadoBasicValidator.java @@ -0,0 +1,61 @@ +package br.com.centralit.api.service.validation; + +import org.springframework.stereotype.Component; +import org.springframework.validation.Errors; +import org.springframework.validation.ValidationUtils; +import org.springframework.validation.Validator; + +import br.com.centralit.api.model.EntradaAlmoxarifado; +import br.com.centralit.api.model.EntradaAlmoxarifadoItem; +import br.com.centralit.framework.exception.CodigoErro; +import br.com.centralit.framework.util.UtilColecao; +import br.com.centralit.framework.util.UtilDate; +import br.com.centralit.framework.util.UtilObjeto; + +@Component("entradaAlmoxarifadoBasicValidator") +public class EntradaAlmoxarifadoBasicValidator implements Validator { + + @Override + public boolean supports(Class clazz) { + + return EntradaAlmoxarifado.class.isAssignableFrom(clazz); + } + + @Override + public void validate(Object target, Errors errors) { + + ValidationUtils.rejectIfEmpty(errors, "almoxarifado", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "ALMOXARIFADO.LABEL.ALMOXARIFADO"); + + ValidationUtils.rejectIfEmpty(errors, "fornecedor", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "LABEL.FORNECEDOR"); + + ValidationUtils.rejectIfEmpty(errors, "dominioTipoEntrada", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "LABEL.TIPO_ENTRADA"); + + ValidationUtils.rejectIfEmpty(errors, "dominioTipoRecebimento", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "LABEL.TIPO_RECEBIMENTO"); + + ValidationUtils.rejectIfEmpty(errors, "dataRecebimento", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "ALMOXARIFADO.LABEL.DATA_RECEBIMENTO"); + + ValidationUtils.rejectIfEmpty(errors, "valorTotalNota", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "ALMOXARIFADO.LABEL.VALOR_TOTAL_NOTA"); + + ValidationUtils.rejectIfEmpty(errors, "dominioFinalidade", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "LABEL.FINALIDADE"); + + EntradaAlmoxarifado entrada = (EntradaAlmoxarifado) target; + + if (UtilDate.isPrimeiraDataMenorSegundaData(entrada.getDataReferencia(), entrada.getDataRecebimento())) { + errors.rejectValue("dataRecebimento", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "VALIDACAO.DATA_RECEBIMENTO"); + } + + if (UtilObjeto.isReferencia(entrada.getDataContabil())) { + if (!UtilDate.isDentroMes(entrada.getDataContabil(), entrada.getAlmoxarifado().getOrganizacao().getDataReferenciaVigente())) { + errors.rejectValue("dataContabil", CodigoErro.REGRA_NEGOCIO.getValue().toString(), "MSG.MN019"); + } + } + + ValidationUtils.rejectIfEmpty(errors, "valorTotalNota", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "LABEL.VALOR_TOTAL_NOTA"); + + if (UtilColecao.isVazio(entrada.getEntradasItem())) { + errors.rejectValue("entradasItem", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "LABEL.MATERIAIS"); + } + + } +} + diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/validation/EntradaAlmoxarifadoValidator.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/validation/EntradaAlmoxarifadoValidator.java deleted file mode 100644 index 38bf78d..0000000 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/validation/EntradaAlmoxarifadoValidator.java +++ /dev/null @@ -1,39 +0,0 @@ -package br.com.centralit.api.service.validation; - -import org.springframework.stereotype.Component; -import org.springframework.validation.Errors; -import org.springframework.validation.ValidationUtils; -import org.springframework.validation.Validator; - -import br.com.centralit.api.model.EntradaAlmoxarifado; -import br.com.centralit.framework.exception.CodigoErro; - -@Component("entradaAlmoxarifadoValidator") -public class EntradaAlmoxarifadoValidator implements Validator { - - @Override - public boolean supports(Class clazz) { - - return EntradaAlmoxarifado.class.isAssignableFrom(clazz); - } - - @Override - public void validate(Object target, Errors errors) { - - ValidationUtils.rejectIfEmpty(errors, "almoxarifado", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "ALMOXARIFADO.LABEL.ALMOXARIFADO"); - - ValidationUtils.rejectIfEmpty(errors, "dataRecebimento", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "ALMOXARIFADO.LABEL.DATA_RECEBIMENTO"); - - ValidationUtils.rejectIfEmpty(errors, "dataContabil", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "LABEL.DATA_CONTABILIZACAO"); - - ValidationUtils.rejectIfEmpty(errors, "dominioTipoEntrada", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "LABEL.TIPO_ENTRADA"); - - ValidationUtils.rejectIfEmpty(errors, "dominioTipoRecebimento", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "LABEL.TIPO_RECEBIMENTO"); - - ValidationUtils.rejectIfEmpty(errors, "fornecedor", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "LABEL.FORNECEDOR"); - - ValidationUtils.rejectIfEmpty(errors, "valorTotalNota", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "ALMOXARIFADO.LABEL.VALOR_TOTAL_NOTA"); - - } -} - diff --git a/cit-almoxarifado-web/src/main/java/br/com/centralit/controller/EntradaAlmoxarifadoController.java b/cit-almoxarifado-web/src/main/java/br/com/centralit/controller/EntradaAlmoxarifadoController.java index 469dc1f..06f6606 100644 --- a/cit-almoxarifado-web/src/main/java/br/com/centralit/controller/EntradaAlmoxarifadoController.java +++ b/cit-almoxarifado-web/src/main/java/br/com/centralit/controller/EntradaAlmoxarifadoController.java @@ -106,5 +106,11 @@ public class EntradaAlmoxarifadoController extends GenericController internacionalizacaoList) { @@ -333,6 +337,8 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.ENDERECO_ESTOQUE_IS_SUPERIOR_REMOVER", "O endereço de estoque a ser removido, foi vinculado como superior a outros endereço. Caso prossiga com a operação, também será removido todos os endereços vinculados a este. Deseja continuar?", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.ENDERECO_ESTOQUE_TODOS_MATERIAIS", "A definição de endereço de estoque para todos os materias não poderá ser desfeita após salvar o registro. Deseja realmente adicionar este endereço para todos os materiais?", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.ENDERECO_ESTOQUE_VINCULO_CICLICO", "Não é permitido vincular o endereço de estoque superior, pois este endereço tem como endereço superior o registro que está sendo alterado. Favor remover ou escolher outro endereço de estoque superior.", dominio, modulo)); + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.ENTRADA_DESCONTABILIZACAO_COM_SAIDAS", "Você não pode descontabilizar esta entrada pois existem as seguintes saídas com materiais da mesma: ", dominio, modulo)); + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.DATA_CONTABIL_ALTERADA_SAIDAS", "Você não pode alterar a data de contabilização após realizar atendimentos e baixas em materiais desta entrada!", dominio, modulo)); } private void gerarMensagem(Dominio dominio, Modulo modulo, List internacionalizacaoList) { @@ -349,6 +355,9 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.DATA_BAIXA_FORA_REFERENCIA_VIGENTE", "Data de conclusão tem que estar dentro da referência vigente", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.REQUISICAO_DIFERENTE_NAO_CONCLUIDA_PRONTA_ATENDIMENTO", "Somente requisições de consumo com status Não concluída e Pronta para atendimento pode ser editada!", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("MSG.EXISTE_REQUISICAO_DISPONIVEL_CENTROCUSTO_ALMOXARIFADO_UR", "Centro de custo, almoxarifado, unidade requisitante e materiais de consumo estão presentes na requisição: ", dominio, modulo)); + + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.ENTRADA_CONTABILIZADA", "Entrada contabilizada com sucesso!", dominio, modulo)); + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.ENTRADA_DESCONTABILIZADA", "Entrada descontabilizada com sucesso!", dominio, modulo)); } } 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 e9723c6..4e51d58 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 @@ -2,13 +2,16 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUploader', 'EntradaAlmoxarifadoRepository', 'EstruturaOrganizacionalAlmoxarifadoRepository', '$translate', '$timeout', 'DominioRepository', 'FornecedorRepository', 'MaterialConsumoRepository', 'EntradaAlmoxarifadoItemRepository', 'MaterialLocalEstoqueRepository', + 'MovimentoEstoqueRepository', function EntradaAlmoxarifadoController($scope, $filter, FileUploader, EntradaAlmoxarifadoRepository, EstruturaOrganizacionalAlmoxarifadoRepository, $translate, $timeout, DominioRepository , FornecedorRepository, MaterialConsumoRepository, EntradaAlmoxarifadoItemRepository, - MaterialLocalEstoqueRepository) { + MaterialLocalEstoqueRepository, MovimentoEstoqueRepository) { var CODIGO_DOMINIO_TIPO_RECEBIMENTO_COMPRA_ORCAMENTARIA = 1; $scope.entradaAlmoxarifado = {}; + + $scope.entradaAlmoxarifadoOriginal = {}; $scope.edit = true; /** @@ -116,8 +119,12 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp EntradaAlmoxarifadoRepository.get(entradaAlmoxarifado.id).then(function(result) { $scope.entradaAlmoxarifado = result.originalElement; + + $scope.entradaAlmoxarifadoOriginal = angular.copy($scope.entradaAlmoxarifado); + if($scope.entradaAlmoxarifado.fornecedor){ $scope.entradaAlmoxarifado.fornecedor['pessoa.nome'] = $scope.entradaAlmoxarifado.fornecedor.pessoa.nome; + $scope.entradaAlmoxarifadoOriginal.fornecedor['pessoa.nome'] = $scope.entradaAlmoxarifadoOriginal.fornecedor.pessoa.nome; } $scope.dominiosTipoRecebimento.forEach(function(item){ @@ -130,6 +137,14 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp $scope.edit = edit; $scope.setLoading(false); }); + + MovimentoEstoqueRepository.buscarMovimentosSaidaComMateriaisDaEntrada($scope.entradaAlmoxarifado.id).then(function(result) { + if (result.saidas) { + $scope.bloquearDataContabil = true; + } else { + $scope.bloquearDataContabil = false; + } + }); }; $scope.findAutoCompleteAlmoxarifado = function(value){ @@ -390,10 +405,28 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp $scope.valorTotalMateriais = converterMoedaToNumber(entradaItem.valorTotal) + $scope.valorTotalMateriais; }); }; + + $scope.saveOrUpdateContabilizar = function(contabilizar) { + + $scope.entradaAlmoxarifado.isEntradaConcluida = true; + $scope.entradaAlmoxarifadoOriginal.isEntradaConcluida = true; + + if (contabilizar) { + $scope.dataContabilFinal = $scope.entradaAlmoxarifado.dataContabil; + $scope.dataContabilFinalBloqueada = $scope.entradaAlmoxarifado.dataContabil; + $scope.$openModal('modal-contabilizar-entrada.html', 'lg'); + } else { + $scope.saveOrUpdate(null); + } + }; // SALVA O EntradaAlmoxarifado - $scope.saveOrUpdate = function(){ + $scope.saveOrUpdate = function(dataContabil){ $scope.entradaAlmoxarifadoForm.$submitted = true; + $scope.entradaAlmoxarifadoForm.dadosEntradaForm.$submitted = true; + $scope.entradaAlmoxarifadoForm.materiaisForm.$submitted = true; + $scope.entradaAlmoxarifadoForm.documentosForm.$submitted = true; + $scope.entradaAlmoxarifadoForm.observacoesForm.$submitted = true; // validar o formulario, retorna true se o formulario e as regras estiverem OK var formularioValido = validarFormulario($scope.entradaAlmoxarifadoForm); @@ -418,15 +451,69 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp EntradaAlmoxarifadoRepository.save($scope.entradaAlmoxarifado).then(function(result) { $scope.entradaAlmoxarifado = result.originalElement; + + if ($scope.entradaAlmoxarifado.fornecedor) { + $scope.entradaAlmoxarifado.fornecedor['pessoa.nome'] = $scope.entradaAlmoxarifado.fornecedor.pessoa.nome; + } + $scope.showAlert("success", $translate.instant('MSG.REGISTRO_SALVO')); // depois de salvar a entrada ja tendo uma referencia do id, esse metodo ira salvar os documentos se existir salvarListaDocumentos(entradaTemp); - $scope.resetForm(); $scope.setLoading(false); + + var dataContabilAntiga = angular.copy($scope.entradaAlmoxarifado.dataContabil); + + $scope.setLoadingSalva(true); + + if (dataContabilAntiga && !dataContabil) { + MovimentoEstoqueRepository.buscarMovimentosSaidaComMateriaisDaEntrada($scope.entradaAlmoxarifado.id).then(function(result) { + if (result.saidas) { + $scope.setLoading(false); + $scope.showAlert('warning', $translate.instant('ALMOXARIFADO.VALIDACAO.ENTRADA_DESCONTABILIZACAO_COM_SAIDAS') + result.saidas); + } else { + concluir(dataContabil); + } + }); + } else { + concluir(dataContabil); + } }); } }; + + var concluir = function(dataContabil) { + var dataContabilAntiga = angular.copy($scope.entradaAlmoxarifado.dataContabil); + var error = true; + $scope.entradaAlmoxarifado.dataContabil = dataContabil; + + $scope.entradaAlmoxarifado.valorTotalNota = converterMoedaToNumber($scope.entradaAlmoxarifado.valorTotalNota); + + EntradaAlmoxarifadoRepository.concluir($scope.entradaAlmoxarifado).then(function(result) { + $scope.resetForm(); + error = false; + $scope.entradaAlmoxarifado = result.originalElement; + $scope.entradaAlmoxarifado.dataRecebimento = $filter('date')($scope.entradaAlmoxarifado.dataRecebimento, "dd/MM/yyyy"); + $scope.entradaAlmoxarifado.dataContabil = $filter('date')($scope.entradaAlmoxarifado.dataContabil, "dd/MM/yyyy"); + $scope.entradaAlmoxarifado.dataReferencia = $filter('date')($scope.entradaAlmoxarifado.dataReferencia, "dd/MM/yyyy"); + if ($scope.entradaAlmoxarifado.fornecedor) { + $scope.entradaAlmoxarifado.fornecedor['pessoa.nome'] = $scope.entradaAlmoxarifado.fornecedor.pessoa.nome; + } + $scope.setLoading(false); + if (dataContabil) { + $scope.showAlert("success", $translate.instant('ALMOXARIFADO.MSG.ENTRADA_CONTABILIZADA')); + $scope.contabilizado = true; + } else { + $scope.showAlert("success", $translate.instant('ALMOXARIFADO.MSG.ENTRADA_DESCONTABILIZADA')); + } + }); + + $timeout(function() { + if (error) { + $scope.entradaAlmoxarifado.dataContabil = dataContabilAntiga; + } + }, 1000); + }; // metodo utilizado para percorrer a lista de documentos persistidos e verificar com a lista de documentos temporarios para verificacao de qual anexo pertence a qual documento var salvarListaDocumentos = function(entradaTemp){ @@ -655,7 +742,7 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp $scope.enderecosMaterial = []; } - if ($scope.entradaItem.material) { + if ($scope.entradaItem && $scope.entradaItem.material) { $scope.unidadesMedidasEntrada = $scope.entradaItem.material.tiposUnidadeMedidaEntrada.map(function(item){ if (item.isPadrao && !$scope.entradaItem.unidadeMedidaEntrada) { $scope.entradaItem.unidadeMedidaEntrada = item.unidadeMedida; @@ -680,15 +767,17 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp //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; + if ($scope.entradaItem) { + 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; + } } }); }); @@ -696,10 +785,12 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp //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; + if ($scope.entradaItem) { + if($scope.entradaItem.$quantidadeEntrada && $scope.entradaItem.unidadeMedidaEntrada){ + $scope.entradaItem.quantidade = $scope.entradaItem.$quantidadeEntrada * $scope.entradaItem.unidadeMedidaEntrada.quantidadePadrao; + } else { + delete $scope.entradaItem.quantidade; + } } }); }); @@ -707,10 +798,12 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp //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; + if ($scope.entradaItem) { + if($scope.entradaItem.quantidade && $scope.entradaItem.valorTotal){ + $scope.entradaItem.valorUnitario = $scope.entradaItem.valorTotal / $scope.entradaItem.quantidade; + } else { + delete $scope.entradaItem.valorUnitario; + } } }); }); diff --git a/cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/repository/EntradaAlmoxarifadoRepository.js b/cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/repository/EntradaAlmoxarifadoRepository.js index a99102e..b70ce9c 100644 --- a/cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/repository/EntradaAlmoxarifadoRepository.js +++ b/cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/repository/EntradaAlmoxarifadoRepository.js @@ -4,6 +4,10 @@ citApp.factory('EntradaAlmoxarifadoRepository', ['RestangularAlmoxarifado', 'Abs function EntradaAlmoxarifadoRepository() { AbstractRepository.call(this, restangularAlmoxarifado, 'rest/entradaAlmoxarifado'); + + this.concluir = function(entrada) { + return restangularAlmoxarifado.all(this.route + '/concluir').post(entrada); + }; } AbstractRepository.extend(EntradaAlmoxarifadoRepository); diff --git a/cit-almoxarifado-web/src/main/webapp/html/entradaAlmoxarifado/dialog_contabilizar_entrada.html b/cit-almoxarifado-web/src/main/webapp/html/entradaAlmoxarifado/dialog_contabilizar_entrada.html new file mode 100644 index 0000000..5fad906 --- /dev/null +++ b/cit-almoxarifado-web/src/main/webapp/html/entradaAlmoxarifado/dialog_contabilizar_entrada.html @@ -0,0 +1,35 @@ + + + + + diff --git a/cit-almoxarifado-web/src/main/webapp/html/entradaAlmoxarifado/entradaAlmoxarifadoEdit.html b/cit-almoxarifado-web/src/main/webapp/html/entradaAlmoxarifado/entradaAlmoxarifadoEdit.html index e4d6c8a..a67763d 100644 --- a/cit-almoxarifado-web/src/main/webapp/html/entradaAlmoxarifado/entradaAlmoxarifadoEdit.html +++ b/cit-almoxarifado-web/src/main/webapp/html/entradaAlmoxarifado/entradaAlmoxarifadoEdit.html @@ -2,10 +2,25 @@
+ -
@@ -34,6 +50,10 @@
+ +

diff --git a/cit-almoxarifado-web/src/main/webapp/html/entradaAlmoxarifado/entradaAlmoxarifadoList.html b/cit-almoxarifado-web/src/main/webapp/html/entradaAlmoxarifado/entradaAlmoxarifadoList.html index 663752c..c5e7b95 100644 --- a/cit-almoxarifado-web/src/main/webapp/html/entradaAlmoxarifado/entradaAlmoxarifadoList.html +++ b/cit-almoxarifado-web/src/main/webapp/html/entradaAlmoxarifado/entradaAlmoxarifadoList.html @@ -14,6 +14,11 @@ LABEL.VISUALIZAR + +