PluginProbe
WCPOS – Point of Sale (POS) plugin for WooCommerce / 1.10.17
WCPOS – Point of Sale (POS) plugin for WooCommerce v1.10.17
1.10.19 1.10.18 1.10.17 1.10.16 1.10.15 1.10.13 1.10.14 1.10.12 1.10.11 1.10.10 1.10.9 1.10.8 untagged-3d9b7ccddc54df87c672 1.10.7 1.10.6 1.10.5 1.10.3 1.10.4 1.10.2 1.10.1 1.10.0 1.9.17 1.9.15 1.9.16 1.9.14 All 163 releases
woocommerce-pos / templates / gallery / quote.html

quote.html in WCPOS – Point of Sale (POS) plugin for WooCommerce 1.10.17, at templates/gallery/quote.html

259 lines 18.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <!--
2 Quote / Estimate — pre-sale document.
3
4 Items with pricing but no payment section. Designed for B&W printing:
5 white background, black ink, hierarchy comes from weight, rules,
6 whitespace and type contrast rather than colour fills. Layout follows
7 the packing-slip pattern so the two documents read as a pair.
8
9 Sections, top to bottom:
10
11 - Header — store logo, name, address and contact details on the
12 left; "QUOTE" wordmark, order number and date on the right.
13 - Prepared For + Order meta — bordered "Prepared For" box on the
14 left (mirroring packing-slip's Ship-to emphasis); right column
15 shows date, status (when set), cashier and an optional Ship-to
16 sub-block.
17 - Items table — item name with variation attributes, SKU, qty,
18 unit price and line total. Fees, shipping (with carrier /
19 tracking meta) and discounts share the table.
20 - Tax summary + totals — per-rate net / tax breakdown on the left,
21 subtotal / discount / tax / total stack on the right.
22 - Customer note — only when a note was left on the order.
23 - Terms & conditions — store policies, falling back to the built-in
24 "valid for 30 days" message.
25 - Footer — imprint, optional opening hours, and a "this is a
26 quote, not a receipt" tagline.
27
28 To remove a section, delete the matching block. To restyle, edit the
29 inline styles on the wrapping element.
30
31 Note: Logicless output passes through wp_kses_post, which strips
32 <style>, <head>, and document-level tags. Use inline styles only.
33
34 @see https://docs.wcpos.com/templates/receipt-data-reference
35 -->
36 <div style="box-sizing: border-box; -webkit-print-color-adjust: exact; print-color-adjust: exact; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; font-size: 13px; line-height: 1.45; color: #1f2937; padding: 32px 36px;">
37
38 <!-- ── Header: logo + store / doc title + meta ─────────────── -->
39 <header style="display: flex; align-items: flex-start; gap: 22px; padding-bottom: 18px; border-bottom: 2px solid #111827;">
40 {{#store.logo}}
41 <div style="flex: 0 0 auto;">
42 <img src="{{store.logo}}" alt="{{store.name}}" style="width: 88px; height: auto; display: block;">
43 </div>
44 {{/store.logo}}
45 <div style="flex: 1 1 auto; min-width: 0;">
46 <div style="font-size: 22px; font-weight: 700; letter-spacing: -0.01em;">{{store.name}}</div>
47 {{#store.address_lines}}
48 <div style="margin-top: 2px; color: #6b7280; font-size: 12px;">{{.}}</div>
49 {{/store.address_lines}}
50 {{#store.phone}}<div style="color: #6b7280; font-size: 12px;">{{store.phone}}{{#store.email}} &middot; {{store.email}}{{/store.email}}</div>{{/store.phone}}
51 {{^store.phone}}{{#store.email}}<div style="color: #6b7280; font-size: 12px;">{{store.email}}</div>{{/store.email}}{{/store.phone}}
52 {{#store.tax_ids}}
53 <div style="color: #6b7280; font-size: 12px;">{{#label}}{{label}} {{/label}}{{value}}</div>
54 {{/store.tax_ids}}
55 </div>
56 <div style="flex: 0 0 auto; text-align: right;">
57 <div style="font-size: 16px; font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase;">{{i18n.quote}}</div>
58 <div style="font-size: 22px; font-weight: 700; margin-top: 4px;">#{{order.number}}</div>
59 <div style="color: #6b7280; font-size: 12px; margin-top: 6px;">{{order.created.datetime}}</div>
60 </div>
61 </header>
62
63 <!-- ── Prepared For + Order meta ─────────────── -->
64 <div style="display: grid; grid-template-columns: 2fr 1fr; gap: 28px; margin-top: 22px;">
65
66 <div style="padding: 18px 20px; border: 2px solid #111827; border-radius: 10px;">
67 <div style="font-size: 10px; letter-spacing: 0.12em; color: #6b7280; text-transform: uppercase; margin-bottom: 8px; font-weight: 700;">{{i18n.prepared_for}}</div>
68 <div style="font-weight: 700; font-size: 16px; margin-bottom: 2px;">{{customer.name}}</div>
69 {{#customer.billing_address.company}}<div style="color: #6b7280; margin-bottom: 6px;">{{customer.billing_address.company}}</div>{{/customer.billing_address.company}}
70 {{#customer.billing_address.address_1}}
71 <div style="font-size: 13px;">
72 <div>{{customer.billing_address.address_1}}{{#customer.billing_address.address_2}}, {{customer.billing_address.address_2}}{{/customer.billing_address.address_2}}</div>
73 <div>{{customer.billing_address.postcode}} {{customer.billing_address.city}}{{#customer.billing_address.state}}, {{customer.billing_address.state}}{{/customer.billing_address.state}}</div>
74 {{#customer.billing_address.country}}<div>{{customer.billing_address.country}}</div>{{/customer.billing_address.country}}
75 </div>
76 {{/customer.billing_address.address_1}}
77 {{#customer.billing_address.email}}<div style="color: #6b7280; font-size: 12px; margin-top: 8px;">{{customer.billing_address.email}}</div>{{/customer.billing_address.email}}
78 {{#customer.billing_address.phone}}<div style="color: #6b7280; font-size: 12px;{{^customer.billing_address.email}} margin-top: 8px;{{/customer.billing_address.email}}">{{customer.billing_address.phone}}</div>{{/customer.billing_address.phone}}
79 {{#customer.tax_ids}}
80 <div style="font-size: 12px; margin-top: 6px;"><strong>{{#label}}{{label}}{{/label}}{{^label}}{{type}}{{/label}}</strong> {{value}}</div>
81 {{/customer.tax_ids}}
82 </div>
83
84 <div style="font-size: 12px;">
85 <div style="font-size: 10px; letter-spacing: 0.12em; color: #6b7280; text-transform: uppercase; margin-bottom: 8px; font-weight: 700;">{{i18n.order}}</div>
86 <div style="display: flex; justify-content: space-between; padding: 2px 0;"><span style="color: #6b7280;">{{i18n.date}}</span><span>{{order.created.datetime}}</span></div>
87 {{#order.wc_status}}
88 <div style="display: flex; justify-content: space-between; padding: 2px 0;">
89 <span style="color: #6b7280;">{{i18n.status}}</span>
90 <span>{{#order.status_label}}{{order.status_label}}{{/order.status_label}}{{^order.status_label}}{{order.wc_status}}{{/order.status_label}}</span>
91 </div>
92 {{/order.wc_status}}
93 {{#cashier.name}}<div style="display: flex; justify-content: space-between; padding: 2px 0;"><span style="color: #6b7280;">{{i18n.cashier}}</span><span>{{cashier.name}}</span></div>{{/cashier.name}}
94
95 {{#customer.shipping_address.address_1}}
96 <div style="border-top: 1px solid #e5e7eb; margin-top: 8px; padding-top: 6px;">
97 <div style="font-size: 10px; letter-spacing: 0.12em; color: #6b7280; text-transform: uppercase; margin-bottom: 4px; font-weight: 700;">{{i18n.ship_to}}</div>
98 <div>{{customer.shipping_address.first_name}} {{customer.shipping_address.last_name}}</div>
99 <div style="color: #6b7280; font-size: 11px;">{{customer.shipping_address.address_1}}{{#customer.shipping_address.address_2}}, {{customer.shipping_address.address_2}}{{/customer.shipping_address.address_2}}</div>
100 <div style="color: #6b7280; font-size: 11px;">{{customer.shipping_address.postcode}} {{customer.shipping_address.city}}{{#customer.shipping_address.country}}, {{customer.shipping_address.country}}{{/customer.shipping_address.country}}</div>
101 </div>
102 {{/customer.shipping_address.address_1}}
103 </div>
104 </div>
105
106 <!-- ── Items table ─────────────── -->
107 <table style="width: 100%; border-collapse: collapse; margin-top: 22px; font-size: 13px;">
108 <thead>
109 <tr>
110 <th style="text-align: left; font-weight: 600; color: #6b7280; padding: 8px 6px; border-bottom: 1px solid #e5e7eb; font-size: 11px; text-transform: uppercase; letter-spacing: 0.04em;">{{i18n.item_short}}</th>
111 <th style="text-align: left; font-weight: 600; color: #6b7280; padding: 8px 6px; border-bottom: 1px solid #e5e7eb; font-size: 11px; text-transform: uppercase; letter-spacing: 0.04em; white-space: nowrap;">{{i18n.sku_short}}</th>
112 <th style="text-align: right; font-weight: 600; color: #6b7280; padding: 8px 6px; border-bottom: 1px solid #e5e7eb; font-size: 11px; text-transform: uppercase; letter-spacing: 0.04em; white-space: nowrap;">{{i18n.qty_short}}</th>
113 <th style="text-align: right; font-weight: 600; color: #6b7280; padding: 8px 6px; border-bottom: 1px solid #e5e7eb; font-size: 11px; text-transform: uppercase; letter-spacing: 0.04em; white-space: nowrap;">{{i18n.unit_price}}</th>
114 <th style="text-align: right; font-weight: 600; color: #6b7280; padding: 8px 6px; border-bottom: 1px solid #e5e7eb; font-size: 11px; text-transform: uppercase; letter-spacing: 0.04em; white-space: nowrap;">{{i18n.total}}</th>
115 </tr>
116 </thead>
117 <tbody>
118 {{#lines}}
119 <tr>
120 <td style="padding: 10px 6px; border-bottom: 1px solid #f3f4f6; vertical-align: top;">
121 <div style="font-weight: 600;">{{name}}</div>
122 {{#meta}}<div style="color: #6b7280; font-size: 11px;">{{key}}: {{value}}</div>{{/meta}}
123 </td>
124 <td style="padding: 10px 6px; border-bottom: 1px solid #f3f4f6; vertical-align: top; color: #6b7280; font-size: 11px; white-space: nowrap;">{{sku}}</td>
125 <td style="padding: 10px 6px; border-bottom: 1px solid #f3f4f6; vertical-align: top; text-align: right; font-variant-numeric: tabular-nums;">{{qty}}</td>
126 <td style="padding: 10px 6px; border-bottom: 1px solid #f3f4f6; vertical-align: top; text-align: right; font-variant-numeric: tabular-nums;">
127 {{unit_price_display}}
128 {{#unit_savings}}
129 <div style="color: #6b7280; font-size: 10px;">{{i18n.regular_price}}: <span style="text-decoration: line-through;">{{regular_price_display}}</span></div>
130 {{^savings_in_discounts}}<div style="color: #15803d; font-size: 10px;">{{i18n.savings}}: -{{unit_savings_display}}</div>{{/savings_in_discounts}}
131 {{/unit_savings}}
132 </td>
133 <td style="padding: 10px 6px; border-bottom: 1px solid #f3f4f6; vertical-align: top; text-align: right; font-weight: 600; font-variant-numeric: tabular-nums;">{{line_total_display}}</td>
134 </tr>
135 {{/lines}}
136 {{#fees}}
137 <tr>
138 <td style="padding: 10px 6px; border-bottom: 1px solid #f3f4f6; vertical-align: top;">
139 <div style="font-weight: 600;">{{label}}</div>
140 {{#meta}}<div style="color: #6b7280; font-size: 11px;">{{key}}: {{value}}</div>{{/meta}}
141 </td>
142 <td style="padding: 10px 6px; border-bottom: 1px solid #f3f4f6; vertical-align: top; color: #6b7280;">&mdash;</td>
143 <td style="padding: 10px 6px; border-bottom: 1px solid #f3f4f6; vertical-align: top; text-align: right; font-variant-numeric: tabular-nums;">1</td>
144 <td style="padding: 10px 6px; border-bottom: 1px solid #f3f4f6; vertical-align: top; text-align: right; font-variant-numeric: tabular-nums;">{{total_display}}</td>
145 <td style="padding: 10px 6px; border-bottom: 1px solid #f3f4f6; vertical-align: top; text-align: right; font-weight: 600; font-variant-numeric: tabular-nums;">{{total_display}}</td>
146 </tr>
147 {{/fees}}
148 {{#shipping}}
149 <tr>
150 <td style="padding: 10px 6px; border-bottom: 1px solid #f3f4f6; vertical-align: top;">
151 <div style="font-weight: 600;">{{label}}{{#method_id}} <span style="color: #6b7280; font-size: 11px; font-weight: 400;">({{method_id}})</span>{{/method_id}}</div>
152 {{#meta}}<div style="color: #6b7280; font-size: 11px;">{{key}}: {{value}}</div>{{/meta}}
153 </td>
154 <td style="padding: 10px 6px; border-bottom: 1px solid #f3f4f6; vertical-align: top; color: #6b7280;">&mdash;</td>
155 <td style="padding: 10px 6px; border-bottom: 1px solid #f3f4f6; vertical-align: top; text-align: right; font-variant-numeric: tabular-nums;">1</td>
156 <td style="padding: 10px 6px; border-bottom: 1px solid #f3f4f6; vertical-align: top; text-align: right; font-variant-numeric: tabular-nums;">{{total_display}}</td>
157 <td style="padding: 10px 6px; border-bottom: 1px solid #f3f4f6; vertical-align: top; text-align: right; font-weight: 600; font-variant-numeric: tabular-nums;">{{total_display}}</td>
158 </tr>
159 {{/shipping}}
160 {{#discounts}}
161 <tr>
162 <td style="padding: 10px 6px; border-bottom: 1px solid #f3f4f6; vertical-align: top;">
163 <div style="font-weight: 600;">{{i18n.discount}}{{#label}} &middot; {{label}}{{/label}}</div>
164 {{#code}}<div style="color: #6b7280; font-size: 11px;">{{i18n.reference}}: {{code}}</div>{{/code}}
165 </td>
166 <td style="padding: 10px 6px; border-bottom: 1px solid #f3f4f6; vertical-align: top; color: #6b7280;">&mdash;</td>
167 <td style="padding: 10px 6px; border-bottom: 1px solid #f3f4f6; vertical-align: top; text-align: right; color: #6b7280;">&mdash;</td>
168 <td style="padding: 10px 6px; border-bottom: 1px solid #f3f4f6; vertical-align: top; text-align: right; color: #6b7280;">&mdash;</td>
169 <td style="padding: 10px 6px; border-bottom: 1px solid #f3f4f6; vertical-align: top; text-align: right; font-weight: 600; font-variant-numeric: tabular-nums;">-{{total_display}}</td>
170 </tr>
171 {{/discounts}}
172 </tbody>
173 </table>
174
175 <!-- ── Tax summary + Totals ─────────────── -->
176 <div style="display: grid; grid-template-columns: 1fr 320px; gap: 28px; margin-top: 20px; align-items: start;">
177 <div>
178 {{#has_tax_summary}}
179 <div style="font-size: 10px; letter-spacing: 0.12em; color: #6b7280; text-transform: uppercase; margin-bottom: 8px; font-weight: 700;">{{#tax.display_excl}}{{i18n.tax_summary}}{{/tax.display_excl}}{{#tax.display_incl}}{{i18n.included_tax}}{{/tax.display_incl}}</div>
180 <table style="width: 100%; border-collapse: collapse; font-size: 12px;">
181 <thead>
182 <tr>
183 <th style="text-align: left; font-weight: 600; color: #6b7280; padding: 6px; border-bottom: 1px solid #e5e7eb; font-size: 10px; text-transform: uppercase; letter-spacing: 0.04em;">{{i18n.tax}}</th>
184 <th style="text-align: right; font-weight: 600; color: #6b7280; padding: 6px; border-bottom: 1px solid #e5e7eb; font-size: 10px; text-transform: uppercase; letter-spacing: 0.04em;">{{i18n.taxable_excl_short}}</th>
185 <th style="text-align: right; font-weight: 600; color: #6b7280; padding: 6px; border-bottom: 1px solid #e5e7eb; font-size: 10px; text-transform: uppercase; letter-spacing: 0.04em;">{{i18n.tax_amount_short}}</th>
186 </tr>
187 </thead>
188 <tbody>
189 {{#tax_summary}}
190 <tr>
191 <td style="padding: 6px; border-bottom: 1px solid #f3f4f6;">{{label}}{{#rate}} ({{rate}}%){{/rate}}</td>
192 <td style="padding: 6px; border-bottom: 1px solid #f3f4f6; text-align: right; font-variant-numeric: tabular-nums;">{{taxable_amount_excl_display}}</td>
193 <td style="padding: 6px; border-bottom: 1px solid #f3f4f6; text-align: right; font-variant-numeric: tabular-nums;">{{tax_amount_display}}</td>
194 </tr>
195 {{/tax_summary}}
196 </tbody>
197 </table>
198 {{/has_tax_summary}}
199 </div>
200
201 <div style="font-size: 13px;">
202 <div style="display: flex; justify-content: space-between; padding: 2px 0;"><span style="color: #6b7280;">{{i18n.subtotal}}</span><span style="font-variant-numeric: tabular-nums;">{{totals.subtotal_display}}</span></div>
203 {{#totals.discount_total}}
204 <div style="display: flex; justify-content: space-between; padding: 2px 0;"><span style="color: #6b7280;">{{i18n.discount}}</span><span style="font-variant-numeric: tabular-nums;">-{{totals.discount_total_display}}</span></div>
205 {{/totals.discount_total}}
206 {{#totals.tax_total}}
207 <div style="display: flex; justify-content: space-between; padding: 2px 0;"><span style="color: #6b7280;">{{#tax.display_excl}}{{i18n.total_tax}}{{/tax.display_excl}}{{#tax.display_incl}}{{i18n.included_tax}}{{/tax.display_incl}}</span><span style="font-variant-numeric: tabular-nums;">{{totals.tax_total_display}}</span></div>
208 {{/totals.tax_total}}
209 <div style="border-top: 2px solid #111827; margin: 8px 0;"></div>
210 <div style="display: flex; justify-content: space-between; padding: 4px 0; font-size: 18px; font-weight: 700;"><span>{{i18n.total}}</span><span style="font-variant-numeric: tabular-nums;">{{totals.total_incl_display}}</span></div>
211 {{#totals.total_saved_incl}}
212 <div style="display: flex; justify-content: space-between; padding: 2px 0; color: #15803d;"><span>{{i18n.total_saved}}</span><span style="font-variant-numeric: tabular-nums;">{{totals.total_saved_incl_display}}</span></div>
213 {{/totals.total_saved_incl}}
214 </div>
215 </div>
216
217 <!-- ── Customer note ─────────────── -->
218 {{#order.customer_note}}
219 <div style="margin-top: 24px; padding: 14px 18px; border: 1px solid #e5e7eb; border-left: 3px solid #111827; font-size: 12px; line-height: 1.55;">
220 <div style="font-size: 10px; letter-spacing: 0.12em; color: #6b7280; text-transform: uppercase; margin-bottom: 6px; font-weight: 700;">{{i18n.customer_note}}</div>
221 <div style="white-space: pre-wrap;">{{order.customer_note}}</div>
222 </div>
223 {{/order.customer_note}}
224
225 <!-- ── Terms & conditions ─────────────── -->
226 <div style="margin-top: 22px; padding: 16px 18px; border: 1px solid #e5e7eb; border-radius: 10px; font-size: 12px; line-height: 1.6;">
227 <div style="font-size: 10px; letter-spacing: 0.12em; color: #6b7280; text-transform: uppercase; margin-bottom: 8px; font-weight: 700;">{{i18n.terms_and_conditions}}</div>
228 {{#store.policies_and_conditions}}
229 <div style="white-space: pre-wrap;">{{store.policies_and_conditions}}</div>
230 {{/store.policies_and_conditions}}
231 {{^store.policies_and_conditions}}
232 <div>{{i18n.quote_validity}}</div>
233 {{/store.policies_and_conditions}}
234 </div>
235
236 <!-- ── Footer ─────────────── -->
237 <footer style="margin-top: 16px; padding-top: 14px; border-top: 1px solid #e5e7eb; display: flex; align-items: flex-start; gap: 24px; font-size: 11px; color: #6b7280;">
238 <div style="flex: 1 1 0; min-width: 0;">
239 {{#store.footer_imprint}}{{store.footer_imprint}}{{/store.footer_imprint}}
240 </div>
241 {{#store.opening_hours}}
242 <div style="flex: 1 1 0; min-width: 0; text-align: center;">
243 <div style="font-size: 10px; letter-spacing: 0.12em; color: #6b7280; text-transform: uppercase; font-weight: 700; margin-bottom: 4px;">{{i18n.opening_hours}}</div>
244 <div style="color: #374151;">{{store.opening_hours}}</div>
245 {{#store.opening_hours_notes}}<div>{{store.opening_hours_notes}}</div>{{/store.opening_hours_notes}}
246 </div>
247 {{/store.opening_hours}}
248 {{^store.opening_hours}}{{#store.opening_hours_notes}}
249 <div style="flex: 1 1 0; min-width: 0; text-align: center;">
250 <div>{{store.opening_hours_notes}}</div>
251 </div>
252 {{/store.opening_hours_notes}}{{/store.opening_hours}}
253 <div style="flex: 1 1 0; min-width: 0; text-align: right; color: #111827; font-weight: 700; letter-spacing: 0.10em; text-transform: uppercase;">
254 {{i18n.quote_not_receipt}}
255 </div>
256 </footer>
257
258 </div>
259