public DataTable getProduto(string produto, int filial)
        {
            OracleConnection connection = DataBase.novaConexao();

            OracleCommand exec = connection.CreateCommand();

            DataTable produtoColetor = new DataTable();

            ProdutoColetor p = new ProdutoColetor();

            StringBuilder query = new StringBuilder();

            try
            {
                query.Append("SELECT TO_NUMBER(PF.CODFILIAL) AS CODFILIAL, P.CODPROD, P.DESCRICAO || ' - ' || P.EMBALAGEM as DESCRICAO, ");
                query.Append("       P.EMBALAGEM, P.UNIDADE, P.QTUNIT AS QTUNIT, CODAUXILIAR AS EAN, P.ALTURAM3 AS ALTUN, P.LARGURAM3 AS LARGUN, P.COMPRIMENTOM3 AS COMPUN, P.PESOBRUTO AS PESOUN, ");
                query.Append("       P.EMBALAGEMMASTER, P.UNIDADEMASTER, P.QTUNITCX AS QTCX, CODAUXILIAR2 AS DUN, P.ALTURAARM AS ALT, P.LARGURAARM AS LARG, P.COMPRIMENTOARM AS COMP, P.PESOBRUTOMASTER AS PESO, ");
                query.Append("       NVL(PF.LASTROPAL, 0) AS LASTRO, NVL(PF.ALTURAPAL, 0) AS CAMADA, PF.QTTOTPAL AS TOTAL, PK.CAPACIDADE AS CAPACIDADE, PK.PONTOREPOSICAO AS REPOSICAO, PF.PRAZOVAL AS PRAZOVALIDADE, PF.PERCTOLERANCIAVAL AS SHELFLIFE");
                query.Append("  FROM PCPRODUT P INNER JOIN PCPRODFILIAL PF ON(P.CODPROD = PF.CODPROD) LEFT OUTER JOIN PCPRODUTPICKING PK ON (P.CODPROD = PK.CODPROD AND PF.CODFILIAL = PK.CODFILIAL)");
                query.Append($" WHERE ((P.CODPROD = {produto}) OR (P.CODAUXILIAR = {produto}) OR (P.CODAUXILIAR2 = {produto})) ");
                query.Append($"   AND PF.CODFILIAL = {filial}");

                exec.CommandText = query.ToString();
                OracleDataAdapter oda = new OracleDataAdapter(exec);
                oda.SelectCommand = exec;
                oda.Fill(produtoColetor);

                return(produtoColetor);
            }
            catch (Exception ex)
            {
                if (connection.State == ConnectionState.Open)
                {
                    p.Erro = "S";
                    p.MensagemErroWarning = ex.Message;

                    connection.Close();

                    return(null);
                }

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

                return(null);
            }
            finally
            {
                if (connection.State == ConnectionState.Open)
                {
                    connection.Close();
                }
                exec.Dispose();
                connection.Dispose();
            }
        }
        public Boolean editaDados(ProdutoColetor prod)
        {
            Boolean salvou = false;

            OracleConnection connection = DataBase.novaConexao();
            OracleCommand    exec       = connection.CreateCommand();

            StringBuilder pcprodut        = new StringBuilder();
            StringBuilder pcprodfilial    = new StringBuilder();
            StringBuilder pcprodutpicking = new StringBuilder();

            try
            {
                OracleTransaction transacao = connection.BeginTransaction();
                exec.Transaction = transacao;

                //Elimina valores que podem ser nulos
                //PCPRODUT - Unidade
                if (prod.Ean == null)
                {
                    prod.Ean = 0;
                }
                if (prod.AltUn == null)
                {
                    prod.AltUn = 0;
                }
                if (prod.LargUn == null)
                {
                    prod.LargUn = 0;
                }
                if (prod.CompUn == null)
                {
                    prod.CompUn = 0;
                }
                if (prod.PesoUn == null)
                {
                    prod.PesoUn = 0;
                }
                //PCPRODUT - Master
                if (prod.Embalagemmaster == null)
                {
                    prod.Embalagemmaster = "";
                }
                if (prod.Dun == null)
                {
                    prod.Dun = 0;
                }
                if (prod.Alt == null)
                {
                    prod.Alt = 0;
                }
                if (prod.Larg == null)
                {
                    prod.Larg = 0;
                }
                if (prod.Comp == null)
                {
                    prod.Comp = 0;
                }
                if (prod.Peso == null)
                {
                    prod.Peso = 0;
                }
                //PCPRODFILIAL - Norma Palete
                if (prod.Lastro == null)
                {
                    prod.Lastro = 0;
                }
                if (prod.Camada == null)
                {
                    prod.Camada = 0;
                }
                if (prod.Total == null)
                {
                    prod.Total = 0;
                }
                //PCPRODFILIAL - Validade
                if (prod.PrazoValidade == null)
                {
                    prod.PrazoValidade = 0;
                }
                if (prod.ShelfLife == null)
                {
                    prod.ShelfLife = 0;
                }
                //PCPRODUTOPICKING
                if (prod.Capacidade == null)
                {
                    prod.Capacidade = 0;
                }
                if (prod.Reposicao == null)
                {
                    prod.Reposicao = 0;
                }

                //CALCULA VOL. MASTER
                decimal volumeMaster = ((Convert.ToDecimal(prod.Alt) * Convert.ToDecimal(prod.Larg) * Convert.ToDecimal(prod.Comp)) / 1000000);
                decimal volumeUnit   = ((Convert.ToDecimal(prod.AltUn) * Convert.ToDecimal(prod.LargUn) * Convert.ToDecimal(prod.CompUn)) / 1000000);

                //UPDATE PCPRODUT
                pcprodut.Append($"UPDATE PCPRODUT SET CODAUXILIAR = {prod.Ean}, CODAUXILIAR2 = {prod.Dun}, ALTURAARM = {prod.Alt.ToString().Replace(",", ".")}, LARGURAARM = {prod.Larg.ToString().Replace(",", ".")}, ");
                pcprodut.Append($"COMPRIMENTOARM = {prod.Comp.ToString().Replace(",", ".")}, VOLUMEARM = {volumeMaster.ToString().Replace(",", ".")}, PESOLIQMASTER = {prod.Peso.ToString().Replace(",", ".")}, PESOBRUTOMASTER = {prod.Peso.ToString().Replace(",", ".")}, ");
                pcprodut.Append($"VOLUME = {volumeUnit.ToString().Replace(",", ".")}, PESOLIQ = ROUND({prod.PesoUn.ToString().Replace(",", ".")},4), PESOBRUTO = ROUND({prod.PesoUn.ToString().Replace(",", ".")},4), ");
                pcprodut.Append($"ALTURAM3 = {prod.AltUn.ToString().Replace(",", ".")}, LARGURAM3 = {prod.LargUn.ToString().Replace(",", ".")}, COMPRIMENTOM3 = {prod.CompUn.ToString().Replace(",", ".")}");
                pcprodut.Append($" WHERE CODPROD = {prod.Codprod}");

                exec.CommandText = pcprodut.ToString();
                OracleDataReader produt = exec.ExecuteReader();

                //UPDATE PCPRODFILIAL
                pcprodfilial.Append($"UPDATE PCPRODFILIAL SET LASTROPAL = {prod.Lastro}, ALTURAPAL = {prod.Camada}, QTTOTPAL = ({prod.Total}), PRAZOVAL = {prod.PrazoValidade}, PERCTOLERANCIAVAL = {prod.ShelfLife}");
                pcprodfilial.Append($" WHERE CODPROD = {prod.Codprod} AND CODFILIAL = {prod.Codfilial}");

                exec.CommandText = pcprodfilial.ToString();
                OracleDataReader prodfilial = exec.ExecuteReader();

                //UPDATE PCPRODUTOPICKING
                pcprodutpicking.Append($"UPDATE PCPRODUTPICKING SET CAPACIDADE = {prod.Capacidade}, PONTOREPOSICAO = {prod.Reposicao}");
                pcprodutpicking.Append($" WHERE CODPROD = {prod.Codprod} AND CODFILIAL = {prod.Codfilial}");

                exec.CommandText = pcprodutpicking.ToString();
                OracleDataReader produtpicking = exec.ExecuteReader();

                salvou = true;

                transacao.Commit();
                connection.Close();

                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();
            }
        }