Esempio n. 1
0
        private void GuardarButton_Click(object sender, EventArgs e)
        {
            // OBTENEMOS LOS DATOS PARA GUARDARLOS EN LA TABLA COMPRAS
            ENTVenta venta = new ENTVenta
            {
                Fecha     = FechaDateTimePicker.Value,
                NoFactura = FacturaTextBox.Text
            };

            using (TransactionScope scope = new TransactionScope())
            {
                //INSERTA LA COMPRA Y RETORNA EL ID
                try
                {
                    IDVenta = BLVenta.InsertVentasGetIDVenta(venta);
                }
                catch (SqlException ex)
                {
                    if (ex.Message.Contains("IX_Ventas"))
                    {
                        errorProvider1.SetError(FacturaTextBox, "Número de Factura ya Existe...!");
                        FacturaTextBox.Focus();
                        return;
                    }
                    errorProvider1.Clear();
                }

                //RECORRE EL DATAGRID Y LO INSERTA EN LA TABLA COMPRADETALLE
                ENTVentaDetalle Registros = new ENTVentaDetalle();

                foreach (DataGridViewRow filas in DetallesDataGridView.Rows)
                {
                    Registros.Cantidad    = float.Parse(filas.Cells["Cantidad"].Value.ToString());
                    Registros.Precio      = decimal.Parse(filas.Cells["Precio"].Value.ToString());
                    Registros.Descripcion = filas.Cells["Descripcion"].Value.ToString();
                    Registros.IDProducto  = int.Parse(filas.Cells["IDProducto"].Value.ToString());
                    Registros.IDVenta     = IDVenta;

                    misDetalles.Add(Registros);

                    BLVentaDetalle.InsertVentaDetalle(Registros);

                    //GUARDAR EN KARDEX
                    ENTKardex miKardex      = BLKardex.SelectKardexByIDProducto(Registros.IDProducto);
                    float     Existencia    = miKardex.Existencia;
                    decimal   Saldo         = miKardex.Saldo;
                    decimal   CostoPromedio = miKardex.CostoPromedio;

                    //GRABAR EN KARDEX
                    ENTKardex kardex = new ENTKardex
                    {
                        Fecha      = FechaDateTimePicker.Value,
                        Concepto   = "VE-" + IDVenta,
                        Salida     = Registros.Cantidad,
                        Existencia = Existencia - Registros.Cantidad
                    };
                    //kardex.CostoUnitario = Registros.CostoUnitario; //POR AQUI
                    kardex.Haber = Convert.ToDecimal(kardex.Salida) * CostoPromedio;
                    kardex.Saldo = Saldo - kardex.Haber;
                    try
                    {
                        kardex.CostoPromedio = kardex.Saldo / (decimal)kardex.Existencia;
                    }
                    catch (DivideByZeroException ex)
                    {
                        kardex.CostoPromedio = 0;
                    }

                    kardex.IDProducto = Registros.IDProducto;

                    BLKardex.InsertKardex(kardex);

                    ////Obtiene un último costo para agregarlo al precio del producto
                    //decimal UltimoCosto = BLKardex.GetUltimoCosto(Registros.IDProducto);

                    // ACTUALIZAR LA TABLA PRODUCTOS
                    BLProducto.UpdateCantidadVenta(kardex.Existencia, kardex.IDProducto);
                }

                scope.Complete();

                MessageBox.Show(string.Format("La venta: {0}, fue grabada de forma exitosa", IDVenta),
                                "Confirmación", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }