1 <?xml version="1.0" encoding="UTF-8"?>
4 <templates id="template" xml:space="preserve">
8 <div class="pos-topheader">
9 <div class="pos-branding">
10 <img class="pos-logo" src="/point_of_sale/static/src/img/logo.png" />
11 <span class="placeholder-UsernameWidget"></span>
13 <div class="pos-rightheader">
14 <span class="placeholder-OrderSelectorWidget"></span>
15 <!-- here goes header buttons -->
19 <div class="pos-content">
21 <div class="pos-leftpane">
23 <div class='subwindow'>
24 <div class='subwindow-container'>
25 <div class='subwindow-container-fix'>
26 <div class="placeholder-OrderWidget"></div>
31 <div class='subwindow collapsed'>
32 <div class='subwindow-container'>
33 <div class='subwindow-container-fix pads'>
34 <div class="control-buttons oe_hidden"></div>
35 <div class="placeholder-ActionpadWidget"></div>
36 <div class="placeholder-NumpadWidget"></div>
44 <div class="rightpane">
46 <div class='subwindow'>
47 <div class='subwindow-container'>
48 <div class='subwindow-container-fix screens'>
55 <div class="placeholder-OnscreenKeyboardWidget"></div>
59 <div class='loader-feedback oe_hidden'>
60 <h1 class='message'>Loading</h1>
61 <div class='progressbar'>
62 <div class='progress' width='50%'></div>
64 <div class='oe_hidden button skip'>
71 <div class='not-supported-browser'>
73 <img src='/point_of_sale/static/src/img/pos_screenshot.jpg' />
75 The Point of Sale is not supported by Microsoft Internet Explorer. Please use
76 a modern browser like <a href="http://www.mozilla.org/firefox/" target="_blank">Mozilla Firefox</a>
77 or <a href="http://www.google.com/chrome" target="_blank">Google Chrome</a>.
85 <t t-name="SynchNotificationWidget">
86 <div class="oe_status js_synch">
87 <span class='js_msg oe_hidden'>0</span>
88 <div class="js_connected oe_icon oe_green">
89 <i class='fa fa-fw fa-wifi'></i>
91 <div class="js_connecting oe_icon oe_hidden">
92 <i class='fa fa-fw fa-spin fa-spinner'></i>
94 <div class="js_disconnected oe_icon oe_red oe_hidden">
95 <i class='fa fa-fw fa-wifi'></i>
100 <t t-name="ProxyStatusWidget">
101 <div class="oe_status js_proxy">
102 <span class='js_msg oe_orange oe_hidden'></span>
103 <div class="js_connected oe_icon oe_green">
104 <i class='fa fa-fw fa-sitemap'></i>
106 <div class="js_connecting oe_icon oe_hidden">
107 <i class='fa fa-fw fa-spin fa-spinner'></i>
109 <div class="js_warning oe_icon oe_orange oe_hidden">
110 <i class='fa fa-fw fa-sitemap'></i>
112 <div class="js_disconnected oe_icon oe_red oe_hidden">
113 <i class='fa fa-fw fa-sitemap'></i>
118 <t t-name="HeaderButtonWidget">
119 <div class="header-button">
120 <t t-esc="widget.label" />
124 <t t-name="PosCloseWarning">
125 <div>There are pending operations that could not be saved into the database, are you sure you want to exit?</div>
128 <t t-name="ActionpadWidget">
129 <div class="actionpad">
130 <button class='button set-customer'>
131 <i class='fa fa-user' /> Customer
133 <button class='button pay'>
134 <i class='fa fa-chevron-right' /> Payment
139 <t t-name="NumpadWidget">
141 <button class="input-button number-char">1</button>
142 <button class="input-button number-char">2</button>
143 <button class="input-button number-char">3</button>
144 <button class="mode-button" data-mode='quantity'>Qty</button>
146 <button class="input-button number-char">4</button>
147 <button class="input-button number-char">5</button>
148 <button class="input-button number-char">6</button>
149 <button class="mode-button" data-mode='discount'>Disc</button>
151 <button class="input-button number-char">7</button>
152 <button class="input-button number-char">8</button>
153 <button class="input-button number-char">9</button>
154 <button class="mode-button" data-mode='price'>Price</button>
156 <button class="input-button numpad-minus" >+/-</button>
157 <button class="input-button number-char">0</button>
158 <button class="input-button number-char">.</button>
159 <button class="input-button numpad-backspace">
160 <img src="/point_of_sale/static/src/img/backspace.png" width="24" height="21" />
166 <t t-name="CategoryButton">
167 <span class='category-button js-category-switch' t-att-data-category-id="category.id" >
168 <div class="category-img">
169 <img t-att-src="image_url" />
171 <div class="category-name">
172 <t t-esc="category.name"/>
177 <t t-name="CategorySimpleButton">
178 <span class='category-simple-button js-category-switch' t-att-data-category-id="category.id" >
179 <t t-esc="category.name"/>
183 <t t-name="ProductCategoriesWidget">
185 <header class='rightpane-header'>
186 <div class="breadcrumbs">
187 <span class="breadcrumb">
188 <span class=" breadcrumb-button js-category-switch">
189 <img src="/point_of_sale/static/src/img/home.png" class="breadcrumb-homeimg" />
192 <t t-foreach="widget.breadcrumb" t-as="category">
193 <span class="breadcrumb">
194 <img src="/point_of_sale/static/src/img/bc-arrow-big.png" class="breadcrumb-arrow" />
195 <span class="breadcrumb-button js-category-switch" t-att-data-category-id="category.id">
196 <t t-esc="category.name"/>
201 <div class="searchbox">
202 <input placeholder="Search Products" />
203 <span class="search-clear"></span>
206 <t t-if="widget.subcategories.length > 0">
207 <div class="categories">
208 <div class="category-list">
215 <t t-name="ProductListWidget">
216 <div class='product-list-container'>
217 <div class="product-list-scroller touch-scrollable">
218 <div class="product-list">
221 <span class="placeholder-ScrollbarWidget" />
225 <t t-name="ProductScreenWidget">
226 <div class="product-screen screen">
227 <table class="layout-table">
229 <tr class="header-row">
230 <td class="header-cell">
231 <span class="placeholder-ProductCategoriesWidget" />
235 <tr class="content-row">
236 <td class="content-cell">
237 <div class="content-container">
238 <span class="placeholder-ProductListWidget" />
247 <t t-name="ScaleScreenWidget">
248 <div class="scale-screen screen">
249 <div class="screen-content">
250 <div class="top-content">
251 <span class='button back'>
252 <i class='fa fa-angle-double-left'></i>
255 <h1 class='product-name'><t t-esc="widget.get_product_name()" /></h1>
257 <div class="centered-content">
258 <div class='weight js-weight'>
259 <t t-esc="widget.get_product_weight_string()" />
261 <div class='product-price'>
262 <t t-esc="widget.format_currency(widget.get_product_price()) + '/Kg'" />
264 <div class='computed-price'>
267 <div class='buy-product'>
269 <i class='fa fa-angle-double-right'></i>
276 <t t-name="ClientLine">
277 <tr class='client-line' t-att-data-id='partner.id'>
278 <td><t t-esc='partner.name' /></td>
279 <td><t t-esc='partner.address' /></td>
280 <td><t t-esc='partner.phone or partner.mobile or ""' /></td>
284 <t t-name="ClientDetailsEdit">
285 <section class='client-details edit'>
286 <div class='client-picture'>
287 <t t-if='!partner.id'>
288 <i class='fa fa-camera'></i>
290 <t t-if='partner.id'>
291 <img t-att-src='widget.partner_icon_url(partner.id)' />
293 <input type='file' class='image-uploader'></input>
295 <input class='detail client-name' name='name' t-att-value='partner.name' placeholder='Name'></input>
296 <div class='edit-buttons'>
297 <div class='button undo'><i class='fa fa-undo' /></div>
298 <div class='button save'><i class='fa fa-floppy-o' /></div>
300 <div class='client-details-box clearfix'>
301 <div class='client-details-left'>
302 <div class='client-detail'>
303 <span class='label'>Street</span>
304 <input class='detail client-address-street' name='street' t-att-value='partner.street' placeholder='Street'></input>
306 <div class='client-detail'>
307 <span class='label'>City</span>
308 <input class='detail client-address-city' name='city' t-att-value='partner.city' placeholder='City'></input>
310 <div class='client-detail'>
311 <span class='label'>Postcode</span>
312 <input class='detail client-address-zip' name='zip' t-att-value='partner.zip' placeholder='ZIP'></input>
314 <div class='client-detail'>
315 <span class='label'>Country</span>
316 <select class='detail client-address-country' name='country_id'>
317 <option value=''>None</option>
318 <t t-foreach='widget.pos.countries' t-as='country'>
319 <option t-att-value='country.id' t-att-selected="partner_country_id ? ((country.id === partner.country_id[0]) ? true : undefined) : undefined">
320 <t t-esc='country.name'/>
326 <div class='client-details-right'>
327 <div class='client-detail'>
328 <span class='label'>Email</span>
329 <input class='detail client-email' name='email' type='email' t-att-value='partner.email || ""'></input>
331 <div class='client-detail'>
332 <span class='label'>Phone</span>
333 <input class='detail client-phone' name='phone' type='tel' t-att-value='partner.phone || ""'></input>
335 <div class='client-detail'>
336 <span class='label'>Barcode</span>
337 <input class='detail barcode' name='barcode' t-att-value='partner.barcode || ""'></input>
339 <div class='client-detail'>
340 <span class='label'>Tax ID</span>
341 <input class='detail vat' name='vat' t-att-value='partner.vat || ""'></input>
347 <t t-name="ClientDetails">
348 <section class='client-details'>
349 <div class='client-picture'>
350 <img t-att-src='widget.partner_icon_url(partner.id)' />
352 <div class='client-name'><t t-esc='partner.name' /></div>
353 <div class='edit-buttons'>
354 <div class='button edit'><i class='fa fa-pencil-square' /></div>
356 <div class='client-details-box clearfix'>
357 <div class='client-details-left'>
358 <div class='client-detail'>
359 <span class='label'>Address</span>
360 <span class='detail client-address'><t t-esc='partner.address' /></span>
362 <div class='client-detail'>
363 <span class='label'>Email</span>
364 <span class='detail client-email'><t t-esc='partner.email' /></span>
366 <div class='client-detail'>
367 <span class='label'>Phone</span>
368 <t t-if='partner.phone'>
369 <span class='detail client-phone'><t t-esc='partner.phone' /></span>
371 <t t-if='!partner.phone'>
372 <span class='detail client-phone empty'>N/A</span>
376 <div class='client-details-right'>
377 <div class='client-detail'>
378 <span class='label'>Barcode</span>
379 <t t-if='partner.barcode'>
380 <span class='detail client-id'><t t-esc='partner.barcode'/></span>
382 <t t-if='!partner.barcode'>
383 <span class='detail client-id empty'>N/A</span>
386 <div class='client-detail'>
387 <span class='label'>Tax ID</span>
388 <t t-if='partner.vat'>
389 <span class='detail vat'><t t-esc='partner.vat'/></span>
391 <t t-if='!partner.vat'>
392 <span class='detail vat empty'>N/A</span>
400 <t t-name="ClientListScreenWidget">
401 <div class="clientlist-screen screen">
402 <div class="screen-content">
403 <section class="top-content">
404 <span class='button back'>
405 <i class='fa fa-angle-double-left'></i>
408 <span class='searchbox'>
409 <input placeholder='Search Customers' />
410 <span class='search-clear'></span>
412 <span class='searchbox'></span>
413 <span class='button new-customer'>
414 <i class='fa fa-user'></i>
415 <i class='fa fa-plus'></i>
417 <span class='button next oe_hidden highlight'>
419 <i class='fa fa-angle-double-right'></i>
422 <section class="full-content">
424 <section class='subwindow collapsed'>
425 <div class='subwindow-container'>
426 <div class='subwindow-container-fix client-details-contents'>
430 <section class='subwindow'>
431 <div class='subwindow-container'>
432 <div class='subwindow-container-fix touch-scrollable scrollable-y'>
433 <table class='client-list'>
441 <tbody class='client-list-contents'>
453 <t t-name="PaymentScreen-Paymentlines">
454 <t t-if="!paymentlines.length">
455 <div class='paymentlines-empty'>
457 <t t-esc="widget.format_currency(order.get_total_with_tax())"/>
459 <div class='message'>
460 Please select a payment method.
465 <t t-if="paymentlines.length">
466 <table class='paymentlines'>
469 <col class='tendered' />
470 <col class='change' />
471 <col class='method' />
472 <col class='controls' />
484 <t t-foreach='paymentlines' t-as='line'>
485 <t t-if='line.selected'>
486 <tr class='paymentline selected'>
487 <td class='col-due'> <t t-esc='widget.format_currency_no_symbol(order.get_due(line))' /> </td>
488 <td class='col-tendered edit'>
489 <t t-esc='widget.inputbuffer' />
490 <!-- <t t-esc='line.get_amount()' /> -->
492 <t t-if='order.get_change(line)'>
493 <td class='col-change highlight' >
494 <t t-esc='widget.format_currency_no_symbol(order.get_change(line))' />
497 <t t-if='!order.get_change(line)'>
498 <td class='col-change' ></td>
501 <td class='col-name' > <t t-esc='line.name' /> </td>
502 <td class='delete-button' t-att-data-cid='line.cid'> <i class='fa fa-times-circle' /> </td>
505 <t t-if='!line.selected'>
506 <tr class='paymentline' t-att-data-cid='line.cid'>
507 <td class='col-due'> <t t-esc='widget.format_currency_no_symbol(order.get_due(line))' /> </td>
508 <td class='col-tendered'> <t t-esc='widget.format_currency_no_symbol(line.get_amount())' /> </td>
509 <td class='col-change'>
510 <t t-if='order.get_change(line)'>
511 <t t-esc='widget.format_currency_no_symbol(order.get_change(line))' />
514 <td class='col-name'> <t t-esc='line.name' /> </td>
515 <td class='delete-button' t-att-data-cid='line.cid'> <i class='fa fa-times-circle' /> </td>
525 <t t-name="PaymentScreen-Numpad">
527 <button class="input-button number-char" data-action='1'>1</button>
528 <button class="input-button number-char" data-action='2'>2</button>
529 <button class="input-button number-char" data-action='3'>3</button>
530 <button class="mode-button" data-action='+10'>+10</button>
532 <button class="input-button number-char" data-action='4'>4</button>
533 <button class="input-button number-char" data-action='5'>5</button>
534 <button class="input-button number-char" data-action='6'>6</button>
535 <button class="mode-button" data-action='+20'>+20</button>
537 <button class="input-button number-char" data-action='7'>7</button>
538 <button class="input-button number-char" data-action='8'>8</button>
539 <button class="input-button number-char" data-action='9'>9</button>
540 <button class="mode-button" data-action='+50'>+50</button>
542 <button class="input-button numpad-char" data-action='CLEAR' >C</button>
543 <button class="input-button number-char" data-action='0'>0</button>
544 <button class="input-button number-char" data-action='.'>.</button>
545 <button class="input-button numpad-backspace" data-action='BACKSPACE' >
546 <img src="/point_of_sale/static/src/img/backspace.png" width="24" height="21" />
552 <t t-name="PaymentScreen-Paymentmethods">
553 <div class='paymentmethods'>
554 <t t-foreach="widget.pos.cashregisters" t-as="cashregister">
555 <div class="button paymentmethod" t-att-data-id="cashregister.journal_id[0]">
556 <t t-esc="cashregister.journal_id[1]" />
563 <t t-name="PaymentScreenWidget">
564 <div class='payment-screen screen'>
565 <div class='screen-content'>
566 <div class='top-content'>
567 <span class='button back'>
568 <i class='fa fa-angle-double-left'></i>
572 <span class='button next'>
574 <i class='fa fa-angle-double-right'></i>
577 <div class='left-content pc40 touch-scrollable scrollable-y'>
579 <div class='paymentmethods-container'>
583 <div class='right-content pc60 touch-scrollable scrollable-y'>
585 <section class='paymentlines-container'>
588 <section class='payment-numpad'>
591 <div class='payment-buttons'>
592 <div class='button js_set_customer'>
593 <i class='fa fa-user' />Customer
595 <t t-if='widget.pos.config.iface_invoicing'>
596 <t t-if='widget.pos.get_order()'>
597 <div t-attf-class='button js_invoice #{ widget.pos.get_order().is_to_invoice() ? "highlight" : ""} '>
598 <i class='fa fa-file-text-o' /> Invoice
602 <t t-if='widget.pos.config.iface_cashdrawer'>
603 <div class='button js_invoice'>
604 <i class='fa fa-archive' /> Open Cashbox
613 <t t-name="ReceiptScreenWidget">
614 <div class='receipt-screen screen'>
615 <div class='screen-content'>
616 <div class='top-content'>
618 <span class='button next'>
620 <i class='fa fa-angle-double-right'></i>
623 <div class="centered-content">
624 <div class="button print">
625 <i class='fa fa-print'></i> Print
627 <div class="pos-receipt-container">
634 <t t-name="XmlReceipt">
635 <receipt align='center' width='40' value-thousands-separator='' >
636 <t t-if='receipt.company.logo'>
637 <img t-att-src='receipt.company.logo' />
640 <t t-if='!receipt.company.logo'>
641 <h1><t t-esc='receipt.company.name' /></h1>
645 <t t-if='receipt.shop.name'>
646 <div><t t-esc='receipt.shop.name' /></div>
648 <t t-if='receipt.company.contact_address'>
649 <div><t t-esc='receipt.company.contact_address' /></div>
651 <t t-if='receipt.company.phone'>
652 <div>Tel:<t t-esc='receipt.company.phone' /></div>
654 <t t-if='receipt.company.vat'>
655 <div>VAT:<t t-esc='receipt.company.vat' /></div>
657 <t t-if='receipt.company.email'>
658 <div><t t-esc='receipt.company.email' /></div>
660 <t t-if='receipt.company.website'>
661 <div><t t-esc='receipt.company.website' /></div>
663 <t t-if='receipt.header_xml'>
664 <t t-raw='receipt.header_xml' />
666 <t t-if='!receipt.header_xml and receipt.header'>
667 <div><t t-esc='receipt.header' /></div>
669 <t t-if='receipt.cashier'>
670 <div class='cashier'>
671 <div>--------------------------------</div>
672 <div>Served by <t t-esc='receipt.cashier' /></div>
680 <div class='orderlines' line-ratio='0.6'>
681 <t t-foreach='receipt.orderlines' t-as='line'>
682 <t t-set='simple' t-value='line.discount === 0 and line.unit_name === "Unit(s)" and line.quantity === 1' />
685 <left><t t-esc='line.product_name' /></left>
686 <right><value><t t-esc='line.price_display' /></value></right>
690 <line><left><t t-esc='line.product_name' /></left></line>
691 <t t-if='line.discount !== 0'>
692 <line indent='1'><left>Discount: <t t-esc='line.discount' />%</left></line>
696 <value value-decimals='3' value-autoint='on'>
697 <t t-esc='line.quantity' />
699 <t t-if='line.unit_name !== "Unit(s)"'>
700 <t t-esc='line.unit_name' />
703 <value value-decimals='2'>
704 <t t-esc='line.price' />
708 <value><t t-esc='line.price_display' /></value>
717 <t t-set='taxincluded' t-value='Math.abs(receipt.subtotal - receipt.total_with_tax) <= 0.000001' />
718 <t t-if='!taxincluded'>
719 <line><right>--------</right></line>
720 <line><left>Subtotal</left><right> <value><t t-esc="receipt.subtotal" /></value></right></line>
721 <t t-foreach='receipt.tax_details' t-as='tax'>
723 <left><t t-esc='tax.name' /></left>
724 <right><value><t t-esc='tax.amount' /></value></right>
731 <line><right>--------</right></line>
732 <line class='total' size='double-height'>
733 <left><pre> TOTAL</pre></left>
734 <right><value><t t-esc='receipt.total_with_tax' /></value></right>
738 <!-- Payment Lines -->
740 <t t-foreach='receipt.paymentlines' t-as='line'>
742 <left><t t-esc='line.journal' /></left>
743 <right><value><t t-esc='line.amount'/></value></right>
748 <line size='double-height'>
749 <left><pre> CHANGE</pre></left>
750 <right><value><t t-esc='receipt.change' /></value></right>
754 <!-- Extra Payment Info -->
756 <t t-if='receipt.total_discount'>
758 <left>Discounts</left>
759 <right><value><t t-esc='receipt.total_discount'/></value></right>
762 <t t-if='taxincluded'>
763 <t t-foreach='receipt.tax_details' t-as='tax'>
765 <left><t t-esc='tax.name' /></left>
766 <right><value><t t-esc='tax.amount' /></value></right>
770 <left>Total Taxes</left>
771 <right><value><t t-esc='receipt.total_tax'/></value></right>
775 <div class='before-footer' />
778 <t t-if='receipt.footer_xml'>
779 <t t-raw='receipt.footer_xml' />
782 <t t-if='!receipt.footer_xml and receipt.footer'>
784 <t t-esc='receipt.footer' />
789 <div class='after-footer' />
793 <div><t t-esc='receipt.name' /></div>
794 <div><t t-esc='receipt.date.localestring' /></div>
800 <t t-name="FullscreenPopupWidget">
801 <div class="modal-dialog">
802 <div class="popup popup-fullscreen">
803 <p class="message">Fullscreen Setup</p>
805 <t t-if='widget.ismobile()'>
807 The best way to make the point of sale fullscreen on mobile
808 devices is to add the point of sale to your home screen. On
809 iPhone and iPad this is done by tapping <img src='/point_of_sale/static/src/img/ios-share-icon.png' />
810 and then <i>Add to Homescreen</i>
813 This also works on Android with the Chrome Beta Browser, using the <i>Add to Homescreen</i> option
814 in the browser's menu.
817 If you want to work in fullscreen just this time tap the <i>Go Fullscreen</i> button.
821 <t t-if='!widget.ismobile()'>
823 The best way to make the point of sale fullscreen on desktop
824 and laptops is to launch your browser in kiosk mode. Please
825 refer to your browser's documentation for the specific
829 If you want to work in fullscreen just this time, click the <i> Go Fullscreen</i> button.
834 <div class="button fullscreen">
837 <div class="button cancel">
845 <t t-name="ErrorInvoiceTransferPopupWidget">
846 <div class="modal-dialog">
847 <div class="popup popup-invoice">
848 <p class="message">The Order could not be sent to the server for invoicing. Invoices cannot be generated
849 in offline mode. Please check your internet connection and try again.</p>
859 <t t-name="ErrorPopupWidget">
860 <div class="modal-dialog">
861 <div class="popup popup-error">
862 <p class="message"><t t-esc=" widget.message || 'Error' " /></p>
863 <p class="comment"><t t-esc=" widget.comment || '' "/></p>
873 <t t-name="ErrorTracebackPopupWidget">
874 <div class="modal-dialog">
875 <div class="popup popup-error">
876 <p class="message"><t t-esc=" widget.message || 'Error' " /></p>
877 <p class="comment traceback"><t t-esc=" widget.comment || '' "/></p>
887 <t t-name="ErrorTracebackPopupWidget">
888 <div class="modal-dialog">
889 <div class="popup popup-error">
890 <p class="message"><t t-esc=" widget.message || 'Error' " /></p>
891 <p class="comment traceback"><t t-esc=" widget.comment || '' "/></p>
901 <t t-name="ErrorBarcodePopupWidget">
902 <div class="modal-dialog">
903 <div class="popup popup-barcode">
904 <p class="message">Unknown Barcode
906 <span class='barcode'><t t-esc="widget.barcode" /></span>
909 The Point of Sale could not find any product, client, employee
910 or action associated with the scanned barcode.
921 <t t-name="ConfirmPopupWidget">
922 <div class="modal-dialog">
923 <div class="popup popup-confirm">
924 <p class="message"><t t-esc=" widget.message || 'Confirm ?' " /></p>
925 <p class="comment"><t t-esc=" widget.comment || '' "/></p>
927 <div class="button confirm">
930 <div class="button cancel">
938 <t t-name="TextInputPopupWidget">
939 <div class="modal-dialog">
940 <div class="popup popup-textinput">
941 <p class="message"><t t-esc=" widget.message || '' " /></p>
942 <input type='text' t-att-value="widget.value || ''"></input>
944 <div class="button confirm">
947 <div class="button cancel">
955 <t t-name="TextAreaPopupWidget">
956 <div class="modal-dialog">
957 <div class="popup popup-textinput">
958 <p class="message"><t t-esc=" widget.message || '' " /></p>
959 <textarea rows="15" cols="50" t-att-value="widget.value || ''"></textarea>
961 <div class="button confirm">
964 <div class="button cancel">
972 <t t-name="UnsentOrdersPopupWidget">
973 <div class="modal-dialog">
974 <div class="popup popup-unsent-orders">
975 <p class="message">Unsent Orders</p>
976 <t t-if='widget.pos.db.get_orders().length === 0'>
978 There are no unsent orders
981 <t t-if='widget.pos.db.get_orders().length > 0'>
982 <p class='comment traceback'>
983 <t t-esc='JSON.stringify(widget.pos.db.get_orders(),null,2)' />
987 <div class="button confirm">
995 <t t-name="UnpaidOrdersPopupWidget">
996 <div class="modal-dialog">
997 <div class="popup popup-unpaid-orders">
998 <p class="message">Unpaid Orders</p>
999 <t t-if='widget.pos.db.get_unpaid_orders().length === 0'>
1001 There are no unpaid orders
1004 <t t-if='widget.pos.db.get_unpaid_orders().length > 0'>
1005 <p class='comment traceback'>
1006 <t t-esc='JSON.stringify(widget.pos.db.get_unpaid_orders(),null,2)' />
1009 <div class="footer">
1010 <div class="button confirm">
1018 <t t-name="SelectionPopupWidget">
1019 <div class="modal-dialog">
1020 <div class="popup popup-selection">
1021 <p class="message"><t t-esc=" widget.message || 'Select' " /></p>
1022 <div class='selection scrollable-y touch-scrollable'>
1023 <t t-foreach="widget.list || []" t-as="item">
1024 <div class='selection-item' t-att-data-item-index='item_index'>
1025 <t t-esc='item.label'/>
1029 <div class="footer">
1030 <div class="button cancel">
1038 <t t-name="NumberPopupWidget">
1039 <div class="modal-dialog">
1040 <div class="popup popup-number">
1041 <p class="message"><t t-esc=" widget.message || '' " /></p>
1042 <div class='popup-input value active'>
1043 <t t-esc='widget.inputbuffer' />
1045 <div class='popup-numpad'>
1046 <button class="input-button number-char" data-action='1'>1</button>
1047 <button class="input-button number-char" data-action='2'>2</button>
1048 <button class="input-button number-char" data-action='3'>3</button>
1049 <button class="mode-button add" data-action='+10'>+10</button>
1051 <button class="input-button number-char" data-action='4'>4</button>
1052 <button class="input-button number-char" data-action='5'>5</button>
1053 <button class="input-button number-char" data-action='6'>6</button>
1054 <button class="mode-button add" data-action='+20'>+20</button>
1056 <button class="input-button number-char" data-action='7'>7</button>
1057 <button class="input-button number-char" data-action='8'>8</button>
1058 <button class="input-button number-char" data-action='9'>9</button>
1059 <button class="mode-button add" data-action='+50'>+50</button>
1061 <button class="input-button numpad-char" data-action='CLEAR' >C</button>
1062 <button class="input-button number-char" data-action='0'>0</button>
1063 <button class="input-button number-char dot" data-action='.'>.</button>
1064 <button class="input-button numpad-backspace" data-action='BACKSPACE' >
1065 <img src="/point_of_sale/static/src/img/backspace.png" width="24" height="21" />
1069 <div class="footer">
1070 <div class="button confirm">
1073 <div class="button cancel">
1081 <t t-name="Product">
1082 <span class='product' t-att-data-product-id="product.id">
1083 <div class="product-img">
1084 <img t-att-src='image_url' />
1085 <t t-if="!product.to_weight">
1086 <span class="price-tag">
1087 <t t-esc="widget.format_currency(product.price,'Product Price')"/>
1090 <t t-if="product.to_weight">
1091 <span class="price-tag">
1092 <t t-esc="widget.format_currency(product.price,'Product Price')+'/Kg'"/>
1096 <div class="product-name">
1097 <t t-esc="product.display_name"/>
1102 <t t-name="Orderline">
1103 <li t-attf-class="orderline #{ line.selected ? 'selected' : '' }">
1104 <span class="product-name">
1105 <t t-esc="line.get_product().display_name"/>
1107 <span class="price">
1108 <t t-esc="widget.format_currency(line.get_display_price())"/>
1110 <ul class="info-list">
1111 <t t-if="line.get_quantity_str() !== '1' || line.selected ">
1114 <t t-esc="line.get_quantity_str()" />
1116 <t t-esc="line.get_unit().name" />
1118 <t t-esc="widget.format_currency(line.get_unit_display_price(),'Product Price')" />
1120 <t t-esc="line.get_unit().name" />
1123 <t t-if="line.get_discount_str() !== '0'">
1127 <t t-esc="line.get_discount_str()" />%
1136 <t t-name="OrderWidget">
1137 <div class="order-container">
1138 <div class="order-scroller touch-scrollable">
1140 <ul class="orderlines">
1141 <t t-if="orderlines.length === 0">
1142 <li class="orderline empty">
1143 Your shopping cart is empty
1147 <div class="summary clearfix">
1148 <div t-attf-class="line #{orderlines.length === 0 ? 'empty' : ''}">
1149 <div class='entry total'>
1150 <span class="label">Total: </span> <span class="value">0.00 €</span>
1151 <div class='subentry'>Taxes: <span class="value">0.00€</span></div>
1162 <t t-name="DebugWidget">
1163 <div class="debug-widget">
1164 <h1>Debug Window</h1>
1165 <div class="toggle">â–¾</div>
1166 <div class="content">
1167 <p class="category">Electronic Scale</p>
1169 <li><input type="text" class="weight"></input></li>
1170 <li class="button set_weight">Set Weight</li>
1171 <li class="button reset_weight">Reset</li>
1174 <p class="category">Barcode Scanner</p>
1176 <li><input type="text" class="ean"></input></li>
1177 <li class="button custom_ean">Custom Ean13</li>
1178 <li class="button admin_badge">Admin Badge</li>
1179 <li class="button client_badge">Client Badge</li>
1180 <li class="button soda_33cl">Soda 33cl</li>
1181 <li class="button oranges_kg">3.141Kg Oranges</li>
1182 <li class="button lemon_price">1.54€ Lemon</li>
1183 <li class="button unknown_product">Unknown Product</li>
1184 <li class="button invalid_ean">Invalid Ean</li>
1185 <li class="button reference">Reference</li>
1188 <p class="category">Unsent Orders</p>
1190 <li class="button show_orders">Show All Unsent Orders</li>
1191 <li class="button delete_orders">Delete All Unsent Orders</li>
1193 <p class="category">Unpaid Orders</p>
1195 <li class="button show_unpaid_orders">Show All Unpaid Orders</li>
1196 <li class="button delete_unpaid_orders">Delete All Unpaid Orders</li>
1199 <p class="category">Hardware Status</p>
1201 <li class="status weighting">Weighting</li>
1203 <p class="category">Hardware Events</p>
1205 <li class="event open_cashbox">Open Cashbox</li>
1206 <li class="event print_receipt">Print Receipt</li>
1207 <li class="event scale_read">Read Weighting Scale</li>
1214 <t t-name="Paymentline">
1215 <div t-attf-class="paymentline #{line.selected ? 'selected' : ''}">
1216 <div class='paymentline-name'>
1217 <t t-esc="line.name"/>
1219 <input class='paymentline-input' type="number" step="0.01" t-att-value="line.get_amount_str()" />
1220 <span class='paymentline-delete'>
1221 <img src="/point_of_sale/static/src/img/search_reset.gif" />
1226 <t t-name="PaymentlineOld">
1227 <tr t-attf-class="paymentline #{line.selected ? 'selected' : ''}">
1228 <td class="paymentline-type">
1229 <t t-esc="line.name"/>
1231 <td class="paymentline-amount pos-right-align">
1232 <input type="number" step="0.01" t-att-value="line.get_amount_str()" />
1233 <span class='delete-payment-line'><img src="/point_of_sale/static/src/img/search_reset.gif" /></span>
1238 <t t-name="OrderSelectorWidget">
1239 <div class="order-selector">
1240 <span class="orders touch-scrollable">
1242 <t t-foreach="widget.pos.get_order_list()" t-as="order">
1243 <t t-if='order === widget.pos.get_order()'>
1244 <span class="order-button select-order selected" t-att-data-uid="order.uid">
1245 <span class='order-sequence'>
1246 <t t-esc='order.sequence_number' />
1248 <t t-if="order.get_client()">
1249 <i class='fa fa-user'/>
1251 <t t-esc="(order.get_client() ? order.get_client_name()+' : ':'') + order.creation_date.toString('t')"/>
1254 <t t-if='order !== widget.pos.get_order()'>
1255 <span class="order-button select-order" t-att-data-uid="order.uid">
1256 <span class='order-sequence'>
1257 <t t-esc='order.sequence_number' />
1264 <span class="order-button square neworder-button">
1265 <i class='fa fa-plus' />
1267 <span class="order-button square deleteorder-button">
1268 <i class='fa fa-minus' />
1273 <t t-name="UsernameWidget">
1274 <span class="username">
1275 <t t-esc="widget.get_name()" />
1279 <t t-name="PosTicket">
1280 <div class="pos-sale-ticket">
1282 <div class="pos-center-align"><t t-esc="moment().format('L LT')"/> <t t-esc="order.name"/></div>
1284 <t t-esc="widget.pos.company.name"/><br />
1285 Phone: <t t-esc="widget.pos.company.phone || ''"/><br />
1286 User: <t t-esc="widget.pos.cashier ? widget.pos.cashier.name : widget.pos.user.name"/><br />
1287 Shop: <t t-esc="widget.pos.shop.name"/><br />
1289 <t t-if="receipt.header">
1290 <div style='text-align:center'>
1291 <t t-esc="receipt.header" />
1301 <tr t-foreach="orderlines" t-as="orderline">
1303 <t t-esc="orderline.get_product().display_name"/>
1304 <t t-if="orderline.get_discount() > 0">
1305 <div class="pos-disc-font">
1306 With a <t t-esc="orderline.get_discount()"/>% discount
1310 <td class="pos-right-align">
1311 <t t-esc="orderline.get_quantity_str_with_unit()"/>
1313 <td class="pos-right-align">
1314 <t t-esc="widget.format_currency(orderline.get_display_price())"/>
1322 <td class="pos-right-align">
1323 <t t-esc="widget.format_currency(order.get_subtotal())"/>
1326 <t t-foreach="order.get_tax_details()" t-as="taxdetail">
1328 <td><t t-esc="taxdetail.name" /></td>
1329 <td class="pos-right-align">
1330 <t t-esc="widget.format_currency(taxdetail.amount)" />
1336 <td class="pos-right-align">
1337 <t t-esc="widget.format_currency(order.get_total_discount())"/>
1342 <td class="pos-right-align">
1343 <t t-esc="widget.format_currency(order.get_total_with_tax())"/>
1349 <tr t-foreach="paymentlines" t-as="line">
1351 <t t-esc="line.name"/>
1353 <td class="pos-right-align">
1354 <t t-esc="widget.format_currency(line.get_amount())"/>
1360 <tr><td>Change:</td><td class="pos-right-align">
1361 <t t-esc="widget.format_currency(order.get_change())"/>
1364 <t t-if="receipt.footer">
1366 <div style='text-align:center'>
1367 <t t-esc="receipt.footer" />
1373 <!-- Onscreen Keyboard :
1374 http://net.tutsplus.com/tutorials/javascript-ajax/creating-a-keyboard-with-css-and-jquery/ -->
1375 <t t-name="OnscreenKeyboardFull">
1376 <div class="keyboard_frame">
1377 <ul class="keyboard full_keyboard">
1378 <li class="symbol"><span class="off">`</span><span class="on">~</span></li>
1379 <li class="symbol"><span class="off">1</span><span class="on">!</span></li>
1380 <li class="symbol"><span class="off">2</span><span class="on">@</span></li>
1381 <li class="symbol"><span class="off">3</span><span class="on">#</span></li>
1382 <li class="symbol"><span class="off">4</span><span class="on">$</span></li>
1383 <li class="symbol"><span class="off">5</span><span class="on">%</span></li>
1384 <li class="symbol"><span class="off">6</span><span class="on">^</span></li>
1385 <li class="symbol"><span class="off">7</span><span class="on">&</span></li>
1386 <li class="symbol"><span class="off">8</span><span class="on">*</span></li>
1387 <li class="symbol"><span class="off">9</span><span class="on">(</span></li>
1388 <li class="symbol"><span class="off">0</span><span class="on">)</span></li>
1389 <li class="symbol"><span class="off">-</span><span class="on">_</span></li>
1390 <li class="symbol"><span class="off">=</span><span class="on">+</span></li>
1391 <li class="delete lastitem">delete</li>
1392 <li class="tab firstitem">tab</li>
1393 <li class="letter">q</li>
1394 <li class="letter">w</li>
1395 <li class="letter">e</li>
1396 <li class="letter">r</li>
1397 <li class="letter">t</li>
1398 <li class="letter">y</li>
1399 <li class="letter">u</li>
1400 <li class="letter">i</li>
1401 <li class="letter">o</li>
1402 <li class="letter">p</li>
1403 <li class="symbol"><span class="off">[</span><span class="on">{</span></li>
1404 <li class="symbol"><span class="off">]</span><span class="on">}</span></li>
1405 <li class="symbol lastitem"><span class="off">\</span><span class="on">|</span></li>
1406 <li class="capslock firstitem">caps lock</li>
1407 <li class="letter">a</li>
1408 <li class="letter">s</li>
1409 <li class="letter">d</li>
1410 <li class="letter">f</li>
1411 <li class="letter">g</li>
1412 <li class="letter">h</li>
1413 <li class="letter">j</li>
1414 <li class="letter">k</li>
1415 <li class="letter">l</li>
1416 <li class="symbol"><span class="off">;</span><span class="on">:</span></li>
1417 <li class="symbol"><span class="off">'</span><span class="on">"</span></li>
1418 <li class="return lastitem">return</li>
1419 <li class="left-shift firstitem">shift</li>
1420 <li class="letter">z</li>
1421 <li class="letter">x</li>
1422 <li class="letter">c</li>
1423 <li class="letter">v</li>
1424 <li class="letter">b</li>
1425 <li class="letter">n</li>
1426 <li class="letter">m</li>
1427 <li class="symbol"><span class="off">,</span><span class="on"><</span></li>
1428 <li class="symbol"><span class="off">.</span><span class="on">></span></li>
1429 <li class="symbol"><span class="off">/</span><span class="on">?</span></li>
1430 <li class="right-shift lastitem">shift</li>
1431 <li class="space firstitem lastitem">&nbsp;</li>
1433 <p class="close_button">close</p>
1437 <t t-name="OnscreenKeyboardSimple">
1438 <div class="keyboard_frame">
1439 <ul class="keyboard simple_keyboard">
1440 <li class="symbol firstitem row_qwerty"><span class="off">q</span><span class="on">1</span></li>
1441 <li class="symbol"><span class="off">w</span><span class="on">2</span></li>
1442 <li class="symbol"><span class="off">e</span><span class="on">3</span></li>
1443 <li class="symbol"><span class="off">r</span><span class="on">4</span></li>
1444 <li class="symbol"><span class="off">t</span><span class="on">5</span></li>
1445 <li class="symbol"><span class="off">y</span><span class="on">6</span></li>
1446 <li class="symbol"><span class="off">u</span><span class="on">7</span></li>
1447 <li class="symbol"><span class="off">i</span><span class="on">8</span></li>
1448 <li class="symbol"><span class="off">o</span><span class="on">9</span></li>
1449 <li class="symbol lastitem"><span class="off">p</span><span class="on">0</span></li>
1451 <li class="symbol firstitem row_asdf"><span class="off">a</span><span class="on">@</span></li>
1452 <li class="symbol"><span class="off">s</span><span class="on">#</span></li>
1453 <li class="symbol"><span class="off">d</span><span class="on">%</span></li>
1454 <li class="symbol"><span class="off">f</span><span class="on">*</span></li>
1455 <li class="symbol"><span class="off">g</span><span class="on">/</span></li>
1456 <li class="symbol"><span class="off">h</span><span class="on">-</span></li>
1457 <li class="symbol"><span class="off">j</span><span class="on">+</span></li>
1458 <li class="symbol"><span class="off">k</span><span class="on">(</span></li>
1459 <li class="symbol lastitem"><span class="off">l</span><span class="on">)</span></li>
1461 <li class="symbol firstitem row_zxcv"><span class="off">z</span><span class="on">?</span></li>
1462 <li class="symbol"><span class="off">x</span><span class="on">!</span></li>
1463 <li class="symbol"><span class="off">c</span><span class="on">"</span></li>
1464 <li class="symbol"><span class="off">v</span><span class="on">'</span></li>
1465 <li class="symbol"><span class="off">b</span><span class="on">:</span></li>
1466 <li class="symbol"><span class="off">n</span><span class="on">;</span></li>
1467 <li class="symbol"><span class="off">m</span><span class="on">,</span></li>
1468 <li class="delete lastitem">delete</li>
1470 <li class="numlock firstitem row_space"><span class="off">123</span><span class="on">ABC</span></li>
1471 <li class="space">&nbsp;</li>
1472 <li class="symbol"><span class="off">.</span><span class="on">.</span></li>
1473 <li class="return lastitem">return</li>
1475 <p class="close_button">close</p>