/// <summary>
        /// Preenche um objeto List com informações sobre a proposta que está sendo trabalhada.
        /// </summary>
        /// <returns>Objeto List do tipo String com informações da atual proposta na base de dados mobile.</returns>
        /// <remarks>
        ///            O list contém as seguintes informações
        ///            list.Add(dr["CodProp"].ToString());
        ///            list.Add(dr["NumProp"].ToString());
        ///            list.Add(dr["nomeCLIENTE"].ToString());
        ///            list.Add(dr["qtdPECAS"].ToString());
        ///            list.Add(dr["qtdITENS"].ToString());
        /// </remarks>
        public List <String> fillInformacoesProposta()
        {
            List <String> list = new List <String>();

            sql01 = new StringBuilder();
            sql01.Append("SELECT PROP.codigoPROPOSTA AS CodProp, PROP.numeroPROPOSTA as NumProp, PROP.razaoclientePROPOSTA AS nomeCLIENTE, ");
            sql01.Append("SUM(ITEMPROP.quantidadeITEMPROPOSTA) AS qtdPECAS, ");
            sql01.Append("COUNT(*) AS qtdITENS,PROP.volumesPROPOSTA AS qtdVOLUMES ");
            sql01.Append("FROM tb0001_Propostas AS PROP ");
            sql01.Append("INNER JOIN tb0002_ItensProposta AS ITEMPROP ON PROP.codigoPROPOSTA = ITEMPROP.propostaITEMPROPOSTA ");
            sql01.Append("GROUP BY PROP.codigoPROPOSTA, PROP.numeroPROPOSTA, PROP.razaoclientePROPOSTA,PROP.volumesPROPOSTA");
            sql01.ToString();

            SqlCeDataReader dr = CeSqlServerConn.fillDataReaderCe(sql01.ToString());

            if ((dr.FieldCount > 0))
            {
                while ((dr.Read()))
                {
                    list.Add(dr["CodProp"].ToString());
                    list.Add(dr["NumProp"].ToString());
                    list.Add(dr["nomeCLIENTE"].ToString());
                    list.Add(dr["qtdPECAS"].ToString());
                    list.Add(dr["qtdITENS"].ToString());
                    list.Add(dr["qtdVOLUMES"].ToString());
                }
            }

            SqlServerConn.closeConn();

            return(list);
        }
        /// <summary>
        /// Recupera a proposta TOP 1 e devolve um objeto do tipo Proposta com as informações resultantes.
        /// </summary>
        /// <returns>Objeto do tipo Proposta</returns>
        public Proposta fillTop1PropostaServidor()
        {
            sql01 = new StringBuilder();
            sql01.Append("SELECT TOP (1) codigoPROPOSTA,numeroPROPOSTA,dataLIBERACAOPROPOSTA,");
            sql01.Append("clientePROPOSTA,razaoEMPRESA,volumesPROPOSTA,codigoPICKINGMOBILE,isinterrompidoPICKINGMOBILE");
            sql01.Append(" FROM vwMobile_tb1601_Proposta ");
            //sql01.Append(" ORDER BY  Prioridade ASC,dataLIBERACAOPROPOSTA ASC ");

            SqlDataReader dr = SqlServerConn.fillDataReader(sql01.ToString());

            while ((dr.Read()))
            {
                objProposta = new Proposta(Convert.ToInt64(dr["codigoPROPOSTA"]), (string)dr["numeroPROPOSTA"], (string)dr["dataLIBERACAOPROPOSTA"],
                                           Convert.ToInt32(dr["clientePROPOSTA"]), (string)dr["razaoEMPRESA"], Convert.ToInt32(dr["volumesPROPOSTA"]), Convert.ToInt32(dr["codigoPICKINGMOBILE"]), Convert.ToBoolean(dr["isinterrompidoPICKINGMOBILE"]));


                if (objProposta.IsInterrompido)
                {
                    objProposta.IsInterrompido = false;
                }
            }

            dr.Close();
            SqlServerConn.closeConn();
            return(objProposta);
        }
        /// <summary>
        /// Preenche um objeto do tipo Proposta com todas as suas informações inclusive os itens e detalhes sobre os mesmos
        /// </summary>
        /// <returns>Objeto do tipo Proposta</returns>
        public Proposta fillProposta()
        {
            Proposta objProposta = null;

            List <ProdutoProposta> listProd = new List <ProdutoProposta>();

            sql01 = new StringBuilder();

            sql01.Append(" SELECT TB_PROP.codigoPROPOSTA, TB_PROP.numeroPROPOSTA, TB_PROP.dataliberacaoPROPOSTA,TB_PROP.clientePROPOSTA, TB_PROP.razaoclientePROPOSTA,TB_PROP.volumesPROPOSTA,TB_PROP.codigopickingmobilePROPOSTA");
            sql01.Append(" TB_ITEMPROPOP.codigoITEMPROPOSTA, TB_ITEMPROPOP.propostaITEMPROPOSTA, TB_ITEMPROPOP.quantidadeITEMPROPOSTA, TB_ITEMPROPOP.statusseparadoITEMPROPOSTA,");
            sql01.Append(" TB_ITEMPROPOP.lotereservaITEMPROPOSTA, TB_ITEMPROPOP.localloteITEMPROPOSTA, TB_ITEMPROPOP.codigoprodutoITEMPROPOSTA,");
            sql01.Append(" TB_PROD.ean13PRODUTO, TB_PROD.partnumberPRODUTO,TB_PROD.descricaoPRODUTO, TB_PROD.identificacaolotePRODUTO, TB_PROD.codigolotePRODUTO, TB_PROD.codigolocalPRODUTO,");
            sql01.Append(" TB_PROD.nomelocalPRODUTO");
            sql01.Append(" FROM   tb0001_Propostas AS TB_PROP ");
            sql01.Append(" INNER JOIN tb0002_ItensProposta AS TB_ITEMPROPOP ON TB_PROP.codigoPROPOSTA = TB_ITEMPROPOP.propostaITEMPROPOSTA");
            sql01.Append(" INNER JOIN tb0003_Produtos AS TB_PROD ON TB_ITEMPROPOP.codigoprodutoITEMPROPOSTA = TB_PROD.codigoPRODUTO");
            sql01.Append(" WHERE TB_ITEMPROPOP.statusseparadoITEMPROPOSTA = 0");
            sql01.Append(" ORDER BY TB_PROD.nomelocalPRODUTO ASC");

            SqlCeDataReader dr = CeSqlServerConn.fillDataReaderCe(sql01.ToString());

            int i = 0;

            if ((dr != null))
            {
                while ((dr.Read()))
                {
                    i++;
                    if (i == 1)
                    {
                        int statusOrdemSeparacao = Convert.ToInt32(dr["ordemseparacaoimpressaPROPOSTA"]);
                        objProposta = new Proposta(Convert.ToInt64(dr["codigoPROPOSTA"]), (string)dr["numeroPROPOSTA"], (string)dr["dataLIBERACAOPROPOSTA"],
                                                   Convert.ToInt32(dr["clientePROPOSTA"]), (string)dr["razaoclientePROPOSTA"], Convert.ToInt32(dr["volumesPROPOSTA"]), Convert.ToInt32(dr["codigopickingmobilePROPOSTA"]));
                    }

                    int statusSeparadoItem = Convert.ToInt32(dr["statusseparadoITEMPROPOSTA"]);

                    ProdutoProposta objProdProp = new ProdutoProposta(Convert.ToInt32(dr["codigoITEMPROPOSTA"]),
                                                                      Convert.ToInt32(objProposta.Codigo),
                                                                      Convert.ToDouble(dr["quantidadeITEMPROPOSTA"]),
                                                                      (ProdutoProposta.statusSeparado)statusSeparadoItem,
                                                                      Convert.ToInt32(dr["lotereservaITEMPROPOSTA"]),
                                                                      Convert.ToInt32(dr["codigoprodutoITEMPROPOSTA"]),
                                                                      (string)dr["ean13PRODUTO"],
                                                                      (string)dr["partnumberPRODUTO"],
                                                                      (string)dr["descricaoPRODUTO"],
                                                                      (string)dr["nomelocalPRODUTO"],
                                                                      Convert.ToInt32(dr["codigolotePRODUTO"]),
                                                                      (string)dr["identificacaolotePRODUTO"]);

                    listProd.Add(objProdProp);
                }

                objProposta = new Proposta(objProposta, listProd);
            }

            SqlServerConn.closeConn();

            return(objProposta);
        }
예제 #4
0
        /// <summary>
        /// Preenche um objeto list com objetos da classe Produto
        /// </summary>
        /// <param name="codigoProposta"></param>
        /// <returns>Lista de Produtos</returns>
        public IEnumerable <Produto> fillListProduto(Int32 codigoProposta)
        {
            Produto        objProd     = new Produto();
            List <Produto> listProduto = new List <Produto>();

            try
            {
                sql01 = new StringBuilder();
                sql01.Append("SELECT codigoPRODUTO,partnumberPRODUTO,nomePRODUTO,ean13PRODUTO,codigolotePRODUTO,identificacaolotePRODUTO,dbo.fn1211_LocaisLoteProduto(codigoPRODUTO,codigolotePRODUTO) AS nomelocalPRODUTO,pesobrutoPRODUTO");
                sql01.AppendFormat(" FROM dbo.fn0003_informacoesProdutos({0})", codigoProposta);
                sql01.Append(" GROUP BY codigoPRODUTO,partnumberPRODUTO,nomePRODUTO,ean13PRODUTO,codigolotePRODUTO,identificacaolotePRODUTO,dbo.fn1211_LocaisLoteProduto(codigoPRODUTO,codigolotePRODUTO),pesobrutoPRODUTO");
                sql01.Append(" ORDER BY nomelocalPRODUTO ASC");

                SqlDataReader dr = SqlServerConn.fillDataReader(sql01.ToString());

                while ((dr.Read()))
                {
                    objProd = new Produto(Convert.ToInt32(dr["codigoPRODUTO"]),
                                          (String)dr["ean13PRODUTO"],
                                          (String)dr["partnumberPRODUTO"],
                                          (String)dr["nomePRODUTO"],
                                          (String)dr["nomelocalPRODUTO"],
                                          Convert.ToInt64(dr["codigolotePRODUTO"]),
                                          (String)dr["identificacaolotePRODUTO"],
                                          Convert.ToDouble(dr["pesobrutoPRODUTO"])
                                          );

                    //Carrega a lista de itens que será retornada ao fim do procedimento.
                    listProduto.Add(objProd);
                }

                if (listProduto == null || listProduto.Count == 0)
                {
                    throw new TitaniumColector.Classes.Exceptions.SqlQueryExceptions("Query não retornou Valor.");
                }

                dr.Close();
                SqlServerConn.closeConn();

                return(listProduto);
            }
            catch (SqlQueryExceptions queryEx)
            {
                SqlServerConn.closeConn();
                StringBuilder sb = new StringBuilder();
                sb.AppendFormat("Não foi possível obter informações sobre a proposta {0}", codigoProposta);
                sb.Append("\nError :" + queryEx.Message);
                sb.Append("\nFavor contate o administrador do sistema.");
                MainConfig.errorMessage(sb.ToString(), "Carga Base Mobile.");
                return(listProduto = null);
            }
            catch (Exception)
            {
                throw;
            }
        }
예제 #5
0
        public List <EmbalagemProduto> cargaEmbalagensProduto(int codigoProposta)
        {
            sql01 = new StringBuilder();
            List <EmbalagemProduto> listaEmbalagens = new List <EmbalagemProduto>();

            try
            {
                sql01.Append(" SELECT codigoEMBALAGEMPRODUTO,COALESCE(nomeEMBALAGEMPRODUTO,'ND') AS nomeEMBALAGEMPRODUTO,produtoEMBALAGEMPRODUTO,quantidadeEMBALAGEMPRODUTO,padraoEMBALAGEMPRODUTO,COALESCE(embalagemEMBALAGEMPRODUTO,0) AS embalagemEMBALAGEMPRODUTO,COALESCE(codigobarrasEMBALAGEMPRODUTO,'0000000000000') AS codigobarrasEMBALAGEMPRODUTO ");
                sql01.Append(" FROM tb0504_Embalagens_Produtos");
                sql01.Append(" INNER JOIN tb0501_Produtos ON codigoPRODUTO = produtoEMBALAGEMPRODUTO");
                sql01.Append(" WHERE produtoEMBALAGEMPRODUTO IN(");
                sql01.Append("						                SELECT produtoRESERVA AS codigoPRODUTO");
                sql01.Append("						                FROM tb1206_Reservas (NOLOCK)");
                sql01.Append("						                INNER JOIN tb1602_Itens_Proposta (NOLOCK) ON codigoITEMPROPOSTA = docRESERVA");
                sql01.Append("						                INNER JOIN tb0501_Produtos (NOLOCK) ON produtoITEMPROPOSTA = codigoPRODUTO");
                sql01.AppendFormat("						        WHERE propostaITEMPROPOSTA = {0}", codigoProposta);
                sql01.Append("						                AND tipodocRESERVA = 1602 ");
                sql01.Append("						                AND statusITEMPROPOSTA = 3");
                sql01.Append("						                AND separadoITEMPROPOSTA = 0");
                sql01.Append("						                GROUP BY produtoRESERVA");
                sql01.Append("                                 )");
                sql01.Append(" AND lixeiraPRODUTO = 0");
                sql01.Append(" ORDER BY produtoEMBALAGEMPRODUTO");

                SqlDataReader dr = SqlServerConn.fillDataReader(sql01.ToString());

                while ((dr.Read()))
                {
                    {
                        embalagem = new EmbalagemProduto(Convert.ToInt32(dr["codigoEMBALAGEMPRODUTO"]), (string)dr["nomeEMBALAGEMPRODUTO"], (EmbalagemProduto.PadraoEmbalagem)dr["padraoEMBALAGEMPRODUTO"]
                                                         , Convert.ToInt32(dr["produtoEMBALAGEMPRODUTO"]), Convert.ToDouble(dr["quantidadeEMBALAGEMPRODUTO"])
                                                         , Convert.ToInt32(dr["embalagemEMBALAGEMPRODUTO"])
                                                         , (string)dr["codigobarrasEMBALAGEMPRODUTO"]);

                        listaEmbalagens.Add(embalagem);
                    }
                }

                dr.Close();
                SqlServerConn.closeConn();

                if (listaEmbalagens.Count == 0)
                {
                    throw new SqlQueryExceptions("Não foi possível recuperar informações sobre embalagens para esta proposta :  " + codigoProposta);
                }

                embalagem = null;
                return(listaEmbalagens);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #6
0
        public void registrarAcesso(Usuario.statusLogin tipodeAcao)
        {
            Int64 retorno = 0;

            this.StatusLogin = tipodeAcao;

            Sql01 = new StringBuilder();

            switch (tipodeAcao)
            {
            case statusLogin.LOGADO:
                Sql01.Length = 0;
                //Insere o acesso e inicia a transação
                Sql01.Append("INSERT INTO tb0207_Acessos (usuarioACESSO, maquinaACESSO)");
                Sql01.Append(" VALUES (" + this.Codigo + ",'" + MainConfig.HostName + "')");
                SqlServerConn.execCommandSql(Sql01.ToString());
                break;

            case statusLogin.NAOLOGADO:
                Sql01.Length = 0;
                Sql01.Append("UPDATE tb0207_Acessos");
                Sql01.Append(" SET encerradoACESSO = 1,horaencerramentoACESSO = getdate(),duracaoACESSO = DATEDIFF(MINUTE,horaaberturaACESSO,getDATE())");
                Sql01.AppendFormat(" WHERE codigoACESSO = {0}", MainConfig.UserOn.CodigoAcesso);
                SqlServerConn.execCommandSql(Sql01.ToString());
                //return 0;
                break;

            default:
                break;
            }

            //Recupera o código do acesso
            Sql01.Length = 0;
            Sql01.Append("SELECT MAX(codigoACESSO) AS novoACESSO");
            Sql01.Append(" FROM tb0207_Acessos");
            System.Data.SqlClient.SqlDataReader dr = SqlServerConn.fillDataReader(Sql01.ToString());
            if ((dr.FieldCount > 0))
            {
                while ((dr.Read()))
                {
                    retorno = (Int32)dr["novoACESSO"];
                }
            }

            SqlServerConn.closeConn();
            dr.Close();

            this.CodigoAcesso = retorno;
            //return retorno;
        }
        /// <summary>
        ///  Efetua carga na base mobile tb0001_Propostas com informações sobre a
        ///  proposta top1 atualmente liberada no picking
        /// </summary>
        /// <param name="cat">Gatinho do método. </param>
        /// <remarks>Após realizar a consulta realiza a carga dos dados  na base mobile tabela TB0001_Propostas</remarks>
        public void insertTop1PropostaServidor(String cat)
        {
            sql01 = new StringBuilder();
            sql01.Append("SELECT codigoPROPOSTA,numeroPROPOSTA,dataLIBERACAOPROPOSTA,");
            sql01.Append("clientePROPOSTA,razaoEMPRESA,volumesPROPOSTA");
            sql01.Append(" FROM vwMobile_tb1601_Proposta ");

            SqlDataReader dr = SqlServerConn.fillDataReader(sql01.ToString());

            if ((dr.FieldCount > 0))
            {
                while ((dr.Read()))
                {
                    this.insertProposta(Convert.ToInt64(dr["codigoPROPOSTA"]), (string)dr["numeroPROPOSTA"], (string)dr["dataLIBERACAOPROPOSTA"],
                                        Convert.ToInt32(dr["clientePROPOSTA"]), (string)dr["razaoEMPRESA"],
                                        Convert.ToInt32(dr["volumesPROPOSTA"]),
                                        MainConfig.CodigoUsuarioLogado);
                }
            }

            dr.Close();
            SqlServerConn.closeConn();
        }
예제 #8
0
        public String recuperarLocalEstoqueProduto(int produto, int lote)
        {
            string nomesLocais = "";

            sql01 = new StringBuilder();
            sql01.Append(" SELECT nomeLOCAL ");
            sql01.Append(" FROM tb1205_Lotes ");
            sql01.Append(" INNER JOIN tb1212_Lotes_Locais ON codigoLOTE = loteLOTELOCAL ");
            sql01.Append(" INNER JOIN tb1211_Locais ON codigoLOCAL = localLOTELOCAL ");
            sql01.AppendFormat(" WHERE produtoLOTE ={0} AND codigoLOTE = {1} ", produto, lote);

            SqlDataReader dr = SqlServerConn.fillDataReader(sql01.ToString());

            while ((dr.Read()))
            {
                nomesLocais += dr["nomeLOCAL"];
            }

            dr.Close();
            SqlServerConn.closeConn();

            return(nomesLocais);
        }
예제 #9
0
        /// <summary>
        ///  Carrega uma List com objetos da classe ItemProposta preenchida com dados sobre os itens de uma determinada Proposta
        /// </summary>
        /// <param name="codigoProposta">Código da proposta da qual serão recuperados os itens.</param>
        /// <returns>List do tipo ProdutoProposta </returns>
        public IEnumerable <ProdutoProposta> fillListItensProposta(int codigoProposta)
        {
            Produto objItemProposta = null;

            List <ProdutoProposta> listItensProposta = new List <ProdutoProposta>();

            try
            {
                sql01 = new StringBuilder();

                sql01.Append(" SELECT codigoITEMPROPOSTA,propostaITEMPROPOSTA,");
                sql01.Append(" produtoRESERVA AS codigoPRODUTO,");
                sql01.Append(" nomePRODUTO,partnumberPRODUTO,ean13PRODUTO,");
                sql01.Append(" SUM(quantidadeRESERVA) AS QtdITEMRESERVA,pesobrutoPRODUTO");
                sql01.Append(" ,dbo.fn1211_LotesReservaProduto(produtoRESERVA,propostaITEMPROPOSTA) AS lotesRESERVA");
                sql01.Append(" ,dbo.fn1211_LocaisLoteProduto(produtoRESERVA,dbo.fn1211_LotesReservaProduto(produtoRESERVA,propostaITEMPROPOSTA)) AS nomesLocaisLOTES ");
                sql01.Append(" FROM tb1206_Reservas (NOLOCK) ");
                sql01.Append(" INNER JOIN tb1602_Itens_Proposta (NOLOCK) ON codigoITEMPROPOSTA = docRESERVA ");
                sql01.Append(" INNER JOIN tb0501_Produtos (NOLOCK) ON produtoITEMPROPOSTA = codigoPRODUTO  ");
                sql01.AppendFormat(" WHERE propostaITEMPROPOSTA = {0} ", codigoProposta);
                sql01.Append(" AND tipodocRESERVA = 1602");
                sql01.Append(" AND statusITEMPROPOSTA = 3");
                sql01.Append(" AND separadoITEMPROPOSTA = 0");
                sql01.Append(" GROUP BY codigoITEMPROPOSTA,propostaITEMPROPOSTA,ean13PRODUTO,produtoRESERVA,nomePRODUTO,partnumberPRODUTO,pesobrutoPRODUTO");
                sql01.Append(" ORDER BY codigoPRODUTO");

                SqlDataReader dr = SqlServerConn.fillDataReader(sql01.ToString());

                while ((dr.Read()))
                {
                    {
                        objItemProposta = new ProdutoProposta(Convert.ToInt32(dr["codigoITEMPROPOSTA"]),
                                                              Convert.ToInt32(dr["propostaITEMPROPOSTA"]),
                                                              Convert.ToDouble(dr["QtdITEMRESERVA"]),
                                                              ProdutoProposta.statusSeparado.NAOSEPARADO,
                                                              (string)dr["lotesRESERVA"],
                                                              (string)dr["nomesLocaisLOTES"],
                                                              Convert.ToInt32(dr["codigoPRODUTO"]),
                                                              (string)dr["ean13PRODUTO"],
                                                              (string)dr["partnumberPRODUTO"],
                                                              (string)(dr["nomePRODUTO"]),
                                                              Convert.ToDouble(dr["pesobrutoPRODUTO"]));

                        //Carrega a lista de itens que será retornada ao fim do procedimento.
                        listItensProposta.Add((ProdutoProposta)objItemProposta);
                    }
                }

                dr.Close();
                SqlServerConn.closeConn();

                if (listItensProposta.Count == 0)
                {
                    throw new SqlQueryExceptions("MÉTODO : fillListItensProposta()\nMOTIVO: Não foi possível recuperar informações sobre os itens da proposta " + codigoProposta);
                }

                return(listItensProposta);
            }
            catch (SqlException ex)
            {
                throw new Exception("fillListItensProposta()\n-->" + ex.Message);
            }
        }
예제 #10
0
        /// <summary>
        ///  Carrega uma List com objetos da classe ItemProposta preenchida com dados sobre os itens de uma determinada Proposta
        /// </summary>
        /// <param name="codigoProposta">Código da proposta da qual serão recuperados os itens.</param>
        /// <returns>List do tipo ItemProposta </returns>
        public IEnumerable <ProdutoProposta> fillListItensProposta(int codigoProposta)
        {
            ProdutoProposta objItemProposta = null;

            List <ProdutoProposta> listItensProposta = new List <ProdutoProposta>();

            try
            {
                sql01 = new StringBuilder();

                ///ALTERADO EM CRITERIO DE TESTES PARA RETORNAR MAIS INFORMAÇOES SOBRE O PRODUTO DA PROPOSTA
                ///
                //sql01.Append("SELECT codigoITEMPROPOSTA,propostaITEMPROPOSTA,produtoRESERVA AS codigoPRODUTO,nomePRODUTO,partnumberPRODUTO,");
                //sql01.Append("ean13PRODUTO,SUM(quantidadeRESERVA) AS QTD");
                //sql01.Append(" FROM tb1206_Reservas (NOLOCK) ");
                //sql01.Append("INNER JOIN tb1602_Itens_Proposta (NOLOCK) ON codigoITEMPROPOSTA = docRESERVA ");
                //sql01.Append("INNER JOIN tb0501_Produtos (NOLOCK) ON produtoITEMPROPOSTA = codigoPRODUTO ");
                //sql01.Append("LEFT JOIN tb1212_Lotes_Locais (NOLOCK) ON loteRESERVA = loteLOTELOCAL ");
                //sql01.Append("LEFT JOIN tb1211_Locais ON codigoLOCAL = localLOTELOCAL ");
                //sql01.AppendFormat("WHERE propostaITEMPROPOSTA = {0} ", codigoProposta);
                //sql01.Append("AND tipodocRESERVA = 1602 ");
                //sql01.Append("AND statusITEMPROPOSTA = 3 ");
                //sql01.Append("AND separadoITEMPROPOSTA = 0  ");
                //sql01.Append("GROUP BY codigoITEMPROPOSTA,propostaITEMPROPOSTA,ean13PRODUTO,produtoRESERVA,produtoITEMPROPOSTA,");
                //sql01.Append("nomePRODUTO,partnumberPRODUTO");

                sql01.Append(" SELECT codigoITEMPROPOSTA,propostaITEMPROPOSTA,");
                sql01.Append(" produtoRESERVA AS codigoPRODUTO,");
                sql01.Append(" nomePRODUTO,partnumberPRODUTO,ean13PRODUTO,");
                sql01.Append(" SUM(quantidadeRESERVA) AS QTD,pesobrutoPRODUTO,SUM(quantidadeRESERVA) * pesobrutoPRODUTO AS pesobrutototalPRODUTO");
                sql01.Append(" ,dbo.fn1211_LotesReservaProduto(produtoRESERVA,propostaITEMPROPOSTA) AS lotesRESERVA,");
                sql01.Append(" DBO.fn1211_LocaisLoteProduto(produtoRESERVA,dbo.fn1211_LotesReservaProduto(produtoRESERVA,propostaITEMPROPOSTA)) AS nomesLocaisLOTES ");
                sql01.Append(" FROM tb1206_Reservas (NOLOCK) ");
                sql01.Append(" INNER JOIN tb1602_Itens_Proposta (NOLOCK) ON codigoITEMPROPOSTA = docRESERVA ");
                sql01.Append(" INNER JOIN tb0501_Produtos (NOLOCK) ON produtoITEMPROPOSTA = codigoPRODUTO  ");
                sql01.AppendFormat(" WHERE propostaITEMPROPOSTA = {0} ", codigoProposta);
                sql01.Append(" AND tipodocRESERVA = 1602");
                sql01.Append(" AND statusITEMPROPOSTA = 3");
                sql01.Append(" AND separadoITEMPROPOSTA = 0");
                sql01.Append(" GROUP BY codigoITEMPROPOSTA,propostaITEMPROPOSTA,ean13PRODUTO,produtoRESERVA,nomePRODUTO,partnumberPRODUTO,pesobrutoPRODUTO");
                sql01.Append(" ORDER BY codigoPRODUTO");

                SqlDataReader dr = SqlServerConn.fillDataReader(sql01.ToString());

                while ((dr.Read()))
                {
                    {
                        objItemProposta = new ProdutoProposta(Convert.ToInt32(dr["codigoITEMPROPOSTA"]),
                                                              Convert.ToInt32(dr["propostaITEMPROPOSTA"]),
                                                              Convert.ToDouble(dr["QTD"]),
                                                              ProdutoProposta.statusSeparado.NAOSEPARADO,
                                                              (string)dr["lotesRESERVA"],
                                                              (string)dr["nomesLocaisLOTES"],
                                                              Convert.ToInt32(dr["codigoPRODUTO"]),
                                                              (string)dr["ean13PRODUTO"],
                                                              (string)dr["partnumberPRODUTO"],
                                                              (string)(dr["nomePRODUTO"]),
                                                              Convert.ToDouble(dr["pesobrutoPRODUTO"]));

                        //Carrega a lista de itens que será retornada ao fim do procedimento.
                        listItensProposta.Add(objItemProposta);
                    }
                }

                dr.Close();
                SqlServerConn.closeConn();

                if (listItensProposta.Count == 0)
                {
                    throw new SqlQueryExceptions("Não foi possível recuperar informações sobre os itens da proposta " + codigoProposta);
                }

                return(listItensProposta);
            }
            catch (SqlQueryExceptions ex)
            {
                throw ex;
            }
            catch (SqlException ex)
            {
                throw ex;
            }
        }