public Boolean finalizaConfListagem(ProdutoEnderecoPicking lista)
        {
            Boolean salvou = false;

            OracleConnection connection = DataBase.novaConexao();

            OracleCommand exec = connection.CreateCommand();

            StringBuilder query = new StringBuilder();

            try
            {
                query.Append($"UPDATE TAB_LOGISTICA_REPOSICAO SET QTCONFERIDA = {lista.Qt}, DTFIMCONF = SYSDATE, DTCONFLISTA = SYSDATE WHERE NUMREPOSICAO = {lista.Numreposicao} AND CODPROD = {lista.Codprod} AND CODFILIAL = {lista.Codfilial}");
                exec.CommandText = query.ToString();
                OracleDataReader reader = exec.ExecuteReader();

                salvou = true;
                return(salvou);
            }
            catch (Exception ex)
            {
                salvou = false;

                if (connection.State == ConnectionState.Open)
                {
                    connection.Close();
                    return(salvou);
                }

                exec.Dispose();
                connection.Dispose();

                return(salvou);
            }
            finally
            {
                if (connection.State == ConnectionState.Open)
                {
                    connection.Close();
                }
                exec.Dispose();
                connection.Dispose();
            }
        }
        public ProdutoEnderecoPicking getEnderecoProdutoPicking(string produto, int filial)
        {
            OracleConnection connection = DataBase.novaConexao();

            OracleCommand exec = connection.CreateCommand();

            ProdutoEnderecoPicking produtoEnderecoPicking = new ProdutoEnderecoPicking();

            StringBuilder query = new StringBuilder();

            try
            {
                query.Append($"select en.codendereco, prod.codprod, prod.descricao, case when {produto} = prod.codauxiliar2 then prod.qtunitcx else 1 end qt, ");
                query.Append("        en.deposito, en.rua, en.predio, en.nivel, en.apto, prod.codauxiliar as ean, prod.codauxiliar2 as dun, prod.qtunitcx");
                query.Append("  from pcendereco en inner join pcprodutpicking pk on (en.codendereco = pk.codendereco and en.codfilial = pk.codfilial)");
                query.Append("                     inner join pcestendereco est on (en.codendereco = est.codendereco)");
                query.Append("                     inner join pcprodut prod on (est.codprod = prod.codprod) ");
                query.Append($"where ((prod.codprod = {produto}) or (prod.codauxiliar = {produto}) or (prod.codauxiliar2 = {produto}))");
                query.Append($"  and en.codfilial = {filial} and pk.tipo = 'V'");
                query.Append(" order by en.deposito, en.rua, case when mod(en.rua, 2) = 1 then en.predio end asc, case when mod(en.rua, 2) = 0 then en.predio end desc, en.nivel, en.apto");

                exec.CommandText = query.ToString();
                OracleDataReader reader = exec.ExecuteReader();

                ProdutoEnderecoPicking pend = new ProdutoEnderecoPicking();

                if (reader.Read())
                {
                    pend.Codendereco = reader.GetInt32(0);
                    pend.Codprod     = reader.GetInt32(1);
                    pend.Descricao   = reader.GetString(2);
                    pend.Qt          = reader.GetInt32(3);
                    pend.Deposito    = reader.GetInt32(4);
                    pend.Rua         = reader.GetInt32(5);
                    pend.Predio      = reader.GetInt32(6);
                    pend.Nivel       = reader.GetInt32(7);
                    pend.Apto        = reader.GetInt32(8);
                    pend.Ean         = reader.GetInt64(9);
                    pend.Dun         = reader.GetInt64(10);
                    pend.Qtunitcx    = reader.GetInt32(11);
                    pend.Codfilial   = filial;
                    pend.Warning     = "N";
                    pend.Erro        = "N";

                    produtoEnderecoPicking = pend;
                }
                else
                {
                    pend.Erro                = "N";
                    pend.Warning             = "S";
                    pend.MensagemErroWarning = "Produto não encontrado.";

                    produtoEnderecoPicking = pend;
                }

                connection.Close();

                return(produtoEnderecoPicking);
            }
            catch (Exception ex)
            {
                if (connection.State == ConnectionState.Open)
                {
                    ProdutoEnderecoPicking pend = new ProdutoEnderecoPicking();

                    pend.Erro = "S";
                    pend.MensagemErroWarning = ex.Message;

                    produtoEnderecoPicking = pend;

                    connection.Close();

                    return(produtoEnderecoPicking);
                }

                exec.Dispose();
                connection.Dispose();

                return(produtoEnderecoPicking);
            }
            finally
            {
                if (connection.State == ConnectionState.Open)
                {
                    connection.Close();
                }
                exec.Dispose();
                connection.Dispose();
            }
        }
        public List <ProdutoEnderecoPicking> gravaListaEndereco(List <ProdutoEnderecoPicking> lista)
        {
            OracleConnection connection = DataBase.novaConexao();

            OracleCommand exec = connection.CreateCommand();

            List <ProdutoEnderecoPicking> listaOrdenada = new List <ProdutoEnderecoPicking>();

            StringBuilder numReposicao = new StringBuilder();

            try
            {
                lista.ForEach(list =>
                {
                    StringBuilder query         = new StringBuilder();
                    ProdutoEnderecoPicking data = new ProdutoEnderecoPicking();

                    data.Numreposicao = list.Numreposicao;
                    data.Codfunc      = list.Codfunc;
                    data.Codprod      = list.Codprod;
                    data.Codfilial    = list.Codfilial;
                    data.Qt           = list.Qt;

                    query.Append($"INSERT INTO TAB_LOGISTICA_REPOSICAO (NUMREPOSICAO, CODPROD, CODFILIAL, QT, DTINICIOCONF, CODFUNCLISTA) VALUES ({data.Numreposicao}, {data.Codprod}, {data.Codfilial}, {data.Qt}, SYSDATE, {data.Codfunc})");
                    exec.CommandText        = query.ToString();
                    OracleDataReader reader = exec.ExecuteReader();
                });

                listaOrdenada = this.getListaReposicaoAberta(lista[0].Codfunc);

                return(listaOrdenada);
            }
            catch (Exception ex)
            {
                if (connection.State == ConnectionState.Open)
                {
                    ProdutoEnderecoPicking listaErro = new ProdutoEnderecoPicking();

                    listaErro.Erro = "S";
                    listaErro.MensagemErroWarning = ex.Message;

                    listaOrdenada.Add(listaErro);

                    connection.Close();
                    return(listaOrdenada);
                }

                exec.Dispose();
                connection.Dispose();
                return(listaOrdenada);
            }
            finally
            {
                if (connection.State == ConnectionState.Open)
                {
                    connection.Close();
                }
                exec.Dispose();
                connection.Dispose();
            }
        }
        public List <ProdutoEnderecoPicking> getListaReposicaoAberta(int codUsuario)
        {
            OracleConnection connection = DataBase.novaConexao();

            OracleCommand exec = connection.CreateCommand();

            List <ProdutoEnderecoPicking> listaReposicao = new List <ProdutoEnderecoPicking>();

            StringBuilder query = new StringBuilder();

            try
            {
                query.Append("select rep.codfilial, rep.numreposicao, rep.codprod, prod.descricao, prod.codauxiliar as ean, prod.codauxiliar2 as dun, prod.qtunitcx, ");
                query.Append("       pk.codendereco, en.deposito, en.rua, en.predio, en.nivel, en.apto, rep.qt");
                query.Append("  from pcprodut prod inner join tab_logistica_reposicao rep on (prod.codprod = rep.codprod)");
                query.Append("                     inner join pcprodutpicking pk on (rep.codprod = pk.codprod and rep.codfilial = pk.codfilial)");
                query.Append("                     inner join pcendereco en on(pk.codendereco = en.codendereco and rep.codfilial = en.codfilial) ");
                query.Append($"where rep.codfunclista = {codUsuario}");
                query.Append("  and rep.dtconflista is null and rep.dtcancel is null and pk.tipo = 'V' ");
                query.Append("order by decode(en.tipoender, 'AP', 'AAP'), en.deposito, en.rua, case when mod(en.rua, 2) = 1 then en.predio end asc, case when mod(en.rua, 2) = 0 then en.predio end desc, en.nivel, en.apto");


                exec.CommandText = query.ToString();
                OracleDataReader reader = exec.ExecuteReader();

                while (reader.Read())
                {
                    ProdutoEnderecoPicking lista = new ProdutoEnderecoPicking();

                    lista.Codfilial    = reader.GetInt32(0);
                    lista.Numreposicao = reader.GetInt32(1);
                    lista.Codprod      = reader.GetInt32(2);
                    lista.Descricao    = reader.GetString(3);
                    lista.Ean          = reader.GetInt64(4);
                    lista.Dun          = reader.GetInt64(5);
                    lista.Qtunitcx     = reader.GetInt32(6);
                    lista.Codendereco  = reader.GetInt32(7);
                    lista.Deposito     = reader.GetInt32(8);
                    lista.Rua          = reader.GetInt32(9);
                    lista.Predio       = reader.GetInt32(10);
                    lista.Nivel        = reader.GetInt32(11);
                    lista.Apto         = reader.GetInt32(12);
                    lista.Qt           = reader.GetInt32(13);
                    lista.Warning      = "N";
                    lista.Erro         = "N";

                    listaReposicao.Add(lista);
                }

                connection.Close();

                return(listaReposicao);
            }
            catch (Exception ex)
            {
                if (connection.State == ConnectionState.Open)
                {
                    ProdutoEnderecoPicking lista = new ProdutoEnderecoPicking();

                    lista.Erro = "S";
                    lista.MensagemErroWarning = ex.Message;

                    listaReposicao.Add(lista);


                    connection.Close();
                    return(listaReposicao);
                }

                exec.Dispose();
                connection.Dispose();

                return(listaReposicao);
            }
            finally
            {
                if (connection.State == ConnectionState.Open)
                {
                    connection.Close();
                }
                exec.Dispose();
                connection.Dispose();
            }
        }