/// <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); }
/// <summary> /// /// </summary> /// <param name="inputValue"></param> /// <param name="produto"></param> /// <param name="tbProduto"></param> /// <param name="tblote"></param> /// <param name="tbSequencia"></param> /// <param name="tbQuantidade"></param> /// <param name="tbMensagem"></param> public static void lerEtiqueta(String inputValue, ProdutoProposta produto, TextBox tbProduto, TextBox tblote, TextBox tbSequencia, TextBox tbQuantidade, TextBox tbMensagem) { tbMensagem.Text = ""; ArrayStringToEtiqueta = FileUtility.arrayOfTextFile(inputValue, FileUtility.splitType.PIPE); Etiqueta objEtiqueta = new Etiqueta(); objEtiqueta = new Etiqueta(arrayStringToEtiqueta, Etiqueta.Tipo.QRCODE); efetuaLeituraEtiqueta(produto, tbProduto, tblote, tbSequencia, tbQuantidade, tbMensagem, objEtiqueta); }
/// <summary> /// Altera o status do produto para separado. /// </summary> /// <param name="item">item que tera o seu status alterado.</param> public static void setStatusProdutoParaSeparado(ProdutoProposta item) { if (item.StatusSeparado == ProdutoProposta.statusSeparado.SEPARADO) { return; } else { item.alteraStatusSeparado(); } }
/// <summary> /// Identifica qual o próximo item com status de NAOSEPARADO e o retorna. /// </summary> /// <returns>Objeto ProdutoProposta com o próximo item da sequência da base mobile.</returns> /// <remarks> /// Caso a query não retorne valores da base mobile o método retorna um Valor NULL /// </remarks> public ProdutoProposta itemATrabalhar() { Object obj = null; sql01 = new StringBuilder(); sql01.Append(" SELECT TOP (1) TB_PROP.codigoPROPOSTA,"); sql01.Append(" TB_ITEMPROPOP.codigoITEMPROPOSTA, TB_ITEMPROPOP.propostaITEMPROPOSTA, TB_ITEMPROPOP.quantidadeITEMPROPOSTA, TB_ITEMPROPOP.statusseparadoITEMPROPOSTA,"); sql01.Append(" TB_ITEMPROPOP.alllotesreservaITEMPROPOSTA, TB_ITEMPROPOP.codigoprodutoITEMPROPOSTA,"); sql01.Append(" TB_PROD.ean13PRODUTO, TB_PROD.partnumberPRODUTO,TB_PROD.descricaoPRODUTO, TB_PROD.identificacaolotePRODUTO, TB_PROD.codigolotePRODUTO,TB_PROD.pesobrutoPRODUTO,"); 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()); if ((dr != null)) { while ((dr.Read())) { //int statusSeparadoItem = ; ProdutoProposta produto = new ProdutoProposta(Convert.ToInt32(dr["codigoITEMPROPOSTA"]), Convert.ToInt32(dr["codigoPROPOSTA"]), Convert.ToDouble(dr["quantidadeITEMPROPOSTA"]), (ProdutoProposta.statusSeparado)Convert.ToInt32(dr["statusseparadoITEMPROPOSTA"]), (string)(dr["alllotesreservaITEMPROPOSTA"]), Convert.ToInt32(dr["codigoprodutoITEMPROPOSTA"]), (string)dr["ean13PRODUTO"], (string)dr["partnumberPRODUTO"], (string)dr["descricaoPRODUTO"], (string)dr["nomelocalPRODUTO"], Convert.ToInt32(dr["codigolotePRODUTO"]), (string)dr["identificacaolotePRODUTO"], Convert.ToDouble(dr["pesobrutoPRODUTO"])); obj = produto; } } //fecha a conexão dr.Close(); CeSqlServerConn.closeConnCe(); if (obj != null) { return((ProdutoProposta)obj); } else { return(null); } }
/// <summary> /// realiza todo o procedimento para validação de tipo de etiqueta,etiqueta, produto, /// validação de sequência,subtração de quantidade de itens registrados na etiqueta. /// </summary> /// <param name="produto">Produto a ser validado</param> /// <param name="tbProduto">Text Box Nome do Produto</param> /// <param name="tbLote">Text Box Lote</param> /// <param name="tbSequencia">Text Box Sequencia</param> /// <param name="tbQuantidade">Text Box Quantidade</param> /// <param name="tbMensagem">Text Box Mensagem</param> /// <param name="objEtiqueta">Objeto Etiqueta.</param> public static void efetuaLeituraEtiqueta(ProdutoProposta produto, TextBox tbProduto, TextBox tbLote, TextBox tbSequencia, TextBox tbQuantidade, TextBox tbMensagem, Etiqueta objEtiqueta) { try { if (comparaProdutoEtiquetaProdutoTrabalhado(produto, objEtiqueta)) { if (validaEtiquetaNaoLida(objEtiqueta)) { if (QtdPecasItem > 0) { tbProduto.Text = objEtiqueta.PartnumberEtiqueta.ToString() + " - " + objEtiqueta.DescricaoProdutoEtiqueta.ToString(); tbLote.Text = objEtiqueta.LoteEtiqueta; tbSequencia.Text = objEtiqueta.SequenciaEtiqueta.ToString(); tbQuantidade.Text = (subtrairQtdPecasItem(objEtiqueta.QuantidadeEtiqueta)).ToString(); objEtiqueta.VolumeEtiqueta = ProcedimentosLiberacao.totalVolumes; addToListEtiquetasLidas(objEtiqueta); } } else { tbMensagem.Text = String.Format("A etiqueta {0} já foi validada.", objEtiqueta.SequenciaEtiqueta); ProximaEtiqueta += 1; } } else { if (ProcedimentosLiberacao.mensagem != "" || ProcedimentosLiberacao.mensagem != null) { tbMensagem.Text = ProcedimentosLiberacao.mensagem; } else { tbMensagem.Text = String.Format("Produto da etiqueta lida não confere com o item a ser liberado."); } ProximaEtiqueta += 1; } } catch (QuantidadeInvalidaException qtdEx) { StringBuilder sb = new StringBuilder(); sb.Append("Quantidade de peças na embalagem é maior que a Quantidade a ser liberada!"); sb.AppendFormat("error : {0} ", qtdEx.Message); MainConfig.errorMessage(sb.ToString(), "Etiqueta Inválida!!"); } catch (Exception ex) { throw ex; } }
/// <summary> /// realiza todo o procedimento para validação de tipo de etiqueta,etiqueta, produto, /// validação de sequência,subtração de quantidade de itens registrados na etiqueta. /// </summary> /// <param name="produto">Produto a ser validado</param> /// <param name="tbProduto">Text Box Nome do Produto</param> /// <param name="tbLote">Text Box Lote</param> /// <param name="tbSequencia">Text Box Sequencia</param> /// <param name="tbQuantidade">Text Box Quantidade</param> /// <param name="tbMensagem">Text Box Mensagem</param> /// <param name="objEtiqueta">Objeto Etiqueta.</param> public static void efetuaLeituraEtiqueta(ProdutoProposta produto, TextBox tbProduto, TextBox tbLote, TextBox tbSequencia, TextBox tbQuantidade, TextBox tbMensagem, EtiquetaVenda objEtiqueta) { try { if (comparaProdutoEtiquetaProdutoTrabalhado(produto, objEtiqueta)) { if (objEtiqueta.QuantidadeEtiqueta == 0.0) { throw new QuantidadeInvalidaException("A quantidade de produtos informado na embalagem é inválida!"); } if (podeTrabalharEtiqueta(objEtiqueta)) { if (QtdPecasItem > 0) { tbProduto.Text = objEtiqueta.PartnumberEtiqueta.ToString() + " - " + objEtiqueta.DescricaoProdutoEtiqueta.ToString(); tbLote.Text = objEtiqueta.LoteEtiqueta; tbSequencia.Text = objEtiqueta.SequenciaEtiqueta.ToString(); tbQuantidade.Text = MainConfig.intOrDecimal(Convert.ToDouble(subtrairQtdPecasItem(objEtiqueta.QuantidadeEtiqueta))); objEtiqueta.VolumeEtiqueta = ProcedimentosLiberacao.TotalVolumes; addToListEtiquetasLidas(objEtiqueta); } } else { FrmProposta.mostrarMensagem(TitaniumColector.Forms.FrmProposta.enumCor.RED, String.Format("A etiqueta {0} já foi validada.", objEtiqueta.SequenciaEtiqueta), TitaniumColector.Forms.FrmProposta.enumCursor.DEFAULT); } } else { if (ProcedimentosLiberacao.Mensagem != "" || ProcedimentosLiberacao.Mensagem != null) { tbMensagem.Text = ProcedimentosLiberacao.Mensagem; } else { tbMensagem.Text = String.Format("Produto da etiqueta lida não confere com o item a ser liberado."); } } } catch (QuantidadeInvalidaException qtdEx) { StringBuilder sb = new StringBuilder(); sb.AppendFormat("error : {0} ", qtdEx.Message); MainConfig.errorMessage(sb.ToString(), "Erro de validação!!"); } catch (Exception ex) { throw ex; } }
/// <summary> /// /// </summary> /// <param name="produto"></param> /// <param name="tbProduto"></param> /// <param name="tblote"></param> /// <param name="tbSequencia"></param> /// <param name="tbQuantidade"></param> /// <param name="tbMensagem"></param> /// <param name="arrayEtiqueta"></param> public static void lerEtiqueta(ProdutoProposta produto, TextBox tbProduto, TextBox tblote, TextBox tbSequencia, TextBox tbQuantidade, TextBox tbMensagem, Array arrayEtiqueta) { tbMensagem.Text = ""; if (ProximaEtiqueta <= ListEtiquetasGeradas.Count - 1) { arrayEtiqueta = FileUtility.arrayOfTextFile(ListEtiquetasGeradas[ProximaEtiqueta].ToString(), FileUtility.splitType.PIPE); Etiqueta objEtiqueta = new Etiqueta(); objEtiqueta = Etiqueta.arrayToEtiqueta(arrayEtiqueta); efetuaLeituraEtiqueta(produto, tbProduto, tblote, tbSequencia, tbQuantidade, tbMensagem, objEtiqueta); } else { tbMensagem.Text = "Próximo Item."; } }
/// <summary> /// Altera o status de separado do item na Base mobile. /// </summary> /// <param name="item">O status será alterado de acordo com o atual statdo so item passado com parâmetro.</param> public void updateStatusItemProposta(ProdutoProposta item) { try { sql01 = new StringBuilder(); sql01.Append(" UPDATE tb0002_ItensProposta"); sql01.AppendFormat(" SET statusseparadoITEMPROPOSTA ={0}", (int)item.StatusSeparado); sql01.AppendFormat(" WHERE (tb0002_ItensProposta.codigoITEMPROPOSTA = {0})", item.CodigoItemProposta); CeSqlServerConn.execCommandSqlCe(sql01.ToString()); } catch (Exception ex) { throw ex; } }
/// <summary> /// Identifica qual o próximo item com status de NAOSEPARADO e o retorna. /// </summary> /// /// <returns>Objeto ProdutoProposta com o próximo item da sequência da base mobile.</returns> /// /// <remarks> /// Caso a query não retorne valores da base mobile o método retorna um Valor NULL /// </remarks> public ProdutoProposta fillTop1ItemProposta() { Object obj = null; sql01 = new StringBuilder(); sql01.Append(" SELECT TOP (1) TB_PROP.codigoPROPOSTA,"); sql01.Append(" TB_ITEMPROPOP.codigoITEMPROPOSTA, TB_ITEMPROPOP.propostaITEMPROPOSTA, TB_ITEMPROPOP.quantidadeITEMPROPOSTA, TB_ITEMPROPOP.statusseparadoITEMPROPOSTA,"); sql01.Append(" TB_ITEMPROPOP.lotereservaITEMPROPOSTA, TB_ITEMPROPOP.codigoprodutoITEMPROPOSTA,"); sql01.Append(" TB_PROD.ean13PRODUTO, TB_PROD.partnumberPRODUTO,TB_PROD.descricaoPRODUTO, TB_PROD.identificacaolotePRODUTO, TB_PROD.codigolotePRODUTO,"); 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()); if ((dr != null)) { while ((dr.Read())) { int statusSeparadoItem = Convert.ToInt32(dr["statusseparadoITEMPROPOSTA"]); ProdutoProposta produto = new ProdutoProposta(Convert.ToInt32(dr["codigoITEMPROPOSTA"]), Convert.ToInt32(dr["codigoPROPOSTA"]), 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"]); obj = produto; } } //fecha a conexão dr.Close(); CeSqlServerConn.closeConnCe(); if (obj != null) { return (ProdutoProposta)obj; } else { return null; } }
/// <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; } }
/// <summary> /// Verifica se Produto trabalhado e Produto Etiqueta são os mesmos. /// </summary> /// <param name="propostaProduto">Obj Produto que será verificado </param> /// <param name="etiquetaLida"> Obj Etiqueta que será verificado </param> /// <returns>True --> Caso sejam iguais.</returns> /// public static bool comparaProdutoEtiquetaProdutoTrabalhado(ProdutoProposta produtoProposta, EtiquetaVenda etiquetaLida) { try { //Verifica se os produtos são iguais switch (etiquetaLida.TipoEtiqueta) { case Etiqueta.TipoCode.QRCODE: if (produtoProposta.Partnumber.Equals(etiquetaLida.PartnumberEtiqueta)) { if (produtoProposta.Embalagens.Count == 0) { throw new QuantidadeInvalidaException("O produto não possui embalagens cadastradas!!"); } foreach (var item in produtoProposta.Embalagens) { if ((etiquetaLida.Ean13Etiqueta.ToString() == item.Ean13Embalagem)) { if (etiquetaLida.QuantidadeEtiqueta == item.Quantidade) { return(true); } else { Mensagem = "Quantidade da etiqueta não confere com a Quantidade de itens da embalagem do produto."; } } else { Mensagem = "Ean informado na Etiqueta não confere com o Ean utilizado no produto"; } } } else { Mensagem = "Partnumber produto etiqueta não confere com partnumber do item da proposta"; } break; case Etiqueta.TipoCode.BARRAS: if (produtoProposta.Partnumber.Equals(etiquetaLida.PartnumberEtiqueta)) { foreach (var item in produtoProposta.Embalagens) { if ((etiquetaLida.Ean13Etiqueta.ToString() == item.Ean13Embalagem)) { return(true); } else { Mensagem = "Ean informado na Etiqueta não confere com o Ean do produto"; } } } else { Mensagem = "Partnumber produto etiqueta não confere com partnumber do item da proposta"; } break; case Etiqueta.TipoCode.INVALID: break; default: break; } return(false); } catch (Exception) { throw; } }
/// <summary> /// Altera o status de separado do item na Base mobile. /// </summary> /// <param name="status">Status para qual será atualizado</param> /// <param name="codigoItem">código so item da proposta a ser alterado</param> /// <remarks> /// Os status são: /// ProdutoProposta.statusSeparado.NAOSEPARADO / 0 /// ProdutoProposta.statusSeparado.SEPARADO / 1 /// </remarks> public void updateStatusItemProposta(ProdutoProposta.statusSeparado status, int codigoItem) { sql01 = new StringBuilder(); sql01.Append("UPDATE tb0002_ItensProposta"); sql01.AppendFormat("SET statusseparadoITEMPROPOSTA ={0}", status); sql01.AppendFormat("WHERE tb0002_ItensProposta.codigoITEMPROPOSTA = {0})", codigoItem); CeSqlServerConn.execCommandSqlCe(sql01.ToString()); }
/// <summary> /// Valida as informações lidas pelo coletor e as transformam em um objeto do tipo Etiqueta e continua o procedimento de leitura da etiqueta. /// </summary> /// <param name="inputValue">Valor fornecido pelo coletor de dados</param> /// <param name="tipoEtiqueta">Tipo de etiqueta lida (EAN13) OU (QRCOODE)</param> /// <param name="produto">produto a ser validado durante processo de liberação do item</param> /// <param name="tbProduto">Campo para informações ao usuário</param> /// <param name="tblote">Campo para informações ao usuário</param> /// <param name="tbSequencia">Campo para informações ao usuário</param> /// <param name="tbQuantidade">Campo para informações ao usuário</param> /// <param name="tbMensagem">Campo para informações ao usuário</param> public static void lerEtiqueta(String inputValue, Etiqueta.TipoCode tipoEtiqueta, ProdutoProposta produto, TextBox tbProduto, TextBox tblote, TextBox tbSequencia, TextBox tbQuantidade, TextBox tbMensagem) { tbMensagem.Text = ""; //monta um array de string com os dados lidos na etiqueta //utiliza as informações para montar um objeto do tipo etiquetaVenda var objEtiqueta = new EtiquetaVenda(FileUtility.arrayOfTextFile(inputValue, FileUtility.splitType.PIPE), tipoEtiqueta); efetuaLeituraEtiqueta(produto, tbProduto, tblote, tbSequencia, tbQuantidade, tbMensagem, objEtiqueta); }
/// <summary> /// /// </summary> /// <param name="produto"></param> /// <param name="tbProduto"></param> /// <param name="tblote"></param> /// <param name="tbSequencia"></param> /// <param name="tbQuantidade"></param> /// <param name="tbMensagem"></param> /// <param name="arrayEtiqueta"></param> public static void lerEtiqueta(ProdutoProposta produto,TextBox tbProduto, TextBox tblote, TextBox tbSequencia, TextBox tbQuantidade, TextBox tbMensagem, Array arrayEtiqueta) { tbMensagem.Text = ""; if (ProximaEtiqueta <= ListEtiquetasGeradas.Count - 1) { arrayEtiqueta = FileUtility.arrayOfTextFile(ListEtiquetasGeradas[ProximaEtiqueta].ToString(), FileUtility.splitType.PIPE); Etiqueta objEtiqueta = new Etiqueta(); objEtiqueta = Etiqueta.arrayToEtiqueta(arrayEtiqueta); efetuaLeituraEtiqueta(produto,tbProduto, tblote, tbSequencia, tbQuantidade, tbMensagem, objEtiqueta); } else { tbMensagem.Text = "Próximo Item."; } }
/// <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; }
/// <summary> /// Realiza todos os procedimentos nescessários para carregar o próximo item a ser separado. /// </summary> /// /// <returns> /// TRUE --> caso exista um próximo item a ser trabalhado /// FALSE --> caso não exista mais items para serem trabalhados. /// </returns> private bool nextItemProposta() { bool hasItem = false; daoItemProposta = new DaoProdutoProposta(); daoEtiqueta = new DaoEtiqueta(); objTransacoes = new BaseMobile(); try { this.clearParaProximoItem(); //processa Quantidade de itens ProcedimentosLiberacao.decrementaQtdTotalItens(1); //processa qunatidade de peças ProcedimentosLiberacao.decrementaQtdTotalPecas(objProposta.ListObjItemProposta[0].Quantidade); //seta status para separado ProcedimentosLiberacao.setStatusProdutoParaSeparado(objProposta.ListObjItemProposta[0]); //grava informações do item na base de dados mobile daoItemProposta.updateStatusItemProposta(objProposta.ListObjItemProposta[0]); ////ESTE TRECHO TALVES ESTEJA SENDO DESNECESSÀRIO. ////ANALIZAR MELHOR Action SUA UTILIZACAO //daoEtiqueta.insertSequencia(ProcedimentosLiberacao.EtiquetasLidas); //inseri informações das etiquetas referente ao produto liberado em formato Xml daoItemProposta.updateXmlItemProposta(Etiqueta.gerarXmlItensEtiquetas(ProcedimentosLiberacao.EtiquetasLidas), objProposta.ListObjItemProposta[0].CodigoItemProposta); //carrega próximo item if (ProcedimentosLiberacao.TotalItens > 0) { ProdutoProposta prod = daoItemProposta.fillTop1ItemProposta(); //Carrega informações de Embalagem para o produto que será trabalhado. prod.Embalagens = daoEmbalagem.carregarEmbalagensProduto(prod); if (prod != null) { hasItem = true; objProposta.setNextItemProposta(prod); } else { hasItem = false; } } else // CASO não tenha um próximo item { hasItem = false; } //Se existir um próximo item if (hasItem) { //seta Parametros para iniciar leitura do próximo item ProcedimentosLiberacao.inicializarProcedimentosProximoItem(objProposta.ListObjItemProposta[0].Quantidade); //recarrega o form com as informações do próximo item. this.fillCamposForm(objProposta, ProcedimentosLiberacao.TotalPecas, ProcedimentosLiberacao.TotalItens); } else { this.clearFormulario(true, true); } } catch (SqlCeException Ex) { MessageBox.Show(Ex.Message); } catch (Exception ex) { throw new Exception("Erro ao carregar próximo item!", ex); } finally { daoEtiqueta = null; daoItemProposta = null; } return(hasItem); }
public static void efetuaLeituraEtiqueta(ProdutoProposta produto,TextBox tbProduto,TextBox tbLote,TextBox tbSequencia,TextBox tbQuantidade, TextBox tbMensagem,Etiqueta objEtiqueta) { try { if (comparaProdutoEtiquetaProdutoTrabalhado(produto, objEtiqueta)) { if (validaEtiquetaNaoLida(objEtiqueta)) { if (QtdPecasItem > 0) { tbProduto.Text = objEtiqueta.PartnumberEtiqueta.ToString() + " - " + objEtiqueta.DescricaoProdutoEtiqueta.ToString(); tbLote.Text = objEtiqueta.LoteEtiqueta; tbSequencia.Text = objEtiqueta.SequenciaEtiqueta.ToString(); tbQuantidade.Text = (subtrairQtdPecasItem(objEtiqueta.QuantidadeEtiqueta)).ToString(); objEtiqueta.VolumeEtiqueta = ProcedimentosLiberacao.qtdVolumes; addToListEtiquetasLidas(objEtiqueta); } } else { tbMensagem.Text = String.Format("A etiqueta {0} já foi validada.", objEtiqueta.SequenciaEtiqueta); ProximaEtiqueta += 1; } } else { tbMensagem.Text = String.Format("Produto da etiqueta lida não confere com o item a ser liberado."); ProximaEtiqueta += 1; } } catch ( QuantidadeInvalidaException qtdEx) { StringBuilder sb = new StringBuilder(); sb.Append("Quantidade de peças na embalagem é maior que a quantidade a ser liberada!"); sb.AppendFormat("error : {0} ", qtdEx.Message); MainConfig.errorMessage(sb.ToString(),"Etiqueta Inválida!!"); } catch (Exception ex) { throw ex; } }
/// <summary> /// Valida as informações lidas pelo coletor e as transformam em um objeto do tipo Etiqueta e continua o procedimento de leitura da etiqueta. /// </summary> /// <param name="inputValue">Valor fornecido pelo coletor de dados</param> /// <param name="tipoEtiqueta">Tipo de etiqueta lida (EAN13) OU (QRCOODE)</param> /// <param name="produto">produto a ser validado durante processo de liberação do item</param> /// <param name="tbProduto">Campo para informações ao usuário</param> /// <param name="tblote">Campo para informações ao usuário</param> /// <param name="tbSequencia">Campo para informações ao usuário</param> /// <param name="tbQuantidade">Campo para informações ao usuário</param> /// <param name="tbMensagem">Campo para informações ao usuário</param> public static void lerEtiqueta(String inputValue,Etiqueta.TipoCode tipoEtiqueta, ProdutoProposta produto, TextBox tbProduto, TextBox tblote, TextBox tbSequencia, TextBox tbQuantidade, TextBox tbMensagem) { tbMensagem.Text = ""; //monta um array de string com os dados lidos na etiqueta //utiliza as informações para montar um objeto do tipo etiquetaVenda var objEtiqueta = new EtiquetaVenda(FileUtility.arrayOfTextFile(inputValue, FileUtility.splitType.PIPE), tipoEtiqueta); efetuaLeituraEtiqueta(produto, tbProduto, tblote, tbSequencia, tbQuantidade, tbMensagem, objEtiqueta); }
/// <summary> /// realiza todo o procedimento para validação de tipo de etiqueta,etiqueta, produto, /// validação de sequência,subtração de quantidade de itens registrados na etiqueta. /// </summary> /// <param name="produto">Produto a ser validado</param> /// <param name="tbProduto">Text Box Nome do Produto</param> /// <param name="tbLote">Text Box Lote</param> /// <param name="tbSequencia">Text Box Sequencia</param> /// <param name="tbQuantidade">Text Box Quantidade</param> /// <param name="tbMensagem">Text Box Mensagem</param> /// <param name="objEtiqueta">Objeto Etiqueta.</param> public static void efetuaLeituraEtiqueta(ProdutoProposta produto,TextBox tbProduto,TextBox tbLote,TextBox tbSequencia,TextBox tbQuantidade, TextBox tbMensagem,EtiquetaVenda objEtiqueta) { try { if (comparaProdutoEtiquetaProdutoTrabalhado(produto, objEtiqueta)) { if (objEtiqueta.QuantidadeEtiqueta == 0.0) { throw new QuantidadeInvalidaException("A quantidade de produtos informado na embalagem é inválida!"); } if (podeTrabalharEtiqueta(objEtiqueta)) { if (QtdPecasItem > 0) { tbProduto.Text = objEtiqueta.PartnumberEtiqueta.ToString() + " - " + objEtiqueta.DescricaoProdutoEtiqueta.ToString(); tbLote.Text = objEtiqueta.LoteEtiqueta; tbSequencia.Text = objEtiqueta.SequenciaEtiqueta.ToString(); tbQuantidade.Text = MainConfig.intOrDecimal(Convert.ToDouble(subtrairQtdPecasItem(objEtiqueta.QuantidadeEtiqueta))); objEtiqueta.VolumeEtiqueta = ProcedimentosLiberacao.TotalVolumes; addToListEtiquetasLidas(objEtiqueta); } } else { FrmProposta.mostrarMensagem(TitaniumColector.Forms.FrmProposta.enumCor.RED,String.Format("A etiqueta {0} já foi validada.", objEtiqueta.SequenciaEtiqueta),TitaniumColector.Forms.FrmProposta.enumCursor.DEFAULT); } } else { if (ProcedimentosLiberacao.Mensagem != "" || ProcedimentosLiberacao.Mensagem != null) { tbMensagem.Text = ProcedimentosLiberacao.Mensagem; } else { tbMensagem.Text = String.Format("Produto da etiqueta lida não confere com o item a ser liberado."); } } } catch ( QuantidadeInvalidaException qtdEx) { StringBuilder sb = new StringBuilder(); sb.AppendFormat("error : {0} ", qtdEx.Message); MainConfig.errorMessage(sb.ToString(), "Erro de validação!!"); } catch (Exception ex) { throw ex; } }
/// <summary> /// Verifica se Produto trabalhado e Produto Etiqueta são os mesmos. /// </summary> /// <param name="propostaProduto">Obj Produto que será verificado </param> /// <param name="etiquetaLida"> Obj Etiqueta que será verificado </param> /// <returns>True --> Caso sejam iguais.</returns> /// public static bool comparaProdutoEtiquetaProdutoTrabalhado(ProdutoProposta produtoProposta, EtiquetaVenda etiquetaLida) { try { //Verifica se os produtos são iguais switch (etiquetaLida.TipoEtiqueta) { case Etiqueta.TipoCode.QRCODE: if (produtoProposta.Partnumber.Equals(etiquetaLida.PartnumberEtiqueta)) { if (produtoProposta.Embalagens.Count == 0) { throw new QuantidadeInvalidaException("O produto não possui embalagens cadastradas!!"); } foreach (var item in produtoProposta.Embalagens) { if ((etiquetaLida.Ean13Etiqueta.ToString() == item.Ean13Embalagem)) { if (etiquetaLida.QuantidadeEtiqueta == item.Quantidade) { return true; } else { Mensagem = "Quantidade da etiqueta não confere com a Quantidade de itens da embalagem do produto."; } } else { Mensagem = "Ean informado na Etiqueta não confere com o Ean utilizado no produto"; } } } else { Mensagem = "Partnumber produto etiqueta não confere com partnumber do item da proposta"; } break; case Etiqueta.TipoCode.BARRAS: if (produtoProposta.Partnumber.Equals(etiquetaLida.PartnumberEtiqueta)) { foreach (var item in produtoProposta.Embalagens) { if ((etiquetaLida.Ean13Etiqueta.ToString() == item.Ean13Embalagem)) { return true; } else { Mensagem = "Ean informado na Etiqueta não confere com o Ean do produto"; } } } else { Mensagem = "Partnumber produto etiqueta não confere com partnumber do item da proposta"; } break; case Etiqueta.TipoCode.INVALID: break; default: break; } return false; } catch (Exception) { throw; } }
/// <summary> /// Realiza Insert na base Mobile table tb0002_ItensProposta /// </summary> /// <param name="codigoItem">Código do Item da Proposta</param> /// <param name="propostaItemProposta">Proposta (ForeingKey)</param> /// <param name="Quantidade">Qunatidade de itens</param> /// <param name="statusSeparado">status (Separado ou não)</param> /// <param name="codigoProduto">Código do produto </param> /// <param name="loteReserva">Lote referente a reserva do item</param> public void insertItemProposta(Int64 codigoItem, Int64 propostaItemProposta, Double quantidade, ProdutoProposta.statusSeparado statusSeparado, Int64 codigoProduto, Int64 loteReserva, Int64 codigoLocalItemProposta) { try { //Limpa a tabela.. CeSqlServerConn.execCommandSqlCe("DELETE FROM tb0002_ItensProposta"); //Query de insert na Base Mobile sql01 = new StringBuilder(); sql01.Append("INSERT INTO tb0002_ItensProposta"); sql01.Append("(codigoITEMPROPOSTA, propostaITEMPROPOSTA, quantidadeITEMPROPOSTA,"); sql01.Append("statusseparadoITEMPROPOSTA, codigoprodutoITEMPROPOSTA, lotereservaITEMPROPOSTA,localloteITEMPROPOSTA) "); sql01.Append("VALUES ("); sql01.AppendFormat("{0},", codigoItem); sql01.AppendFormat("{0},", propostaItemProposta); sql01.AppendFormat("{0},", quantidade); sql01.AppendFormat("{0},", (int)statusSeparado); sql01.AppendFormat("{0},", codigoProduto); sql01.AppendFormat("{0},", loteReserva); sql01.AppendFormat("{0})", codigoLocalItemProposta); CeSqlServerConn.execCommandSqlCe(sql01.ToString()); } catch (SqlCeException sqlEx) { StringBuilder strBuilder = new StringBuilder(); strBuilder.Append("Ocorreram problemas durante a carga de dados na tabela tb0002_ItensProposta. \n"); strBuilder.Append("O procedimento não pode ser concluído"); strBuilder.AppendFormat("Erro : {0}", sqlEx.Errors); strBuilder.AppendFormat("Description : {0}", sqlEx.Message); System.Windows.Forms.MessageBox.Show(strBuilder.ToString(), "Error:", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Exclamation, System.Windows.Forms.MessageBoxDefaultButton.Button1); } catch (Exception) { throw; } }
/// <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); } }
/// <summary> /// Verifica se Produto trabalhado e Produto Etiqueta são os mesmos. /// </summary> /// <param name="propostaProduto">Obj Produto que será verificado </param> /// <param name="etiquetaLida"> Obj Etiqueta que será verificado </param> /// <returns>True --> Caso sejam iguais.</returns> /// public static bool comparaProdutoEtiquetaProdutoTrabalhado(ProdutoProposta produtoProposta, Etiqueta etiquetaLida) { //Verifica se os produtos são iguais switch (etiquetaLida.TipoEtiqueta) { case Etiqueta.Tipo.QRCODE: if (produtoProposta.Partnumber.Equals(etiquetaLida.PartnumberEtiqueta)) { foreach (var item in produtoProposta.Embalagens) { if ((etiquetaLida.Ean13Etiqueta.ToString() == item.Ean13Embalagem) && (etiquetaLida.QuantidadeEtiqueta == item.Quantidade)) { return true; } } } break; case Etiqueta.Tipo.BARRAS: if(produtoProposta.Partnumber.Equals(etiquetaLida.PartnumberEtiqueta)) { foreach (var item in produtoProposta.Embalagens) { if ((etiquetaLida.Ean13Etiqueta.ToString() == item.Ean13Embalagem)) { return true; } } } break; case Etiqueta.Tipo.INVALID: break; default: break; } return false; }
/// <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; } }
/// <summary> /// Valida as informações lidas pelo coletor e as transformam em um objeto do tipo Etiqueta e continua o procedimento de leitura da etiqueta. /// </summary> /// <param name="inputValue">Valor fornecido pelo coletor de dados</param> /// <param name="tipoEtiqueta">Tipo de etiqueta lida (EAN13) OU (QRCOODE)</param> /// <param name="produto">produto a ser validado durante processo de liberação do item</param> /// <param name="tbProduto">Campo para informações ao usuário</param> /// <param name="tblote">Campo para informações ao usuário</param> /// <param name="tbSequencia">Campo para informações ao usuário</param> /// <param name="tbQuantidade">Campo para informações ao usuário</param> /// <param name="tbMensagem">Campo para informações ao usuário</param> public static void lerEtiqueta(String inputValue,Etiqueta.Tipo tipoEtiqueta, ProdutoProposta produto, TextBox tbProduto, TextBox tblote, TextBox tbSequencia, TextBox tbQuantidade, TextBox tbMensagem) { tbMensagem.Text = ""; ArrayStringToEtiqueta = FileUtility.arrayOfTextFile(inputValue, FileUtility.splitType.PIPE); Etiqueta objEtiqueta = new Etiqueta(arrayStringToEtiqueta, tipoEtiqueta); efetuaLeituraEtiqueta(produto, tbProduto, tblote, tbSequencia, tbQuantidade, tbMensagem, objEtiqueta); }
/// <summary> /// Verifica se Produto trabalhado e Produto Etiqueta são os mesmos. /// </summary> /// <param name="propostaProduto">Obj Produto que será verificado </param> /// <param name="etiquetaLida"> Obj Etiqueta que será verificado </param> /// <returns>True --> Caso sejam iguais.</returns> /// public static bool comparaProdutoEtiquetaProdutoTrabalhado(ProdutoProposta produtoProposta, Etiqueta etiquetaLida) { //Verifica se os produtos são iguais switch (etiquetaLida.TipoEtiqueta) { case Etiqueta.Tipo.QRCODE: if (produtoProposta.Partnumber.Equals(etiquetaLida.PartnumberEtiqueta)) { if (produtoProposta.Embalagens.Count == 0) { } foreach (var item in produtoProposta.Embalagens) { if ((etiquetaLida.Ean13Etiqueta.ToString() == item.Ean13Embalagem)) { if (etiquetaLida.QuantidadeEtiqueta == item.Quantidade) { return(true); } else { mensagem = "Quantidade da etiqueta não confere com a Quantidade de itens da embalagem do produto."; } } else { mensagem = "Ean informado na Etiqueta não confere com o Ean do produto"; } } } else { mensagem = "Partnumber produto etiqueta não confere com partnumber do item da proposta"; } break; case Etiqueta.Tipo.BARRAS: if (produtoProposta.Partnumber.Equals(etiquetaLida.PartnumberEtiqueta)) { foreach (var item in produtoProposta.Embalagens) { if ((etiquetaLida.Ean13Etiqueta.ToString() == item.Ean13Embalagem)) { return(true); } else { mensagem = "Ean informado na Etiqueta não confere com o Ean do produto"; } } } else { mensagem = "Partnumber produto etiqueta não confere com partnumber do item da proposta"; } break; case Etiqueta.Tipo.INVALID: break; default: break; } return(false); }
/// <summary> /// Verifica se Produto trabalhado e Produto Etiqueta são os mesmos. /// </summary> /// <param name="propostaProduto">Obj Produto que será verificado </param> /// <param name="etiquetaLida"> Obj Etiqueta que será verificado </param> /// <returns>True --> Caso sejam iguais.</returns> /// public static bool comparaProdutoEtiquetaProdutoTrabalhado(ProdutoProposta produtoProposta, Etiqueta etiquetaLida) { //Verifica se os produtos são iguais switch (etiquetaLida.TipoEtiqueta) { case Etiqueta.Tipo.QRCODE: if (produtoProposta.Partnumber.Equals(etiquetaLida.PartnumberEtiqueta)) { if(produtoProposta.Embalagens.Count==0){ } foreach (var item in produtoProposta.Embalagens) { if ((etiquetaLida.Ean13Etiqueta.ToString() == item.Ean13Embalagem)) { if (etiquetaLida.QuantidadeEtiqueta == item.Quantidade) { return true; } else { mensagem = "Quantidade da etiqueta não confere com a Quantidade de itens da embalagem do produto."; } } else { mensagem = "Ean informado na Etiqueta não confere com o Ean do produto"; } } } else { mensagem = "Partnumber produto etiqueta não confere com partnumber do item da proposta"; } break; case Etiqueta.Tipo.BARRAS: if(produtoProposta.Partnumber.Equals(etiquetaLida.PartnumberEtiqueta)) { foreach (var item in produtoProposta.Embalagens) { if ((etiquetaLida.Ean13Etiqueta.ToString() == item.Ean13Embalagem)) { return true; } else { mensagem = "Ean informado na Etiqueta não confere com o Ean do produto"; } } } else { mensagem = "Partnumber produto etiqueta não confere com partnumber do item da proposta"; } break; case Etiqueta.Tipo.INVALID: break; default: break; } return false; }
/// <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); } }
/// <summary> /// Altera o status de separado do item na Base mobile. /// </summary> /// <param name="item">O status será alterado de acordo com o atual statdo so item passado com parâmetro.</param> public void updateStatusItemProposta(ProdutoProposta item) { try { sql01 = new StringBuilder(); sql01.Append(" UPDATE tb0002_ItensProposta"); sql01.AppendFormat(" SET statusseparadoITEMPROPOSTA ={0}", (int)item.StatusSeparado); sql01.AppendFormat(" WHERE (tb0002_ItensProposta.codigoITEMPROPOSTA = {0})", item.CodigoItemProposta); CeSqlServerConn.execCommandSqlCe(sql01.ToString()); } catch (Exception ex ) { throw ex; } }