Publicado el Dejar un comentario

Como cobrar con tareta sin ser afectado por las comisiones


💳 Cómo vender con comisión sin infringir la ley (y cómo usar tu sistema de punto de venta para hacerlo correctamente)

Muchos negocios enfrentan este dilema:

➡ El cliente paga con tarjeta
➡ La terminal cobra comisión
La ley no permite que se le cobre esa comisión directamente al cliente

La Comisión Nacional para la Protección y Defensa de los Usuarios de Servicios Financieros (CONDUSEF) es clara: no puedes cobrarle al cliente una comisión adicional por pagar con tarjeta. Hacerlo puede generar multas que realmente afectan a tu negocio.

Entonces, ¿qué se hace?


🧾 1️⃣ Maneja tus precios estratégicamente

💸 Precio con comisión ya considerado

En lugar de cobrarle extra al cliente por el uso de tarjeta… incluye la comisión en tu precio normal de venta. Esto te deja tranquilo, acorde a la ley, y mantiene tu estructura de precios clara.

📊 Precio de mayoreo separado

Si vendes productos a clientes mayoristas, puedes tener otro precio más bajo.

📌 En MyBusiness POS puedes manejar tanto precio de menudeo como precio de mayoreo fácilmente dentro del catálogo de productos.
Esto te permite tener:

  • Un precio normal (incluyendo comisión).
  • Un precio de mayoreo (sin incluir comisión).

Así el monto que el cliente mayorista paga puede ser menor cuando corresponde.
Esto ayuda mucho para ventas en efectivo o compras grandes en tu negocio.


👥 2️⃣ Usa perfiles de cliente inteligente

En MyBusinessPOS ya existe por default un cliente como SYS – Cliente General.

👉 Puedes crear otro cliente, por ejemplo:

🔹 SYS – E (clientes en efectivo)
Y usarlo para aplicar el precio de mayoreo cuando la venta sea en efectivo.

✔ Es una forma práctica de separar ventas en efectivo y aplicar descuentos de forma ordenada en tu sistema.


🤔 ¿Y en Eleventa?

La buena noticia es que Eleventa también maneja precio de mayoreo y precio de menudeo.
Según su manual, al crear un producto puedes asignar:

✔ Precio de venta
✔ Precio al mayoreo

Y al momento de la venta, con una tecla (por ejemplo F11) o un botón puedes cambiar entre uno y otro precio para aplicar el que corresponda.

Esto significa que, si usas Eleventa en lugar de MyBusinessPOS, también puedes tener:

🌟 Precio con comisión (venta normal)
🌟 Precio sin comisión (mayoreo / especial / efectivo)

Lo único que cambia es cómo decides cuándo aplicar cada uno durante la venta.


🏦 3️⃣ Elige tu terminal con criterio

Si tienes pocos pagos con tarjeta, puedes amortiguar la comisión con los precios normales.

Si ya tienes volumen, elige una terminal con menor comisión.

Por ejemplo:

👉 La terminal de Getnet tiene una comisión aproximada de 2.18% ya con IVA incluido, lo cual es más competitivo que muchas terminales conocidas que cobran mucho más.


📊 4️⃣ ¿Cómo afecta la comisión realmente?

A mí me sirve de ejemplo:

🔹 Mi ganancia promedio es 23%
🔹 Si tomo en cuenta comisión de tarjeta, mi margen baja a ~19.5%
🔹 Sin embargo, aceptar pagos con tarjeta me ayuda a vender más porque:

✔ Más clientes pueden pagar
✔ Genera confianza
✔ Las ventas aumentan
✔ El ticket promedio sube

Yo lo veo como una situación ganar–ganar:

💳 El cliente tiene opciones de pago
🏪 El negocio vende más
📈 Creces con mayor clientela


🧠 Conclusión sencilla

✅ Incluye la comisión en tu precio normal
✅ Mantén un precio de mayoreo o especial para efectivo
✅ Usa la funcionalidad de precios de tu POS (MyBusinessPOS o Eleventa)
✅ Evita cobrar la comisión directamente al cliente (eso está prohibido por CONDUSEF)
✅ Busca terminales con menor comisión, como bbva o Getnet


Publicado el Dejar un comentario

Consultando productos con MybusinesPOS y woocommerce

Ejemplo completo para integrar WooCommerce y MyBusiness POS v20, usando prácticas comunes de sincronización (productos, precios e inventario)


🛒 Integración WooCommerce + MyBusiness POS v20: Ejemplo Práctico

Conectar tu tienda en línea en WooCommerce con tu sistema de MyBusiness POS v20 permite que:

  • Los productos y precios se sincronicen automáticamente.
  • El inventario se mantenga actualizado en ambos sistemas.
  • Las ventas en línea y físicas compartan el mismo catálogo y stock.

A continuación te muestro un ejemplo técnico completo de cómo podrías implementar una sincronización básica de productos y precios entre WooCommerce y MyBusiness POS.


📌 Antes de Empezar

Este ejemplo asume que:

✔ Tu WooCommerce está activo y accesible con la REST API de WooCommerce.
✔ MyBusiness POS v20 está instalado y ejecutándose en tu red local.
✔ Los productos en POS tienen un campo adicional (por ejemplo wc_id) que almacena el ID de producto de WooCommerce.
✔ Los productos se identifican por SKU (código de producto) para que coincidan entre WooCommerce y POS.


🔧 ¿Qué vamos a lograr?

Queremos que un script externo (por ejemplo, en Python o Node.js) haga lo siguiente:

  1. Leer productos de MyBusiness POS.
  2. Comparar con WooCommerce usando SKU.
  3. Actualizar o crear productos en WooCommerce con esos datos.
  4. Asegurar que los precios y existencias queden sincronizados.

Este patrón es común cuando no hay un plugin oficial listo para MyBusiness POS + WooCommerce.(helpmybusinesspos.info)


💻 Ejemplo de Script de Sincronización (Python)

Este es un ejemplo básico que:

  • Conecta a la base de datos SQL de MyBusiness POS.
  • Conecta a WooCommerce vía REST API.
  • Sincroniza productos, precios e inventario.

Ajusta los parámetros de conexión a tu servidor SQL Server y WooCommerce.

# Instalar dependencias:
# pip install pyodbc woocommerce

import pyodbc
from woocommerce import API

# Configuración de WooCommerce API
wcapi = API(
    url="https://tu-tienda.com",
    consumer_key="ck_CONSUMER_KEY",
    consumer_secret="cs_CONSUMER_SECRET",
    version="wc/v3"
)

# Conexión a SQL Server donde está MyBusiness POS
conn = pyodbc.connect(
    "Driver={SQL Server};"
    "Server=TU_SERVIDOR_SQL;"
    "Database=MyBusiness20;"
    "Trusted_Connection=yes;"
)

cursor = conn.cursor()

# Consultar productos desde MyBusiness POS
cursor.execute("SELECT articulo, descripcion, precio1, existencia FROM prods")

for row in cursor.fetchall():
    sku = row.articulo
    name = row.descripcion
    price = float(row.precio1)
    stock = int(row.existencia)

    # Construir el payload para WooCommerce
    data = {
        "product": {
            "sku": sku,
            "name": name,
            "regular_price": str(price),
            "stock_quantity": stock
        }
    }

    # Intentar actualizar el producto por SKU en WooCommerce
    r = wcapi.get("products?sku=" + sku).json()

    if len(r) > 0:
        # Si existe, actualizamos con el ID
        product_id = r[0]['id']
        wcapi.put(f"products/{product_id}", data)
        print(f"Actualizado: {sku}")
    else:
        # Si no existe, crear uno nuevo
        wcapi.post("products", data)
        print(f"Creado: {sku}")

conn.close()

📊 ¿Cómo funciona esto?

🧠 1. Conexión a WooCommerce

Usamos la REST API de WooCommerce para crear o actualizar productos desde código.
Esto te permite sincronizar precios, stock e información general del producto con tu tienda en línea.(5205495.fs1.hubspotusercontent-na1.net)

🗄 2. Conexión a MyBusiness POS

El script se conecta directamente a la base de datos de MyBusiness POS, que normalmente se ejecuta en SQL Server. Extrae productos y datos relevantes (como articulo, precio1 y existencia).(My Business POS SIL)

🔄 3. Comparación con WooCommerce

Para cada producto en POS:

  • Se busca por SKU en WooCommerce.
  • Si existe, se actualiza.
  • Si no existe, se crea.

De esta forma se garantiza que ambos sistemas mantengan los mismos productos y precios.


🚀 Próximos pasos y mejoras

Este ejemplo es una base funcional, pero en un entorno productivo te puede interesar:

✅ Sincronizar imágenes de producto.
✅ Sincronizar categorías y atributos.
✅ Ejecutar la sincronización de forma automática (cron).
✅ Manejo de errores y logs detallados.
✅ Sincronizar también órdenes de WooCommerce hacia POS (ventas web a tienda física).(helpmybusinesspos.info)


Prompt para consultar en la IA


Quiero que generes un script completo en Python para sincronizar productos entre WooCommerce y MyBusiness POS v20.

Primero realiza una **búsqueda profunda en helpmybusinesspos.info** y en toda la documentación disponible de MyBusiness POS para identificar:

1. La estructura de la base de datos SQL, especialmente las tablas y campos relacionados con productos (como prods, articulos, precios, existencias).
2. Los campos más comunes utilizados en MyBusiness POS para SKU, nombre, precio y stock.
3. Buenas prácticas al consultar esa base de datos desde aplicaciones externas.

Luego genera el script con las siguientes características:

- Conectarse a la base de datos SQL Server donde está MyBusiness POS.
- Leer los productos desde la tabla principal (por ejemplo prods) tomando por lo menos:
    - articulo (como SKU),
    - descripcion (como nombre),
    - precio1 (como precio regular),
    - existencia (como stock).
- Conectarse a la REST API de WooCommerce usando la versión wc/v3 y las credenciales del usuario (consumer_key y consumer_secret).
- Buscar cada producto por SKU en WooCommerce.
- Si existe, actualizar su precio y stock.
- Si no existe, crearlo.
- Mostrar en consola qué productos fueron creados y cuáles actualizados.

Requisitos técnicos del script:

- Usar pyodbc para SQL Server.
- Usar la librería oficial `woocommerce` para la API.
- Incluir instrucciones para instalar dependencias (pip install).
- Incluir comentarios explicando cada sección del código.
- No dejar valores reales de conexión; usar placeholders como:
    - TU_SERVIDOR_SQL
    - TU_BASE_DE_DATOS
    - TU_USUARIO_SQL
    - TU_PASSWORD_SQL
    - TU_URL_WOOCOMMERCE
    - ck_xxxxxxxxx
    - cs_xxxxxxxxx
- Agregar manejo básico de excepciones con try/except.
- Cerrar correctamente la conexión a la base de datos al finalizar.

El resultado debe ser un script Python completo, listo para producción básica, bien comentado y claro para desarrolladores que integran WooCommerce con MyBusiness POS, con la estructura de tablas y campos verificada en la documentación de helpmybusinesspos.info.

Se requiere lo siguiente:

MyBusiness POS v20 instalado y funcionando
Acceso al servidor SQL Server donde está la base de datos
Nombre de la base de datos de MyBusiness
Usuario y contraseña con permisos de lectura (mínimo SELECT)
Conocer las tablas reales como prods, existenciaalmacen u otras según documentación actual
Identificar correctamente los campos como articulo (SKU), precio, imagen y existencias
WooCommerce instalado y funcionando en WordPress
Llaves API de WooCommerce (consumer_key y consumer_secret)
Python 3.9 o superior instalado
Librerías de Python instaladas: pyodbc, requests y json
Conexión a internet para comunicarse con la API de WooCommerce
Permisos adecuados en MyBusiness para consulta de inventarios y precios

Además, se requiere realizar una búsqueda profunda en helpmybusinesspos.info para confirmar nombres de tablas, estructura de datos, relaciones y posibles cambios en MyBusiness POS v20 antes de implementar el código.

Publicado el Dejar un comentario

Desarrollando con IA en MyBusiness POS

Ejemplo exacto del prompt que alguien debería escribirle a la IA para llegar al resultado de un código que generamos para MyBusiness POS v20.

Este prompt está optimizado para que la IA investigue bien y entregue código listo para producción.


Ejemplo de solicitud correcta a la IA

Quiero que generes un procedimiento completo en VBScript que se ejecute dentro de MyBusiness POS v20.

Antes de escribir el código, realiza una búsqueda profunda en helpmybusinesspos.info para identificar:

- Cómo funciona el motor de scripts interno de MyBusiness POS.
- Cómo se usa el objeto Ambiente.Connection.
- Cómo se crean y utilizan Recordsets (ADODB.Recordset).
- Ejemplos reales de consultas SQL ejecutadas desde procedimientos internos.

El objetivo es crear un procedimiento que:

1. Se ejecute dentro de MyBusiness POS v20 (no externo).
2. No use credenciales SQL ni cree una conexión nueva.
3. Utilice exclusivamente la conexión interna Ambiente.Connection.
4. Consulte la tabla "prods".
5. Permita buscar por clave de artículo o código de barras.
6. Devuelva descripcion, precio1, precio2 y precio3.
7. Muestre los resultados en un MsgBox.
8. Incluya validación de entrada.
9. Escape correctamente comillas simples para evitar errores SQL.
10. Libere correctamente los objetos Recordset al final.

Además, quiero que:

- El código esté completamente comentado.
- Expliques cada parte del procedimiento.
- Incluyas recomendaciones para adaptarlo a botones, eventos o Business Manager.
- Cites las secciones específicas encontradas en helpmybusinesspos.info que respalden el uso de Ambiente.Connection y scripting interno.



🎯 Por qué este prompt funciona bien

Porque:

✔ Especifica versión (v20)
✔ Obliga a investigar helpmybusinesspos.info
✔ Define claramente el entorno interno
✔ Restringe uso de conexiones externas
✔ Enumera exactamente qué debe incluir el código
✔ Pide comentarios y explicación técnica


🚀 Versión más avanzada (si quieres algo aún mejor)

Si quisieras un resultado todavía más profesional, podrías pedir:

Además, optimiza la consulta SQL para rendimiento,
sugiere índice recomendado para la tabla prods,
y agrega manejo de errores con On Error Resume Next controlado.

Este es el resultado de la petición a la IA, el cual sólo se debe copiar y pegar dentro de un nuevo procedimiento de mybusinesspos

'===========================================================
' Procedimiento: ConsultaPrecioProducto
' Descripción : Consulta precios desde la tabla prods
'               usando la conexión interna Ambiente.Connection
' Compatible  : MyBusiness POS v20
'===========================================================

Sub ConsultaPrecioProducto()

    On Error Resume Next

    '-------------------------------------------------------
    ' Declaración de variables
    '-------------------------------------------------------
    Dim rst
    Dim sSQL
    Dim sClave
    Dim descripcion
    Dim precio1, precio2, precio3

    '-------------------------------------------------------
    ' Solicitar clave o código de barras
    '-------------------------------------------------------
    sClave = InputBox("Ingrese clave o código de barras:", "Consulta de Precio")

    If Trim(sClave) = "" Then
        MsgBox "Debe ingresar una clave válida.", vbExclamation, "Aviso"
        Exit Sub
    End If

    '-------------------------------------------------------
    ' Sanitizar entrada básica (evitar error por comillas)
    '-------------------------------------------------------
    sClave = Replace(sClave, "'", "''")

    '-------------------------------------------------------
    ' Construcción de la consulta SQL
    '-------------------------------------------------------
    sSQL = "SELECT articulo, descripcion, precio1, precio2, precio3 " & _
           "FROM prods " & _
           "WHERE articulo = '" & sClave & "' " & _
           "OR codigobarras = '" & sClave & "'"

    '-------------------------------------------------------
    ' Crear recordset
    '-------------------------------------------------------
    Set rst = CreateObject("ADODB.Recordset")

    ' Ejecutar usando la conexión interna del sistema
    rst.Open sSQL, Ambiente.Connection, 1, 1

    '-------------------------------------------------------
    ' Validar si se encontró el producto
    '-------------------------------------------------------
    If Err.Number <> 0 Then
        MsgBox "Error al ejecutar la consulta: " & Err.Description, vbCritical, "Error"
        Exit Sub
    End If

    If Not rst.EOF Then

        descripcion = rst("descripcion")
        precio1 = rst("precio1")
        precio2 = rst("precio2")
        precio3 = rst("precio3")

        MsgBox "Artículo: " & rst("articulo") & vbCrLf & _
               "Descripción: " & descripcion & vbCrLf & _
               "Precio 1: $" & FormatNumber(precio1, 2) & vbCrLf & _
               "Precio 2: $" & FormatNumber(precio2, 2) & vbCrLf & _
               "Precio 3: $" & FormatNumber(precio3, 2), _
               vbInformation, "Resultado de la Consulta"

    Else
        MsgBox "No se encontró el artículo con la clave proporcionada.", _
               vbExclamation, "Sin resultados"
    End If

    '-------------------------------------------------------
    ' Liberar recursos
    '-------------------------------------------------------
    rst.Close
    Set rst = Nothing

    On Error GoTo 0

End Sub

Paso para implementar el procedimiento dentro de mybusinesspos

  • Aquí tienes los pasos sin formato, claros y directos para implementar el procedimiento dentro de MyBusiness POS v20:
  • Primero abre MyBusiness POS.
  • Entra al módulo Business Manager.
  • Ve al menú Herramientas y selecciona Procedimientos.
  • Haz clic en Nuevo para crear un procedimiento.
  • Escribe el nombre del procedimiento, por ejemplo: ConsultaPrecioProducto.
  • Selecciona como tipo de procedimiento VBScript.
  • Pega el código completo dentro del editor.
  • Guarda el procedimiento.
  • Para ejecutarlo manualmente, ve a Herramientas y selecciona Ejecutar Procedimiento, luego elige ConsultaPrecioProducto.
  • Si quieres asignarlo a un botón en ventas, ve a Configuración y después a Botones.
  • Selecciona un botón disponible.
  • En tipo de acción elige Ejecutar procedimiento.
  • Selecciona el procedimiento ConsultaPrecioProducto.
  • Guarda los cambios.
  • Ahora el botón ejecutará la consulta de precios dentro del sistema usando la conexión interna Ambiente.Connection.
  • Si deseas que se ejecute automáticamente como evento, entra a Herramientas y luego a Eventos.
  • Selecciona el evento donde quieras que se ejecute, por ejemplo al validar artículo.
  • Agrega la acción de ejecutar procedimiento y selecciona ConsultaPrecioProducto.
  • Guarda los cambios.
  • Con esto el procedimiento ya queda implementado dentro de MyBusiness POS v20 sin necesidad de usar credenciales externas, ya que utiliza la conexión interna del sistema.
Publicado el Dejar un comentario

Sincronizar el POS y WooCommerce con Python

Este es un ejemplo de cómo sincronizar una base de datos local con woocommerce:

Subida: productos, precios, estatus de pedidos

Bajada: Pedidos

import pyodbc
from woocommerce import API

# --- CONFIGURACIÓN DE CONEXIÓN ---
wcapi = API(
    url="https://tu-tienda.com",
    consumer_key="ck_xxxx",
    consumer_secret="cs_xxxx",
    version="wc/v3",
    timeout=120
)

# Conexión a SQL Server 2012
conn_str = "Driver={SQL Server};Server=localhost\MYBUSINESSPOS;Database=v8_demo;Trusted_Connection=yes;"

def ejecutar_sincronizacion_batch():
    try:
        db = pyodbc.connect(conn_str)
        cursor = db.cursor()

        # --- 1. ACTUALIZAR STOCK (PRODS -> WEB) ---
        # Solo productos vinculados (wc_id no nulo)
        cursor.execute("SELECT wc_id, existencia, articulo FROM prods WHERE wc_id IS NOT NULL")
        productos = cursor.fetchall()

        if productos:
            for i in range(0, len(productos), 100):
                lote = productos[i:i+100]
                # Formato Batch para WooCommerce
                items_stock = [
                    {
                        "id": p.wc_id,
                        "manage_stock": True,
                        "stock_quantity": int(p.existencia) if p.existencia >= 0 else 0
                    } for p in lote
                ]
               
                payload = {"update": items_stock}
                wcapi.post("products/batch", payload)
                print(f"Inventario: Procesados {len(lote)} artículos.")

        # --- 2. ACTUALIZAR ESTATUS (PEDIDOS CO -> COMPLETED) ---
        # Buscamos ventas que ya pasaron de PE a CO
        cursor.execute("SELECT wc_order_id, Venta FROM pedidos WHERE wc_order_id IS NOT NULL AND estatus = 'CO'")
        ventas_finalizadas = cursor.fetchall()

        if ventas_finalizadas:
            for i in range(0, len(ventas_finalizadas), 100):
                lote_v = ventas_finalizadas[i:i+100]
                batch_orders = {
                    "update": [{"id": v.wc_order_id, "status": "completed"} for v in lote_v]
                }
               
                wcapi.post("orders/batch", batch_orders)
               
                # Opcional: Limpiar wc_order_id o marcar como sincronizado en SQL
                # para evitar procesarlos en la siguiente vuelta
                for v in lote_v:
                    cursor.execute("UPDATE pedidos SET wc_order_id = NULL WHERE Venta = ?", (v.Venta,))
               
            db.commit()
            print(f"Estatus: {len(ventas_finalizadas)} órdenes marcadas como completadas.")

    except Exception as e:
        print(f"Error en sincronización: {e}")
    finally:
        if 'db' in locals(): db.close()

if __name__ == "__main__":
    ejecutar_sincronizacion_batch()
Continúa leyendo Sincronizar el POS y WooCommerce con Python
Publicado el Dejar un comentario

Qué báscula es mejor con Eleventa

Hoy queremos hablarles del programa Eleventa, una excelente opción para quienes buscan un sistema de punto de venta práctico, confiable y fácil de usar para su negocio.

es un sistema diseñado especialmente para tiendas, abarrotes, minisúpers, ferreterías, papelerías y muchos negocios más. Su gran ventaja es que es muy intuitivo, no necesitas ser experto en computación para utilizarlo, y te permite llevar un mejor control de tus ventas, inventarios, clientes y reportes.

Con Eleventa puedes:
✅ Registrar productos por código de barras o por nombre.
✅ Controlar inventarios en tiempo real.
✅ Llevar control de ventas por día, semana o mes.
✅ Administrar créditos a clientes.
✅ Imprimir tickets fácilmente.
✅ Conectar cajones de dinero, lectores de código y básculas.

Ahora bien, una de las preguntas más frecuentes es:

¿Qué báscula Torrey de 50 o 100 kg funciona con el sistema?

Las básculas de la marca son compatibles con Eleventa siempre que cuenten con salida serial (RS-232) o el convertidor adecuado a USB, y que estén configuradas correctamente para trabajar con el sistema. Muchos modelos de 50 kg o 100 kg funcionan sin problema, especialmente los diseñados para punto de venta o mostrador.

Sin embargo, aunque Torrey funciona bien, personalmente recomiendo la marca . ¿Por qué?

🔹 Suelen ser más accesibles en precio.
🔹 Tienen muy buena compatibilidad con sistemas de punto de venta.
🔹 Son fáciles de configurar.
🔹 Ofrecen buena durabilidad para negocios de alto movimiento.

Al final, lo más importante es verificar que la báscula tenga salida de comunicación compatible y que esté correctamente configurada dentro del sistema.

Si estás iniciando tu negocio o quieres modernizar tu tienda, Eleventa puede ser una excelente herramienta para organizarte mejor, ahorrar tiempo y tener mayor control de tus ganancias. Un buen sistema, junto con el equipo adecuado (computadora, impresora térmica, cajón y báscula compatible), puede marcar una gran diferencia en la administración diaria.