public boolean alta(Venta v) {
        
        Base.openTransaction();
        boolean resultOp = true;
        if (v == null) {
            resultOp = false;
        } else {
            Integer idCliente = (Integer) v.get("cliente_id");
            if (v.getBoolean("pago")) { // SI se paga se calcula el monto, si se fia no.
                Venta venta = Venta.create("monto", v.get("monto"), "cliente_id", idCliente, "fecha", v.get("fecha"), "pago", v.get("pago"), "pago_id", v.get("pago_id"));
                resultOp = resultOp && venta.saveIt();//guardo la venta
                int idVenta = venta.getInteger("id");
                ultimoIdVenta = idVenta;
                resultOp = resultOp && cargarProductosVendidos(idVenta, v.getProductos(), v.getPreciosFinales());//guardo los productos vendidos
                resultOp = resultOp && actualizarAdquisicionCliente(idCliente, v.getProductos());//actualizo la tabla de productos adquiridos por clientes
            } else {
                Venta venta = Venta.create("cliente_id", idCliente, "fecha", v.get("fecha"), "pago", v.get("pago"));
                resultOp = resultOp && venta.saveIt();//guardo la venta
                int idVenta = venta.getInteger("id");
                ultimoIdVenta = idVenta;
                resultOp = resultOp && cargarProductosVendidos(idVenta, v.getProductos(), null);//guardo los productos vendidos
                resultOp = resultOp && actualizarAdquisicionCliente(idCliente, v.getProductos());//actualizo la tabla de productos adquiridos por clientes
            }
        }
        Base.commitTransaction();
        return resultOp;
    }