public int GenerarateSaleInsert(E_Sales _sales) { //llamamos el procedimiento almacenado para para la venta SqlCommand cmd = new SqlCommand("SP_generate_sale", connection); cmd.CommandType = CommandType.StoredProcedure; connection.Open(); //enviamos los parametros de la venta. cmd.Parameters.AddWithValue("@date_of_sale", _sales.DateOfSale); cmd.Parameters.AddWithValue("@total", _sales.Total); cmd.Parameters.AddWithValue("@id_user", _sales.IdUser); cmd.Parameters.AddWithValue("@id_client", _sales.IdClient); //ejecutamos la sentencia //cmd.ExecuteNonQuery(); int idSale; try { //recibimos el ultimo ID insertado en la base de datos. //para ello se uso desde el procediemiento almacenado SELECT SCOPE_IDENTITY() idSale = Convert.ToInt32(cmd.ExecuteScalar()); } catch (Exception) { idSale = 0; } connection.Close(); return(idSale); }
//evento-metodo- que se encarga de enviar la venta para el insert a la base de datos private void pbApplySale_Click(object sender, EventArgs e) { //realizamos la instancia de nuestra entidad y nuetro negocio. N_Sales applySale = new N_Sales(); N_SalesConcepts applySaleConcepts = new N_SalesConcepts(); E_Sales entitySale = new E_Sales(); E_SalesConcepts entitySaleConcept; try { string noNumber = txtIdCliente.Text; int number = 0; //si el cliente no existe en la venta le agregamos un valor por defecto a nuestro cliente //validamos de que la cadena sea un numero if (!int.TryParse(noNumber, out number)) { txtIdCliente.Text = "1003"; } //validamos de que el datagridview(tabla) tenga datos. if (dgvTableSales.Rows.Count == 0) { txtQuantityToSell.Focus(); lblCodeProduct.Text = "CODIGO PRODUCTO"; lblCodeProduct.ForeColor = Color.DarkGray; return; } //le pasamos los valores a nuestra entidad entitySale.IdUser = SessionUsers.IdUser; entitySale.IdClient = Int32.Parse(txtIdCliente.Text); entitySale.Total = decimal.Parse(txtTotalToPay.Text); entitySale.DateOfSale = DateTime.Now; //realizamos el envio de los datos para la insercion a la base de datos int idSale = applySale.GenerarateSalesInsert(entitySale); //si el insert se realiza exitosamente en la tabla ventas //se realizara el segundo insert a la tabla detalle de venta. if (idSale > 0) { //creamos la lista que contendra nuestra entidad E_SalesConcepts List <E_SalesConcepts> list_SalesConcepts = new List <E_SalesConcepts>(); //creamos un ciclo para recorrer cada celda de la tabla(datagridview sales) foreach (DataGridViewRow rows in dgvTableSales.Rows) { //creamos el objeto entitySaleConcept = new E_SalesConcepts(); //el tomamos el ultimo id insertado entitySaleConcept.IdSale = idSale; //buscamos en la celda a utilizar para el id del producto entitySaleConcept.IdProduct = Int32.Parse(rows.Cells[6].Value.ToString()); //buscamos en la celda a utilizar para el precio del producto entitySaleConcept.SalePrice = decimal.Parse(rows.Cells[4].Value.ToString()); //buscamos en la celda a utilizar para el total del producto. entitySaleConcept.Amount = Int32.Parse(rows.Cells[2].Value.ToString()); //llenamos la lista con nuestra entidad list_SalesConcepts.Add(entitySaleConcept); } //realizamos el segundo insert //insert a la tabla detalle de venta if (list_SalesConcepts.Count > 0) { applySaleConcepts.GenerarateSaleConceptInsert(list_SalesConcepts); //else error } //venta exitosa formSuccess = new FrmSuccess("Venta Exitosa!"); formSuccess.ShowDialog(); //luego de completar la venta limpiamos la tabla venta. //dgvTableSales.DataSource = ""; dgvTableSales.Columns.Clear(); CalculateTotal(); //limpiamos todos los campos de la venta searchDNI.Text = ""; lblCustomer.Text = "Cliente al contado"; lblAddressCustomer.Text = "Direccion Del Cliente"; } else { formErro = new FrmError("Error en la venta."); formErro.ShowDialog(); return; } } catch (Exception ex) { MessageBox.Show("algo no anda bien..." + ex); } }
public int GenerarateSalesInsert(E_Sales _sales) { return(objSales.GenerarateSaleInsert(_sales)); }