private void ValideRegrasDeNumeroDeSerie() { // Números incompativeis com a quantidade if (_interacao.InformaNumeroDeSerie && _interacao.NumerosDeSerie.Count != _interacao.QuantidadeInterada) { _listaDeInconsistencias.Add( new Inconsistencia() { Modulo = "Controle de Estoque", Tela = "Cadastro de Interações", ConceitoValidado = "Interação", NomeDaPropriedadeValidada = "NumerosDeSerie", DescricaoDaPropriedadeValidada = "Lista de números de série", Mensagem = Mensagens.DEVE_SER_INFORMADOS_NS_PARA_TODOS_OS_PRODUTOS(_interacao.NumerosDeSerie.Count, _interacao.QuantidadeInterada) }); } // Primeiro validamos se existe algum número de série na lista para evitar gastar processamento if (_interacao.NumerosDeSerie == null || _interacao.NumerosDeSerie.Count == 0) { return; } using (var servicoDeInteracao = new ServicoDeInteracao()) { foreach (var numeroDeSerie in _interacao.NumerosDeSerie) { // Consultamos se o número de série existe para evitar gastar processamento if (!MapeadorDeNumeroDeSerie().VerifiqueSeExisteEmBanco(numeroDeSerie)) { continue; } var estahEmEstoque = servicoDeInteracao.VerifiqueSeNumeroDeSerieEstahEmEstoque(numeroDeSerie); if (_interacao.TipoDeInteracao == EnumTipoDeInteracao.ENTRADA && estahEmEstoque) { _listaDeInconsistencias.Add( new Inconsistencia() { Modulo = "Controle de Estoque", Tela = "Cadastro de Interações", ConceitoValidado = "Interação", NomeDaPropriedadeValidada = "NumerosDeSerie", DescricaoDaPropriedadeValidada = "Lista de números de série", Mensagem = Mensagens.UM_PRODUTO_COM_O_NUMERO_DE_SERIE_X_JA_ESTA_EM_ESTOQUE(numeroDeSerie) }); } if (_interacao.TipoDeInteracao == EnumTipoDeInteracao.SAIDA && !estahEmEstoque) { _listaDeInconsistencias.Add( new Inconsistencia() { Modulo = "Controle de Estoque", Tela = "Cadastro de Interações", ConceitoValidado = "Interação", NomeDaPropriedadeValidada = "NumerosDeSerie", DescricaoDaPropriedadeValidada = "Lista de números de série", Mensagem = Mensagens.NAO_E_POSSIVEL_DAR_SAIDA_DO_NUMERO_DE_SERIE_X(numeroDeSerie) }); } } } }