Publicado el Dejar un comentario

Actualizar Woocommerce directo desde MyBusinessPOS con IA

Este ejemplo incorpora lo que se sabe sobre la estructura de la base de datos de MyBusiness POS (por ejemplo la tabla prods que contiene los artículos y precios) y cómo hacer consultas SQL desde VBScript en el entorno del propio sistema (porque esta tabla y otras son conocidas dentro de la comunidad técnica de helpmybusinesspos.info)

' ==========================================
' Script VBScript para MyBusiness POS v20
' Actualiza precio de producto en WooCommerce
' ==========================================

Sub ActualizarPrecioWoo()

    On Error Resume Next

    Dim rst, sSQL
    Dim sku, nuevoPrecio
    Dim httpReq, url
    Dim consumerKey, consumerSecret
    Dim jsonBody

    ' ----------------------------------------------------
    ' 1) Pedir al usuario el SKU a actualizar
    ' ----------------------------------------------------
    sku = InputBox("Ingrese el SKU del producto a actualizar en WooCommerce:", "Actualizar Precio Woo")

    If Trim(sku) = "" Then
        MsgBox "No se ingresó ningún SKU.", vbExclamation, "Aviso"
        Exit Sub
    End If

    ' ----------------------------------------------------
    ' 2) Consultar precio desde MyBusiness POS v20 (tabla prods)
    ' ----------------------------------------------------
    sSQL = "SELECT precio1 FROM prods WHERE articulo = '" & Replace(sku, "'", "''") & "'"

    Set rst = CreateObject("ADODB.Recordset")
    rst.Open sSQL, Ambiente.Connection, 1, 1

    If rst.EOF Then
        MsgBox "Producto no encontrado en MyBusiness POS.", vbCritical, "Error"
        rst.Close
        Set rst = Nothing
        Exit Sub
    End If

    nuevoPrecio = rst("precio1")

    rst.Close
    Set rst = Nothing

    ' ----------------------------------------------------
    ' 3) Preparar API de WooCommerce
    ' ----------------------------------------------------
    consumerKey = "ck_tu_consumer_key"
    consumerSecret = "cs_tu_consumer_secret"

    ' Construir data JSON para actualizar el precio
    jsonBody = "{""regular_price"": """ & CStr(nuevoPrecio) & """}"

    ' Formar URL para actualizar por SKU
    url = "https://tu-tienda.com/wp-json/wc/v3/products?sku=" & sku & _
          "&consumer_key=" & consumerKey & "&consumer_secret=" & consumerSecret

    ' ----------------------------------------------------
    ' 4) Primero buscar el producto por SKU (GET)
    ' ----------------------------------------------------
    Set httpReq = CreateObject("MSXML2.ServerXMLHTTP")

    httpReq.Open "GET", url, False
    httpReq.setRequestHeader "Content-Type", "application/json"
    httpReq.Send

    If httpReq.Status <> 200 Then
        MsgBox "Error al buscar producto en WooCommerce: " & httpReq.Status & " " & httpReq.statusText, vbCritical
        Set httpReq = Nothing
        Exit Sub
    End If

    ' ----------------------------------------------------
    ' 5) Extraer ID de producto de la respuesta
    '    (Se espera que la respuesta sea un array JSON con al menos un producto)
    ' ----------------------------------------------------
    Dim responseText, productId
    responseText = httpReq.responseText

    ' Aquí se asume que el primer objeto JSON tiene un id
    ' Se extrae usando métodos VBScript básicos (parser simple)
    productId = ""
    Dim startPos, endPos
    startPos = InStr(responseText, """id"":")
    If startPos > 0 Then
        endPos = InStr(startPos, responseText, ",")
        productId = Mid(responseText, startPos + 5, endPos - (startPos + 5))
    End If

    If productId = "" Then
        MsgBox "No se encontró ID de producto para SKU " & sku, vbCritical, "Error"
        Set httpReq = Nothing
        Exit Sub
    End If

    ' ----------------------------------------------------
    ' 6) Actualizar precio en WooCommerce
    ' ----------------------------------------------------
    Dim updateUrl
    updateUrl = "https://tu-tienda.com/wp-json/wc/v3/products/" & productId & _
                "?consumer_key=" & consumerKey & "&consumer_secret=" & consumerSecret

    httpReq.Open "PUT", updateUrl, False
    httpReq.setRequestHeader "Content-Type", "application/json"
    httpReq.Send jsonBody

    If httpReq.Status = 200 Or httpReq.Status = 201 Then
        MsgBox "Precio actualizado para SKU " & sku & " a $" & nuevoPrecio, vbInformation, "OK"
    Else
        MsgBox "Error al actualizar precio: " & httpReq.Status & " " & httpReq.statusText, vbCritical, "Error"
    End If

    Set httpReq = Nothing
    On Error GoTo 0

End Sub

¿Cómo funciona este script?

  1. Solicita el SKU al usuario (para identificar el producto).
  2. Consulta el precio actual desde la tabla prods de MyBusiness POS usando Ambiente.Connection.
  3. Hace una petición GET a la API REST de WooCommerce para buscar el producto por SKU (esto devuelve datos en JSON).
  4. Extrae el ID del producto de la respuesta.
  5. Hace una petición PUT para actualizar el precio usando MSXML2.ServerXMLHTTP.
  6. Muestra un mensaje indicando si la actualización fue exitosa o si ocurrió un error.

Requisitos para que este script funcione

✔ WooCommerce con API REST habilitada y llaves de acceso (consumer_key, consumer_secret).
✔ MyBusiness POS v20 con acceso a la base de datos y tabla prods.
✔ Permiso para ejecutar VBScript dentro del sistema (como procedimiento, evento o botón).
✔ La tienda WooCommerce debe permitir peticiones HTTPS a su API desde la red donde se ejecuta MyBusiness.


Consideraciones importantes

🔹 VBScript no tiene un parser JSON nativo, por lo que la extracción del ID es muy básica. Para JSON más complejo necesitarás librerías adicionales o manejar el texto cuidadosamente.
🔹 En producción es ideal no pasar keys directamente en la URL y usar HTTPS con autenticación más segura.
🔹 Asegúrate de que el SKU en WooCommerce realmente coincide con el campo articulo de MyBusiness.

Deja un comentario