Ir al contenido principal
Versión: 1.x

Referencia de datos de recibos

Las plantillas HTML sin lógica de WCPOS y las plantillas XML térmicas se generan a partir de la misma carga útil canónica de recibos. Utilice rutas con puntos de Mustache como {{order.number}}, {{store.name}} y {{totals.total_display}}. Los arreglos se generan mediante secciones:

{{#lines}}
{{name}} x {{qty}} — {{line_total_display}}
{{/lines}}

El contrato canónico lo genera el constructor de datos de recibos de WCPOS en el servidor y se replica en el renderizador de recibos sin conexión de la aplicación. Los recibos se abren de inmediato a partir de datos locales y luego se actualizan con la respuesta del servidor cuando está disponible, por lo que las plantillas personalizadas deben usar los campos siguientes en lugar de los métodos de pedidos de PHP.

Datos de recibos v1.1 añade campos registrados de precio normal, precio de venta antes de aplicar cupones y ahorro para cada línea de producto. También proporciona totales de ahorro a nivel de pedido, incluido un valor de Total ahorrado que combina el ahorro del precio normal con los descuentos de WooCommerce sin modificar los totales ni los informes del pedido.

Reglas de renderizado

Campos de moneda

Los campos monetarios numéricos se conservan como números y el renderizador añade campos _display adaptados a la configuración regional para la salida de la plantilla:

Campo numéricoCampo de visualización
totals.totaltotals.total_display
lines[].line_totallines[].line_total_display
payments[].amountpayments[].amount_display
tax_summary[].tax_amounttax_summary[].tax_amount_display

Al imprimir recibos, se deben priorizar los campos _display. Los campos numéricos deben usarse únicamente para secciones condicionales o salidas legibles por máquina.

Campos adaptados a la visualización de impuestos

Varios campos tienen variantes con impuestos incluidos y excluidos, además de un valor auxiliar para la visualización. Este valor sigue la configuración de visualización de impuestos del carrito de la tienda.

Campo auxiliarCampo con impuestos incluidosCampo con impuestos excluidos
lines[].regular_pricelines[].regular_price_incllines[].regular_price_excl
lines[].selling_pricelines[].selling_price_incllines[].selling_price_excl
lines[].unit_savingslines[].unit_savings_incllines[].unit_savings_excl
lines[].line_regular_totallines[].line_regular_total_incllines[].line_regular_total_excl
lines[].line_selling_totallines[].line_selling_total_incllines[].line_selling_total_excl
lines[].line_savingslines[].line_savings_incllines[].line_savings_excl
lines[].unit_pricelines[].unit_price_incllines[].unit_price_excl
lines[].unit_subtotallines[].unit_subtotal_incllines[].unit_subtotal_excl
lines[].line_subtotallines[].line_subtotal_incllines[].line_subtotal_excl
lines[].discountslines[].discounts_incllines[].discounts_excl
lines[].line_totallines[].line_total_incllines[].line_total_excl
fees[].totalfees[].total_inclfees[].total_excl
shipping[].totalshipping[].total_inclshipping[].total_excl
discounts[].totaldiscounts[].total_incldiscounts[].total_excl
totals.subtotaltotals.subtotal_incltotals.subtotal_excl
totals.discount_totaltotals.discount_total_incltotals.discount_total_excl
totals.savings_totaltotals.savings_total_incltotals.savings_total_excl
totals.total_savedtotals.total_saved_incltotals.total_saved_excl
totals.totaltotals.total_incltotals.total_excl

Objetos de fecha

Los campos de fecha son objetos con varias variantes preformateadas. Esto evita tener que dar formato a las fechas dentro de Mustache.

CampoDescripción
datetime, date, timeCadenas de fecha/hora predeterminadas
datetime_short, datetime_long, datetime_fullFormatos combinados adaptados a la configuración regional
date_short, date_long, date_fullFormatos solo de fecha adaptados a la configuración regional
date_ymd, date_dmy, date_mdyFormatos de fecha con orden fijo
weekday_short, weekday_longNombres de los días
day, month, month_short, month_long, yearComponentes individuales de la fecha

Objetos de fecha disponibles: order.created, order.paid, order.completed, order.printed y refunds[].date. order.printed se actualiza en el momento de la generación, lo que resulta útil para las reimpresiones.

Secciones de nivel superior

SecciónTipoDescripción
orderobjetoIdentidad, estado, fechas, nota e información de la URL de pago del pedido
storeobjetoIdentidad de la tienda, dirección, datos de contacto, ID fiscales, logotipo, horario y texto de pie de página
cashierobjetoUsuario que procesó el pedido
customerobjetoNombre visible del cliente, direcciones e ID fiscales
linesmatrizLíneas de productos
feesmatrizFilas de tarifas
shippingmatrizFilas de envío
discountsmatrizFilas de cupones/descuentos
totalsobjetoTotales del pedido y del pago, resumen de reembolsos y recuentos de artículos
taxobjetoIndicadores del modo de visualización de impuestos para controlar la visualización de secciones
tax_summarymatrizFilas de resumen de impuestos por tipo impositivo
has_tax_summarybooleanoComprobación práctica para tax_summary
paymentsmatrizFilas de pago
refundsmatrizRegistros de reembolsos aplicados al pedido
fiscalobjetoCampos de instantánea fiscal rellenados por integraciones fiscales
presentation_hintsobjetoSugerencias de formato y renderizado
i18nobjetoEtiquetas traducidas para plantillas incluidas y personalizadas

Referencia de campos

La referencia completa de campos se agrupa por sección a continuación. Todo está contraído de forma predeterminada; expanda el grupo que necesite.

pedido — identidad, estado, fechas

pedido

CampoTipoEjemplo / descripción
order.idnúmero1234
order.numbercadenaNúmero de pedido visible, p. ej., "10045"
order.currencycadenaCódigo de moneda ISO, p. ej., "USD"
order.customer_notecadenaNota del cliente/pedido
order.wc_statuscadenaSlug de estado sin procesar de WooCommerce, p. ej., "processing"
order.status_labelcadenaEtiqueta de estado localizada, incluidos los estados personalizados
order.created_viacadenaOrigen/canal, p. ej., "woocommerce-pos"
order.needs_paymentbooleanoIndica si se debe mostrar una sección de pago
order.payment_urlcadenaURL de pago del pedido cuando esté disponible
order.createdobjeto de fechaFecha de creación del pedido
order.paidobjeto de fechaFecha de pago; cadenas vacías si no se ha pagado
order.completedobjeto de fechaFecha de finalización; cadenas vacías si no está completado
order.printedobjeto de fechaMarca de tiempo de impresión o reimpresión en el momento de renderizado
tienda — identidad, dirección, contacto, horario

tienda

CampoTipoEjemplo / descripción
store.idnúmeroID de la tienda o ID histórico de tiendas eliminadas
store.namecadenaNombre visible de la tienda
store.address.address_1cadenaPrimera línea de la dirección
store.address.address_2cadenaLínea de apartamento/unidad
store.address.citycadenaCiudad/localidad
store.address.statecadenaEstado/región
store.address.postcodecadenaCódigo postal
store.address.countrycadenaCódigo de país ISO
store.address_linesmatrizLíneas de dirección preformateadas; recomendadas para la mayoría de las plantillas
store.tax_idsmatrizID fiscales empresariales estructurados; iterar sobre esta matriz en lugar de usar un único ID fiscal
store.phonecadenaTeléfono de la tienda
store.emailcadenaCorreo electrónico de la tienda
store.logocadena/nuloURL del logotipo de la tienda o URI de datos
store.opening_hourscadena/nuloTexto compacto del horario de apertura
store.opening_hours_verticalcadena/nuloBloque de horario de apertura en varias líneas
store.opening_hours_inlinecadena/nuloTexto del horario de apertura separado por comas
store.opening_hours_notescadena/nuloNotas de texto libre sobre el horario de apertura
store.personal_notescadena/nuloPie de recibo/nota personal
store.policies_and_conditionscadena/nuloTexto sobre reembolsos, devoluciones o condiciones
store.footer_imprintcadena/nuloAviso legal del pie de página

Objetos de ID fiscal

store.tax_ids y customer.tax_ids contienen objetos con la misma estructura:

CampoTipoDescripción
typecadenaIdentificador como eu_vat, de_steuernummer, au_abn, br_cpf, us_ein u other
valuecadenaValor del ID fiscal que se imprimirá
countrycadena/nuloCódigo de país ISO cuando se conozca
labelcadena/nuloEtiqueta de visualización localizada, resuelta antes de la representación

Ejemplo:

{{#store.tax_ids}}
{{label}}: {{value}}
{{/store.tax_ids}}
cajero — usuario que procesó el pedido

cajero

CampoTipoEjemplo / descripción
cashier.idnúmeroID de usuario de WordPress, 0 cuando se desconozca
cashier.namecadenaNombre de visualización del cajero
cliente — nombre, direcciones, identificadores fiscales

cliente

CampoTipoEjemplo / descripción
customer.idnúmero/nuloID del cliente o null para invitados
customer.namecadenaNombre para mostrar del cliente o etiqueta de invitado
customer.billing_address.*objetoCampos de dirección de facturación de WooCommerce
customer.shipping_address.*objetoCampos de dirección de envío de WooCommerce
customer.tax_idsmatrizIdentificadores fiscales estructurados del cliente incluidos en la instantánea del pedido

Las claves de dirección habituales incluyen first_name, last_name, company, address_1, address_2, city, state, postcode, country, email y phone.

líneas — artículos de productos

líneas

Itere con {{#lines}}...{{/lines}}.

CampoTipoDescripción
keycadenaClave estable de la línea/ID del artículo del pedido
skucadenaSKU del producto
namecadenaNombre mostrado del producto o de la línea
qtynúmeroCantidad vendida
qty_refundednúmeroCantidad reembolsada de esta línea
regular_price / _incl / _exclnúmero/nuloPrecio unitario normal registrado
selling_price / _incl / _exclnúmero/nullPrecio unitario de venta antes del cupón — el precio de POS registrado cuando está disponible; de lo contrario, se obtiene del subtotal de línea almacenado
unit_savings / _incl / _exclnúmero/nuloregular_price - selling_price, con un mínimo de cero
line_regular_total / _incl / _exclnúmero/nuloPrecio normal registrado multiplicado por la cantidad
line_selling_total / _incl / _exclnúmero/nuloPrecio de venta antes de los cupones multiplicado por la cantidad
line_savings / _incl / _exclnúmero/nuloAhorro total entre el precio normal y el precio de venta de esta línea
savings_in_discountsbooleanoVerdadero cuando un pedido heredado ya incluye el mismo ahorro en discounts
unit_subtotal / _incl / _exclnúmeroValor unitario de WooCommerce antes del descuento; no lo use como precio normal
unit_price / _incl / _exclnúmeroValor unitario final después de los descuentos de WooCommerce
line_subtotal / _incl / _exclnúmeroSubtotal de la línea de WooCommerce antes del descuento
discounts / _incl / _exclnúmeroDescuento de línea nativo de WooCommerce como valor positivo; normalmente solo de cupones en los pedidos actuales
line_total / _incl / _exclnúmeroTotal final de la línea
total_refundednúmeroTotal reembolsado para esta línea como valor positivo
taxesmatrizFilas de impuestos por tasa para esta línea
metamatrizMetadatos del artículo del pedido como pares {key, value}
attributesmatrizAtributos del producto o la variación como pares {key, value}

Cada campo monetario tiene un complemento _display con formato, incluidos regular_price_display, selling_price_display, unit_savings_display, line_regular_total_display, line_selling_total_display y line_savings_display. Los campos inclusivos y exclusivos también tienen variantes _display. Cuando un campo de ahorro que admite valores nulos es null, su complemento _display se omite por completo.

Los campos de ahorro son null cuando el pedido no contiene suficientes datos registrados de precios de POS. Por lo tanto, las plantillas deben incluirlos en secciones Mustache en lugar de asumir que todos los pedidos históricos tienen un precio normal.

Mostrar el precio habitual y el ahorro

Para un diseño con precio unitario, muestre el precio habitual registrado, el precio de venta y el ahorro de esta manera:

{{#lines}}
{{#unit_savings}}
<span style="text-decoration: line-through;">{{regular_price_display}}</span>
<span>{{selling_price_display}}</span>
<span>{{i18n.savings}}: -{{unit_savings_display}}</span>
{{/unit_savings}}
{{/lines}}

Utilice los campos de total de línea cuando la cantidad sea importante:

{{#lines}}
{{#line_savings}}
<span style="text-decoration: line-through;">{{line_regular_total_display}}</span>
<span>{{i18n.savings}}: -{{line_savings_display}}</span>
{{/line_savings}}
{{/lines}}

selling_price es el precio antes de los cupones. Utilice unit_price o line_total para el importe final después de los descuentos de WooCommerce.

Reimpresión de pedidos creados antes de la v1.9.0

Los pedidos antiguos de WCPOS pueden incluir ya la reducción entre el precio habitual y el precio de venta en discounts. Si la plantilla personalizada imprime tanto los ahorros de línea como los descuentos de línea, utilice savings_in_discounts para evitar mostrar la misma reducción dos veces:

{{#lines}}
{{#line_savings}}
<span style="text-decoration: line-through;">{{line_regular_total_display}}</span>
{{^savings_in_discounts}}
<span>{{i18n.savings}}: -{{line_savings_display}}</span>
{{/savings_in_discounts}}
{{/line_savings}}
{{#discounts}}
<span>{{i18n.discount}}: -{{discounts_display}}</span>
{{/discounts}}
{{/lines}}

Si la plantilla no imprime una fila de discounts a nivel de línea, siga mostrando line_savings incluso cuando savings_in_discounts sea verdadero. Las plantillas incluidas gestionan esta distinción automáticamente.

tarifas y envío

Tarifas y envío

Itere con {{#fees}}...{{/fees}} y {{#shipping}}...{{/shipping}}.

CampoTipoDescripción
labelcadenaEtiqueta de tarifa o nombre del método de envío
method_idcadenaID del método de envío (solo para envíos)
total / _incl / _exclnúmeroTotales mostrados, con impuestos incluidos y sin impuestos
taxesmatrizFilas de impuestos por tasa
metamatrizPares de metadatos {key, value}

Variantes con formato: total_display, total_incl_display y total_excl_display.

descuentos — filas de cupones/descuentos

descuentos

Utilice un bucle con {{#discounts}}...{{/discounts}}.

CampoTipoDescripción
labelcadenaDescripción del cupón o código alternativo
codecadenaCódigo del cupón
total / _incl / _exclnúmeroImporte del descuento como valor positivo

Variantes con formato: total_display, total_incl_display y total_excl_display. Añada su propio signo menos en la plantilla si desea mostrar los descuentos como filas negativas.

totales — totales de pedidos, pagos, reembolsos y artículos

totales

CampoTipoDescripción
totals.subtotal / _incl / _exclnúmeroSubtotal del pedido antes de los descuentos
totals.discount_total / _incl / _exclnúmeroTotal de descuentos del pedido como valor positivo
totals.savings_total / _incl / _exclnúmero/nullAhorro total registrado entre el precio habitual y el precio de venta en todas las líneas de productos, incluidas las ofertas del catálogo y los cambios de precio en caja
totals.total_saved / _incl / _exclnúmero/nullDescuentos de WooCommerce y ahorros sobre el precio habitual combinados, sin la superposición heredada
totals.total_saved_completebooleanoIndica si el recibo tiene suficientes datos de precios registrados para calcular los totales de ahorro completos
totals.tax_totalnúmeroImporte total de impuestos
totals.total / _incl / _exclnúmeroTotal general del pedido
totals.paid_totalnúmeroImporte pagado/aplicado
totals.change_totalnúmeroCambio devuelto al cliente
totals.refund_totalnúmeroTotal reembolsado como valor positivo
totals.net_totalnúmerototal - refund_total, con un mínimo de cero
totals.total_qtynúmeroSuma de las cantidades de las líneas de artículos
totals.line_countnúmeroNúmero de filas de líneas de productos

Las variantes formateadas incluyen subtotal_display, discount_total_display, savings_total_display, total_saved_display, tax_total_display, total_display, paid_total_display, change_total_display, refund_total_display y net_total_display, además de variantes inclusivas/exclusivas cuando corresponda.

Utilice total_saved cuando se necesite una única cifra visible para el cliente que refleje todo lo ahorrado. No lo calcule sumando discount_total y savings_total en la plantilla: los pedidos creados antes de la v1.9.0 pueden incluir ya el ahorro de precio de POS en el total de descuentos de WooCommerce. El campo canónico total_saved detecta y elimina esa superposición.

Los totales de ahorro son null y total_saved_complete es false cuando alguna línea de producto no cuenta con suficientes datos de precio registrados para obtener un total fiable. Proteja la fila con total_saved_complete y use después total_saved para ocultar un valor cero:

{{#totals.total_saved_complete}}
{{#totals.total_saved}}
<span>{{i18n.total_saved}}: {{totals.total_saved_display}}</span>
{{/totals.total_saved}}
{{/totals.total_saved_complete}}

Las plantillas incluidas con precios usan la misma estructura de protección con las variantes con impuestos incluidos (total_saved_incl y total_saved_incl_display), y muestran Total ahorrado solo cuando el valor completo es mayor que cero.

tax y tax_summary — protecciones de visualización y filas por tasa

tax y tax_summary

Utilice tax para las condiciones del modo de visualización y tax_summary para las filas de tasas desglosadas.

Campo de impuestosTipoDescripción
tax.displaycadenaincl o excl
tax.display_inclbooleanoVerdadero cuando los precios se muestran con impuestos incluidos
tax.display_exclbooleanoVerdadero cuando los precios se muestran sin impuestos
tax.breakdowncadenahidden, single o itemized
tax.breakdown_hiddenbooleanoVerdadero cuando las filas de impuestos deben ocultarse
tax.breakdown_singlebooleanoVerdadero cuando se prefiere un único total de impuestos
tax.breakdown_itemizedbooleanoVerdadero cuando se prefieren filas por tasa
has_tax_summarybooleanoVerdadero cuando tax_summary contiene filas

Para recorrer tax_summary, utilice {{#tax_summary}}...{{/tax_summary}}.

CampoTipoDescripción
codecadenaID/código de la tasa de impuestos
ratenúmero/nullPorcentaje de la tasa cuando se haya resuelto
labelcadenaEtiqueta de la tasa de impuestos
compoundbooleanoSi la tasa es compuesta
taxable_amount_exclnúmero/nullBase imponible sin impuestos
tax_amountnúmeroImpuesto recaudado
taxable_amount_inclnúmero/nullBase imponible con impuestos

Variantes con formato: taxable_amount_excl_display, tax_amount_display y taxable_amount_incl_display.

pagos — filas de pago

pagos

Se utiliza el bucle {{#payments}}...{{/payments}}.

CampoTipoDescripción
method_idcadenaIdentificador del método de pago
method_titlecadenaTítulo visible del método de pago
amountnúmeroImporte aplicado al pedido
transaction_idcadenaID de transacción de la pasarela
tenderednúmeroImporte en efectivo entregado, cuando exista
changenúmeroCambio en efectivo devuelto, cuando exista

Variantes formateadas: amount_display, tendered_display y change_display.

reembolsos — registros de reembolsos

reembolsos

Itere con {{#refunds}}...{{/refunds}}. Los importes de los reembolsos son valores positivos; las plantillas determinan si se antepone un signo menos o se muestra un bloque independiente de artículos devueltos.

CampoTipoDescripción
idnúmeroID del registro de reembolso
dateobjeto de fechaFecha de creación del reembolso
amountnúmeroTotal del reembolso
subtotalnúmeroSubtotal de la línea reembolsada
tax_totalnúmeroImpuesto reembolsado
shipping_totalnúmeroImporte de envío reembolsado
shipping_taxnúmeroImpuesto de envío reembolsado
reasoncadenaMotivo del reembolso
refunded_by_idnúmero/nuloID del usuario que emitió el reembolso
refunded_by_namecadenaNombre visible del usuario que emitió el reembolso
refunded_paymentbooleanoSi el pago se reembolsó a través de la pasarela
destinationcadenaoriginal_method, cash o manual
gateway_idcadenaID de pasarela utilizado para el reembolso
gateway_titlecadenaTítulo visible de la pasarela
processing_modecadenaModo de procesamiento del proveedor/manual
linesmatrizLíneas de productos reembolsados
feesmatrizLíneas de tarifas reembolsadas
shippingmatrizLíneas de envío reembolsadas

Los campos de las líneas de reembolso incluyen name, sku, qty, total, total_incl, total_excl, line_total, unit_total e taxes. Las líneas de tarifas y envío reembolsados utilizan label, total, total_incl, total_excl e taxes. Se añaden variantes de visualización para los totales y los importes de impuestos.

fiscal — instantánea de integración fiscal

fiscal

Los campos fiscales están vacíos de forma predeterminada y se completan mediante integraciones fiscales o el enriquecimiento de instantáneas de WCPOS Pro.

CampoTipoDescripción
fiscal.immutable_idcadenaIdentificador fiscal inmutable
fiscal.receipt_numbercadenaNúmero de recibo fiscal
fiscal.sequencenúmero/nuloContador de secuencia
fiscal.hashcadenaValor de hash/firma
fiscal.qr_payloadcadenaCarga útil QR para la verificación fiscal
fiscal.tax_agency_codecadenaCódigo de la autoridad fiscal
fiscal.signed_atcadenaMarca de tiempo de la firma fiscal
fiscal.signature_excerptcadenaFirma truncada para su visualización
fiscal.document_labelcadenaEtiqueta del documento, p. ej., factura fiscal
fiscal.is_reprintbooleanoSi esta impresión es una reimpresión
fiscal.reprint_countnúmeroNúmero de reimpresiones
fiscal.extra_fieldsarray/objetoValores específicos de la jurisdicción
presentation_hints — indicaciones de formato y renderizado

presentation_hints

Estos campos los utilizan principalmente el renderizador y el formateador. Están disponibles para las plantillas cuando se necesitan.

CampoTipoDescripción
presentation_hints.display_taxcadenaincl, excl, hidden, itemized o single
presentation_hints.prices_entered_with_taxbooleanoSi los precios del catálogo incluyen impuestos
presentation_hints.rounding_modecadenaAjuste de redondeo de impuestos de WooCommerce
presentation_hints.localecadenaConfiguración regional utilizada para el formato
presentation_hints.timezonecadenaZona horaria del recibo
presentation_hints.currency_positioncadenaPosición del símbolo de moneda
presentation_hints.currency_symbolcadenaSímbolo de moneda
presentation_hints.price_thousand_separatorcadenaSeparador de miles
presentation_hints.price_decimal_separatorcadenaSeparador decimal
presentation_hints.price_num_decimalsnúmeroPosiciones decimales
presentation_hints.price_display_suffixcadenaSufijo de visualización de precios de WooCommerce
presentation_hints.order_barcode_typecadenaTipo de código de barras utilizado por las plantillas de galería
i18n — etiquetas traducidas

i18n

Utilice etiquetas de i18n en lugar de codificar texto de forma fija siempre que sea posible:

{{i18n.order}} #{{order.number}}
{{i18n.cashier}}: {{cashier.name}}
{{i18n.total}}: {{totals.total_display}}

Las claves habituales incluyen order, date, cashier, customer, item, sku, qty, unit_price, regular_price, selling_price, savings, discount, subtotal, total_saved, total, tax, paid, tendered, change, tax_summary, refunded, net_total, customer_note, thank_you_purchase, opening_hours y las claves de etiqueta de ID fiscal como store_tax_id_label_eu_vat y customer_tax_id_label_other. Las extensiones pueden añadir claves adicionales.