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);
        }
Beispiel #2
0
        //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);
            }
        }
Beispiel #3
0
 public int GenerarateSalesInsert(E_Sales _sales)
 {
     return(objSales.GenerarateSaleInsert(_sales));
 }