protected void btnGuardar_Click(object sender, EventArgs e)
        {
            PresupuestoEntidad presupuesto = new PresupuestoEntidad();
            List<DetallePresupuestoEntidad> listaDetalle = new List<DetallePresupuestoEntidad>();
            List<MatrizEntidad> listaMatrices = (List<MatrizEntidad>)Session["carritoPresupuesto"];

            decimal total = (decimal)Session["totalPresupuesto"];

            presupuesto.cliente = int.Parse(ddlClientes.SelectedValue);
            presupuesto.numero = int.Parse(txtnumeroPresupuesto.Text);
            presupuesto.fecha = DateTime.Parse(txtFechaPresupuesto.Text);
            presupuesto.fechaEntrega = DateTime.Parse(FechaEntrega.Text);
            presupuesto.periodoVigencia = DateTime.Parse(FechaVencimiento.Text);
            presupuesto.total = total;

            foreach (var matriz in listaMatrices)
            {
                DetallePresupuestoEntidad detalle = new DetallePresupuestoEntidad();
                string nombreMatriz = matriz.nombreArchivo;
                detalle.idMatriz = MatrizGestor.buscarIdMatriz(nombreMatriz);
                detalle.cantidad = matriz.cantidad;
                detalle.precio = matriz.precio;
                detalle.subtotal = matriz.subTotal;
                listaDetalle.Add(detalle);
            }
            PresupuestoGestor.guardarPresupuesto(presupuesto, listaDetalle);

            resetearTodo();
        }
        public static void guardarPresupuesto(PresupuestoEntidad presupuesto, List<DetallePresupuestoEntidad> lista)
        {
            SqlConnection connection = new SqlConnection();
            SqlCommand command = new SqlCommand();
            SqlTransaction transaction = null;
            int idPresupuesto = 0;

            try
            {
                connection.ConnectionString = cadenaConeccion;
                connection.Open();
                transaction = connection.BeginTransaction();
                command.Transaction = transaction;
                connection.ConnectionString = cadenaConeccion;
                connection.Open();
                transaction = connection.BeginTransaction();
                string sql = "insert into Presupuesto (numero, idCliente, fecha, periodoVigencia, fechaEntrega, total) values (@numeroPresupuesto,@idCliente,@fecha, @periodoVigencia, @fechaEntrega, @total)";
                command.Connection = connection;
                command.CommandText = sql;

                command.Parameters.AddWithValue("@numeroFactura", presupuesto.numero);
                command.Parameters.AddWithValue("@idCliente", presupuesto.cliente);
                command.Parameters.AddWithValue("@fecha", presupuesto.fecha);
                command.Parameters.AddWithValue("@periodoVigencia", presupuesto.periodoVigencia);
                command.Parameters.AddWithValue("@fechaEntrega", presupuesto.fechaEntrega);
                command.Parameters.AddWithValue("@total", presupuesto.total);
                command.ExecuteNonQuery();
                command.Parameters.Clear();

                sql = "SELECT @@IDENTITY as 'id'";
                command.CommandText = sql;
                SqlDataReader dr = command.ExecuteReader();
                while (dr.Read())
                {
                    idPresupuesto = int.Parse(dr["id"].ToString());
                }

                dr.Close();
                sql = "insert into DetallePresupuesto (numeroPresupuesto, idMatriz, cantidad, precio, subTotal) values (@numeroPresupuesto, @idMatriz, @cantidad, @precio, @subTotal)";
                command.CommandText = sql;

                foreach (var detalle in lista)
                {
                    command.Parameters.AddWithValue("@numeroPresupuestoura", detalle.numeroPresupuesto);
                    command.Parameters.AddWithValue("@idMatriz", detalle.idMatriz);
                    command.Parameters.AddWithValue("@cantidad", detalle.cantidad);
                    command.Parameters.AddWithValue("@precio", detalle.precio);
                    command.Parameters.AddWithValue("@subTotal", detalle.subtotal);
                    command.ExecuteNonQuery();
                    command.Parameters.Clear();
                }

                transaction.Commit();
            }
            catch (SqlException ex)
            {
                transaction.Rollback();
            }
            finally
            {
                if (connection.State == ConnectionState.Open)
                {
                    connection.Close();
                }
            }
        }