Skip to content

Tax Rules

El módulo de reglas de impuestos permite automatizar la asignación de códigos GTU, códigos JPK_V7, clases de impuestos de WooCommerce, categorías/etiquetas y meta personalizados a los productos mediante reglas de condición/acción. Se ejecuta al guardar un producto, mediante un cron programado y de forma manual (Dry Run + Run Now).

  1. Crea una regla: nombre, modo de coincidencia (all/any), condiciones, acciones, disparadores, prioridad.
  2. El motor evalúa las condiciones contra cada producto y aplica las acciones cuando la regla coincide.
  3. Cada aplicación de una regla se registra en el registro de auditoría (quién/qué/cuándo, dry run o en vivo).
  4. Disparadores:
    • Al guardar el producto - la regla se ejecuta después de crear o actualizar un producto.
    • Diario - la regla se ejecuta en el cron nocturno contra todo el catálogo.
    • Semanal - se ejecuta una vez por semana (WP-Cron).
    • Mensual - se ejecuta una vez cada 30 días (WP-Cron).
    • Manual - la regla se ejecuta solo cuando haces clic en Run / Dry Run en el administrador.

Abre WooCommerce > Tax Rules y haz clic en Añadir regla.

CampoDescripción
NombreEtiqueta legible para las personas (p. ej. “Books -> GTU_12”).
Grupo (opcional)Etiqueta de texto libre usada para filtrar en la lista.
ActivadaDesactiva una regla sin eliminarla.
Modo de coincidenciaall - todas las condiciones deben coincidir, any - al menos una debe coincidir.
DisparadoresCuándo se ejecuta la regla (guardar / diario / semanal / mensual / manual).
PrioridadOrden de ejecución, ascendente (predeterminado 10).

Formato: field | operator | value | key (último campo opcional).

Campos: title, sku, price, regular_price, stock_quantity, stock_status, category, tag, type, attribute, tax_class, meta_field, gtu_code, jpk_v7_code, taxonomy.

Operadores: equals, not_equals, contains, not_contains, starts_with, ends_with, gt, gte, lt, lte, in, not_in, is_empty, is_not_empty.

El campo taxonomy acepta cualquier taxonomía personalizada; pon el slug de la taxonomía en key y una lista de IDs de términos separados por comas en value:

taxonomy | in | 12,34,56 | product_brand

Ejemplos:

title | contains | book
price | gte | 100
category | in | 42,56,78
meta_field | equals | yes | _polski_tablet

Formato: action_type | value.

AcciónDescripciónEjemplo
set_gtu_codeAsigna un código GTUset_gtu_code | GTU_06
remove_gtu_codeElimina el código GTUremove_gtu_code |
set_jpk_v7_codeAsigna un código JPK_V7set_jpk_v7_code | GTU_12
set_tax_classEstablece una clase de impuestos de WooCommerceset_tax_class | reduced-rate
add_category / remove_categoryAñade o elimina una categoríaadd_category | 42
add_tag / remove_tagAñade o elimina una etiquetaadd_tag | 77
set_meta_fieldEstablece un campo metaset_meta_field | _polski_custom:flag
mark_receipt_with_nipMarca el producto como que requiere ticket con NIPmark_receipt_with_nip | 1

Cada regla tiene las acciones Dry run (vista previa sin escribir) y Run now (aplicar a todo el catálogo). La pestaña del registro de auditoría muestra las últimas 200 aplicaciones con marca de tiempo, regla, producto, indicador de coincidencia, indicador de dry run y acciones aplicadas.

En la parte superior del editor de reglas, el panel Insert helper permite añadir líneas de condición/acción sin buscar los IDs a mano:

  • Categoría - todos los términos de product_cat (Select2). Los botones añaden category | in | <ID> o add_category | <ID>.
  • Etiqueta - lo mismo para product_tag.
  • Clase de impuestos - lista de clases de impuestos de WooCommerce. Los botones añaden set_tax_class | <slug> o tax_class | equals | <slug>.
  • Código GTU - desplegable GTU_01 - GTU_13. Tres botones: set_gtu_code, set_jpk_v7_code o la condición gtu_code | equals | <CODE>.

El área de texto sigue siendo la fuente de la verdad - los pickers solo añaden líneas.

Cada regla puede llevar una etiqueta de grupo opcional. Los grupos se usan únicamente para organizar y filtrar reglas en el administrador; no afectan a la ejecución.

La lista de reglas admite búsqueda por nombre sin distinguir mayúsculas y minúsculas, filtro de estado (activada/desactivada), filtro de disparador y filtro de grupo (visible solo cuando existen grupos).

La pestaña Import / export permite:

  • Exportar todas las reglas como un archivo JSON portable (formato polski.tax_rules, v1) para copia de seguridad o migración.
  • Importar un archivo JSON exportado previamente. Las importaciones siempre añaden reglas (nunca reemplazan por ID), de modo que puedes combinar de forma segura conjuntos de reglas de varias tiendas.

Para catálogos grandes y automatización:

Terminal window
# Listar reglas
wp polski tax-rules list
wp polski tax-rules list --format=json
# Dry-run de la regla #3
wp polski tax-rules run 3 --dry-run
# Aplicar la regla #3 con lotes de 100 elementos
wp polski tax-rules run 3 --batch-size=100
# Exportar reglas a un archivo
wp polski tax-rules export --file=/tmp/rules.json
# Importar reglas desde un archivo
wp polski tax-rules import /tmp/rules.json

En la lista estándar de productos de WooCommerce (wp-admin/edit.php?post_type=product), el desplegable Bulk actions expone dos entradas:

  • Apply tax rules - ejecuta todas las reglas activadas contra los productos seleccionados.
  • Dry-run tax rules - informa de lo que cambiaría, sin escribir.

Tras la ejecución, un aviso del administrador muestra el número de productos procesados, las coincidencias de reglas y los cambios aplicados.

Los códigos GTU y JPK_V7 asignados se almacenan como meta del producto y pueden ser consumidos por:

  • el módulo de facturación (Faktura VAT PDF + KSeF)
  • la exportación JPK_VAT
  • las integraciones contables (wFirma, Fakturownia, iFirma)
  • El cron diario procesa el catálogo en lotes de 50 productos.
  • El registro de auditoría está limitado a 10.000 filas; las entradas más antiguas se recortan automáticamente.
  • El motor protege contra la recursión: una regla no se vuelve a disparar durante su propio guardado interno del producto.