Referentie bongegevens
De logicaloze HTML-sjablonen en thermische XML-sjablonen van WCPOS renderen vanuit dezelfde canonieke bonpayload. Gebruik Mustache-dotpaden zoals {{order.number}}, {{store.name}} en {{totals.total_display}}. Arrays worden gerenderd met secties:
{{#lines}}
{{name}} x {{qty}} — {{line_total_display}}
{{/lines}}
Het canonieke contract wordt geproduceerd door de WCPOS-bongegevensbouwer op de server en gespiegeld door de offline-bonrenderer in de app. Bonnen openen onmiddellijk vanuit lokale gegevens en upgraden vervolgens naar de serverreactie wanneer deze beschikbaar is, dus aangepaste sjablonen moeten de onderstaande velden gebruiken in plaats van PHP-bestelmethoden.
Bongegevens v1.1 voegt per productregel vastgelegde velden toe voor de reguliere prijs, de verkoopprijs vóór kortingsbonnen en de besparing. Het levert ook besparingstotalen op bestelniveau, waaronder een waarde Totaal bespaard die besparingen ten opzichte van de reguliere prijs combineert met WooCommerce-kortingen, zonder de besteltotalen of rapporten te wijzigen.
De bon, in kaart gebracht
Elk onderdeel van een afgedrukte bon komt uit één sectie van het gegevenscontract. Beweeg over beide zijden om de koppeling te zien; klik om naar de velden van die sectie te springen. Alle voorbeelden op deze pagina gebruiken dezelfde voorbeeldbestelling.
store.name · store.address_lines · store.tax_ids · store.logoorder.number · order.created · cashier.name · customer.namelines[] · line_savings · savings_in_discountstotals.* · discounts[] · fees[] · shipping[] · totals.total_savedpayments[]store.personal_notes · store.policies_and_conditions · i18n.thank_you_purchaseVeelvoorkomende recepten
De meeste sjabloonwijzigingen zijn een van deze drie. Elke kaart toont eerst het afgedrukte resultaat en daarna de exacte opmaak — kopieer die naar elk logicaloos HTML- of thermisch XML-sjabloon. De derde kaart toont een oude bestelling van vóór v1.9 in plaats van de voorbeeldbestelling hierboven.
{{#lines}}
{{#line_savings}}
<s>{{line_regular_total_display}}</s>
{{i18n.savings}}: -{{line_savings_display}}
{{/line_savings}}
{{/lines}}{{#totals.total_saved_complete}}
{{#totals.total_saved}}
{{i18n.total_saved}}:
{{totals.total_saved_display}}
{{/totals.total_saved}}
{{/totals.total_saved_complete}}{{#lines}}
{{#line_savings}}
{{^savings_in_discounts}}
{{i18n.savings}}: -{{line_savings_display}}
{{/savings_in_discounts}}
{{/line_savings}}
{{/lines}}Renderregels
Valutavelden
Numerieke geldvelden worden als getallen behouden en de renderer voegt locale-bewuste _display-velden toe voor sjabloonuitvoer:
| Numeriek veld | Weergaveveld |
|---|---|
totals.total | totals.total_display |
lines[].line_total | lines[].line_total_display |
payments[].amount | payments[].amount_display |
tax_summary[].tax_amount | tax_summary[].tax_amount_display |
Geef de voorkeur aan _display-velden bij het afdrukken van bonnen. Gebruik numerieke velden alleen voor voorwaardelijke secties of machineleesbare uitvoer.
Btw-weergavebewuste velden
Verschillende velden hebben varianten inclusief en exclusief btw plus een weergavegerichte gemakswaarde. De gemakswaarde volgt de instelling voor de btw-weergave in de winkelwagen van de winkel.
| Gemaksveld | Veld inclusief | Veld exclusief |
|---|---|---|
lines[].regular_price | lines[].regular_price_incl | lines[].regular_price_excl |
lines[].selling_price | lines[].selling_price_incl | lines[].selling_price_excl |
lines[].unit_savings | lines[].unit_savings_incl | lines[].unit_savings_excl |
lines[].line_regular_total | lines[].line_regular_total_incl | lines[].line_regular_total_excl |
lines[].line_selling_total | lines[].line_selling_total_incl | lines[].line_selling_total_excl |
lines[].line_savings | lines[].line_savings_incl | lines[].line_savings_excl |
lines[].unit_price | lines[].unit_price_incl | lines[].unit_price_excl |
lines[].unit_subtotal | lines[].unit_subtotal_incl | lines[].unit_subtotal_excl |
lines[].line_subtotal | lines[].line_subtotal_incl | lines[].line_subtotal_excl |
lines[].discounts | lines[].discounts_incl | lines[].discounts_excl |
lines[].line_total | lines[].line_total_incl | lines[].line_total_excl |
fees[].total | fees[].total_incl | fees[].total_excl |
shipping[].total | shipping[].total_incl | shipping[].total_excl |
discounts[].total | discounts[].total_incl | discounts[].total_excl |
totals.subtotal | totals.subtotal_incl | totals.subtotal_excl |
totals.discount_total | totals.discount_total_incl | totals.discount_total_excl |
totals.sale_savings_total | totals.sale_savings_total_incl | totals.sale_savings_total_excl |
totals.total_saved | totals.total_saved_incl | totals.total_saved_excl |
totals.total | totals.total_incl | totals.total_excl |
Datumobjecten
Datumvelden zijn objecten met meerdere vooraf opgemaakte varianten. Dit voorkomt datumopmaak binnen Mustache.
| Veld | Beschrijving |
|---|---|
datetime, date, time | Standaard datum-/tijdstrings |
datetime_short, datetime_long, datetime_full | Locale-bewuste gecombineerde formaten |
date_short, date_long, date_full | Locale-bewuste formaten met alleen datum |
date_ymd, date_dmy, date_mdy | Datumformaten met vaste volgorde |
weekday_short, weekday_long | Dagnamen |
day, month, month_short, month_long, year | Afzonderlijke datumonderdelen |
Beschikbare datumobjecten: order.created, order.paid, order.completed, order.printed en refunds[].date. order.printed wordt op het moment van renderen vernieuwd, wat handig is voor herafdrukken.
Secties op hoofdniveau
| Sectie | Type | Beschrijving |
|---|---|---|
order | object | Bestelidentiteit, status, datums, notitie en betalings-URL-informatie |
store | object | Winkelidentiteit, adres, contactgegevens, fiscale nummers, logo, openingstijden en voettekst |
cashier | object | Gebruiker die de bestelling heeft verwerkt |
customer | object | Weergavenaam, adressen en fiscale nummers van de klant |
lines | array | Productregelitems |
fees | array | Kostenregels |
shipping | array | Verzendregels |
discounts | array | Coupon-/kortingsregels |
totals | object | Besteltotalen, betalingstotalen, terugbetaaloverzicht en aantallen items |
tax | object | Vlaggen voor de btw-weergavemodus voor sectie-guards |
tax_summary | array | Btw-overzichtsregels per tarief |
has_tax_summary | boolean | Gemaks-guard voor tax_summary |
payments | array | Betalingsregels |
refunds | array | Terugbetalingsrecords die op de bestelling zijn toegepast |
fiscal | object | Fiscale-snapshotvelden die worden gevuld door fiscale integraties |
presentation_hints | object | Opmaak- en renderer-hints |
i18n | object | Vertaalde labels voor meegeleverde en aangepaste sjablonen |
Hoe de prijzen samenhangen
Eén productregel draagt meerdere prijzen, en de namen worden logisch zodra je ze op het bedrag zelf ziet. Dit is de espressoregel uit de voorbeeldbestelling — een product van $17,00 dat in de aanbieding is voor $14,50, met daarbovenop een kortingsbon van 10%:
unit_price → 13.05 · line_total → 26.10lines[].discounts → 2.90 op deze regelunit_savings → 2.50 · line_savings → 5.00totals.sale_savings_total = 5.00totals.discount_total = 5.28totals.total_saved = 10.28Aanbiedingsbesparingen en kortingsbonkortingen zijn verschillende dingen: aanbiedingsbesparingen vergelijken de verkoopprijs met de vastgelegde reguliere prijs, terwijl discounts de eigen kortingsbonberekening van WooCommerce is. De besteltotalen en rapporten van WooCommerce bevatten altijd alleen het kortingsbondeel — en daarom bestaat total_saved als het ene klantgerichte cijfer dat beide combineert.
Veldreferentie
De volledige veldreferentie is hieronder gegroepeerd per sectie. Alles is standaard ingeklapt — vouw de groep uit die je nodig hebt.
order — identiteit, status, datums
order
| Veld | Type | Voorbeeld / beschrijving |
|---|---|---|
order.id | number | 1234 |
order.number | string | Voor mensen leesbaar bestelnummer, bijv. "10045" |
order.currency | string | ISO-valutacode, bijv. "USD" |
order.customer_note | string | Klant-/bestelnotitie |
order.wc_status | string | Onbewerkte WooCommerce-statusslug, bijv. "processing" |
order.status_label | string | Gelokaliseerd statuslabel, inclusief aangepaste statussen |
order.created_via | string | Bron/kanaal, bijv. "woocommerce-pos" |
order.needs_payment | boolean | Of een betalingssectie moet worden getoond |
order.payment_url | string | Betalings-URL van de bestelling indien beschikbaar |
order.created | date object | Aanmaakdatum van de bestelling |
order.paid | date object | Betaaldatum, lege strings indien niet betaald |
order.completed | date object | Voltooiingsdatum, lege strings indien niet voltooid |
order.printed | date object | Tijdstempel van het afdrukken/herafdrukken op het moment van renderen |
store — identiteit, adres, contact, openingstijden
store
| Veld | Type | Voorbeeld / beschrijving |
|---|---|---|
store.id | number | Winkel-ID, of historische ID voor verwijderde winkels |
store.name | string | Weergavenaam van de winkel |
store.address.address_1 | string | Adresregel 1 |
store.address.address_2 | string | Suite-/unitregel |
store.address.city | string | Stad/plaats |
store.address.state | string | Provincie/regio |
store.address.postcode | string | Postcode |
store.address.country | string | ISO-landcode |
store.address_lines | array | Vooraf opgemaakte adresregels; aanbevolen voor de meeste sjablonen |
store.tax_ids | array | Gestructureerde fiscale bedrijfsnummers; loop hierdoorheen in plaats van één enkel fiscaal nummer te gebruiken |
store.phone | string | Telefoonnummer van de winkel |
store.email | string | E-mailadres van de winkel |
store.logo | string/null | URL of data-URI van het winkellogo |
store.opening_hours | string/null | Compacte tekst met openingstijden |
store.opening_hours_vertical | string/null | Meerregelig blok met openingstijden |
store.opening_hours_inline | string/null | Door komma's gescheiden tekst met openingstijden |
store.opening_hours_notes | string/null | Vrije-tekstnotities over openingstijden |
store.personal_notes | string/null | Voettekst van de bon/persoonlijke notitie |
store.policies_and_conditions | string/null | Tekst over terugbetalingen, retourzendingen of voorwaarden |
store.footer_imprint | string/null | Juridische voettekst (imprint) |
Fiscale-nummerobjecten
store.tax_ids en customer.tax_ids bevatten objecten met dezelfde vorm:
| Veld | Type | Beschrijving |
|---|---|---|
type | string | Nummer zoals eu_vat, de_steuernummer, au_abn, br_cpf, us_ein of other |
value | string | Fiscale-nummerwaarde om af te drukken |
country | string/null | ISO-landcode indien bekend |
label | string/null | Gelokaliseerd weergavelabel, opgelost vóór het renderen |
Voorbeeld:
{{#store.tax_ids}}
{{label}}: {{value}}
{{/store.tax_ids}}
cashier — gebruiker die de bestelling heeft verwerkt
cashier
| Veld | Type | Voorbeeld / beschrijving |
|---|---|---|
cashier.id | number | WordPress-gebruikers-ID, 0 indien onbekend |
cashier.name | string | Weergavenaam van de kassier |
customer — naam, adressen, fiscale nummers
customer
| Veld | Type | Voorbeeld / beschrijving |
|---|---|---|
customer.id | number/null | Klant-ID, of null voor gasten |
customer.name | string | Weergavenaam van de klant, of gastlabel |
customer.billing_address.* | object | WooCommerce-factuuradresvelden |
customer.shipping_address.* | object | WooCommerce-verzendadresvelden |
customer.tax_ids | array | Gestructureerde fiscale nummers van de klant, vastgelegd vanuit de bestelling |
Veelvoorkomende adressleutels zijn first_name, last_name, company, address_1, address_2, city, state, postcode, country, email en phone.
lines — productregelitems
lines
Loop met {{#lines}}...{{/lines}}. De voorbeeldwaarden zijn de espressoregel uit de voorbeeldbestelling.
Elk geldveld komt als paar: het getal (gebruik dat in {{#…}}-guards — nul en null verbergen de sectie, en een null-veld heeft helemaal geen _display-tegenhanger) en de bijbehorende _display-string (gebruik die om af te drukken). Velden met de markering incl/excl leveren ook _incl- en _excl-varianten, elk met een eigen _display.
null op bestellingen zonder POS-prijsgeschiedenis — plaats dit in een sectie.discounts zit — de vlag tegen dubbeltellen.{key, value}-paren.{key, value}-paren.Reguliere prijs en besparing weergeven
Toon voor een lay-out met eenheidsprijzen de vastgelegde reguliere prijs, de verkoopprijs en de besparing zo:
{{#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}}
Gebruik de velden met regeltotalen wanneer de hoeveelheid van belang is:
{{#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 is de prijs vóór kortingsbonnen. Gebruik unit_price of line_total voor het eindbedrag na WooCommerce-kortingen.
Oudere WCPOS-bestellingen kunnen de verlaging van regulier naar verkoopprijs al in discounts bevatten. Als je aangepaste sjabloon zowel regelbesparingen als regelkortingen afdrukt, gebruik dan savings_in_discounts om te voorkomen dat dezelfde verlaging twee keer wordt getoond:
{{#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}}
Als het sjabloon geen discounts-regel op regelniveau afdrukt, blijf dan line_savings tonen, ook wanneer savings_in_discounts true is. De meegeleverde sjablonen verwerken dit onderscheid automatisch.
fees en shipping
fees en shipping
Loop met {{#fees}}...{{/fees}} en {{#shipping}}...{{/shipping}}.
| Veld | Type | Beschrijving |
|---|---|---|
label | string | Kostenlabel of naam van verzendmethode |
method_id | string | ID van verzendmethode (alleen verzending) |
total / _incl / _excl | number | Weergavegerichte, inclusieve en exclusieve totalen |
taxes | array | Btw-regels per tarief |
meta | array | {key, value}-metaparen |
Opgemaakte varianten: total_display, total_incl_display en total_excl_display.
discounts — coupon-/kortingsregels
discounts
Loop met {{#discounts}}...{{/discounts}}.
| Veld | Type | Beschrijving |
|---|---|---|
label | string | Couponbeschrijving of code-fallback |
code | string | Couponcode |
total / _incl / _excl | number | Kortingsbedrag als positieve waarde |
Opgemaakte varianten: total_display, total_incl_display en total_excl_display. Voeg je eigen minteken toe in het sjabloon als je kortingen als negatieve regels wilt tonen.
totals — bestel-, betalings-, terugbetaal- en itemtotalen
totals
De voorbeeldwaarden komen uit de voorbeeldbestelling, waarop later een gedeeltelijke terugbetaling van $7,25 is gedaan.
Geldvelden volgen dezelfde koppeling als regelitems: een kaal getal voor guards en een _display-string om af te drukken, met _incl-/_excl-varianten waar dat is aangegeven.
Gebruik total_saved wanneer je één klantgericht cijfer wilt voor alles wat is bespaard. Bereken het niet door in het sjabloon discount_total en sale_savings_total bij elkaar op te tellen: bestellingen van vóór v1.9.0 kunnen hun POS-prijsbesparing al in het kortingstotaal van WooCommerce hebben zitten. Het canonieke veld total_saved detecteert die overlap en verwijdert die.
Besparingstotalen zijn null en total_saved_complete is false wanneer een productregel niet genoeg vastgelegde prijsgegevens heeft voor een betrouwbaar totaal. Bescherm de regel met total_saved_complete en gebruik daarna total_saved om een nulwaarde te verbergen:
{{#totals.total_saved_complete}}
{{#totals.total_saved}}
<span>{{i18n.total_saved}}: {{totals.total_saved_display}}</span>
{{/totals.total_saved}}
{{/totals.total_saved_complete}}
De meegeleverde sjablonen met prijzen gebruiken dezelfde guard-structuur met de varianten inclusief btw (total_saved_incl en total_saved_incl_display) en tonen Totaal bespaard alleen wanneer de volledige waarde groter is dan nul.
tax en tax_summary — weergave-guards en regels per tarief
tax en tax_summary
Gebruik tax voor weergavemodus-guards en tax_summary voor gespecificeerde tariefregels.
| Btw-veld | Type | Beschrijving |
|---|---|---|
tax.display | string | incl of excl |
tax.display_incl | boolean | True wanneer prijzen inclusief btw worden weergegeven |
tax.display_excl | boolean | True wanneer prijzen exclusief btw worden weergegeven |
tax.breakdown | string | hidden, single of itemized |
tax.breakdown_hidden | boolean | True wanneer btw-regels verborgen moeten zijn |
tax.breakdown_single | boolean | True wanneer een enkel btw-totaal de voorkeur heeft |
tax.breakdown_itemized | boolean | True wanneer regels per tarief de voorkeur hebben |
has_tax_summary | boolean | True wanneer tax_summary regels bevat |
Loop tax_summary met {{#tax_summary}}...{{/tax_summary}}.
| Veld | Type | Beschrijving |
|---|---|---|
code | string | Btw-tarief-ID/-code |
rate | number/null | Tariefpercentage indien opgelost |
label | string | Label van btw-tarief |
compound | boolean | Of het tarief samengesteld is |
taxable_amount_excl | number/null | Belastbare grondslag exclusief btw |
tax_amount | number | Geïnde btw |
taxable_amount_incl | number/null | Belastbare grondslag inclusief btw |
Opgemaakte varianten: taxable_amount_excl_display, tax_amount_display en taxable_amount_incl_display.
payments — betalingsregels
payments
Loop met {{#payments}}...{{/payments}}.
| Veld | Type | Beschrijving |
|---|---|---|
method_id | string | Identifier van betaalmethode |
method_title | string | Weergavetitel van betaalmethode |
amount | number | Op de bestelling toegepast bedrag |
transaction_id | string | Transactie-ID van de gateway |
tendered | number | Aangeboden contant bedrag indien aanwezig |
change | number | Teruggegeven contant wisselgeld indien aanwezig |
Opgemaakte varianten: amount_display, tendered_display en change_display.
refunds — terugbetalingsrecords
refunds
Loop met {{#refunds}}...{{/refunds}}. Terugbetaalbedragen zijn positieve grootten; sjablonen bepalen of er een minteken voorgevoegd wordt of een apart blok met geretourneerde items wordt gerenderd.
| Veld | Type | Beschrijving |
|---|---|---|
id | number | ID van terugbetalingsrecord |
date | date object | Aanmaakdatum van terugbetaling |
amount | number | Terugbetaaltotaal |
subtotal | number | Terugbetaald regelsubtotaal |
tax_total | number | Terugbetaalde btw |
shipping_total | number | Terugbetaald verzendbedrag |
shipping_tax | number | Terugbetaalde verzend-btw |
reason | string | Reden van terugbetaling |
refunded_by_id | number/null | Gebruikers-ID die de terugbetaling heeft uitgevoerd |
refunded_by_name | string | Weergavenaam van de gebruiker die de terugbetaling heeft uitgevoerd |
refunded_payment | boolean | Of de betaling via de gateway is terugbetaald |
destination | string | original_method, cash of manual |
gateway_id | string | Gateway-ID die voor de terugbetaling is gebruikt |
gateway_title | string | Weergavetitel van de gateway |
processing_mode | string | Provider-/handmatige verwerkingsmodus |
lines | array | Terugbetaalde productregels |
fees | array | Terugbetaalde kostenregels |
shipping | array | Terugbetaalde verzendregels |
Terugbetalingsregelvelden zijn onder andere name, sku, qty, total, total_incl, total_excl, line_total, unit_total en taxes. Terugbetalingskosten- en verzendregels gebruiken label, total, total_incl, total_excl en taxes. Weergavevarianten worden toegevoegd voor totalen en btw-bedragen.
fiscal — snapshot van fiscale integratie
fiscal
Fiscale velden zijn standaard leeg en worden gevuld door fiscale integraties of de snapshotverrijking van WCPOS Pro.
| Veld | Type | Beschrijving |
|---|---|---|
fiscal.immutable_id | string | Onveranderlijke fiscale identifier |
fiscal.receipt_number | string | Fiscaal bonnummer |
fiscal.sequence | number/null | Volgteller |
fiscal.hash | string | Hash-/handtekeningwaarde |
fiscal.qr_payload | string | QR-payload voor fiscale verificatie |
fiscal.tax_agency_code | string | Code van de belastingautoriteit |
fiscal.signed_at | string | Tijdstempel van fiscale ondertekening |
fiscal.signature_excerpt | string | Afgekapte handtekening voor weergave |
fiscal.document_label | string | Documentlabel, bijv. Tax Invoice |
fiscal.is_reprint | boolean | Of deze render een herafdruk is |
fiscal.reprint_count | number | Aantal herafdrukken |
fiscal.extra_fields | array/object | Jurisdictiespecifieke waarden |
presentation_hints — opmaak- en renderer-hints
presentation_hints
Deze velden worden voornamelijk verbruikt door de renderer en formatter. Ze zijn beschikbaar voor sjablonen wanneer dat nodig is.
| Veld | Type | Beschrijving |
|---|---|---|
presentation_hints.display_tax | string | incl, excl, hidden, itemized of single |
presentation_hints.prices_entered_with_tax | boolean | Of catalogusprijzen btw bevatten |
presentation_hints.rounding_mode | string | WooCommerce-instelling voor btw-afronding |
presentation_hints.locale | string | Locale die voor de opmaak wordt gebruikt |
presentation_hints.timezone | string | Tijdzone van de bon |
presentation_hints.currency_position | string | Positie van het valutasymbool |
presentation_hints.currency_symbol | string | Valutasymbool |
presentation_hints.price_thousand_separator | string | Duizendtalscheidingsteken |
presentation_hints.price_decimal_separator | string | Decimaalscheidingsteken |
presentation_hints.price_num_decimals | number | Aantal decimalen |
presentation_hints.price_display_suffix | string | WooCommerce-achtervoegsel voor prijsweergave |
presentation_hints.order_barcode_type | string | Barcodetype dat door galerijsjablonen wordt gebruikt |
i18n — vertaalde labels
i18n
Gebruik waar mogelijk i18n-labels in plaats van tekst hard te coderen:
{{i18n.order}} #{{order.number}}
{{i18n.cashier}}: {{cashier.name}}
{{i18n.total}}: {{totals.total_display}}
Veelvoorkomende sleutels zijn 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, en de fiscale-labelsleutels zoals store_tax_id_label_eu_vat en customer_tax_id_label_other. Extra sleutels kunnen door extensies worden toegevoegd.