public bool Salvar(MaterialApreendido entidade)
        {
            try
            {
                if (_validar.Salvar(entidade))
                {
                    if (entidade.Id < 1)
                    {
                        entidade.Id = _da.ObterID(entidade.FiscalizacaoId);
                    }

                    GerenciadorTransacao.ObterIDAtual();

                    using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia())
                    {
                        bancoDeDados.IniciarTransacao();

                        #region Arquivo

                        if (entidade.Arquivo != null)
                        {
                            if (!string.IsNullOrWhiteSpace(entidade.Arquivo.Nome))
                            {
                                if (entidade.Arquivo.Id != null && entidade.Arquivo.Id == 0)
                                {
                                    ArquivoBus _busArquivo = new ArquivoBus(eExecutorTipo.Interno);
                                    entidade.Arquivo = _busArquivo.Copiar(entidade.Arquivo);
                                }

                                if (entidade.Arquivo.Id == 0)
                                {
                                    ArquivoDa _arquivoDa = new ArquivoDa();
                                    _arquivoDa.Salvar(entidade.Arquivo, User.FuncionarioId, User.Name, User.Login, (int)eExecutorTipo.Interno, User.FuncionarioTid, bancoDeDados);
                                }
                            }
                            else
                            {
                                entidade.Arquivo.Id = null;
                            }
                        }

                        #endregion

                        _da.Salvar(entidade, bancoDeDados);

                        bancoDeDados.Commit();
                    }
                }
            }
            catch (Exception e)
            {
                Validacao.AddErro(e);
            }

            return(Validacao.EhValido);
        }
        public MaterialApreendido Obter(int fiscalizacaoId, BancoDeDados banco = null)
        {
            MaterialApreendido entidade = null;

            try
            {
                entidade = _da.Obter(fiscalizacaoId);
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }

            return(entidade);
        }
        public MaterialApreendido Salvar(MaterialApreendido materialApreendido, BancoDeDados banco = null)
        {
            if (materialApreendido == null)
            {
                throw new Exception("Material apreendido é nulo.");
            }

            if (materialApreendido.Id <= 0)
            {
                materialApreendido = Criar(materialApreendido, banco);
            }
            else
            {
                materialApreendido = Editar(materialApreendido, banco);
            }

            return(materialApreendido);
        }
예제 #4
0
        public bool Salvar(MaterialApreendido materialApreendido)
        {
            if (materialApreendido.IsDigital == null)
            {
                Validacao.Add(Mensagem.MaterialApreendidoMsg.DigitalOuBlocoObrigatorio);
            }
            else
            {
                if (materialApreendido.IsDigital == false)
                {
                    if (String.IsNullOrWhiteSpace(materialApreendido.NumeroIUF))
                    {
                        Validacao.Add(Mensagem.MaterialApreendidoMsg.NumeroIUFObrigatorio);
                    }

                    if (materialApreendido.SerieId == null || materialApreendido.SerieId == 0)
                    {
                        Validacao.Add(Mensagem.MaterialApreendidoMsg.SerieObrigatorio);
                    }

                    ValidacoesGenericasBus.DataMensagem(materialApreendido.DataLavratura, "MaterialApreendido_DataLavratura", "lavratura do IUF");
                }

                if (string.IsNullOrWhiteSpace(materialApreendido.Descricao))
                {
                    Validacao.Add(Mensagem.MaterialApreendidoMsg.DescricaoObrigatorio);
                }

                if (materialApreendido.Depositario.Id.GetValueOrDefault() != 0)
                {
                    if (string.IsNullOrWhiteSpace(materialApreendido.Depositario.Logradouro))
                    {
                        Validacao.Add(Mensagem.MaterialApreendidoMsg.DepositarioLogradouroObrigatorio);
                    }

                    if (string.IsNullOrWhiteSpace(materialApreendido.Depositario.Bairro))
                    {
                        Validacao.Add(Mensagem.MaterialApreendidoMsg.DepositarioBairroObrigatorio);
                    }

                    if (string.IsNullOrWhiteSpace(materialApreendido.Depositario.Distrito))
                    {
                        Validacao.Add(Mensagem.MaterialApreendidoMsg.DepositarioDistritoObrigatorio);
                    }

                    if (materialApreendido.Depositario.Estado.GetValueOrDefault() == 0)
                    {
                        Validacao.Add(Mensagem.MaterialApreendidoMsg.DepositarioEstadoObrigatorio);
                    }

                    if (materialApreendido.Depositario.Municipio.GetValueOrDefault() == 0)
                    {
                        Validacao.Add(Mensagem.MaterialApreendidoMsg.DepositarioMunicipioObrigatorio);
                    }
                }

                if (materialApreendido.ProdutosApreendidos.Count == 0)
                {
                    Validacao.Add(Mensagem.MaterialApreendidoMsg.ProdutoApreendidoObrigatorio);
                }

                if (String.IsNullOrWhiteSpace(materialApreendido.Opiniao))
                {
                    Validacao.Add(Mensagem.MaterialApreendidoMsg.OpiniaoObrigatoria);
                }
            }

            return(Validacao.EhValido);
        }
        public MaterialApreendido Criar(MaterialApreendido materialApreendido, BancoDeDados banco = null)
        {
            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                bancoDeDados.IniciarTransacao();

                #region Material Apreendido

                Comando comando = bancoDeDados.CriarComando(@" insert into tab_fisc_material_apreendido (id, fiscalizacao, houve_material, tad_gerado, tad_numero, tad_data, serie, 
					descricao, valor_produtos, depositario, endereco_logradouro, endereco_bairro, endereco_distrito, endereco_estado, endereco_municipio, opiniao, arquivo, tid) values (seq_fisc_material_apreendido.nextval, 
					:fiscalizacao, :houve_material, :tad_gerado, :tad_numero, :tad_data, :serie, :descricao, :valor_produtos, :depositario, :endereco_logradouro, :endereco_bairro, 
					:endereco_distrito, :endereco_estado, :endereco_municipio, :opiniao, :arquivo, :tid) returning id into :id "                    , EsquemaBanco);

                comando.AdicionarParametroEntrada("fiscalizacao", materialApreendido.FiscalizacaoId, DbType.Int32);
                comando.AdicionarParametroEntrada("houve_material", materialApreendido.IsApreendido, DbType.Int32);
                comando.AdicionarParametroEntrada("tad_gerado", materialApreendido.IsTadGeradoSistema, DbType.Int32);
                comando.AdicionarParametroEntrada("serie", materialApreendido.SerieId, DbType.Int32);
                comando.AdicionarParametroEntrada("depositario", materialApreendido.Depositario.Id, DbType.Int32);
                comando.AdicionarParametroEntrada("endereco_estado", materialApreendido.Depositario.Estado, DbType.Int32);
                comando.AdicionarParametroEntrada("endereco_municipio", materialApreendido.Depositario.Municipio, DbType.Int32);
                comando.AdicionarParametroEntrada("valor_produtos", materialApreendido.ValorProdutos, DbType.Decimal);
                comando.AdicionarParametroEntrada("opiniao", materialApreendido.Opiniao, DbType.String);
                comando.AdicionarParametroEntrada("tad_numero", materialApreendido.NumeroTad, DbType.String);
                comando.AdicionarParametroEntrada("descricao", materialApreendido.Descricao, DbType.String);
                comando.AdicionarParametroEntrada("endereco_logradouro", materialApreendido.Depositario.Logradouro, DbType.String);
                comando.AdicionarParametroEntrada("endereco_bairro", materialApreendido.Depositario.Bairro, DbType.String);
                comando.AdicionarParametroEntrada("endereco_distrito", materialApreendido.Depositario.Distrito, DbType.String);

                comando.AdicionarParametroEntrada("tid", DbType.String, 36, GerenciadorTransacao.ObterIDAtual());
                comando.AdicionarParametroSaida("id", DbType.Int32);

                if (materialApreendido.Arquivo == null)
                {
                    comando.AdicionarParametroEntrada("arquivo", DBNull.Value, DbType.Int32);
                }
                else
                {
                    comando.AdicionarParametroEntrada("arquivo", materialApreendido.Arquivo.Id, DbType.Int32);
                }

                if (materialApreendido.DataLavratura.IsEmpty)
                {
                    comando.AdicionarParametroEntrada("tad_data", DBNull.Value, DbType.Date);
                }
                else
                {
                    comando.AdicionarParametroEntrada("tad_data", materialApreendido.DataLavratura.Data.Value, DbType.Date);
                }

                bancoDeDados.ExecutarNonQuery(comando);

                #endregion

                materialApreendido.Id = Convert.ToInt32(comando.ObterValorParametro("id"));

                #region Materiais

                comando = bancoDeDados.CriarComando(@" insert into tab_fisc_mater_apree_material (id, material_apreendido, tipo, especificacao, tid) values (seq_fisc_mater_apree_material.nextval, 
					:material_apreendido, :tipo, :especificacao, :tid) "                    , EsquemaBanco);

                comando.AdicionarParametroEntrada("material_apreendido", materialApreendido.Id, DbType.Int32);
                comando.AdicionarParametroEntrada("tid", DbType.String, 36, GerenciadorTransacao.ObterIDAtual());
                comando.AdicionarParametroEntrada("tipo", DbType.Int32);
                comando.AdicionarParametroEntrada("especificacao", DbType.String);

                foreach (MaterialApreendidoMaterial material in materialApreendido.Materiais)
                {
                    comando.SetarValorParametro("tipo", material.TipoId);
                    comando.SetarValorParametro("especificacao", material.Especificacao);

                    bancoDeDados.ExecutarNonQuery(comando);
                }

                #endregion

                Historico.Gerar(materialApreendido.FiscalizacaoId, eHistoricoArtefato.fiscalizacao, eHistoricoAcao.atualizar, bancoDeDados);

                Consulta.Gerar(materialApreendido.FiscalizacaoId, eHistoricoArtefato.fiscalizacao, bancoDeDados);

                bancoDeDados.Commit();
            }
            return(materialApreendido);
        }
        public MaterialApreendido Obter(int fiscalizacaoId, BancoDeDados banco = null)
        {
            MaterialApreendido materialApreendido = new MaterialApreendido();

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                #region Material Apreendido

                Comando comando = bancoDeDados.CriarComando(@" select t.id, t.fiscalizacao, f.situacao situacao_id, t.houve_material, t.tad_gerado, t.tad_numero, t.tad_data, 
															t.serie, t.descricao, t.valor_produtos, t.depositario,  nvl(p.nome, p.razao_social) nome, 
															nvl(p.cpf, p.cnpj) cpf, t.endereco_logradouro, t.endereco_bairro, t.endereco_distrito, 
															t.endereco_estado, t.endereco_municipio, t.opiniao, t.arquivo, a.nome arquivo_nome, t.tid 
															from tab_fisc_material_apreendido t, tab_pessoa p, tab_arquivo a, tab_fiscalizacao f where t.depositario = p.id(+) 
															and t.arquivo = a.id(+) and t.fiscalizacao = :fiscalizacao and f.id = t.fiscalizacao"                                                            , EsquemaBanco);

                comando.AdicionarParametroEntrada("fiscalizacao", fiscalizacaoId, DbType.Int32);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    if (reader.Read())
                    {
                        materialApreendido = new MaterialApreendido
                        {
                            Id                     = reader.GetValue <int>("id"),
                            FiscalizacaoId         = reader.GetValue <int>("fiscalizacao"),
                            SerieId                = reader.GetValue <int>("serie"),
                            IsApreendido           = reader.GetValue <bool>("houve_material"),
                            NumeroTad              = reader.GetValue <string>("tad_numero"),
                            ValorProdutos          = reader.GetValue <string>("valor_produtos"),
                            Descricao              = reader.GetValue <string>("descricao"),
                            Opiniao                = reader.GetValue <string>("opiniao"),
                            FiscalizacaoSituacaoId = reader.GetValue <int>("situacao_id"),
                            Tid                    = reader.GetValue <string>("tid"),
                            Depositario            = new MaterialApreendidoDepositario
                            {
                                Id = reader.GetValue <int>("depositario"),
                                NomeRazaoSocial = reader.GetValue <string>("nome"),
                                CPFCNPJ         = reader.GetValue <string>("cpf"),
                                Logradouro      = reader.GetValue <string>("endereco_logradouro"),
                                Bairro          = reader.GetValue <string>("endereco_bairro"),
                                Distrito        = reader.GetValue <string>("endereco_distrito"),
                                Estado          = reader.GetValue <int>("endereco_estado"),
                                Municipio       = reader.GetValue <int>("endereco_municipio")
                            }
                        };

                        materialApreendido.Arquivo = new Arquivo
                        {
                            Id   = reader.GetValue <int>("arquivo"),
                            Nome = reader.GetValue <string>("arquivo_nome")
                        };

                        if (!Convert.IsDBNull(reader["tad_gerado"]))
                        {
                            materialApreendido.IsTadGeradoSistema = reader.GetValue <bool>("tad_gerado");
                        }

                        if (!Convert.IsDBNull(reader["tad_data"]))
                        {
                            materialApreendido.DataLavratura.DataTexto = reader.GetValue <string>("tad_data");
                        }
                    }
                    reader.Close();
                }

                #endregion

                #region Materiais

                comando = bancoDeDados.CriarComando(@" select tfmam.id, tfmam.material_apreendido, tfmam.tipo, lfmat.texto tipo_texto, tfmam.especificacao, tfmam.tid from tab_fisc_mater_apree_material
					tfmam, lov_fisc_mate_apreendido_tipo lfmat where tfmam.tipo = lfmat.id and tfmam.material_apreendido = :material_apreendido "                    , EsquemaBanco);
                comando.AdicionarParametroEntrada("material_apreendido", materialApreendido.Id, DbType.Int32);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    materialApreendido.Materiais = new List <MaterialApreendidoMaterial>();
                    while (reader.Read())
                    {
                        materialApreendido.Materiais.Add(new MaterialApreendidoMaterial
                        {
                            Id            = reader.GetValue <int>("id"),
                            TipoId        = reader.GetValue <int>("tipo"),
                            TipoTexto     = reader.GetValue <string>("tipo_texto"),
                            Especificacao = reader.GetValue <string>("especificacao")
                        });
                    }
                    reader.Close();
                }

                #endregion
            }

            return(materialApreendido);
        }
예제 #7
0
        public bool Salvar(MaterialApreendido materialApreendido)
        {
            if (!materialApreendido.IsApreendido.HasValue)
            {
                Validacao.Add(Mensagem.MaterialApreendidoMsg.IsApreendidoObritatorio);
                return(Validacao.EhValido);
            }

            if (materialApreendido.IsApreendido.Value)
            {
                if (!materialApreendido.IsTadGeradoSistema.HasValue)
                {
                    Validacao.Add(Mensagem.MaterialApreendidoMsg.IsTadGeradoSistemaObrigatorio);
                }
                else if (!materialApreendido.IsTadGeradoSistema.Value)
                {
                    if (string.IsNullOrWhiteSpace(materialApreendido.NumeroTad))
                    {
                        if (materialApreendido.SerieId == (int)eSerie.C)
                        {
                            Validacao.Add(Mensagem.MaterialApreendidoMsg.TadNumeroObrigatorio);
                        }
                        else
                        {
                            Validacao.Add(Mensagem.MaterialApreendidoMsg.TadNumeroBlocoObrigatorio);
                        }
                    }

                    ValidacoesGenericasBus.DataMensagem(materialApreendido.DataLavratura, "MaterialApreendido_DataLavratura", "Data da lavratura do termo");
                }

                if (materialApreendido.SerieId.GetValueOrDefault() == 0)
                {
                    Validacao.Add(Mensagem.MaterialApreendidoMsg.SerieObrigatorio);
                }

                if (string.IsNullOrWhiteSpace(materialApreendido.Descricao))
                {
                    Validacao.Add(Mensagem.MaterialApreendidoMsg.DescricaoObrigatorio);
                }

                if (!string.IsNullOrWhiteSpace(materialApreendido.ValorProdutos))
                {
                    Decimal aux = 0;
                    if (!Decimal.TryParse(materialApreendido.ValorProdutos, out aux))
                    {
                        Validacao.Add(Mensagem.MaterialApreendidoMsg.ValorProdutosInvalido);
                    }
                }

                if (materialApreendido.Depositario.Id.GetValueOrDefault() == 0)
                {
                    Validacao.Add(Mensagem.MaterialApreendidoMsg.DepositarioObrigatorio);
                }

                if (string.IsNullOrWhiteSpace(materialApreendido.Depositario.Logradouro))
                {
                    Validacao.Add(Mensagem.MaterialApreendidoMsg.DepositarioLogradouroObrigatorio);
                }

                if (string.IsNullOrWhiteSpace(materialApreendido.Depositario.Bairro))
                {
                    Validacao.Add(Mensagem.MaterialApreendidoMsg.DepositarioBairroObrigatorio);
                }

                if (string.IsNullOrWhiteSpace(materialApreendido.Depositario.Distrito))
                {
                    Validacao.Add(Mensagem.MaterialApreendidoMsg.DepositarioDistritoObrigatorio);
                }

                if (materialApreendido.Depositario.Estado.GetValueOrDefault() == 0)
                {
                    Validacao.Add(Mensagem.MaterialApreendidoMsg.DepositarioEstadoObrigatorio);
                }

                if (materialApreendido.Depositario.Municipio.GetValueOrDefault() == 0)
                {
                    Validacao.Add(Mensagem.MaterialApreendidoMsg.DepositarioMunicipioObrigatorio);
                }

                if (materialApreendido.Materiais.Count == 0)
                {
                    Validacao.Add(Mensagem.MaterialApreendidoMsg.MaterialApreendidoObrigatorio);
                }
            }

            return(Validacao.EhValido);
        }
        public MaterialApreendido Criar(MaterialApreendido materialApreendido, BancoDeDados banco = null)
        {
            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                bancoDeDados.IniciarTransacao();

                #region Apreensão

                Comando comando = bancoDeDados.CriarComando(@"
                                   insert into tab_fisc_apreensao (id,
                                                            fiscalizacao,
                                                            iuf_digital,
                                                            iuf_numero,
                                                            iuf_data,
                                                            numero_lacres,
                                                            arquivo,
                                                            serie,
                                                            descricao,
                                                            valor_produtos,
                                                            valor_produtos_reais,
                                                            depositario,
                                                            endereco_logradouro,
                                                            endereco_bairro,
                                                            endereco_distrito,
                                                            endereco_estado,
                                                            endereco_municipio,
                                                            opiniao,
                                                            tid)
                                   values (seq_tab_fisc_apreensao.nextval, 
                                          :fiscalizacao,
                                          :eh_digital,
                                          :iuf_numero,
                                          :iuf_data,
                                          :numero_lacres,
                                          :arquivo,
                                          :serie,
                                          :descricao,
                                          :valor_produtos,
                                          :valor_produtos_reais,
                                          :depositario,
                                          :endereco_logradouro,
                                          :endereco_bairro, 
                                          :endereco_distrito,
                                          :endereco_estado,
                                          :endereco_municipio,
                                          :opiniao,
                                          :tid) returning id into :id", EsquemaBanco);

                comando.AdicionarParametroEntrada("fiscalizacao", materialApreendido.FiscalizacaoId, DbType.Int32);
                comando.AdicionarParametroEntrada("eh_digital", materialApreendido.IsDigital, DbType.Boolean);
                comando.AdicionarParametroEntrada("iuf_numero", materialApreendido.NumeroIUF, DbType.String);
                comando.AdicionarParametroEntrada("numero_lacres", materialApreendido.NumeroLacre, DbType.String);
                comando.AdicionarParametroEntrada("serie", materialApreendido.SerieId, DbType.Int32);
                materialApreendido.Depositario.Id = materialApreendido.Depositario.Id == 0 ? null : materialApreendido.Depositario.Id;
                comando.AdicionarParametroEntrada("depositario", materialApreendido.Depositario.Id, DbType.Int32);
                materialApreendido.Depositario.Estado = materialApreendido.Depositario.Estado == 0 ? null : materialApreendido.Depositario.Estado;
                comando.AdicionarParametroEntrada("endereco_estado", materialApreendido.Depositario.Estado, DbType.Int32);
                materialApreendido.Depositario.Municipio = materialApreendido.Depositario.Municipio == 0 ? null : materialApreendido.Depositario.Municipio;
                comando.AdicionarParametroEntrada("endereco_municipio", materialApreendido.Depositario.Municipio, DbType.Int32);
                comando.AdicionarParametroEntrada("valor_produtos", materialApreendido.ValorProdutosExtenso, DbType.String);
                comando.AdicionarParametroEntrada("valor_produtos_reais", materialApreendido.ValorProdutosReais, DbType.Decimal);
                comando.AdicionarParametroEntClob("opiniao", materialApreendido.Opiniao);
                comando.AdicionarParametroEntrada("descricao", materialApreendido.Descricao, DbType.String);
                comando.AdicionarParametroEntrada("endereco_logradouro", materialApreendido.Depositario.Logradouro, DbType.String);
                comando.AdicionarParametroEntrada("endereco_bairro", materialApreendido.Depositario.Bairro, DbType.String);
                comando.AdicionarParametroEntrada("endereco_distrito", materialApreendido.Depositario.Distrito, DbType.String);

                comando.AdicionarParametroEntrada("tid", DbType.String, 36, GerenciadorTransacao.ObterIDAtual());
                comando.AdicionarParametroSaida("id", DbType.Int32);

                if (materialApreendido.Arquivo == null)
                {
                    comando.AdicionarParametroEntrada("arquivo", DBNull.Value, DbType.Int32);
                }
                else
                {
                    comando.AdicionarParametroEntrada("arquivo", materialApreendido.Arquivo.Id, DbType.Int32);
                }

                if (materialApreendido.DataLavratura.IsEmpty)
                {
                    comando.AdicionarParametroEntrada("iuf_data", DBNull.Value, DbType.Date);
                }
                else
                {
                    comando.AdicionarParametroEntrada("iuf_data", materialApreendido.DataLavratura.Data.Value, DbType.Date);
                }

                bancoDeDados.ExecutarNonQuery(comando);

                #endregion

                materialApreendido.Id = Convert.ToInt32(comando.ObterValorParametro("id"));

                #region Produtos

                comando = bancoDeDados.CriarComando(@"
                           insert into tab_fisc_apreensao_produto (id,
                                                            apreensao,
                                                            produto,
                                                            quantidade,
                                                            destinacao,
                                                            tid)
                           values (seq_tab_fisc_apreensao_produto.nextval,
                                   :apreensao,
                                   :produto,
                                   :quantidade,
                                   :destinacao,
                                   :tid) ", EsquemaBanco);

                comando.AdicionarParametroEntrada("apreensao", materialApreendido.Id, DbType.Int32);
                comando.AdicionarParametroEntrada("produto", DbType.Int32);
                comando.AdicionarParametroEntrada("quantidade", DbType.Int32);
                comando.AdicionarParametroEntrada("destinacao", DbType.Int32);
                comando.AdicionarParametroEntrada("tid", DbType.String, 36, GerenciadorTransacao.ObterIDAtual());

                foreach (ApreensaoProdutoApreendido produto in materialApreendido.ProdutosApreendidos)
                {
                    comando.SetarValorParametro("produto", produto.ProdutoId);
                    comando.SetarValorParametro("quantidade", produto.Quantidade);
                    comando.SetarValorParametro("destinacao", produto.DestinoId);

                    bancoDeDados.ExecutarNonQuery(comando);
                }

                #endregion

                Historico.Gerar(materialApreendido.FiscalizacaoId, eHistoricoArtefato.fiscalizacao, eHistoricoAcao.atualizar, bancoDeDados);

                Consulta.Gerar(materialApreendido.FiscalizacaoId, eHistoricoArtefato.fiscalizacao, bancoDeDados);

                bancoDeDados.Commit();
            }
            return(materialApreendido);
        }
        public MaterialApreendido Obter(int fiscalizacaoId, BancoDeDados banco = null)
        {
            MaterialApreendido materialApreendido = new MaterialApreendido();

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                #region Apreensão

                Comando comando = bancoDeDados.CriarComando(@"
                                    select t.id,
                                           t.fiscalizacao,
                                           f.situacao situacao_id,
                                           t.iuf_digital,
                                           t.iuf_numero,
                                           t.iuf_data,
                                           t.numero_lacres,
                                           t.serie,
                                           t.descricao,
                                           t.valor_produtos,
                                           t.valor_produtos_reais,
                                           t.depositario,
                                           nvl(p.nome, p.razao_social) nome,
                                           nvl(p.cpf, p.cnpj) cpf,
                                           t.endereco_logradouro,
                                           t.endereco_bairro,
                                           t.endereco_distrito,
                                           t.endereco_estado,
                                           t.endereco_municipio,
                                           t.opiniao,
                                           t.arquivo,
                                           a.nome arquivo_nome,
                                           lfs.texto serie_texto,
                                           t.tid 
                                    from tab_fisc_apreensao t,
                                         tab_pessoa p,
                                         tab_arquivo a,
                                         tab_fiscalizacao f,
                                         lov_fiscalizacao_serie lfs
                                    where t.depositario = p.id(+)
                                          and t.arquivo = a.id(+)
                                          and t.fiscalizacao = :fiscalizacao
                                          and (t.serie is null or t.serie = lfs.id)
                                          and f.id = t.fiscalizacao", EsquemaBanco);

                comando.AdicionarParametroEntrada("fiscalizacao", fiscalizacaoId, DbType.Int32);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    if (reader.Read())
                    {
                        materialApreendido = new MaterialApreendido
                        {
                            Id                     = reader.GetValue <int>("id"),
                            FiscalizacaoId         = reader.GetValue <int>("fiscalizacao"),
                            FiscalizacaoSituacaoId = reader.GetValue <int>("situacao_id"),
                            IsDigital              = reader.GetValue <bool>("iuf_digital"),
                            NumeroIUF              = reader.GetValue <string>("iuf_numero"),
                            NumeroLacre            = reader.GetValue <string>("numero_lacres"),
                            SerieId                = reader.GetValue <int>("serie"),
                            SerieTexto             = reader.GetValue <string>("serie_texto"),
                            Descricao              = reader.GetValue <string>("descricao"),
                            ValorProdutosExtenso   = reader.GetValue <string>("valor_produtos"),
                            ValorProdutosReais     = reader.GetValue <decimal>("valor_produtos_reais"),
                            Opiniao                = reader.GetValue <string>("opiniao"),
                            Tid                    = reader.GetValue <string>("tid"),
                            Depositario            = new MaterialApreendidoDepositario
                            {
                                Id = reader.GetValue <int>("depositario"),
                                NomeRazaoSocial = reader.GetValue <string>("nome"),
                                CPFCNPJ         = reader.GetValue <string>("cpf"),
                                Logradouro      = reader.GetValue <string>("endereco_logradouro"),
                                Bairro          = reader.GetValue <string>("endereco_bairro"),
                                Distrito        = reader.GetValue <string>("endereco_distrito"),
                                Estado          = reader.GetValue <int>("endereco_estado"),
                                Municipio       = reader.GetValue <int>("endereco_municipio")
                            }
                        };

                        materialApreendido.Arquivo = new Arquivo
                        {
                            Id   = reader.GetValue <int>("arquivo"),
                            Nome = reader.GetValue <string>("arquivo_nome")
                        };

                        if (materialApreendido.IsDigital == true && materialApreendido.FiscalizacaoSituacaoId == (int)eFiscalizacaoSituacao.EmAndamento)
                        {
                            materialApreendido.NumeroIUF          = null;
                            materialApreendido.DataLavratura.Data = DateTime.MinValue;
                        }
                        else
                        {
                            materialApreendido.DataLavratura.Data = reader.GetValue <DateTime>("iuf_data");
                        }
                    }
                    reader.Close();
                }

                if (materialApreendido.Id == 0)
                {
                    return(null);
                }

                #endregion

                #region Produtos

                comando = bancoDeDados.CriarComando(@"
                            select tfap.id,
                                   cfip.id id_produto,
                                   cfip.item produto,
                                   cfip.unidade,
                                   tfap.quantidade,
                                   cfid.id id_destino,
                                   cfid.destino
                            from tab_fisc_apreensao_produto tfap,
                                 cnf_fisc_infracao_produto cfip,
                                 cnf_fisc_infr_destinacao cfid
                            where tfap.apreensao = :apreensao
                                  and tfap.produto = cfip.id
                                  and tfap.destinacao = cfid.id", EsquemaBanco);
                comando.AdicionarParametroEntrada("apreensao", materialApreendido.Id, DbType.Int32);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    materialApreendido.ProdutosApreendidos = new List <ApreensaoProdutoApreendido>();
                    while (reader.Read())
                    {
                        materialApreendido.ProdutosApreendidos.Add(new ApreensaoProdutoApreendido
                        {
                            Id           = reader.GetValue <int>("id"),
                            ProdutoId    = reader.GetValue <int>("id_produto"),
                            ProdutoTexto = reader.GetValue <string>("produto"),
                            UnidadeTexto = reader.GetValue <string>("unidade"),
                            Quantidade   = reader.GetValue <decimal>("quantidade"),
                            DestinoId    = reader.GetValue <int>("id_destino"),
                            DestinoTexto = reader.GetValue <string>("destino")
                        });
                    }
                    reader.Close();
                }

                #endregion
            }

            return(materialApreendido);
        }
        public MaterialApreendido ObterAntigo(int fiscalizacaoId, BancoDeDados banco = null)
        {
            MaterialApreendido materialApreendido = new MaterialApreendido();

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                #region Material Apreendido

                Comando comando = bancoDeDados.CriarComando(@" select t.id, t.fiscalizacao, f.situacao situacao_id, t.houve_material, t.tad_gerado, t.tad_numero, t.tad_data, 
															t.serie, (select texto from lov_fiscalizacao_serie where id = t.serie) serie_texto, t.descricao, t.valor_produtos, t.depositario,  nvl(p.nome, p.razao_social) nome, 
															nvl(p.cpf, p.cnpj) cpf, t.endereco_logradouro, t.endereco_bairro, t.endereco_distrito, 
															t.endereco_estado, t.endereco_municipio, t.opiniao, t.arquivo, a.nome arquivo_nome, t.tid, f.autos 
															from tab_fisc_material_apreendido t, tab_pessoa p, tab_arquivo a, tab_fiscalizacao f where t.depositario = p.id(+) 
															and t.arquivo = a.id(+) and t.fiscalizacao = :fiscalizacao and f.id = t.fiscalizacao"                                                            , EsquemaBanco);

                comando.AdicionarParametroEntrada("fiscalizacao", fiscalizacaoId, DbType.Int32);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    if (reader.Read())
                    {
                        materialApreendido = new MaterialApreendido
                        {
                            Id                     = reader.GetValue <int>("id"),
                            FiscalizacaoId         = reader.GetValue <int>("fiscalizacao"),
                            SerieId                = reader.GetValue <int>("serie"),
                            SerieTexto             = reader.GetValue <string>("serie_texto"),
                            ValorProdutosReais     = reader.GetValue <decimal?>("valor_produtos"),
                            Descricao              = reader.GetValue <string>("descricao"),
                            Opiniao                = reader.GetValue <string>("opiniao"),
                            FiscalizacaoSituacaoId = reader.GetValue <int>("situacao_id"),
                            Tid                    = reader.GetValue <string>("tid"),
                            Depositario            = new MaterialApreendidoDepositario
                            {
                                Id = reader.GetValue <int>("depositario"),
                                NomeRazaoSocial = reader.GetValue <string>("nome"),
                                CPFCNPJ         = reader.GetValue <string>("cpf"),
                                Logradouro      = reader.GetValue <string>("endereco_logradouro"),
                                Bairro          = reader.GetValue <string>("endereco_bairro"),
                                Distrito        = reader.GetValue <string>("endereco_distrito"),
                                Estado          = reader.GetValue <int>("endereco_estado"),
                                Municipio       = reader.GetValue <int>("endereco_municipio")
                            },
                            IsDigital = reader.GetValue <bool>("tad_gerado")
                        };

                        materialApreendido.NumeroIUF = materialApreendido.IsDigital != true?reader.GetValue <string>("tad_numero") : reader.GetValue <string>("autos");

                        if (reader["tad_data"] != null && !Convert.IsDBNull(reader["tad_data"]))
                        {
                            materialApreendido.DataLavratura.Data = Convert.ToDateTime(reader["tad_data"]);
                        }
                        else
                        {
                            FiscalizacaoDa _fiscDA = new FiscalizacaoDa();
                            materialApreendido.DataLavratura = _fiscDA.ObterDataConclusao(materialApreendido.FiscalizacaoId);
                        }

                        materialApreendido.Arquivo = new Arquivo
                        {
                            Id   = reader.GetValue <int>("arquivo"),
                            Nome = reader.GetValue <string>("arquivo_nome")
                        };
                    }
                    reader.Close();
                }

                #endregion

                #region Materiais

//                comando = bancoDeDados.CriarComando(@" select tfmam.id, tfmam.material_apreendido, tfmam.tipo, lfmat.texto tipo_texto, tfmam.especificacao, tfmam.tid from tab_fisc_mater_apree_material
//					tfmam, lov_fisc_mate_apreendido_tipo lfmat where tfmam.tipo = lfmat.id and tfmam.material_apreendido = :material_apreendido ", EsquemaBanco);
//                comando.AdicionarParametroEntrada("material_apreendido", materialApreendido.Id, DbType.Int32);

//                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
//                {
//                    materialApreendido.Materiais = new List<MaterialApreendidoMaterial>();
//                    while (reader.Read())
//                    {
//                        materialApreendido.Materiais.Add(new MaterialApreendidoMaterial
//                        {
//                            Id = reader.GetValue<int>("id"),
//                            TipoId = reader.GetValue<int>("tipo"),
//                            TipoTexto = reader.GetValue<string>("tipo_texto"),
//                            Especificacao = reader.GetValue<string>("especificacao")
//                        });
//                    }
//                    reader.Close();
//                }

                #endregion
            }

            return(materialApreendido);
        }