internal bool Salvar(LiberaracaoNumeroCFOCFOC liberacao) { ValidarCPF(liberacao.CPF); if (!(liberacao.LiberarBlocoCFO) && !(liberacao.LiberarBlocoCFOC) && !(liberacao.LiberarDigitalCFO) && !(liberacao.LiberarDigitalCFOC)) { Validacao.Add(Mensagem.LiberacaoNumeroCFOCFOC.MarqueUmTipoNumero); return(false); } if (liberacao.LiberarBlocoCFO) { ValidarBlocoCFO(liberacao); } if (liberacao.LiberarBlocoCFOC) { ValidarBlocoCFOC(liberacao); } if (liberacao.LiberarDigitalCFO) { ValidarNumeroDigitalCFO(liberacao); } if (liberacao.LiberarDigitalCFOC) { ValidarNumeroDigitalCFOC(liberacao); } return(Validacao.EhValido); }
public ActionResult SalvarLiberacao(LiberaracaoNumeroCFOCFOC liberacao) { _bus.Salvar(liberacao); string url = Url.Action("Index", "LiberacaoCFOCFOC") + "?Msg=" + Validacao.QueryParam() + "&acaoId=" + liberacao.Id; return(Json(new { @Msg = Validacao.Erros, @EhValido = Validacao.EhValido, @Url = url })); }
public void Salvar(LiberaracaoNumeroCFOCFOC liberacao, BancoDeDados banco = null) { if (liberacao.Id > 0) { } else { Criar(liberacao, banco); } }
private void ValidarBlocoCFO(LiberaracaoNumeroCFOCFOC liberacao) { if (liberacao.NumeroInicialCFO <= 0) { Validacao.Add(Mensagem.LiberacaoNumeroCFOCFOC.NumeroInicialCFOObrigatorio); } else if (liberacao.NumeroInicialCFO.ToString().Length != 10) { Validacao.Add(Mensagem.LiberacaoNumeroCFOCFOC.InicialQuantidadeInvalida(eDocumentoFitossanitarioTipo.CFO.ToString())); } if (liberacao.NumeroFinalCFO <= 0) { Validacao.Add(Mensagem.LiberacaoNumeroCFOCFOC.NumeroFinalCFOObrigatorio); } else if (liberacao.NumeroFinalCFO.ToString().Length != 10) { Validacao.Add(Mensagem.LiberacaoNumeroCFOCFOC.FinalQuantidadeInvalida(eDocumentoFitossanitarioTipo.CFO.ToString())); } if (liberacao.NumeroFinalCFO < liberacao.NumeroInicialCFO) { Validacao.Add(Mensagem.LiberacaoNumeroCFOCFOC.NumeroFinalNaoPodeSerMaiorInicialCFO); } if (!Validacao.EhValido) { return; } if (_da.BlocoPossuiNumeroCFONaoConfigurado(liberacao.NumeroInicialCFO, liberacao.NumeroFinalCFO)) { Validacao.Add(Mensagem.LiberacaoNumeroCFOCFOC.IntervaloCFONaoConfigurado); return; } if (!_da.VerificarNumeroCFOJaAtribuido(liberacao.NumeroInicialCFO, liberacao.NumeroFinalCFO)) { Validacao.Add(Mensagem.LiberacaoNumeroCFOCFOC.IntervaloCFOJaExiste); return; } if (((liberacao.NumeroFinalCFO - liberacao.NumeroInicialCFO) + 1) < 25) { Validacao.Add(Mensagem.LiberacaoNumeroCFOCFOC.QuantidadeCFODeveSerIgual25); return; } if (!_da.ValidarBlocoQuantidadeCadastradaCFO(liberacao)) { Validacao.Add(Mensagem.LiberacaoNumeroCFOCFOC.QuantidadeCFOCadastradaNaoPodeUltrapassar25); } }
internal bool ValidarBlocoQuantidadeCadastradaCFOC(LiberaracaoNumeroCFOCFOC liberacao) { using (BancoDeDados banco = BancoDeDados.ObterInstancia()) { Comando comando = banco.CriarComando(@"select count(*) from tab_numero_cfo_cfoc n, tab_liberacao_cfo_cfoc l, tab_credenciado c where l.id = n.liberacao and c.id = l.responsavel_tecnico and n.tipo_documento = 2 and n.tipo_numero = 1 and n.situacao = 1 and n.utilizado = 0 and c.id = :credenciado_id" ); comando.AdicionarParametroEntrada("credenciado_id", liberacao.CredenciadoId, DbType.Int32); return((banco.ExecutarScalar <int>(comando) + ((liberacao.NumeroFinalCFOC - liberacao.NumeroInicialCFOC)) + 1) <= 25); } }
public void Salvar(LiberaracaoNumeroCFOCFOC liberacao) { try { if (!_validar.Salvar(liberacao)) { return; } #region Configurando Objeto if (liberacao.LiberarBlocoCFO) { liberacao.SituacaoBlocoCFO = 1; } if (liberacao.LiberarBlocoCFOC) { liberacao.SituacaoBlocoCFOC = 1; } if (liberacao.LiberarDigitalCFO) { liberacao.SituacaoNumeroDigitalCFO = 1; } if (liberacao.LiberarDigitalCFOC) { liberacao.SituacaoNumeroDigitalCFOC = 1; } #endregion GerenciadorTransacao.ObterIDAtual(); using (BancoDeDados banco = BancoDeDados.ObterInstancia()) { banco.IniciarTransacao(); _da.Salvar(liberacao, banco); Validacao.Add(Mensagem.LiberacaoNumeroCFOCFOC.SalvoSucesso); banco.Commit(); } } catch (Exception exc) { Validacao.AddErro(exc); } }
internal bool VerificarQuantidadeMaximaNumDigitalCadastradoCFOC(LiberaracaoNumeroCFOCFOC liberacao) { using (BancoDeDados banco = BancoDeDados.ObterInstancia()) { Comando comando = banco.CriarComando(@"select count(t.id) from tab_numero_cfo_cfoc t, tab_liberacao_cfo_cfoc l, tab_credenciado c where l.id = t.liberacao and c.id = l.responsavel_tecnico and t.tipo_documento = 2 and t.tipo_numero = 2 and t.situacao = 1 and t.utilizado = 0 and c.id = :credenciado_id" ); comando.AdicionarParametroEntrada("credenciado_id", liberacao.CredenciadoId, DbType.Int32); int qtdCadastrada = banco.ExecutarScalar <int>(comando); return((qtdCadastrada + liberacao.QuantidadeDigitalCFOC) <= 50); } }
private void ValidarNumeroDigitalCFOC(LiberaracaoNumeroCFOCFOC liberacao) { if (liberacao.QuantidadeDigitalCFOC <= 0) { Validacao.Add(Mensagem.LiberacaoNumeroCFOCFOC.QuantidadeNumeroDigitalCFOCNaoPodeSerMenorIgualZero); } if (_da.DigitalPossuiNumeroCFOCNaoConfigurado(liberacao.QuantidadeDigitalCFOC)) { Validacao.Add(Mensagem.LiberacaoNumeroCFOCFOC.QuantidadeNumerosDigitaisCFOCNaoPodeExcederAConfiguradaNoSistema); } if (!_da.VerificarQuantidadeMaximaNumDigitalCadastradoCFOC(liberacao)) { Validacao.Add(Mensagem.LiberacaoNumeroCFOCFOC.QuantidadeMaximaNumeroDigitalCFOCCadastradosUltrapassa50); } }
public void VerificarDUA(string numero, string cpfCnpj, LiberaracaoNumeroCFOCFOC liberacao = null) { try { var wSDUA = new WSDUA(); var dua = wSDUA.ObterDUA(numero, cpfCnpj); cpfCnpj = cpfCnpj.Replace(".", "").Replace("-", "").Replace("/", ""); if (Validacao.EhValido) { _validar.ValidarDadosWebServiceDuaCFO(dua, numero, cpfCnpj, liberacao); } } catch (Exception exc) { Validacao.AddErro(exc); } }
internal bool Salvar(LiberaracaoNumeroCFOCFOC liberacao) { ValidarCPF(liberacao.CPF); if (!(liberacao.LiberarBlocoCFO) && !(liberacao.LiberarBlocoCFOC) && !(liberacao.LiberarDigitalCFO) && !(liberacao.LiberarDigitalCFOC)) { Validacao.Add(Mensagem.LiberacaoNumeroCFOCFOC.MarqueUmTipoNumero); return(false); } try { var wSDUA = new WSDUA(); var dua = wSDUA.ObterDUA(liberacao.NumeroDua, liberacao.CPF); ValidarDadosWebServiceDuaCFO(dua, liberacao.NumeroDua, liberacao.CPF, liberacao); } catch (Exception exc) { Validacao.AddErro(exc); } if (liberacao.LiberarBlocoCFO) { ValidarBlocoCFO(liberacao); } if (liberacao.LiberarBlocoCFOC) { ValidarBlocoCFOC(liberacao); } if (liberacao.LiberarDigitalCFO) { ValidarNumeroDigitalCFO(liberacao); } if (liberacao.LiberarDigitalCFOC) { ValidarNumeroDigitalCFOC(liberacao); } return(Validacao.EhValido); }
public LiberarNumeroCFOCFOCVM() { Liberacao = new LiberaracaoNumeroCFOCFOC(); List <Lista> valores = new List <Lista>(); valores.Add(new Lista() { Id = "0", Texto = "0" }); valores.Add(new Lista() { Id = "25", Texto = "25" }); valores.Add(new Lista() { Id = "50", Texto = "50" }); LstQuantidadeNumeroDigitalCFO = ViewModelHelper.CriarSelectList(valores); LstQuantidadeNumeroDigitalCFOC = ViewModelHelper.CriarSelectList(valores); }
internal LiberaracaoNumeroCFOCFOC Obter(int id, BancoDeDados banco = null) { LiberaracaoNumeroCFOCFOC retorno = new LiberaracaoNumeroCFOCFOC(); using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco)) { Comando comando = bancoDeDados.CriarComando(@"select l.id, l.tid, l.responsavel_tecnico, p.nome, p.cpf, l.liberar_bloco_cfo, l.numero_inicial_cfo, l.numero_final_cfo, l.liberar_bloco_cfoc, l.numero_inicial_cfoc, l.numero_final_cfoc, l.liberar_num_digital_cfo, l.qtd_num_cfo, l.liberar_num_digital_cfoc, l.qtd_num_cfoc from tab_liberacao_cfo_cfoc l, tab_credenciado c, {1}tab_pessoa p where l.responsavel_tecnico = c.id and c.pessoa = p.id and l.id = :id" , UsuarioInterno, UsuarioCredenciado); comando.AdicionarParametroEntrada("id", id, DbType.Int32); using (IDataReader reader = bancoDeDados.ExecutarReader(comando)) { while (reader.Read()) { retorno.Id = id; retorno.LiberarBlocoCFO = reader.GetValue <bool>("liberar_bloco_cfo"); retorno.NumeroInicialCFO = reader.GetValue <long>("numero_inicial_cfo"); retorno.NumeroFinalCFO = reader.GetValue <long>("numero_final_cfo"); retorno.LiberarBlocoCFOC = reader.GetValue <bool>("liberar_bloco_cfoc"); retorno.NumeroInicialCFOC = reader.GetValue <long>("numero_inicial_cfoc"); retorno.NumeroFinalCFOC = reader.GetValue <long>("numero_final_cfoc"); retorno.LiberarDigitalCFO = reader.GetValue <bool>("liberar_num_digital_cfo"); retorno.QuantidadeDigitalCFO = reader.GetValue <int>("qtd_num_cfo"); retorno.LiberarDigitalCFOC = reader.GetValue <bool>("liberar_num_digital_cfo"); retorno.QuantidadeDigitalCFOC = reader.GetValue <int>("qtd_num_cfoc"); retorno.Nome = reader.GetValue <string>("nome"); retorno.CPF = reader.GetValue <string>("cpf"); } reader.Close(); } } return(retorno); }
internal bool ValidarDadosWebServiceDuaCFO(DUA dua, string numero, string cpfCnpj, LiberaracaoNumeroCFOCFOC liberacao = null) { if (dua == null) { Validacao.Add(Mensagem.PTV.DuaNaoEncontrado); return(Validacao.EhValido); } if (dua.PagamentoCodigo != "2" /*Pago e Consolidado*/ && dua.PagamentoCodigo != "1" /*Pago e não Consolidado*/) { Validacao.Add(Mensagem.PTV.DuaInvalido(numero)); } if (dua.CodigoServicoRef != "21213") { Validacao.Add(Mensagem.LiberacaoNumeroCFOCFOC.CodigoDuaInvalido); } if (liberacao != null) { int quantidadeDuaEmitido = _da.ObterQuantidadeDuaEmitidos(numero, cpfCnpj); float ValorUnitario = _da.ObterValorUnitarioDua(dua.ReferenciaData); int totalPagos = (int)(Math.Round(dua.ValorTotal, 2) / Math.Round(ValorUnitario, 2)); long totalCfo = liberacao.NumeroFinalCFO - liberacao.NumeroInicialCFO; long totalCfoc = liberacao.NumeroFinalCFOC - liberacao.NumeroInicialCFOC; totalCfo += liberacao.QuantidadeDigitalCFO + liberacao.QuantidadeDigitalCFOC; if ((totalPagos * 25) < (quantidadeDuaEmitido + totalCfo + totalCfoc)) { Validacao.Add(Mensagem.PTV.DuaSemSaldo(numero)); } } return(Validacao.EhValido); }
private void ValidarBlocoCFOC(LiberaracaoNumeroCFOCFOC liberacao) { if (liberacao.NumeroInicialCFOC <= 0) { Validacao.Add(Mensagem.LiberacaoNumeroCFOCFOC.NumeroInicialCFOCObrigatorio); } else if (liberacao.NumeroInicialCFOC.ToString().Length != 8) { Validacao.Add(Mensagem.LiberacaoNumeroCFOCFOC.InicialQuantidadeInvalida(eDocumentoFitossanitarioTipo.CFOC.ToString())); } if (liberacao.NumeroInicialCFOC.ToString().Substring(2, 2) != DateTime.Now.Year.ToString().Substring(2)) { Validacao.Add(Mensagem.LiberacaoNumeroCFOCFOC.AnoCFOCInvalido); } if (liberacao.NumeroFinalCFOC <= 0) { Validacao.Add(Mensagem.LiberacaoNumeroCFOCFOC.NumeroInicialCFOCObrigatorio); } else if (liberacao.NumeroFinalCFOC.ToString().Length != 8) { Validacao.Add(Mensagem.LiberacaoNumeroCFOCFOC.FinalQuantidadeInvalida(eDocumentoFitossanitarioTipo.CFOC.ToString())); } if (liberacao.NumeroFinalCFOC.ToString().Substring(2, 2) != DateTime.Now.Year.ToString().Substring(2)) { Validacao.Add(Mensagem.LiberacaoNumeroCFOCFOC.AnoCFOCInvalido); } if (liberacao.NumeroFinalCFOC < liberacao.NumeroInicialCFOC) { Validacao.Add(Mensagem.LiberacaoNumeroCFOCFOC.NumeroFinalNaoPodeSerMaiorInicialCFOC); } if (!Validacao.EhValido) { return; } if (_da.BlocoPossuiNumeroCFOCNaoConfigurado(liberacao.NumeroInicialCFOC, liberacao.NumeroFinalCFOC)) { Validacao.Add(Mensagem.LiberacaoNumeroCFOCFOC.IntervaloCFOCNaoConfigurado); return; } if (!_da.VerificarNumeroCFOCJaAtribuido(liberacao.NumeroInicialCFO, liberacao.NumeroFinalCFO)) { Validacao.Add(Mensagem.LiberacaoNumeroCFOCFOC.IntervaloCFOCJaExiste); return; } if (((liberacao.NumeroFinalCFOC - liberacao.NumeroInicialCFOC) + 1) < 25) { Validacao.Add(Mensagem.LiberacaoNumeroCFOCFOC.QuantidadeCFOCDeveSerIgual25); return; } if (!_da.ValidarBlocoQuantidadeCadastradaCFOC(liberacao)) { Validacao.Add(Mensagem.LiberacaoNumeroCFOCFOC.QuantidadeCFOCCadastradaNaoPodeUltrapassar25); } }
private void Criar(LiberaracaoNumeroCFOCFOC liberacao, BancoDeDados banco = null) { IDataReader reader = null; try { using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco)) { Comando comando = bancoDeDados.CriarComando(@" insert into tab_liberacao_cfo_cfoc (id, tid, responsavel_tecnico, liberar_bloco_cfo, numero_inicial_cfo, numero_final_cfo, liberar_bloco_cfoc, numero_inicial_cfoc, numero_final_cfoc, liberar_num_digital_cfo, qtd_num_cfo, liberar_num_digital_cfoc, qtd_num_cfoc) values (seq_tab_liberacao_cfo_cfoc.nextval, :tid, :responsavel_tecnico, :liberar_bloco_cfo, :numero_inicial_cfo, :numero_final_cfo, :liberar_bloco_cfoc, :numero_inicial_cfoc, :numero_final_cfoc, :liberar_num_digital_cfo, :qtd_num_cfo, :liberar_num_digital_cfoc, :qtd_num_cfoc) returning id into :liberacao_id" , EsquemaBanco); comando.AdicionarParametroEntrada("responsavel_tecnico", liberacao.CredenciadoId, DbType.Int32); comando.AdicionarParametroEntrada("liberar_bloco_cfo", liberacao.LiberarBlocoCFO, DbType.Int32); comando.AdicionarParametroEntrada("numero_inicial_cfo", liberacao.NumeroInicialCFO > 0 ? liberacao.NumeroInicialCFO : (object)DBNull.Value, DbType.Int64); comando.AdicionarParametroEntrada("numero_final_cfo", liberacao.NumeroFinalCFO > 0 ? liberacao.NumeroFinalCFO : (object)DBNull.Value, DbType.Int64); comando.AdicionarParametroEntrada("liberar_bloco_cfoc", liberacao.LiberarBlocoCFOC, DbType.Int32); comando.AdicionarParametroEntrada("numero_inicial_cfoc", liberacao.NumeroInicialCFOC > 0 ? liberacao.NumeroInicialCFOC : (object)DBNull.Value, DbType.Int64); comando.AdicionarParametroEntrada("numero_final_cfoc", liberacao.NumeroFinalCFOC > 0 ? liberacao.NumeroFinalCFOC : (object)DBNull.Value, DbType.Int64); comando.AdicionarParametroEntrada("liberar_num_digital_cfo", liberacao.LiberarDigitalCFO, DbType.Int32); comando.AdicionarParametroEntrada("qtd_num_cfo", liberacao.QuantidadeDigitalCFO, DbType.Int32); comando.AdicionarParametroEntrada("liberar_num_digital_cfoc", liberacao.LiberarDigitalCFOC, DbType.Int32); comando.AdicionarParametroEntrada("qtd_num_cfoc", liberacao.QuantidadeDigitalCFOC, DbType.Int32); comando.AdicionarParametroEntrada("tid", DbType.String, 36, GerenciadorTransacao.ObterIDAtual()); comando.AdicionarParametroSaida("liberacao_id", DbType.Int32); bancoDeDados.ExecutarNonQuery(comando); liberacao.Id = comando.ObterValorParametro <int>("liberacao_id"); //Alocar a tabela comando = bancoDeDados.CriarComando(@"select * from {0}tab_numero_cfo_cfoc for update", EsquemaBanco); reader = bancoDeDados.ExecutarReader(comando); #region CFO if (liberacao.NumeroInicialCFO > 0) { comando = bancoDeDados.CriarComando(@"insert into {0}tab_numero_cfo_cfoc (id, numero, tipo_documento, tipo_numero, liberacao, situacao, utilizado, tid) values (seq_tab_numero_cfo_cfoc.nextval, :numero, :tipo_documento, :tipo_numero, :liberacao, 1, 0, :tid)" , EsquemaBanco); comando.AdicionarParametroEntrada("liberacao", liberacao.Id, DbType.Int32); comando.AdicionarParametroEntrada("tipo_documento", eCFOCFOCTipo.CFO, DbType.Int32); comando.AdicionarParametroEntrada("tipo_numero", eCFOCFOCTipoNumero.Bloco, DbType.Int32); comando.AdicionarParametroEntrada("tid", GerenciadorTransacao.ObterIDAtual(), DbType.String); comando.AdicionarParametroEntrada("numero", DbType.Int64); for (var i = liberacao.NumeroInicialCFO; i <= liberacao.NumeroFinalCFO; i++) { comando.SetarValorParametro("numero", i); bancoDeDados.ExecutarNonQuery(comando); } } comando = bancoDeDados.CriarComandoPlSql(@" declare v_aux number := 0; v_maior number := 0; v_quantidade_lib number := :quantidade_lib; begin select nvl((select max(d.numero) from tab_numero_cfo_cfoc d where d.tipo_documento = :tipo_documento and d.tipo_numero = :tipo_numero), (select min(c.numero_inicial) - 1 from cnf_doc_fito_intervalo c where c.tipo_documento = :tipo_documento and c.tipo = :tipo_numero)) into v_maior from dual; for j in 1..v_quantidade_lib loop v_maior := v_maior + 1; select count(1) into v_aux from cnf_doc_fito_intervalo c where c.tipo_documento = :tipo_documento and c.tipo = :tipo_numero and (v_maior between c.numero_inicial and c.numero_final); if (v_aux > 0) then insert into tab_numero_cfo_cfoc (id, numero, tipo_documento, tipo_numero, liberacao, situacao, utilizado, tid) values (seq_tab_numero_cfo_cfoc.nextval, v_maior, :tipo_documento, :tipo_numero, :liberacao, 1, 0, :tid); else v_aux := v_maior; select min(t.numero_inicial) into v_maior from cnf_doc_fito_intervalo t where t.tipo_documento = :tipo_documento and t.tipo = :tipo_numero and t.numero_inicial > v_maior; if(v_maior is null or v_aux = v_maior) then --Tratamento de exceção Raise_application_error(-20023, 'Número não configurado'); else insert into tab_numero_cfo_cfoc (id, numero, tipo_documento, tipo_numero, liberacao, situacao, utilizado, tid) values (seq_tab_numero_cfo_cfoc.nextval, v_maior, :tipo_documento, :tipo_numero, :liberacao, 1, 0, :tid); end if; end if; end loop; end;" , EsquemaBanco); comando.AdicionarParametroEntrada("quantidade_lib", liberacao.QuantidadeDigitalCFO, DbType.Int32); comando.AdicionarParametroEntrada("liberacao", liberacao.Id, DbType.Int32); comando.AdicionarParametroEntrada("tipo_documento", eCFOCFOCTipo.CFO, DbType.Int32); comando.AdicionarParametroEntrada("tipo_numero", eCFOCFOCTipoNumero.Digital, DbType.Int32); comando.AdicionarParametroEntrada("tid", GerenciadorTransacao.ObterIDAtual(), DbType.String); bancoDeDados.ExecutarNonQuery(comando); #endregion #region CFOC if (liberacao.NumeroInicialCFOC > 0) { comando = bancoDeDados.CriarComando(@"insert into {0}tab_numero_cfo_cfoc (id, numero, tipo_documento, tipo_numero, liberacao, situacao, utilizado, tid) values (seq_tab_numero_cfo_cfoc.nextval, :numero, :tipo_documento, :tipo_numero, :liberacao, 1, 0, :tid)" , EsquemaBanco); comando.AdicionarParametroEntrada("liberacao", liberacao.Id, DbType.Int32); comando.AdicionarParametroEntrada("tipo_documento", eCFOCFOCTipo.CFOC, DbType.Int32); comando.AdicionarParametroEntrada("tipo_numero", eCFOCFOCTipoNumero.Bloco, DbType.Int32); comando.AdicionarParametroEntrada("tid", GerenciadorTransacao.ObterIDAtual(), DbType.String); comando.AdicionarParametroEntrada("numero", DbType.Int64); for (var i = liberacao.NumeroInicialCFOC; i <= liberacao.NumeroFinalCFOC; i++) { comando.SetarValorParametro("numero", i); bancoDeDados.ExecutarNonQuery(comando); } } comando = bancoDeDados.CriarComandoPlSql(@" declare v_aux number := 0; v_maior number := 0; v_quantidade_lib number := :quantidade_lib; begin select nvl((select max(d.numero) from tab_numero_cfo_cfoc d where d.tipo_documento = :tipo_documento and d.tipo_numero = :tipo_numero), (select min(c.numero_inicial) - 1 from cnf_doc_fito_intervalo c where c.tipo_documento = :tipo_documento and c.tipo = :tipo_numero)) into v_maior from dual; for j in 1..v_quantidade_lib loop v_maior := v_maior + 1; select count(1) into v_aux from cnf_doc_fito_intervalo c where c.tipo_documento = :tipo_documento and c.tipo = :tipo_numero and (v_maior between c.numero_inicial and c.numero_final); if (v_aux > 0) then insert into tab_numero_cfo_cfoc (id, numero, tipo_documento, tipo_numero, liberacao, situacao, utilizado, tid) values (seq_tab_numero_cfo_cfoc.nextval, v_maior, :tipo_documento, :tipo_numero, :liberacao, 1, 0, :tid); else v_aux := v_maior; select min(t.numero_inicial) into v_maior from cnf_doc_fito_intervalo t where t.tipo_documento = :tipo_documento and t.tipo = :tipo_numero and t.numero_inicial > v_maior; if(v_maior is null or v_aux = v_maior) then --Tratamento de exceção Raise_application_error(-20023, 'Número não configurado'); else insert into tab_numero_cfo_cfoc (id, numero, tipo_documento, tipo_numero, liberacao, situacao, utilizado, tid) values (seq_tab_numero_cfo_cfoc.nextval, v_maior, :tipo_documento, :tipo_numero, :liberacao, 1, 0, :tid); end if; end if; end loop; end;" , EsquemaBanco); comando.AdicionarParametroEntrada("quantidade_lib", liberacao.QuantidadeDigitalCFOC, DbType.Int32); comando.AdicionarParametroEntrada("liberacao", liberacao.Id, DbType.Int32); comando.AdicionarParametroEntrada("tipo_documento", eCFOCFOCTipo.CFOC, DbType.Int32); comando.AdicionarParametroEntrada("tipo_numero", eCFOCFOCTipoNumero.Digital, DbType.Int32); comando.AdicionarParametroEntrada("tid", GerenciadorTransacao.ObterIDAtual(), DbType.String); bancoDeDados.ExecutarNonQuery(comando); #endregion Historico.Gerar(liberacao.Id, eHistoricoArtefato.liberacaocfocfoc, eHistoricoAcao.criar, bancoDeDados); bancoDeDados.Commit(); } } finally { if (reader != null) { reader.Close(); reader.Dispose(); } } }