0

这有点奇怪,我有这段代码可以加载 GridView 的 DataSource 并绑定它:

gvwPesquisaCotacao.DataSource = Pesquisar(new Corretor()
{
    IdPessoa = ddlCorretorPesquisa.SelectedValue.Split('|').GetValue(0).ToString(),
    RazaoSocial = ddlCorretorPesquisa.SelectedValue.Split('|').GetValue(1).ToString(),
    Departamento = new Departamento() { Descricao = ddlCorretorPesquisa.SelectedValue.Split('|').GetValue(2).ToString() },

    IdCorretor = ddlCorretorPesquisa.SelectedValue.Split('|').GetValue(4).ToString(),
    TpUsuario = Pessoa.TipoUsuario.CORRETOR,
});

gvwPesquisaCotacao.DataBind();

我在执行最后一行代码时抛出了这个异常。这是被调用以填充 DataSource 的方法的实现(以正确的顺序):

private List<Cotacao> Pesquisar(Corretor pCorretor)
{
    try
    {
        return new CotacaoBO().Listar(new Cotacao()
        {
            Id = Convert.ToInt32(String.IsNullOrEmpty(txtNumeroCotacao.Text) ? "0" : txtNumeroCotacao.Text),
            Proponente = new Proponente() { CNPJ = String.IsNullOrEmpty(txtCNPJ.Text) ? "0" : txtCNPJ.Text, RazaoSocial = txtRazaoSocial.Text, Fantasia = txtRazaoSocial.Text },
            Status = new Status() { Id = ddlSituacao.SelectedIndex.Equals(0) ? "999" : ddlSituacao.SelectedItem.Value.ToString() },
            Filial = pCorretor.Filial,
            Corretor = pCorretor,
            Produto = new Produto() { Id = Convert.ToInt32(ddlProdutoIdVersao.SelectedValue.Split(';').GetValue(0).ToString()) },
            Proposta = new Proposta(Convert.ToDecimal(String.IsNullOrEmpty(txtNumPI.Text) ? "0" : txtNumPI.Text))
        }).OrderByDescending(order => order.Id).ToList();
    }
    catch (Exception ex)
    {
        ...
    }
}


public List<Cotacao> Listar(Cotacao pCotacao)
{
    try
    {
        List<Cotacao> lstCotacao = new List<Cotacao>();

        new CotacaoDAO().Listar(pCotacao).ForEach(delegate(Cotacao resCotacao) {

            resCotacao.Mercadoria.TaxaMercadoria = new MercadoriaBO().GetTaxaMercadoria(resCotacao).TaxaMercadoria;
            resCotacao.ParametroSistema = new ParametroSistemaBO().Listar(resCotacao.Produto, resCotacao.Corretor).First();
            resCotacao.Produto.Moeda.IOF = new MoedaBO().ListarIOF(new Moeda() { Id = resCotacao.ParametroSistema.cMoeApo }, resCotacao.ParametroSistema).IOF;
            resCotacao.CoberturasAdicionais = new CoberturaBO().ListarCoberturasAdicionaisByCotacao(pCotacao, false);
            resCotacao.TrechoComplementar = new TrechoComplementarBO().ListarPorCotacao(pCotacao.Id);
            lstCotacao.Add(resCotacao);
        });
        return lstCotacao;
    }
    catch (Exception ex)
    {
        ...
    }
}

最后一个方法是巨大的,但它基本上执行一个 sql 命令,用它的返回填充阅读器并将返回列表安装到前一个应用程序层。

public List<Cotacao> Listar(Cotacao pCotacao)
{
    try
    {
        var sql = new StringBuilder();
        sql.Append(" SELECT DISTINCT NUMERO_COTACAO ");
        sql.Append("       ,COD_PRODUTO ");
        sql.Append("       ,VERSAO_PRODUTO ");
        sql.Append("       ,DESCRICAO_PRODUTO ");
        sql.Append("       ,DSC_PROD_DOC ");
        sql.Append("       ,CNPJ_CLIENTE ");
        sql.Append("       ,NOME_CLIENTE ");
        sql.Append("       ,SIT_COTACAO ");
        sql.Append("       ,SIT_DESCRICAO ");
        sql.Append("       ,CORRETOR ");
        sql.Append("      ,SUSEP_CORRETOR ");
        sql.Append("      ,DESC_CORRETOR ");
        sql.Append("      ,ID_FILIAL_CORRETOR ");
        sql.Append("      ,DESC_FILIAL_CORRETOR ");
        sql.Append("      ,COD_PRODUTOR ");
        sql.Append("      ,DSC_PRODUTOR ");
        sql.Append("       ,FILIAL ");
        sql.Append("       ,VALIDADE_COTACAO ");
        sql.Append("      ," + dbUtility.ValidaNulo() + "(U_CTR_SEG,0) as U_CTR_SEG  ");
        sql.Append("      ," + dbUtility.ValidaNulo() + "(U_PRP,0)  AS U_PRP ");
        sql.Append("      ," + dbUtility.ValidaNulo() + "(U_APO_PNC,0)  AS U_APO_PNC ");
        sql.Append("      ," + dbUtility.ValidaNulo() + "(C_EMS_SEG,0)  AS C_EMS_SEG ");
        sql.Append("      ,DATA_COTACAO");
        sql.Append("      ,DATA_EMBARQUE");
        sql.Append("      ,DATA_ALTERACAO");
        sql.Append("      ,ORIGEM ");
        sql.Append("      ,DESCRICAO_ORIGEM ");
        sql.Append("      ,COMPLEMENTO_ORIGEM ");
        sql.Append("      ,DESCRICAO_COMPLEMENTO_ORIGEM ");
        sql.Append("      ,DESTINO ");
        sql.Append("      ,DESCRICAO_DESTINO ");
        sql.Append("      ,COMPLEMENTO_DESTINO ");
        sql.Append("      ,DESCRICAO_COMPLEMENTO_DESTINO ");
        sql.Append("      ,MEIO_TRANSPORTE ");
        sql.Append("      ,TIPO_VEICULO ");
        sql.Append("      ,VEICULO_TRANSPORTE ");
        sql.Append("      ,ID_NAVIO ");
        sql.Append("      ,GRUPO_MERCADORIA ");
        sql.Append("      ,TIPO_MERCADORIA ");
        sql.Append("      ,ID_MERCADORIA ");
        sql.Append("      ,DESCRICAO_MERCADORIA ");
        sql.Append("      ,COMPLEMENTO_MERCADORIA ");
        sql.Append("      ,IS_CONTAINER ");
        sql.Append("      ,ID_EMBALAGEM ");
        sql.Append("      ,ID_COBERTURA_BASICA ");
        sql.Append("      ,DESCRICAO_COBERTURA ");
        sql.Append("      ,VLR_FOB ");
        sql.Append("      ,VLR_FOB_CONVERT ");
        sql.Append("      ,MOEDA_FOB ");
        sql.Append("      ,CAMBIO_FOB ");
        sql.Append("      ,VLR_PREMIO_FOB ");
        sql.Append("      ,VLR_FRETE ");
        sql.Append("      ,VLR_FRETE_CONVERT ");
        sql.Append("      ,MOEDA_FRETE ");
        sql.Append("      ,CAMBIO_FRETE ");
        sql.Append("      ,VLR_PREMIO_FRETE ");
        sql.Append("      ,VLR_DESPESAS ");
        sql.Append("      ,VLR_DESPESAS_CONVERT ");
        sql.Append("      ,MOEDA_DESPESAS ");
        sql.Append("      ,CAMBIO_DESPESAS ");
        sql.Append("      ,PERCENTUAL_DESPESAS ");
        sql.Append("      ,VLR_PREMIO_DESPESAS ");
        sql.Append("      ,VLR_LUCRO ");
        sql.Append("      ,VLR_LUCRO_CONVERT ");
        sql.Append("      ,MOEDA_LUCRO ");
        sql.Append("      ,CAMBIO_LUCRO ");
        sql.Append("      ,PERCENTUAL_LUCRO ");
        sql.Append("      ,VLR_PREMIO_LUCRO ");
        sql.Append("      ,VLR_IMPOSTOS ");
        sql.Append("      ,VLR_IMPOSTOS_ORI ");
        sql.Append("      ,CAMBIO_IMPOSTOS ");
        sql.Append("      ,MOEDA_IMPOSTOS ");
        sql.Append("      ,VLR_PREMIO_IMPOSTOS ");
        sql.Append("      ,PERCENTUAL_LUC_DESP_IMP ");
        sql.Append("      ,VLR_CONTAINER ");
        sql.Append("      ,VLR_PREMIO_CONTAINER ");
        sql.Append("      ,V_IS_TOTAL ");
        sql.Append("      ,VLR_PREMIO_TOTAL ");
        sql.Append("      ,VLR_PREMIO_LIQUIDO ");
        sql.Append("      ,VLR_PREMIO_CALCULADO ");
        sql.Append("      ,VLR_IMP_II_ORI ");
        sql.Append("      ,VLR_IMP_II ");
        sql.Append("      ,PERCENTUAL_IMP_II ");
        sql.Append("      ,MOEDA_II ");
        sql.Append("      ,CAMBIO_II ");
        sql.Append("      ,VLR_IMP_IPI_ORI ");
        sql.Append("      ,VLR_IMP_IPI ");
        sql.Append("      ,PERCENTUAL_IMP_IPI ");
        sql.Append("      ,MOEDA_IPI ");
        sql.Append("      ,CAMBIO_IPI ");
        sql.Append("      ,VLR_IMP_ICMS_ORI ");
        sql.Append("      ,VLR_IMP_ICMS ");
        sql.Append("      ,PERCENTUAL_IMP_ICMS ");
        sql.Append("      ,MOEDA_ICMS ");
        sql.Append("      ,CAMBIO_ICMS ");
        sql.Append("      ,VLR_IMP_PIS_ORI ");
        sql.Append("      ,VLR_IMP_PIS ");
        sql.Append("      ,PERCENTUAL_IMP_PIS ");
        sql.Append("      ,MOEDA_PIS ");
        sql.Append("      ,CAMBIO_PIS ");
        sql.Append("      ,VLR_IMP_COFINS_ORI ");
        sql.Append("      ,VLR_IMP_COFINS ");
        sql.Append("      ,PERCENTUAL_IMP_COFINS ");
        sql.Append("      ,MOEDA_COFINS ");
        sql.Append("      ,CAMBIO_COFINS ");
        sql.Append("     ,MOEDA_CERTIFICADO ");
        sql.Append("     ,CAMBIO_CERTIFICADO ");
        sql.Append("     ,VLR_TOTAL_CERTIFICADO ");
        sql.Append("     ,PREMIO_CERTIFICADO ");
        sql.Append("      ,DATA_VENCIMENTO_PROPOSTA ");
        sql.Append("      ,SERIE_DOCUMENTO ");
        sql.Append("      ,NUMERO_DOCUMENTO ");
        sql.Append("      ,PERCENTUAL_COMISSAO ");
        sql.Append("      ,NUMERO_APOLICE ");
        sql.Append("      ,DATA_INI_VIGENCIA_APOLICE ");
        sql.Append("      ,DATA_FIM_VIGENCIA_APOLICE ");
        sql.Append("      ,DATA_EMISSAO_APOLICE ");
        sql.Append("      ,OBSERVACAO ");
        sql.Append("      ,PERC_FRANQUIA ");
        sql.Append("      ,CAMBIO_MOEDA_PRODUTO ");
        sql.Append("      ,IS_GERENCIAMENTO_RISCO ");
        sql.Append("      ,INCOTERM ");
        sql.Append("      ,PROC_SUSEP ");
        sql.Append("      ,COD_BANCO ");
        sql.Append("      ,NUM_PROPOSTA ");
        sql.Append("      ,DIG_PROPOSTA ");
        sql.Append("      ,IDENTIFICACAO_PAGAMENTO ");
        sql.Append("      ,VALOR_IOF ");
        sql.Append("      ,VALOR_IOF_CALCULADO ");
        sql.Append("      ,IS_CARTA_CREDITO ");
        sql.Append("      ,COD_RAMO_ATIVIDADE ");
        sql.Append("      ,COD_INCOTERM ");
        sql.Append("      ,DESC_INCOTERM ");                
        sql.Append("      ,IS_PONTA_IMPORTACAO ");
        sql.Append("      ,IS_DESTINO_EXPORTACAO ");
        sql.Append("      ,IS_CIF_FECHADO ");
        sql.Append("      ,IS_RETORNO_BENEF ");
        sql.Append("      ,VALOR_BENEF ");
        sql.Append("      ,PREMIO_BENEF ");
        sql.Append("      ,IS_RETORNO_EVENTO ");
        sql.Append("      ,DSC_PROD_DOC ");
        sql.Append("      ,DT_EMISSAO ");
        sql.Append("      ,HR_EMISSAO ");  
        sql.Append("      ,FORMA_PAGAMENTO "); 
        sql.Append("      ,BANCO "); 
        sql.Append("      ,AGENCIA ");
        sql.Append("      ,CONTA_CORRENTE "); 


        sql.Append("   FROM  " + ConfigurationManager.AppSettings["PrefixNameDbAvulsa"] + ".VW_PESQUISA_COTACAO ");                
        sql.Append("  WHERE (1=1) ");

        if (pCotacao != null)
        {
            if (!pCotacao.Id.Equals(0))
            {
                sql.Append(" AND NUMERO_COTACAO = " + dbUtility.Variavel("COTACAO"));
                dbUtility.AddParametro("COTACAO", pCotacao.Id, ParameterDirection.Input);
            }

            if (pCotacao.Produto != null)
            {
                if (!pCotacao.Produto.Id.Equals(0))
                {
                    sql.Append(" AND COD_PRODUTO = " + dbUtility.Variavel("PRODUTO"));
                    dbUtility.AddParametro("PRODUTO", pCotacao.Produto.Id, ParameterDirection.Input);
                }
            }

            if (pCotacao.Proposta != null && !pCotacao.Proposta.Id.Equals(0))
            {
                sql.Append(" AND NUM_PROPOSTA = " + dbUtility.Variavel("NUM_PROPOSTA"));
                dbUtility.AddParametro("NUM_PROPOSTA", pCotacao.Proposta.Id, ParameterDirection.Input);
            }

            if (pCotacao.Proponente != null)
            {
                if (!String.IsNullOrEmpty(pCotacao.Proponente.RazaoSocial))
                {
                    sql.Append(" AND UPPER(NOME_CLIENTE) LIKE " + dbUtility.Variavel("NOME"));
                    dbUtility.AddParametro("NOME", "%" + pCotacao.Proponente.RazaoSocial.Trim().ToUpper() + "%", ParameterDirection.Input);
                }

                if (!String.IsNullOrEmpty(pCotacao.Proponente.CNPJ) && !Int64.Parse(pCotacao.Proponente.CNPJ).Equals(0))
                {
                    sql.Append(" AND CNPJ_CLIENTE = " + dbUtility.Variavel("CNPJ"));
                    dbUtility.AddParametro("CNPJ", pCotacao.Proponente.CNPJ.Replace(".", "").Replace("-", "").Replace("/", ""), ParameterDirection.Input);
                }
            }

            if (pCotacao.Status != null)
            {
                if (!String.IsNullOrEmpty(pCotacao.Status.Id) & !pCotacao.Status.Id.Trim().Equals("999"))
                {
                    sql.Append(" AND SIT_COTACAO = " + dbUtility.Variavel("SITUACAO"));
                    dbUtility.AddParametro("SITUACAO", pCotacao.Status.Id, ParameterDirection.Input);
                }
            }

            if (pCotacao.Corretor != null)
            {
                if (!pCotacao.Corretor.IdPessoa.Equals(0))
                {
                    sql.Append(" AND CORRETOR = " + dbUtility.Variavel("COD_CORRETOR"));
                    dbUtility.AddParametro("COD_CORRETOR", pCotacao.Corretor.IdPessoa, ParameterDirection.Input);
                }
            }

            if (pCotacao.Filial != null)
            {
                if (!pCotacao.Filial.Id.Equals(0))
                {
                    sql.Append(" AND FILIAL = " + dbUtility.Variavel("FILIAL"));
                    dbUtility.AddParametro("FILIAL", pCotacao.Filial.Id, ParameterDirection.Input);
                }
            }
        }

        sql.Append(" ORDER BY NUMERO_COTACAO DESC ");

        reader = dbUtility.Consultar(sql.ToString());

        List<Cotacao> lstCotacao = new List<Cotacao>();

        while (reader.Read())
        {
            Cotacao _cot = new Cotacao();
            _cot.ParametroSistema = pCotacao.ParametroSistema;
            _cot.Apolice = new Apolice();
            _cot.Apolice.Id = reader["NUMERO_APOLICE"].ToString();
            _cot.Apolice.DataIniVigencia = Convert.ToDateTime(reader["DATA_INI_VIGENCIA_APOLICE"]);
            _cot.Apolice.DataFimVigencia = Convert.ToDateTime(reader["DATA_FIM_VIGENCIA_APOLICE"]);
            _cot.Apolice.DataEmissao = Convert.ToDateTime(DBNull.Value.Equals(reader["DATA_EMISSAO_APOLICE"]) ? null : reader["DATA_EMISSAO_APOLICE"]);
            _cot.Id = Convert.ToInt32(reader["NUMERO_COTACAO"]);
            _cot.DtEntrada = Convert.ToDateTime(reader["DATA_COTACAO"]);
            _cot.DtAlteracao = Convert.ToDateTime(reader["DATA_ALTERACAO"]);
            _cot.DtEmbarque = Convert.ToDateTime(reader["DATA_EMBARQUE"]);
            _cot.Produto = new Produto();
            _cot.Produto.Id = Convert.ToInt32(reader["COD_PRODUTO"].ToString());
            _cot.Produto.Descricao = reader["DESCRICAO_PRODUTO"].ToString();
            _cot.Produto.DescricaoDoc = reader["DSC_PROD_DOC"].ToString();
            _cot.Produto.VersaoProduto = reader["VERSAO_PRODUTO"].ToString();
            _cot.Produto.ProcessoSusep = reader["PROC_SUSEP"].ToString();
            _cot.Produto.TipoProduto = (Produto.TpProduto)Enum.Parse(typeof(Produto.TpProduto), _cot.Produto.Id.ToString().Substring(0, 7));
            _cot.Produto.Moeda = new Moeda();
            _cot.Produto.Moeda.Cambio = Convert.ToDecimal(reader["CAMBIO_MOEDA_PRODUTO"]);
            _cot.Produto.IsGerenciamentoRisco = Convert.ToBoolean(reader["IS_GERENCIAMENTO_RISCO"]);
            _cot.Proponente = new Proponente();
            _cot.Proponente.CNPJ = reader["CNPJ_CLIENTE"].ToString();
            _cot.Proponente.RazaoSocial = reader["NOME_CLIENTE"].ToString();
            _cot.Proponente.Fantasia = reader["NOME_CLIENTE"].ToString();
            _cot.Proponente.Corretor = new Corretor();
            _cot.Proponente.Corretor.IdPessoa = reader["CORRETOR"].ToString();
            _cot.Proponente.Corretor.IdCorretor = reader["SUSEP_CORRETOR"].ToString();
            _cot.Proponente.Corretor.RazaoSocial = reader["DESC_CORRETOR"].ToString();
            _cot.Proponente.Corretor.Filial = new Filial();
            _cot.Proponente.Corretor.Filial.Id = Convert.ToInt32(reader["ID_FILIAL_CORRETOR"]);
            _cot.Proponente.Corretor.Filial.Descricao = reader["DESC_FILIAL_CORRETOR"].ToString();
            _cot.Proponente.AtividadePrincipal = new AtividadePrincipal();
            _cot.Proponente.AtividadePrincipal.Id = reader["COD_RAMO_ATIVIDADE"].ToString();
            _cot.Status = new Status();
            _cot.Status.Id = reader["SIT_COTACAO"].ToString();
            _cot.Status.Descricao = reader["SIT_DESCRICAO"].ToString();
            _cot.Corretor = new Corretor();
            _cot.Corretor.IdPessoa = reader["CORRETOR"].ToString();
            _cot.Corretor.IdCorretor = reader["SUSEP_CORRETOR"].ToString();
            _cot.Corretor.RazaoSocial = reader["DESC_CORRETOR"].ToString();
            _cot.Corretor.Filial = new Filial();
            _cot.Corretor.Filial.Id = Convert.ToInt32(reader["ID_FILIAL_CORRETOR"]);
            _cot.Corretor.Filial.Descricao = reader["DESC_FILIAL_CORRETOR"].ToString();
            _cot.Corretor.Produtor = new PessoaFisica();
            _cot.Corretor.Produtor.IdPessoa = reader["COD_PRODUTOR"].ToString();
            _cot.Corretor.Produtor.Nome = reader["DSC_PRODUTOR"].ToString().Trim();
            _cot.Filial = new Filial();
            _cot.Filial.Id = Convert.ToInt32(reader["FILIAL"]);
            _cot.DataValidadeCotacao = Convert.ToDateTime(reader["VALIDADE_COTACAO"]);
            _cot.IdEmissaoSeguradora = Convert.ToInt32(reader["C_EMS_SEG"]);
            _cot.IdContrato = reader["U_CTR_SEG"].ToString();
            _cot.IdProposta = reader["U_PRP"].ToString();
            _cot.Origem = new Local();
            _cot.Origem.Id = Convert.ToInt32(reader["ORIGEM"]);
            _cot.Origem.Descricao = reader["DESCRICAO_ORIGEM"].ToString();
            _cot.Origem.Complemento = new Local();
            _cot.Origem.Complemento.Id = Convert.ToInt32(reader["COMPLEMENTO_ORIGEM"]);
            _cot.Origem.Complemento.Descricao = reader["DESCRICAO_COMPLEMENTO_ORIGEM"].ToString();
            _cot.Destino = new Local();
            _cot.Destino.Id = Convert.ToInt32(reader["DESTINO"]);
            _cot.Destino.Descricao = reader["DESCRICAO_DESTINO"].ToString();
            _cot.Destino.Complemento = new Local();
            _cot.Destino.Complemento.Id = Convert.ToInt32(reader["COMPLEMENTO_DESTINO"]);
            _cot.Destino.Complemento.Descricao = reader["DESCRICAO_COMPLEMENTO_DESTINO"].ToString();
            _cot.Transporte = new Transporte();
            _cot.Transporte.EnMeioTransporte = (Transporte.MTransporte)Enum.Parse(typeof(Transporte.MTransporte), reader["MEIO_TRANSPORTE"].ToString());
            _cot.Transporte.Id = reader["MEIO_TRANSPORTE"].ToString();
            _cot.Transporte.IdNavio = Convert.ToInt32(reader["ID_NAVIO"]);
            _cot.Transporte.TipoVeiculo = reader["TIPO_VEICULO"].ToString();
            _cot.Transporte.IdentificacaoVeiculo = reader["VEICULO_TRANSPORTE"].ToString();
            _cot.Mercadoria = new Mercadoria();
            _cot.Mercadoria.IdGrupoMercadoria = Convert.ToInt32(reader["GRUPO_MERCADORIA"]);
            _cot.Mercadoria.TipoMercadoria = (Mercadoria.TpMercadoria)Enum.Parse(typeof(Mercadoria.TpMercadoria), reader["TIPO_MERCADORIA"].ToString());
            _cot.Mercadoria.Id = reader["ID_MERCADORIA"].ToString();
            _cot.Mercadoria.Descricao = reader["DESCRICAO_MERCADORIA"].ToString();
            _cot.Mercadoria.ComplementoMercadoria = reader["COMPLEMENTO_MERCADORIA"].ToString();
            _cot.Mercadoria.IsContainer = reader["IS_CONTAINER"].ToString();
            _cot.Mercadoria.PercentualFranquia = Convert.ToDecimal(reader["PERC_FRANQUIA"].ToString());
            _cot.Mercadoria.IsRetornoEvento = String.IsNullOrEmpty(reader["IS_RETORNO_EVENTO"].ToString()) ? String.Empty : reader["IS_RETORNO_EVENTO"].ToString();                    
            _cot.Embalagem = new Embalagem() { Id = Convert.ToInt32(reader["ID_EMBALAGEM"]) };
            _cot.IdentificacaoPagamento = reader["IDENTIFICACAO_PAGAMENTO"].ToString();
            _cot.Cobertura = new Cobertura();
            _cot.Cobertura.Id = Convert.ToInt32(reader["ID_COBERTURA_BASICA"]);
            _cot.Cobertura.Descricao = reader["DESCRICAO_COBERTURA"].ToString();                    

            _cot.ValorIOF =  Convert.ToDecimal(reader["VALOR_IOF"]);
            _cot.ValorIofCalculado = Convert.ToDecimal(reader["VALOR_IOF_CALCULADO"]);

            _cot.VlrCustoMercadoria = Convert.ToDecimal(reader["VLR_FOB"]);
            _cot.VlrCustoMercadoriaConvert = Convert.ToDecimal(reader["VLR_FOB_CONVERT"]);
            _cot.MoedaCustoMercadoria = new Moeda() { Id = Convert.ToInt32(reader["MOEDA_FOB"]), Cambio = Convert.ToDecimal(reader["CAMBIO_FOB"]) };
            _cot.VlrPremioFOB = Convert.ToDecimal(reader["VLR_PREMIO_FOB"]);

            _cot.VlrValorFrete = Convert.ToDecimal(reader["VLR_FRETE"]);
            _cot.VlrValorFreteConvert = Convert.ToDecimal(reader["VLR_FRETE_CONVERT"]);
            _cot.MoedaFrete = new Moeda() { Id = Convert.ToInt32(reader["MOEDA_FRETE"]), Cambio = Convert.ToDecimal(reader["CAMBIO_FRETE"]) };
            _cot.VlrDespesas = Convert.ToDecimal(reader["VLR_DESPESAS"]);
            _cot.VlrPremioFrete = Convert.ToDecimal(reader["VLR_PREMIO_FRETE"]);

            _cot.VlrDespesasConvert = Convert.ToDecimal(reader["VLR_DESPESAS_CONVERT"]);
            _cot.MoedaDespesas = new Moeda() { Id = Convert.ToInt32(reader["MOEDA_DESPESAS"]), Cambio = Convert.ToDecimal(reader["CAMBIO_DESPESAS"]) };
            _cot.PercDespesas = Convert.ToDecimal(reader["PERCENTUAL_DESPESAS"]);
            _cot.VlrPremioDespesas = Convert.ToDecimal(reader["VLR_PREMIO_DESPESAS"]);

            _cot.VlrLucrosEsperados = Convert.ToDecimal(reader["VLR_LUCRO"]);
            _cot.VlrLucrosEsperadosConvert = Convert.ToDecimal(reader["VLR_LUCRO_CONVERT"]);
            _cot.MoedaLucrosEsperados = new Moeda() { Id = Convert.ToInt32(reader["MOEDA_LUCRO"]), Cambio = Convert.ToDecimal(reader["CAMBIO_LUCRO"]) };
            _cot.PercLucrosEsperados = Convert.ToDecimal(DBNull.Value.Equals(reader["PERCENTUAL_LUCRO"]) ? 0 : reader["PERCENTUAL_LUCRO"]);
            _cot.VlrPremioLucrosEsperados = Convert.ToDecimal(reader["VLR_PREMIO_LUCRO"]);

            _cot.VlrImportanciaSeguradaTotal = Convert.ToDecimal(reader["V_IS_TOTAL"]);
            _cot.VlrPremioTotal = Convert.ToDecimal(reader["VLR_PREMIO_TOTAL"]);
            _cot.VlrPremioLiquido = Convert.ToDecimal(reader["VLR_PREMIO_LIQUIDO"]);
            _cot.VlrPremioCalculado = Convert.ToDecimal(reader["VLR_PREMIO_CALCULADO"]);
            _cot.VlrIImportacao = Convert.ToDecimal(DBNull.Value.Equals(reader["VLR_IMP_II_ORI"]) ? 0 : reader["VLR_IMP_II_ORI"]);
            _cot.VlrIImportacaoConvert = Convert.ToDecimal(DBNull.Value.Equals(reader["VLR_IMP_II"]) ? 0 : reader["VLR_IMP_II"]);
            _cot.PercImpostoIImportacao = Convert.ToDecimal(DBNull.Value.Equals(reader["PERCENTUAL_IMP_II"]) ? 0 : reader["PERCENTUAL_IMP_II"]);
            _cot.MoedaImpostoII = new Moeda();
            _cot.MoedaImpostoII.Id = Convert.ToInt32(DBNull.Value.Equals(reader["MOEDA_II"]) ? 0 : reader["MOEDA_II"]);
            _cot.MoedaImpostoII.Cambio = Convert.ToDecimal(DBNull.Value.Equals(reader["CAMBIO_II"]) ? 0 : reader["CAMBIO_II"]);

            _cot.VlrIPI = Convert.ToDecimal(DBNull.Value.Equals(reader["VLR_IMP_IPI_ORI"]) ? 0 : reader["VLR_IMP_IPI_ORI"]);
            _cot.VlrIPIConvert = Convert.ToDecimal(DBNull.Value.Equals(reader["VLR_IMP_IPI"]) ? 0 : reader["VLR_IMP_IPI"]);
            _cot.PercImpostoIPI = Convert.ToDecimal(DBNull.Value.Equals(reader["PERCENTUAL_IMP_IPI"]) ? 0 : reader["PERCENTUAL_IMP_IPI"]);
            _cot.MoedaImpostoIPI = new Moeda();
            _cot.MoedaImpostoIPI.Id = Convert.ToInt32(DBNull.Value.Equals(reader["MOEDA_IPI"]) ? 0 : reader["MOEDA_IPI"]);
            _cot.MoedaImpostoIPI.Cambio = Convert.ToDecimal(DBNull.Value.Equals(reader["CAMBIO_IPI"]) ? 0 : reader["CAMBIO_IPI"]);

            _cot.VlrICMS = Convert.ToDecimal(DBNull.Value.Equals(reader["VLR_IMP_ICMS_ORI"]) ? 0 : reader["VLR_IMP_ICMS_ORI"]);
            _cot.VlrICMSConvert = Convert.ToDecimal(DBNull.Value.Equals(reader["VLR_IMP_ICMS"]) ? 0 : reader["VLR_IMP_ICMS"]);
            _cot.PercImpostoICMS = Convert.ToDecimal(DBNull.Value.Equals(reader["PERCENTUAL_IMP_ICMS"]) ? 0 : reader["PERCENTUAL_IMP_ICMS"]);
            _cot.MoedaImpostoICMS = new Moeda();
            _cot.MoedaImpostoICMS.Id = Convert.ToInt32(DBNull.Value.Equals(reader["MOEDA_ICMS"]) ? 0 : reader["MOEDA_ICMS"]);
            _cot.MoedaImpostoICMS.Cambio = Convert.ToDecimal(DBNull.Value.Equals(reader["CAMBIO_ICMS"]) ? 0 : reader["CAMBIO_ICMS"]);

            _cot.VlrPIS = Convert.ToDecimal(DBNull.Value.Equals(reader["VLR_IMP_PIS_ORI"]) ? 0 : reader["VLR_IMP_PIS_ORI"]);
            _cot.VlrPISConvert = Convert.ToDecimal(DBNull.Value.Equals(reader["VLR_IMP_PIS"]) ? 0 : reader["VLR_IMP_PIS"]);
            _cot.PercImpostoPIS = Convert.ToDecimal(DBNull.Value.Equals(reader["PERCENTUAL_IMP_PIS"]) ? 0 : reader["PERCENTUAL_IMP_PIS"]);
            _cot.MoedaImpostoPIS = new Moeda();
            _cot.MoedaImpostoPIS.Id = Convert.ToInt32(DBNull.Value.Equals(reader["MOEDA_PIS"]) ? 0 : reader["MOEDA_PIS"]);
            _cot.MoedaImpostoPIS.Cambio = Convert.ToDecimal(DBNull.Value.Equals(reader["CAMBIO_PIS"]) ? 0 : reader["CAMBIO_PIS"]);

            _cot.VlrCOFINS = Convert.ToDecimal(DBNull.Value.Equals(reader["VLR_IMP_COFINS_ORI"]) ? 0 : reader["VLR_IMP_COFINS_ORI"]);
            _cot.VlrCOFINSConvert = Convert.ToDecimal(DBNull.Value.Equals(reader["VLR_IMP_COFINS"]) ? 0 : reader["VLR_IMP_COFINS"]);
            _cot.PercImpostoCOFINS = Convert.ToDecimal(DBNull.Value.Equals(reader["PERCENTUAL_IMP_COFINS"]) ? 0 : reader["PERCENTUAL_IMP_COFINS"]);
            _cot.MoedaImpostoCOFINS = new Moeda();
            _cot.MoedaImpostoCOFINS.Id = Convert.ToInt32(DBNull.Value.Equals(reader["MOEDA_COFINS"]) ? 0 : reader["MOEDA_COFINS"]);
            _cot.MoedaImpostoCOFINS.Cambio = Convert.ToDecimal(DBNull.Value.Equals(reader["CAMBIO_COFINS"]) ? 0 : reader["CAMBIO_COFINS"]);

            _cot.VlrImpostos = Convert.ToDecimal(DBNull.Value.Equals(reader["VLR_IMPOSTOS_ORI"]) ? 0 : reader["VLR_IMPOSTOS_ORI"]);
            _cot.VlrImpostosConvert = Convert.ToDecimal(DBNull.Value.Equals(reader["VLR_IMPOSTOS"]) ? 0 : reader["VLR_IMPOSTOS"]);
            _cot.MoedaImpostos = new Moeda();
            _cot.MoedaImpostos.Id = Convert.ToInt32(DBNull.Value.Equals(reader["MOEDA_IMPOSTOS"]) ? 0 : reader["MOEDA_IMPOSTOS"]);
            _cot.MoedaImpostos.Cambio = Convert.ToDecimal(DBNull.Value.Equals(reader["CAMBIO_IMPOSTOS"]) ? 0 : reader["CAMBIO_IMPOSTOS"]);

            _cot.PercentualDespesasLucrosImpostos = Convert.ToDecimal(DBNull.Value.Equals(reader["PERCENTUAL_LUC_DESP_IMP"]) ? 0 : reader["PERCENTUAL_LUC_DESP_IMP"]);
            _cot.VlrContainer = Convert.ToDecimal(DBNull.Value.Equals(reader["VLR_CONTAINER"]) ? 0 : reader["VLR_CONTAINER"]);
            _cot.Proposta = new Proposta();
            _cot.Proposta.Id = Convert.ToDecimal(reader["NUM_PROPOSTA"]);
            _cot.Proposta.Digito = reader["DIG_PROPOSTA"].ToString();
            _cot.Proposta.DtVencimentoProposta = Convert.ToDateTime(reader["DATA_VENCIMENTO_PROPOSTA"]);
            _cot.Proposta.Banco = new Banco();
            _cot.Proposta.Banco.Id = reader["COD_BANCO"].ToString();
            _cot.SerieDocumento = reader["SERIE_DOCUMENTO"].ToString();
            _cot.NumeroDocumento = reader["NUMERO_DOCUMENTO"].ToString();
            //_cot.PercComissao = Convert.ToDecimal(reader["PERCENTUAL_COMISSAO"]);
            _cot.Observacao = reader["OBSERVACAO"].ToString();

            _cot.Certificado = new Certificado();
            _cot.Certificado.TipoIconterms = reader["INCOTERM"].ToString();
            _cot.Certificado.Moeda = new Moeda();
            _cot.Certificado.Moeda.Id = Convert.ToInt32(reader["MOEDA_CERTIFICADO"]);
            _cot.Certificado.Moeda.Cambio = Convert.ToDecimal(reader["CAMBIO_CERTIFICADO"]);
            _cot.Certificado.VlrPremioTotal = Convert.ToDecimal(reader["PREMIO_CERTIFICADO"]);
            _cot.Certificado.VlrImportanciaSeguradaTotal = Convert.ToDecimal(reader["VLR_TOTAL_CERTIFICADO"]);
            _cot.IsCartaCredito = reader["IS_CARTA_CREDITO"].ToString();
            _cot.Incoterms = new Entities.Geral.Incoterms();
            _cot.Incoterms.Id = reader["COD_INCOTERM"].ToString();
            _cot.Incoterms.Descricao = reader["DESC_INCOTERM"].ToString();

            _cot.Incoterms.IsPontaImportacao = String.IsNullOrEmpty(reader["IS_PONTA_IMPORTACAO"].ToString().Trim()) ? "" : reader["IS_PONTA_IMPORTACAO"].ToString();
            _cot.Incoterms.IsDestinoExportacao = String.IsNullOrEmpty(reader["IS_DESTINO_EXPORTACAO"].ToString().Trim()) ? "" : reader["IS_DESTINO_EXPORTACAO"].ToString();
            _cot.IsCifFechado = reader["IS_CIF_FECHADO"].ToString();                    

            _cot.VlrBeneficiamento = Convert.ToDecimal(reader["VALOR_BENEF"]);
            _cot.VlrPremioBeneficiamento = Convert.ToDecimal(reader["PREMIO_BENEF"]);
            _cot.IsRetornoBeneficiamento = String.IsNullOrEmpty(reader["IS_RETORNO_BENEF"].ToString()) ? "0" : reader["IS_RETORNO_BENEF"].ToString();

            _cot.HrEmissao = reader["HR_EMISSAO"].ToString();
            _cot.DtEmissao = reader["DT_EMISSAO"].ToString();

            _cot.FormaPagamento = reader["FORMA_PAGAMENTO"].ToString();
            _cot.CodBanco = reader["BANCO"].ToString();
            _cot.CodAgencia = reader["AGENCIA"].ToString();
            _cot.ContaCorrente = reader["CONTA_CORRENTE"].ToString();

            lstCotacao.Add(_cot);
        }

        dbUtility.FecharConexao();

        return lstCotacao;
    }
    catch (Exception ex)
    {
        ...
    }
    finally
    {
        dbUtility.FecharConexao();
    }
}      
4

0 回答 0