private void adicionarProdutoDaBusca() { Produto p = new Produto(D.Pedido); p.CarregarProduto(Convert.ToInt32(grdProduto[0, 0])); p.AcaoProduto = Produto.EnumAcaoProduto.ItemAdicionar; FrmItem f = new FrmItem(p); f.Show(); }
private void btnTesteCargaInserir_Click(object sender, EventArgs e) { string qryProd =@" Select distinct top (" + txtTesteCargaQtdProdutos.Text + @") * from produto "; Produto p; DataTable dt = D.Bd.DataTablePreenche(qryProd); Cursor.Current = Cursors.WaitCursor; //double preco; int produtosNaoIncluidos = 0; int quantidadeRequerida = 0; int estoque; for (int i = 0; i < dt.Rows.Count; ++i) { estoque = Convert.ToInt32(dt.Rows[i]["estoque"]); //preco = //p = new Produto(D.Pedido, Convert.ToInt32(dt.Rows[i]["estoque"]), Convert.ToDouble(dt.Rows[i]["preco_venda"]), 0); if (!Parametro.VenderSemEstoque && estoque < 0) { produtosNaoIncluidos++; continue; } p = new Produto(D.Pedido); p.CarregarProduto(Convert.ToInt32(dt.Rows[i]["id_produto"])); p.AcaoProduto = Produto.EnumAcaoProduto.ItemAdicionar; if (Parametro.VenderSemEstoque && estoque < 0) quantidadeRequerida = 1; else quantidadeRequerida = estoque; try { p.QuantidadeRequerida = quantidadeRequerida; D.Pedido.LstItem.Add(p); } catch { produtosNaoIncluidos++; continue; } } Cursor.Current = Cursors.Default; MessageBox.Show("Número de produtos adicionados: " + (dt.Rows.Count - produtosNaoIncluidos)); }
public FrmItem(Produto p) : this() { produto = p; valorPedidoMenosProdutoSendoEditado = D.Pedido.Valor - p.PrecoVendaTotal; }
private void AddProduto() { int i; try { i = grdProduto.CurrentRowIndex; lastProductAddedIndex = i; } catch { return; } if (i == -1) return; Produto p = new Produto(D.Pedido); p.CarregarProduto(Convert.ToInt32(grdProduto[i, 0])); p.AcaoProduto = Produto.EnumAcaoProduto.ItemAdicionar; //FrmItem f = new FrmItem(p); // Reativar para que vá ao próximo item a ser vendido Util.FormExibirDialog(new FrmItem(p)); //f.Closing += new CancelEventHandler(f_Closing); }
public Grade(Produto produto) { Produto = produto; }
public FrmGrade(Produto _produto, DataTable _dtGrade) { InitializeComponent(); produto = _produto; dtGrade = _dtGrade; }
private bool inserirItemPedido(SqlCeTransaction dbTrans, Produto p) { int rf; //Dá baixa no estoque: string sqlUpdateEstoque = @" update produto set estoque=estoque - " + p.QuantidadeRequerida + @" where id_produto = " + p.Id; rf = D.Bd.ExecuteNonQuery(sqlUpdateEstoque, dbTrans); if (rf < 1) { dbTrans.Rollback(); return false; } string sqlInsertItem = ""; sqlInsertItem = @" insert into item_pedido (id_pedido, id_funcionario, id_produto, quantidade, valor_unitario, desconto) values ('" + D.Pedido.Id + "'," + D.Funcionario.Id + "," + p.Id + "," + p.QuantidadeRequerida + "," + Bd.RealPtParaBd(p.PrecoUtilizado.ToString()) + "," + Bd.Numerico(Fcn.RoundComputing(p.Desconto, Parametro.ProdutoPrecoCasasDecimais)) + ")"; rf = D.Bd.ExecuteNonQuery(sqlInsertItem, dbTrans); if (rf < 1) { dbTrans.Rollback(); return false; } //Verifica se o pedido tem grade e insere p.IdItemPedido.V = D.Bd.I("SELECT @@IDENTITY AS UltimaIdentity", dbTrans); if (p.IdGrade.Iniciada) { rf = p.Grade.Inserir(dbTrans); if (rf < 1) { try { dbTrans.Rollback(); } catch { } return false; } } return true; }
/// <summary> /// Executado depois que é feita alguma moficação no pedido, tipo outra tabela de preço /// Tenta manter quantidades e descontos originais, se não conseguir vai zerando a quantidade ou o desconto /// do produto /// </summary> private void pedidoAdaptarDianteNovasCircunstancias() { Produto p, clone; int c = LstItem.Count; //Valores desejados mas que talvez não sejam possíveis dado as novas condições int quantidadeRequeridaDesejada; double descontoDesejado; bool pedidoNaoPodeSerAlterado = false; List<Produto> itemBackupLst = new List<Produto>(); //Fazer backup de todos os itens caso nao seja possivel manter a quantidade zerando o desconto foreach (Produto it in LstItem) { clone = new Produto(D.Pedido); clone = (Produto)((ICloneable)it).Clone(); itemBackupLst.Add(clone); } List<string> ExceptionMessageLst = new List<string>(); for (int i = c - 1; i >= 0; --i) { p = LstItem[i]; LstItem.RemoveAt(i); quantidadeRequeridaDesejada = p.QuantidadeRequerida; descontoDesejado = p.Desconto; p.QuantidadeRequerida = 0; p.Desconto = 0; p.CarregarProduto(p.Id); //Tenta aplicar tudo desejado try { p.QuantidadeRequerida = quantidadeRequeridaDesejada; p.Desconto = descontoDesejado; D.Pedido.LstItem.Add(p); } catch { //Tenta zerar o desconto mantendo a quantidade try { p.QuantidadeRequerida = quantidadeRequeridaDesejada; p.Desconto = 0; D.Pedido.LstItem.Add(p); } //Desiste e guarda e msg da exceção catch (Exception ex) { p.QuantidadeRequerida = 0; p.Desconto = 0; pedidoNaoPodeSerAlterado = true; ExceptionMessageLst.Add("item " + p.Id + ex.Message + ", "); } } } if (pedidoNaoPodeSerAlterado) { string Msg = "Não foi possível modificar algum ou alguns itens do pedido "; foreach (string s in ExceptionMessageLst) Msg += s; Msg = Msg.Substring(0, Msg.Length - 2); //Restaurar backup LstItem.Clear(); foreach (Produto it in itemBackupLst) { LstItem.Add(it); } //Lança exceção para desfazer a atividade que estava tentando ser feita throw new Exception(Msg); } clone = null; }
private bool atualizaTabelaItemPedido(SqlCeTransaction dbTrans, Produto p) { int rf; //Atualiza o estoque string sqlPedidoOriginalQuantidade = @" select quantidade from item_pedido where id_pedido='" + D.Pedido.Id + "' and id_produto=" + p.Id; int quantidadeOriginal = D.Bd.I(sqlPedidoOriginalQuantidade, dbTrans); string sqlUpdateEstoque = @" update produto set estoque=estoque + " + quantidadeOriginal + " - " + p.QuantidadeRequerida + @" where id_produto = " + p.Id; D.Bd.ExecuteNonQuery(sqlUpdateEstoque, dbTrans); string sqlUpdateItem = ""; sqlUpdateItem = @" update item_pedido set quantidade=" + p.QuantidadeRequerida + "," + "id_funcionario=" + D.Funcionario.Id + "," + "valor_unitario=" + Bd.RealPtParaBd(p.PrecoUtilizado.ToString()) + "," + "desconto=" + p.Desconto + " where id_pedido='" + D.Pedido.Id + "' and id_produto=" + p.Id; rf = D.Bd.ExecuteNonQuery(sqlUpdateItem, dbTrans); if (rf < 1) { dbTrans.Rollback(); return false; } //Verifica se o pedido tem grade e atualiza if (p.IdGrade.Iniciada) { rf = p.Grade.Atualizar(dbTrans); if (rf < 1) { dbTrans.Rollback(); return false; } } return true; }
/// <summary> /// Inclue na lstItem e ou decrementa o estoque /// </summary> /// <param name="pt"></param> public void ListaInserirProduto(Produto pt) { LstItem.Add(pt); pt.AcaoProduto = Produto.EnumAcaoProduto.ItemAdicionar; pt.estoque.V -= pt.QuantidadeRequerida; }
public void ListaEditarProduto(Produto pt) { pt.AcaoProduto = Produto.EnumAcaoProduto.ItemAlterar; pt.estoque.V -= pt.QuantidadeRequerida; }
/// <summary> /// Exclui os itens marcados para exclusão /// </summary> /// <returns></returns> public bool ItensExcluir(SqlCeTransaction dbTrans, Produto p) { int rf; //Incrementa estoque: string sqlUpdateEstoque = @" update produto set estoque=estoque + " + p.QuantidadeRequerida + @" where id_produto = " + p.Id; rf = D.Bd.ExecuteNonQuery(sqlUpdateEstoque, dbTrans); //Verificar se funcionou... string sqlDelItemPedido = @" Delete from item_pedido where id_pedido='" + Id + "' and id_produto=" + p.Id; rf = D.Bd.ExecuteNonQuery(sqlDelItemPedido, dbTrans); //Esta trazendo zero mesmo que tenha tido sucesso na delecao //if (rf < 1) //{ // dbTrans.Rollback(); // return false; //} if (p.IdGrade.Iniciada) { p.Grade.Excluir(dbTrans); } return true; }
//da public void Carregar(Guid id) { Id = id; Produto clone; string sqlPedido = @"select * from pedido where id_pedido='" + Id + "'"; SqlCeDataReader rdCarga = D.Bd.Linha(sqlPedido); IdClientePocket = (Guid)(rdCarga["id_cliente_pocket"]); IdClienteStore = Bd.IntZeroIfNull(rdCarga["id_cliente_store"]); Data = Convert.ToDateTime(rdCarga["data"]); try { Bdi = Convert.ToDouble(rdCarga["bdi"]); } catch { } IdFuncionario = Convert.ToInt32(rdCarga["id_funcionario"]); idTabelaPreco = Bd.IntZeroIfNull(rdCarga["id_tabela_preco"]); idFormaPagamento = Bd.IntZeroIfNull(rdCarga["id_forma_pagamento"]); string sqlEspecieFinanceira = @"SELECT id_especie_financeira FROM item_forma_pagamento WHERE id_forma_pagamento = " + IdFormaPagamento; idEspecieFinanceira = D.Bd.I(sqlEspecieFinanceira); Status = Convert.ToString(rdCarga["status"]); valorBd = Bd.IntZeroIfNull(rdCarga["valor"]); Observacao = Convert.ToString(rdCarga["observacao"]); int quantidade, idProduto; double valorUnitario, desconto; DataTable dtItemPedido = D.Bd.DataTablePreenche("select * from item_pedido where id_pedido ='" + Id + "'", "item_pedido"); for (int y = 0; y < dtItemPedido.Rows.Count; ++y) { quantidade = Bd.IntZeroIfNull(dtItemPedido.Rows[y]["quantidade"]); valorUnitario = Bd.DoubleZeroIfNull(dtItemPedido.Rows[y]["valor_unitario"]); desconto = Bd.DoubleZeroIfNull(dtItemPedido.Rows[y]["desconto"]); idProduto = Convert.ToInt32(dtItemPedido.Rows[y]["id_produto"]); Produto p = new Produto(this, quantidade, valorUnitario, desconto); p.CarregarProduto(idProduto); p.PrecosCalcularEGuardar(); //Incrementa a quantidade do item caso esteja editando //Isto é repoe o estoque na memória para edição p.estoque.V += quantidade; //Carregar grade if (p.IdGrade.Iniciada) { p.Grade = new Grade(p); p.Grade.Carregar(); } LstItem.Add(p); clone = new Produto(D.Pedido); clone = (Produto)((ICloneable)p).Clone(); ItemCarregadosLst.Add(clone); } rdCarga.Close(); return; }