Browse Source

Merge pull request #437 from legalsylvain/12.0-mig-pos_customer_display

[MIG][12.0] mig pos_customer_display
pull/496/head
Alexis de Lattre 4 years ago
committed by GitHub
parent
commit
0bb73a5924
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 8
      pos_customer_display/README.rst
  2. 1
      pos_customer_display/__init__.py
  3. 19
      pos_customer_display/__manifest__.py
  4. 9
      pos_customer_display/demo/pos_config.xml
  5. 157
      pos_customer_display/i18n/de.po
  6. 168
      pos_customer_display/i18n/es.po
  7. 175
      pos_customer_display/i18n/fr.po
  8. 159
      pos_customer_display/i18n/hr_HR.po
  9. 157
      pos_customer_display/i18n/it.po
  10. 157
      pos_customer_display/i18n/nl.po
  11. 158
      pos_customer_display/i18n/nl_NL.po
  12. 173
      pos_customer_display/i18n/pos_customer_display.pot
  13. 1
      pos_customer_display/models/__init__.py
  14. 102
      pos_customer_display/models/pos_config.py
  15. 8
      pos_customer_display/readme/CONFIGURE.rst
  16. 5
      pos_customer_display/readme/CONTRIBUTORS.rst
  17. 10
      pos_customer_display/readme/DESCRIPTION.rst
  18. 7
      pos_customer_display/readme/INSTALL.rst
  19. 1
      pos_customer_display/readme/ROADMAP.rst
  20. 9
      pos_customer_display/readme/USAGE.rst
  21. BIN
      pos_customer_display/static/description/icon.png
  22. 111
      pos_customer_display/static/src/js/customer_display_2_20.js
  23. 88
      pos_customer_display/static/src/js/devices.js
  24. 24
      pos_customer_display/static/src/js/gui.js
  25. 128
      pos_customer_display/static/src/js/models.js
  26. 51
      pos_customer_display/static/src/js/screens.js
  27. 14
      pos_customer_display/views/assets.xml
  28. 46
      pos_customer_display/views/view_pos_config.xml

8
pos_customer_display/README.rst

@ -0,0 +1,8 @@
====================================
Point of Sale - LCD Customer Display
====================================
.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

1
pos_customer_display/__init__.py

@ -0,0 +1 @@
from . import models

19
pos_customer_display/__manifest__.py

@ -0,0 +1,19 @@
# © 2014-2016 Aurélien DUMAINE
# © 2014-2016 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "Point of Sale - LED Customer Display",
"version": "12.0.1.0.0",
"category": "Point Of Sale",
"summary": "Manage LED Customer Display device from POS front end",
"author": "Aurélien DUMAINE,GRAP,Akretion,Odoo Community Association (OCA)",
"license": "AGPL-3",
"depends": ["point_of_sale"],
"data": [
"views/assets.xml",
"views/view_pos_config.xml",
],
"demo": ["demo/pos_config.xml"],
"installable": True,
}

9
pos_customer_display/demo/pos_config.xml

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo noupdate="1">
<record id="point_of_sale.pos_config_main" model="pos.config">
<field name="iface_customer_display" eval="True"/>
</record>
</odoo>

157
pos_customer_display/i18n/de.po

@ -0,0 +1,157 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * pos_customer_display
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-25 02:39+0000\n"
"PO-Revision-Date: 2017-04-25 02:39+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: pos_customer_display
#: model:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "Bottom Line"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config_customer_display_msg_next_l2
msgid ""
"Bottom line of the message on the customer display which is displayed after "
"starting POS and also after validation of an order"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config_customer_display_msg_closed_l2
msgid ""
"Bottom line of the message on the customer display which is displayed when "
"POS is closed"
msgstr ""
#. module: pos_customer_display
#. openerp-web
#: code:addons/pos_customer_display/static/src/js/customer_display.js:74
#, python-format
msgid "Cancel Payment"
msgstr "Zahlung stornieren"
#. module: pos_customer_display
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config_iface_customer_display
#: model:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "Customer Display"
msgstr ""
#. module: pos_customer_display
#. openerp-web
#: code:addons/pos_customer_display/static/src/js/customer_display.js:59
#, python-format
msgid "Delete Item"
msgstr "Artikel loeschen"
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config_iface_customer_display
msgid "Display data on the customer display"
msgstr "Daten auf dem Kunden-Display anzeigen"
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config_customer_display_line_length
msgid "Length of the LEDs lines of the customer display"
msgstr "Länge der LED-Zeilen auf dem Kunden-Display"
#. module: pos_customer_display
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config_customer_display_line_length
msgid "Line Length of the Customer Display"
msgstr ""
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_customer_display.py:46
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config_customer_display_msg_next_l2
#, python-format
msgid "Next Customer (bottom line)"
msgstr ""
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_customer_display.py:44
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config_customer_display_msg_next_l1
#, python-format
msgid "Next Customer (top line)"
msgstr ""
#. module: pos_customer_display
#: model:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "Next Customer Message"
msgstr ""
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_customer_display.py:50
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config_customer_display_msg_closed_l2
#, python-format
msgid "POS Closed (bottom line)"
msgstr ""
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_customer_display.py:48
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config_customer_display_msg_closed_l1
#, python-format
msgid "POS Closed (top line)"
msgstr ""
#. module: pos_customer_display
#: model:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "POS Closed Message"
msgstr ""
#. module: pos_customer_display
#. openerp-web
#: code:addons/pos_customer_display/static/src/js/customer_display.js:66
#, python-format
msgid "TOTAL: "
msgstr "SUMME: "
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_customer_display.py:55
#, python-format
msgid ""
"The message for customer display '%s' is too long: it has %d chars whereas "
"the maximum is %d chars."
msgstr ""
#. module: pos_customer_display
#: model:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "Top Line"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config_customer_display_msg_next_l1
msgid ""
"Top line of the message on the customer display which is displayed after "
"starting POS and also after validation of an order"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config_customer_display_msg_closed_l1
msgid ""
"Top line of the message on the customer display which is displayed when POS "
"is closed"
msgstr ""
#. module: pos_customer_display
#. openerp-web
#: code:addons/pos_customer_display/static/src/js/customer_display.js:81
#, python-format
msgid "Your Change:"
msgstr "Rueckgeld:"
#. module: pos_customer_display
#: model:ir.model,name:pos_customer_display.model_pos_config
msgid "pos.config"
msgstr ""

168
pos_customer_display/i18n/es.po

@ -0,0 +1,168 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * pos_customer_display
#
# Translators:
# enjolras <yo@miguelrevilla.com>, 2017
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-03-01 02:01+0000\n"
"PO-Revision-Date: 2018-03-01 02:01+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: pos_customer_display
#: model:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "Bottom Line"
msgstr "Línea inferior"
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config_customer_display_msg_next_l2
msgid ""
"Bottom line of the message on the customer display which is displayed after "
"starting POS and also after validation of an order"
msgstr ""
"Línea inferior del mensaje en la pantalla del cliente que se mostrará "
"después de iniciar el TPV y también después de la validación de una venta"
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config_customer_display_msg_closed_l2
msgid ""
"Bottom line of the message on the customer display which is displayed when "
"POS is closed"
msgstr ""
"Línea inferior del mensaje en la pantalla del cliente que se mostrará cuando "
"se cierre el TPV"
#. module: pos_customer_display
#. openerp-web
#: code:addons/pos_customer_display/static/src/js/customer_display.js:74
#, python-format
msgid "Cancel Payment"
msgstr "Cancelar pago"
#. module: pos_customer_display
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config_iface_customer_display
#: model:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "Customer Display"
msgstr "Pantalla del cliente"
#. module: pos_customer_display
#. openerp-web
#: code:addons/pos_customer_display/static/src/js/customer_display.js:59
#, python-format
msgid "Delete Item"
msgstr "Eliminar elemento"
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config_iface_customer_display
msgid "Display data on the customer display"
msgstr "Mostrar información en la pantalla del cliente"
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config_customer_display_line_length
msgid "Length of the LEDs lines of the customer display"
msgstr "Longitud de las líneas LED en la pantalla del cliente"
#. module: pos_customer_display
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config_customer_display_line_length
msgid "Line Length of the Customer Display"
msgstr "Longitud de la línea en la pantalla del cliente"
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_customer_display.py:46
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config_customer_display_msg_next_l2
#, python-format
msgid "Next Customer (bottom line)"
msgstr "Cliente siguiente (línea inferior)"
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_customer_display.py:44
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config_customer_display_msg_next_l1
#, python-format
msgid "Next Customer (top line)"
msgstr "Cliente siguiente (línea superior)"
#. module: pos_customer_display
#: model:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "Next Customer Message"
msgstr "Mensaje del cliente siguiente"
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_customer_display.py:50
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config_customer_display_msg_closed_l2
#, python-format
msgid "POS Closed (bottom line)"
msgstr "TPV cerrado (línea inferior)"
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_customer_display.py:48
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config_customer_display_msg_closed_l1
#, python-format
msgid "POS Closed (top line)"
msgstr "TPV cerrado (línea superior)"
#. module: pos_customer_display
#: model:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "POS Closed Message"
msgstr "Mensaje de TPV cerrado"
#. module: pos_customer_display
#. openerp-web
#: code:addons/pos_customer_display/static/src/js/customer_display.js:66
#, python-format
msgid "TOTAL: "
msgstr "TOTAL: "
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_customer_display.py:55
#, python-format
msgid ""
"The message for customer display '%s' is too long: it has %d chars whereas "
"the maximum is %d chars."
msgstr ""
"El mensaje para la pantalla del cliente '%s' es demasiado largo: tiene %d "
"caracteres, siendo el máximo de %d."
#. module: pos_customer_display
#: model:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "Top Line"
msgstr "Línea superior"
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config_customer_display_msg_next_l1
msgid ""
"Top line of the message on the customer display which is displayed after "
"starting POS and also after validation of an order"
msgstr ""
"Línea superior del mensaje en la pantalla del cliente que se mostrará "
"después de iniciar el TPV y también después de la validación de una venta"
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config_customer_display_msg_closed_l1
msgid ""
"Top line of the message on the customer display which is displayed when POS "
"is closed"
msgstr ""
"Línea superior del mensaje en la pantalla del cliente que se mostrará cuando "
"se cierre el TPV"
#. module: pos_customer_display
#. openerp-web
#: code:addons/pos_customer_display/static/src/js/customer_display.js:81
#, python-format
msgid "Your Change:"
msgstr "Cambio: "
#. module: pos_customer_display
#: model:ir.model,name:pos_customer_display.model_pos_config
msgid "pos.config"
msgstr "pos.config"

175
pos_customer_display/i18n/fr.po

@ -0,0 +1,175 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * pos_customer_display
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-01-11 23:50+0000\n"
"PO-Revision-Date: 2020-01-11 23:50+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: pos_customer_display
#: selection:pos.config,customer_display_format:0
msgid "2 Lines of 20 Characters"
msgstr ""
#. module: pos_customer_display
#. openerp-web
#: code:addons/pos_customer_display/static/src/js/customer_display_2_20.js:94
#, python-format
msgid "Customer Account"
msgstr "Compte client"
#. module: pos_customer_display
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config__customer_display_format
#: model_terms:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "Customer Display Format"
msgstr "Format de l'afficheur client"
#. module: pos_customer_display
#. openerp-web
#: code:addons/pos_customer_display/static/src/js/customer_display_2_20.js:61
#, python-format
msgid "Deleting Line ..."
msgstr "Suppression ligne"
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config__iface_customer_display
msgid "Display data on the customer display"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config__customer_display_msg_next_l1
msgid "First line of the message on the customer display which is displayed after starting POS and also after validation of an order"
msgstr "Première ligne du message de l'afficheur client qui est affiché après le "
"démarrage de la caisse et également après validation d'une commande client"
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config__customer_display_msg_closed_l1
msgid "First line of the message on the customer display which is displayed when POS is closed"
msgstr "Première ligne du message de l'afficheur client qui est affiché quand la "
"caisse est fermée"
#. module: pos_customer_display
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config__iface_customer_display
#: model_terms:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "LED Customer Display"
msgstr "Afficheur client LED"
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config__customer_display_line_length
msgid "Length of the LEDs lines of the customer display"
msgstr "Longueur des lignes de l'afficheur client (nombre de caractères)"
#. module: pos_customer_display
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config__customer_display_line_length
#: model_terms:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "Line Length"
msgstr "Longueur des lignes"
#. module: pos_customer_display
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config__customer_display_msg_next_l1
#: model_terms:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "Next Customer (Line 1)"
msgstr "Client suivant (ligne 1)"
#. module: pos_customer_display
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config__customer_display_msg_next_l2
#: model_terms:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "Next Customer (Line 2)"
msgstr "Client suivant (ligne 2)"
#. module: pos_customer_display
#. openerp-web
#: code:addons/pos_customer_display/static/src/js/customer_display_2_20.js:99
#, python-format
msgid "No Customer Account"
msgstr "Client non défini"
#. module: pos_customer_display
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config__customer_display_msg_closed_l1
#: model_terms:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "PoS Closed (Line 1)"
msgstr "Caisse fermée (Ligne 1)"
#. module: pos_customer_display
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config__customer_display_msg_closed_l2
#: model_terms:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "PoS Closed (Line 2)"
msgstr "Caisse fermée (Ligne 2)"
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_config.py:64
#, python-format
msgid "Point of Sale Closed"
msgstr "Caisse fermée"
#. module: pos_customer_display
#: model:ir.model,name:pos_customer_display.model_pos_config
msgid "Point of Sale Configuration"
msgstr "Paramétrage du point de vente"
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_config.py:60
#, python-format
msgid "Point of Sale Open"
msgstr "Caisse ouverte"
#. module: pos_customer_display
#. openerp-web
#: code:addons/pos_customer_display/static/src/js/customer_display_2_20.js:81
#, python-format
msgid "Returned: "
msgstr "A rendre : "
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config__customer_display_msg_next_l2
msgid "Second line of the message on the customer display which is displayed after starting POS and also after validation of an order"
msgstr "Deuxième ligne du message de l'afficheur client qui est affiché après le "
"démarrage de la caisse et également après validation d'une commande client"
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config__customer_display_msg_closed_l2
msgid "Second line of the message on the customer display which is displayed when POS is closed"
msgstr "Deuxième ligne du message de l'afficheur client qui est affiché quand la "
"caisse est fermée"
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_config.py:66
#, python-format
msgid "See you soon!"
msgstr "Au revoir !"
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_config.py:93
#, python-format
msgid "The message for customer display '%s' is too long: it has %d chars whereas the maximum is %d chars."
msgstr "Le message de l'afficheur client '%s' est trop long : il contient %d "
"caractères alors que le maximum est de %d caractères."
#. module: pos_customer_display
#. openerp-web
#: code:addons/pos_customer_display/static/src/js/customer_display_2_20.js:79
#, python-format
msgid "To Pay: "
msgstr "A payer : "
#. module: pos_customer_display
#. openerp-web
#: code:addons/pos_customer_display/static/src/js/customer_display_2_20.js:86
#, python-format
msgid "Total"
msgstr "Total"
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_config.py:62
#, python-format
msgid "Welcome!"
msgstr "Bienvenue !"

159
pos_customer_display/i18n/hr_HR.po

@ -0,0 +1,159 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * pos_customer_display
#
# Translators:
# Bole <bole@dajmi5.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-25 02:39+0000\n"
"PO-Revision-Date: 2017-04-25 02:39+0000\n"
"Last-Translator: Bole <bole@dajmi5.com>, 2017\n"
"Language-Team: Croatian (Croatia) (https://www.transifex.com/oca/teams/23907/"
"hr_HR/)\n"
"Language: hr_HR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
#. module: pos_customer_display
#: model:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "Bottom Line"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config_customer_display_msg_next_l2
msgid ""
"Bottom line of the message on the customer display which is displayed after "
"starting POS and also after validation of an order"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config_customer_display_msg_closed_l2
msgid ""
"Bottom line of the message on the customer display which is displayed when "
"POS is closed"
msgstr ""
#. module: pos_customer_display
#. openerp-web
#: code:addons/pos_customer_display/static/src/js/customer_display.js:74
#, python-format
msgid "Cancel Payment"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config_iface_customer_display
#: model:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "Customer Display"
msgstr ""
#. module: pos_customer_display
#. openerp-web
#: code:addons/pos_customer_display/static/src/js/customer_display.js:59
#, python-format
msgid "Delete Item"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config_iface_customer_display
msgid "Display data on the customer display"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config_customer_display_line_length
msgid "Length of the LEDs lines of the customer display"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config_customer_display_line_length
msgid "Line Length of the Customer Display"
msgstr ""
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_customer_display.py:46
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config_customer_display_msg_next_l2
#, python-format
msgid "Next Customer (bottom line)"
msgstr ""
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_customer_display.py:44
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config_customer_display_msg_next_l1
#, python-format
msgid "Next Customer (top line)"
msgstr ""
#. module: pos_customer_display
#: model:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "Next Customer Message"
msgstr ""
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_customer_display.py:50
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config_customer_display_msg_closed_l2
#, python-format
msgid "POS Closed (bottom line)"
msgstr ""
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_customer_display.py:48
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config_customer_display_msg_closed_l1
#, python-format
msgid "POS Closed (top line)"
msgstr ""
#. module: pos_customer_display
#: model:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "POS Closed Message"
msgstr ""
#. module: pos_customer_display
#. openerp-web
#: code:addons/pos_customer_display/static/src/js/customer_display.js:66
#, python-format
msgid "TOTAL: "
msgstr ""
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_customer_display.py:55
#, python-format
msgid ""
"The message for customer display '%s' is too long: it has %d chars whereas "
"the maximum is %d chars."
msgstr ""
#. module: pos_customer_display
#: model:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "Top Line"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config_customer_display_msg_next_l1
msgid ""
"Top line of the message on the customer display which is displayed after "
"starting POS and also after validation of an order"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config_customer_display_msg_closed_l1
msgid ""
"Top line of the message on the customer display which is displayed when POS "
"is closed"
msgstr ""
#. module: pos_customer_display
#. openerp-web
#: code:addons/pos_customer_display/static/src/js/customer_display.js:81
#, python-format
msgid "Your Change:"
msgstr ""
#. module: pos_customer_display
#: model:ir.model,name:pos_customer_display.model_pos_config
msgid "pos.config"
msgstr "pos.config"

157
pos_customer_display/i18n/it.po

@ -0,0 +1,157 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * pos_customer_display
#
# Translators:
# Francesco Fresta <franco.fresta@gmail.com>, 2018
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-03-01 02:01+0000\n"
"PO-Revision-Date: 2018-03-01 02:01+0000\n"
"Last-Translator: Francesco Fresta <franco.fresta@gmail.com>, 2018\n"
"Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: pos_customer_display
#: model:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "Bottom Line"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config_customer_display_msg_next_l2
msgid ""
"Bottom line of the message on the customer display which is displayed after "
"starting POS and also after validation of an order"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config_customer_display_msg_closed_l2
msgid ""
"Bottom line of the message on the customer display which is displayed when "
"POS is closed"
msgstr ""
#. module: pos_customer_display
#. openerp-web
#: code:addons/pos_customer_display/static/src/js/customer_display.js:74
#, python-format
msgid "Cancel Payment"
msgstr "Cancella pagamento"
#. module: pos_customer_display
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config_iface_customer_display
#: model:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "Customer Display"
msgstr ""
#. module: pos_customer_display
#. openerp-web
#: code:addons/pos_customer_display/static/src/js/customer_display.js:59
#, python-format
msgid "Delete Item"
msgstr "Elimina articolo"
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config_iface_customer_display
msgid "Display data on the customer display"
msgstr "Mostra la data sullo schermo del cliente"
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config_customer_display_line_length
msgid "Length of the LEDs lines of the customer display"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config_customer_display_line_length
msgid "Line Length of the Customer Display"
msgstr ""
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_customer_display.py:46
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config_customer_display_msg_next_l2
#, python-format
msgid "Next Customer (bottom line)"
msgstr ""
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_customer_display.py:44
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config_customer_display_msg_next_l1
#, python-format
msgid "Next Customer (top line)"
msgstr ""
#. module: pos_customer_display
#: model:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "Next Customer Message"
msgstr ""
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_customer_display.py:50
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config_customer_display_msg_closed_l2
#, python-format
msgid "POS Closed (bottom line)"
msgstr ""
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_customer_display.py:48
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config_customer_display_msg_closed_l1
#, python-format
msgid "POS Closed (top line)"
msgstr ""
#. module: pos_customer_display
#: model:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "POS Closed Message"
msgstr ""
#. module: pos_customer_display
#. openerp-web
#: code:addons/pos_customer_display/static/src/js/customer_display.js:66
#, python-format
msgid "TOTAL: "
msgstr "TOTALE:"
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_customer_display.py:55
#, python-format
msgid ""
"The message for customer display '%s' is too long: it has %d chars whereas "
"the maximum is %d chars."
msgstr ""
#. module: pos_customer_display
#: model:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "Top Line"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config_customer_display_msg_next_l1
msgid ""
"Top line of the message on the customer display which is displayed after "
"starting POS and also after validation of an order"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config_customer_display_msg_closed_l1
msgid ""
"Top line of the message on the customer display which is displayed when POS "
"is closed"
msgstr ""
#. module: pos_customer_display
#. openerp-web
#: code:addons/pos_customer_display/static/src/js/customer_display.js:81
#, python-format
msgid "Your Change:"
msgstr "Resto: "
#. module: pos_customer_display
#: model:ir.model,name:pos_customer_display.model_pos_config
msgid "pos.config"
msgstr "pos.config"

157
pos_customer_display/i18n/nl.po

@ -0,0 +1,157 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * pos_customer_display
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-25 02:39+0000\n"
"PO-Revision-Date: 2017-04-25 02:39+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Dutch (https://www.transifex.com/oca/teams/23907/nl/)\n"
"Language: nl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: pos_customer_display
#: model:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "Bottom Line"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config_customer_display_msg_next_l2
msgid ""
"Bottom line of the message on the customer display which is displayed after "
"starting POS and also after validation of an order"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config_customer_display_msg_closed_l2
msgid ""
"Bottom line of the message on the customer display which is displayed when "
"POS is closed"
msgstr ""
#. module: pos_customer_display
#. openerp-web
#: code:addons/pos_customer_display/static/src/js/customer_display.js:74
#, python-format
msgid "Cancel Payment"
msgstr "Annuleren Betaling"
#. module: pos_customer_display
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config_iface_customer_display
#: model:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "Customer Display"
msgstr ""
#. module: pos_customer_display
#. openerp-web
#: code:addons/pos_customer_display/static/src/js/customer_display.js:59
#, python-format
msgid "Delete Item"
msgstr "Verwijderen Item"
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config_iface_customer_display
msgid "Display data on the customer display"
msgstr "Weergeven gegevens op het klant scherm"
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config_customer_display_line_length
msgid "Length of the LEDs lines of the customer display"
msgstr "Lengte van de LED lijnen van het klant scherm"
#. module: pos_customer_display
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config_customer_display_line_length
msgid "Line Length of the Customer Display"
msgstr ""
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_customer_display.py:46
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config_customer_display_msg_next_l2
#, python-format
msgid "Next Customer (bottom line)"
msgstr ""
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_customer_display.py:44
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config_customer_display_msg_next_l1
#, python-format
msgid "Next Customer (top line)"
msgstr ""
#. module: pos_customer_display
#: model:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "Next Customer Message"
msgstr ""
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_customer_display.py:50
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config_customer_display_msg_closed_l2
#, python-format
msgid "POS Closed (bottom line)"
msgstr ""
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_customer_display.py:48
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config_customer_display_msg_closed_l1
#, python-format
msgid "POS Closed (top line)"
msgstr ""
#. module: pos_customer_display
#: model:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "POS Closed Message"
msgstr ""
#. module: pos_customer_display
#. openerp-web
#: code:addons/pos_customer_display/static/src/js/customer_display.js:66
#, python-format
msgid "TOTAL: "
msgstr "TOTAAL:"
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_customer_display.py:55
#, python-format
msgid ""
"The message for customer display '%s' is too long: it has %d chars whereas "
"the maximum is %d chars."
msgstr ""
#. module: pos_customer_display
#: model:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "Top Line"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config_customer_display_msg_next_l1
msgid ""
"Top line of the message on the customer display which is displayed after "
"starting POS and also after validation of an order"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config_customer_display_msg_closed_l1
msgid ""
"Top line of the message on the customer display which is displayed when POS "
"is closed"
msgstr ""
#. module: pos_customer_display
#. openerp-web
#: code:addons/pos_customer_display/static/src/js/customer_display.js:81
#, python-format
msgid "Your Change:"
msgstr "Wisselgeld:"
#. module: pos_customer_display
#: model:ir.model,name:pos_customer_display.model_pos_config
msgid "pos.config"
msgstr ""

158
pos_customer_display/i18n/nl_NL.po

@ -0,0 +1,158 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * pos_customer_display
#
# Translators:
# Peter Hageman <hageman.p@gmail.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-05-30 02:44+0000\n"
"PO-Revision-Date: 2017-05-30 02:44+0000\n"
"Last-Translator: Peter Hageman <hageman.p@gmail.com>, 2017\n"
"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/"
"teams/23907/nl_NL/)\n"
"Language: nl_NL\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: pos_customer_display
#: model:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "Bottom Line"
msgstr "Onderste regel"
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config_customer_display_msg_next_l2
msgid ""
"Bottom line of the message on the customer display which is displayed after "
"starting POS and also after validation of an order"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config_customer_display_msg_closed_l2
msgid ""
"Bottom line of the message on the customer display which is displayed when "
"POS is closed"
msgstr ""
#. module: pos_customer_display
#. openerp-web
#: code:addons/pos_customer_display/static/src/js/customer_display.js:74
#, python-format
msgid "Cancel Payment"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config_iface_customer_display
#: model:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "Customer Display"
msgstr ""
#. module: pos_customer_display
#. openerp-web
#: code:addons/pos_customer_display/static/src/js/customer_display.js:59
#, python-format
msgid "Delete Item"
msgstr "Verwijder Item"
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config_iface_customer_display
msgid "Display data on the customer display"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config_customer_display_line_length
msgid "Length of the LEDs lines of the customer display"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config_customer_display_line_length
msgid "Line Length of the Customer Display"
msgstr ""
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_customer_display.py:46
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config_customer_display_msg_next_l2
#, python-format
msgid "Next Customer (bottom line)"
msgstr "Volgende Klant (onderste regel)"
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_customer_display.py:44
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config_customer_display_msg_next_l1
#, python-format
msgid "Next Customer (top line)"
msgstr "Volgende Klant (bovenste regel)"
#. module: pos_customer_display
#: model:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "Next Customer Message"
msgstr "Volgende klant bericht"
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_customer_display.py:50
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config_customer_display_msg_closed_l2
#, python-format
msgid "POS Closed (bottom line)"
msgstr "Kassa gesloten (onderste regel)"
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_customer_display.py:48
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config_customer_display_msg_closed_l1
#, python-format
msgid "POS Closed (top line)"
msgstr "Kassa Gesloten (bovenste regel)"
#. module: pos_customer_display
#: model:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "POS Closed Message"
msgstr "Kassa Gesloten Bericht"
#. module: pos_customer_display
#. openerp-web
#: code:addons/pos_customer_display/static/src/js/customer_display.js:66
#, python-format
msgid "TOTAL: "
msgstr "Totaal:"
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_customer_display.py:55
#, python-format
msgid ""
"The message for customer display '%s' is too long: it has %d chars whereas "
"the maximum is %d chars."
msgstr ""
#. module: pos_customer_display
#: model:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "Top Line"
msgstr "Bovenste regel"
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config_customer_display_msg_next_l1
msgid ""
"Top line of the message on the customer display which is displayed after "
"starting POS and also after validation of an order"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config_customer_display_msg_closed_l1
msgid ""
"Top line of the message on the customer display which is displayed when POS "
"is closed"
msgstr ""
#. module: pos_customer_display
#. openerp-web
#: code:addons/pos_customer_display/static/src/js/customer_display.js:81
#, python-format
msgid "Your Change:"
msgstr ""
#. module: pos_customer_display
#: model:ir.model,name:pos_customer_display.model_pos_config
msgid "pos.config"
msgstr "pos.config"

173
pos_customer_display/i18n/pos_customer_display.pot

@ -0,0 +1,173 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * pos_customer_display
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-01-11 23:37+0000\n"
"PO-Revision-Date: 2020-01-11 23:37+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: pos_customer_display
#: selection:pos.config,customer_display_format:0
msgid "2 Lines of 20 Characters"
msgstr ""
#. module: pos_customer_display
#. openerp-web
#: code:addons/pos_customer_display/static/src/js/customer_display_2_20.js:94
#, python-format
msgid "Customer Account"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config__customer_display_format
msgid "Customer Display Format"
msgstr ""
#. module: pos_customer_display
#. openerp-web
#: code:addons/pos_customer_display/static/src/js/customer_display_2_20.js:61
#, python-format
msgid "Deleting Line ..."
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config__iface_customer_display
msgid "Display data on the customer display"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config__customer_display_msg_next_l1
msgid "First line of the message on the customer display which is displayed after starting POS and also after validation of an order"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config__customer_display_msg_closed_l1
msgid "First line of the message on the customer display which is displayed when POS is closed"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config__iface_customer_display
#: model_terms:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "LED Customer Display"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config__customer_display_line_length
msgid "Length of the LEDs lines of the customer display"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config__customer_display_line_length
#: model_terms:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "Line Length"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config__customer_display_msg_next_l1
#: model_terms:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "Next Customer (Line 1)"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config__customer_display_msg_next_l2
#: model_terms:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "Next Customer (Line 2)"
msgstr ""
#. module: pos_customer_display
#. openerp-web
#: code:addons/pos_customer_display/static/src/js/customer_display_2_20.js:99
#, python-format
msgid "No Customer Account"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config__customer_display_msg_closed_l1
#: model_terms:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "PoS Closed (Line 1)"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,field_description:pos_customer_display.field_pos_config__customer_display_msg_closed_l2
msgid "PoS Closed (Line 2)"
msgstr ""
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_config.py:64
#, python-format
msgid "Point of Sale Closed"
msgstr ""
#. module: pos_customer_display
#: model:ir.model,name:pos_customer_display.model_pos_config
msgid "Point of Sale Configuration"
msgstr ""
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_config.py:60
#, python-format
msgid "Point of Sale Open"
msgstr ""
#. module: pos_customer_display
#: model_terms:ir.ui.view,arch_db:pos_customer_display.view_pos_config_form
msgid "Pos Closed (Line 2)"
msgstr ""
#. module: pos_customer_display
#. openerp-web
#: code:addons/pos_customer_display/static/src/js/customer_display_2_20.js:81
#, python-format
msgid "Returned: "
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config__customer_display_msg_next_l2
msgid "Second line of the message on the customer display which is displayed after starting POS and also after validation of an order"
msgstr ""
#. module: pos_customer_display
#: model:ir.model.fields,help:pos_customer_display.field_pos_config__customer_display_msg_closed_l2
msgid "Second line of the message on the customer display which is displayed when POS is closed"
msgstr ""
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_config.py:66
#, python-format
msgid "See you soon!"
msgstr ""
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_config.py:93
#, python-format
msgid "The message for customer display '%s' is too long: it has %d chars whereas the maximum is %d chars."
msgstr ""
#. module: pos_customer_display
#. openerp-web
#: code:addons/pos_customer_display/static/src/js/customer_display_2_20.js:79
#, python-format
msgid "To Pay: "
msgstr ""
#. module: pos_customer_display
#. openerp-web
#: code:addons/pos_customer_display/static/src/js/customer_display_2_20.js:86
#, python-format
msgid "Total"
msgstr ""
#. module: pos_customer_display
#: code:addons/pos_customer_display/models/pos_config.py:62
#, python-format
msgid "Welcome!"
msgstr ""

1
pos_customer_display/models/__init__.py

@ -0,0 +1 @@
from . import pos_config

102
pos_customer_display/models/pos_config.py

@ -0,0 +1,102 @@
# © 2014-2016 Aurélien DUMAINE
# © 2015-2016 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import _, api, fields, models
from odoo.exceptions import ValidationError
class PosConfig(models.Model):
_inherit = "pos.config"
_CUSTOMER_DISPLAY_FORMAT_SELECTION = [
("2_20", "2 Lines of 20 Characters"),
]
iface_customer_display = fields.Boolean(
string="LED Customer Display",
help="Display data on the customer display"
)
customer_display_format = fields.Selection(
selection=_CUSTOMER_DISPLAY_FORMAT_SELECTION,
string="Customer Display Format",
default="2_20", required=True)
customer_display_line_length = fields.Integer(
string="Line Length",
compute="_compute_customer_display_line_length",
store=True,
help="Length of the LEDs lines of the customer display",
)
customer_display_msg_next_l1 = fields.Char(
string="Next Customer (Line 1)",
default=lambda x: x._default_customer_display_msg("next_l1"),
help="First line of the message on the customer display which is "
"displayed after starting POS and also after validation of an order",
)
customer_display_msg_next_l2 = fields.Char(
string="Next Customer (Line 2)",
default=lambda x: x._default_customer_display_msg("next_l2"),
help="Second line of the message on the customer display which is "
"displayed after starting POS and also after validation of an order",
)
customer_display_msg_closed_l1 = fields.Char(
string="PoS Closed (Line 1)",
default=lambda x: x._default_customer_display_msg("closed_l1"),
help="First line of the message on the customer display which "
"is displayed when POS is closed",
)
customer_display_msg_closed_l2 = fields.Char(
string="PoS Closed (Line 2)",
default=lambda x: x._default_customer_display_msg("closed_l1"),
help="Second line of the message on the customer display which "
"is displayed when POS is closed",
)
@api.model
def _default_customer_display_msg(self, line):
if line == "next_l1":
return _("Point of Sale Open")
elif line == "next_l2":
return _("Welcome!")
elif line == "closed_l1":
return _("Point of Sale Closed")
elif line == "closed_l2":
return _("See you soon!")
@api.depends("customer_display_format")
def _compute_customer_display_line_length(self):
for config in self:
config.customer_display_line_length = int(
config.customer_display_format.split("_")[1])
@api.constrains(
"iface_customer_display",
"customer_display_format",
"customer_display_msg_next_l1",
"customer_display_msg_next_l2",
"customer_display_msg_closed_l1",
"customer_display_msg_closed_l2",
)
def _check_customer_display_length(self):
for config in self.filtered(lambda x: x.customer_display_line_length):
maxsize = config.customer_display_line_length
fields_to_check = [
x for x in self._fields.keys()
if 'customer_display_msg_' in x
]
for field_name in fields_to_check:
value = getattr(config, field_name)
if value and len(value) > maxsize:
raise ValidationError(
_(
"The message for customer display '%s' is too "
"long: it has %d chars whereas the maximum "
"is %d chars."
)
% (
self._fields[field_name].string,
len(value),
maxsize)
)

8
pos_customer_display/readme/CONFIGURE.rst

@ -0,0 +1,8 @@
To configure this module,
* go to the menu Point of Sale > Configuration > Point of Sale
* edit the point of sale for which you want to enable the LED:
* In the IotBox section, activate the option *LED Customer Display*,
* configure the format of your LED screen. (2 lines of 20 characters, by default)
* optionaly, you can customize the *Next customer* message and the *POS closed* message

5
pos_customer_display/readme/CONTRIBUTORS.rst

@ -0,0 +1,5 @@
* Aurélien Dumaine
* Alexis de Lattre <alexis.delattre@akretion.com>
* Father Odilon (`Barroux Abbey <http://www.barroux.org/>`_)
* Daniel Kraft
* Sylvain LE GAL ((https://twitter.com/legalsylvain))

10
pos_customer_display/readme/DESCRIPTION.rst

@ -0,0 +1,10 @@
This module adds support for LED Customer Display in the Point of Sale.
It has been tested with
* Bixolon BCD-1100 (http://www.bixolon.com/html/en/product/product_detail.xhtml?prod_id=61),
* Aures OCD 300 (https://www.aures.com/point-de-vente-equipment-solutions-systemes/ecrans-tactiles-afficheurs/ocd-300-350-afficheur-client-graphique)
But it should support most serial and USB-serial LED displays out-of-the-box or with minor adaptations in the source code
* of the module *hw_customer_display* if you use the POSbox,
* or of the Python lib `pyposdisplay <https://github.com/akretion/pyposdisplay>`__ if you use `pywebdriver <https://github.com/akretion/pywebdriver>`__.

7
pos_customer_display/readme/INSTALL.rst

@ -0,0 +1,7 @@
This module is designed to be installed on the *main Odoo server*. On the
*POSbox*, you should install the module *hw_customer_display*. But you will certainly prefer to use `pywebdriver <https://github.com/akretion/pywebdriver>`__ instead of the POSbox. Compared to the POSbox, Pywebdriver has several advantages:
* smaller footprint: no need to have a full-blown Odoo with PostgreSQL on the computer of the cashier (or his small Linux-based PC connected to the hardware, like the RaspberryPi for the POSbox),
* availability of an Ubuntu package, for easier deployment,
* native support for the customer display, payment terminal, etc.
* nice test/diagnosis Web interface.

1
pos_customer_display/readme/ROADMAP.rst

@ -0,0 +1 @@
* Support other format, for exemple, 4 lines of 30 characters, for the Bixolon BDC-2000.

9
pos_customer_display/readme/USAGE.rst

@ -0,0 +1,9 @@
Once everything is configured, just start the POS as usual. You will see messages on the device when:
* you start the POS,
* you add or remove a product,
* you select or deselect a customer,
* you press the Payment button: the device will display the total amount,
* you enter the amount of cash you receive: the device will display the amount of the change to give back,
* you validate an order and go to the next customer,
* you close the POS.

BIN
pos_customer_display/static/description/icon.png

After

Width: 200  |  Height: 200  |  Size: 18 KiB

111
pos_customer_display/static/src/js/customer_display_2_20.js

@ -0,0 +1,111 @@
/*
Copyright (C) 2015-Today GRAP (http://www.grap.coop)
@author: Sylvain LE GAL (https://twitter.com/legalsylvain)
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
*/
odoo.define('pos_customer_display.customer_display_2_20', function (require) {
"use strict";
var core = require('web.core');
var _t = core._t;
var CustomerDisplay_2_20 = function(proxy_device){
this.pos = proxy_device.pos;
this._prepare_line = proxy_device._prepare_line;
this._prepare_message_welcome = function(){
return new Array(
this._prepare_line(this.pos.config.customer_display_msg_next_l1, ""),
this._prepare_line(this.pos.config.customer_display_msg_next_l2, ""),
);
};
this._prepare_message_close = function(){
return new Array(
this._prepare_line(this.pos.config.customer_display_msg_closed_l1, ""),
this._prepare_line(this.pos.config.customer_display_msg_closed_l2, ""),
);
};
this._prepare_message_orderline = function(order_line, action){
var currency_rounding = this.pos.currency.decimals;
var product_name = order_line.product.display_name;
var unit_price_str = order_line.get_unit_price().toFixed(currency_rounding);
var total_amount_str = order_line.get_display_price().toFixed(currency_rounding);
var qty = order_line.get_quantity();
// only display decimals when qty is not an integer
if (qty.toFixed(0) == qty) {
qty = qty.toFixed(0);
}
var discount = order_line.get_discount();
var discount_str = "";
if ([
'add_line',
'update_quantity',
'update_unit_price',
'update_discount',
].indexOf(action) !== -1){
var second_line = String(qty) + " * " + unit_price_str;
if (discount){
discount_str = " -" + String(discount) + "%";
}
return new Array(
this._prepare_line(product_name, discount_str),
this._prepare_line(second_line, total_amount_str),
);
} else if (action === 'delete_line'){
return new Array(
this._prepare_line(_t("Deleting Line ..."), ""),
this._prepare_line(order_line.product.display_name, ""),
);
}
};
this._prepare_message_payment = function(action){
var currency_rounding = this.pos.currency.decimals;
var order = this.pos.get_order()
var total = order.get_total_with_tax().toFixed(currency_rounding);
var total_paid = order.get_total_paid().toFixed(currency_rounding);
var total_change = order.get_due().toFixed(currency_rounding);
var total_to_pay = (total - total_paid).toFixed(currency_rounding);
var remaining_operation_str = "";
if (total_paid != 0) {
if (total_to_pay > 0) {
remaining_operation_str = _t("To Pay: ") + String(total_to_pay);
} else if (total_change < 0) {
remaining_operation_str = _t("Returned: ") + String(- total_change);
}
}
return new Array(
this._prepare_line(_t("Total"), String(total)),
this._prepare_line(remaining_operation_str, ""),
);
};
this._prepare_message_client = function(client){
if ( client ) {
return new Array(
this._prepare_line(_t("Customer Account"), ""),
this._prepare_line(client.name, ""),
);
} else {
return new Array(
this._prepare_line(_t("No Customer Account"), ""),
this._prepare_line("", ""),
);
}
};
};
return {
CustomerDisplay_2_20: CustomerDisplay_2_20,
};
});

88
pos_customer_display/static/src/js/devices.js

@ -0,0 +1,88 @@
/*
Copyright (C) 2015-Today GRAP (http://www.grap.coop)
@author: Sylvain LE GAL (https://twitter.com/legalsylvain)
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
*/
odoo.define('pos_customer_display.devices', function (require) {
"use strict";
var devices = require('point_of_sale.devices');
var customer_display_2_20 = require('pos_customer_display.customer_display_2_20');
var ProxyDeviceSuper = devices.ProxyDevice;
devices.ProxyDevice = devices.ProxyDevice.extend({
init: function(parent, options){
var res = ProxyDeviceSuper.prototype.init.call(this, parent, options);
this.customer_display_proxy = false;
return res;
},
load_customer_display_format_file: function(){
if (this.pos.config.customer_display_format == "2_20") {
this.customer_display_proxy = new customer_display_2_20.CustomerDisplay_2_20(this);
} else {
console.warn("No Javascript file found for the Customer Display format" + this.config.customer_display_format);
}
},
send_text_customer_display: function(data){
if (this.customer_display_proxy) {
return this.message(
'send_text_customer_display',
{'text_to_display' : JSON.stringify(data)}
);
}
},
_prepare_line: function(left_part, right_part){
var line_length = this.pos.config.customer_display_line_length;
var max_left_length = line_length;
if (right_part.length !== 0) {
max_left_length -= right_part.length;
}
var result = left_part.substring(0, max_left_length - 1);
result = result.padEnd(max_left_length);
if (right_part.length !== 0) {
result += right_part.padStart(line_length - result.length);
}
return result;
},
prepare_message_orderline: function(order_line, action){
if (this.customer_display_proxy) {
return this.customer_display_proxy._prepare_message_orderline(order_line, action);
}
},
prepare_message_payment: function(action){
if (this.customer_display_proxy) {
return this.customer_display_proxy._prepare_message_payment(action);
}
},
prepare_message_welcome: function(){
if (this.customer_display_proxy) {
return this.customer_display_proxy._prepare_message_welcome();
}
},
prepare_message_close: function(){
if (this.customer_display_proxy) {
return this.customer_display_proxy._prepare_message_close();
}
},
prepare_message_client: function(client){
if (this.customer_display_proxy) {
return this.customer_display_proxy._prepare_message_client(client);
}
}
});
});

24
pos_customer_display/static/src/js/gui.js

@ -0,0 +1,24 @@
/*
Copyright (C) 2020-Today GRAP (http://www.grap.coop)
@author: Sylvain LE GAL (https://twitter.com/legalsylvain)
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
*/
odoo.define('pos_customer_display.gui', function (require) {
"use strict";
var gui = require('point_of_sale.gui');
gui.Gui.include({
close: function(){
this.pos.proxy.send_text_customer_display(
this.pos.proxy.prepare_message_closed()
);
return this._super();
},
});
});

128
pos_customer_display/static/src/js/models.js

@ -0,0 +1,128 @@
/*
Copyright (C) 2015-Today GRAP (http://www.grap.coop)
@author: Sylvain LE GAL (https://twitter.com/legalsylvain)
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
*/
odoo.define('pos_customer_display.models', function (require) {
"use strict";
var models = require('point_of_sale.models');
var OrderSuper = models.Order;
var OrderlineSuper = models.Orderline;
var PosModelSuper = models.PosModel;
// //////////////////////////////////
// Overload models.PosModel
// //////////////////////////////////
models.PosModel = models.PosModel.extend({
initialize: function(session, attributes) {
var res = PosModelSuper.prototype.initialize.call(this, session, attributes);
// send_message_customer_display is a variable that allow
// to disable the send of the message to the customer display
// This desing is due to the current design of Odoo PoS.
// 1) during the call_of_init_from_JSON, a call to
// add_product and remove_orderline is done.
// 2) during the call of add_product, a call
// to set_price, set_discount, set_quantity is done.
// To avoid multiple useless messages sends.
// it fixed this @via-alexis comment:
// https://github.com/OCA/pos/blob/10.0/pos_customer_display/
// static/src/js/customer_display.js#L198
this.send_message_customer_display = true;
return res;
},
after_load_server_data: function(){
this.proxy.load_customer_display_format_file();
return PosModelSuper.prototype.after_load_server_data.call(this);
},
});
// //////////////////////////////////
// Overload models.Order
// //////////////////////////////////
models.Order = models.Order.extend({
init_from_JSON: function(json) {
this.pos.send_message_customer_display = false;
var res = OrderSuper.prototype.init_from_JSON.call(this, json);
this.pos.send_message_customer_display = true;
return res;
},
add_product: function(product, options){
var send_message = this.pos.send_message_customer_display;
this.pos.send_message_customer_display = false;
var res = OrderSuper.prototype.add_product.call(this, product, options);
if (send_message){
this.pos.proxy.send_text_customer_display(
this.pos.proxy.prepare_message_orderline(
this.get_last_orderline(), 'add_line'));
this.pos.send_message_customer_display = true;
}
return res;
},
});
//////////////////////////////////
// Overload models.Orderline
//////////////////////////////////
models.Orderline = models.Orderline.extend({
set_quantity: function(quantity, keep_price){
var send_message = this.pos.send_message_customer_display;
var message;
this.pos.send_message_customer_display = false;
// In the current Odoo design, set_quantity is call to remove line
// so we prepare the message before because after the call
// of super, the line is delete.
if (send_message){
if (quantity === 'remove') {
message = this.pos.proxy.prepare_message_orderline(this, 'delete_line');
}
}
var res = OrderlineSuper.prototype.set_quantity.call(this, quantity, keep_price);
if (send_message) {
if (quantity !== 'remove'){
message = this.pos.proxy.prepare_message_orderline(this, 'update_quantity');
}
this.pos.send_message_customer_display = true;
this.pos.proxy.send_text_customer_display(message);
}
return res;
},
set_discount: function(discount){
var send_message = this.pos.send_message_customer_display;
this.pos.send_message_customer_display = false;
var res = OrderlineSuper.prototype.set_discount.call(this, discount);
if (send_message) {
this.pos.send_message_customer_display = true;
this.pos.proxy.send_text_customer_display(
this.pos.proxy.prepare_message_orderline(this, 'update_discount'));
}
return res;
},
set_unit_price: function(price){
var send_message = this.pos.send_message_customer_display;
this.pos.send_message_customer_display = false;
var res = OrderlineSuper.prototype.set_unit_price.call(this, price);
if (send_message) {
this.pos.send_message_customer_display = true;
this.pos.proxy.send_text_customer_display(
this.pos.proxy.prepare_message_orderline(this, 'update_unit_price'));
}
return res;
},
});
});

51
pos_customer_display/static/src/js/screens.js

@ -0,0 +1,51 @@
/*
Copyright (C) 2015-Today GRAP (http://www.grap.coop)
@author: Sylvain LE GAL (https://twitter.com/legalsylvain)
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
*/
odoo.define('pos_customer_display.screens', function (require) {
"use strict";
var screens = require('point_of_sale.screens');
screens.PaymentScreenWidget.include({
render_paymentlines: function() {
if (this.pos.get_order().get_total_with_tax() === 0) {
// Render payment is called each time a new order is created
// (and so when lauching the PoS)
// in that case, we display the welcome message
this.pos.proxy.send_text_customer_display(
this.pos.proxy.prepare_message_welcome()
);
} else {
this.pos.proxy.send_text_customer_display(
this.pos.proxy.prepare_message_payment()
);
}
return this._super();
},
});
screens.ClientListScreenWidget.include({
save_changes: function(){
if(this.has_client_changed()){
this.pos.proxy.send_text_customer_display(
this.pos.proxy.prepare_message_client(this.new_client)
);
}
// we disable the send of message, during the call of _super()
// because when selecting customer, all lines are recomputed
// and so a message is sent for each lines
// causing useless flashes
this.pos.send_message_customer_display = false;
var res = this._super();
this.pos.send_message_customer_display = true;
return res;
},
});
});

14
pos_customer_display/views/assets.xml

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="assets" inherit_id="point_of_sale.assets">
<xpath expr="." position="inside">
<script type="text/javascript" src="/pos_customer_display/static/src/js/models.js" />
<script type="text/javascript" src="/pos_customer_display/static/src/js/screens.js" />
<script type="text/javascript" src="/pos_customer_display/static/src/js/gui.js" />
<script type="text/javascript" src="/pos_customer_display/static/src/js/devices.js" />
<script type="text/javascript" src="/pos_customer_display/static/src/js/customer_display_2_20.js" />
</xpath>
</template>
</odoo>

46
pos_customer_display/views/view_pos_config.xml

@ -0,0 +1,46 @@
<?xml version="1.0"?>
<odoo>
<record id="view_pos_config_form" model="ir.ui.view">
<field name="model">pos.config</field>
<field name="inherit_id" ref="point_of_sale.pos_config_view_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='iface_cashdrawer']/.." position="after">
<div class="row">
<label string="LED Customer Display" for="iface_customer_display" class="col-lg-3 o_light_label"/>
<field name="iface_customer_display"/>
</div>
<div class="row" attrs="{'invisible': [('iface_customer_display', '=', False)]}">
<label string="Customer Display Format" for="customer_display_format" class="col-lg-3 o_light_label"/>
<field name="customer_display_format"/>
</div>
<div class="row" attrs="{'invisible': [('iface_customer_display', '=', False)]}">
<label string="Line Length" for="customer_display_line_length" class="col-lg-3 o_light_label"/>
<field name="customer_display_line_length"/>
</div>
<div class="row" attrs="{'invisible': [('iface_customer_display', '=', False)]}">
<label string="Next Customer (Line 1)" for="customer_display_msg_next_l1" class="col-lg-3 o_light_label"/>
<field name="customer_display_msg_next_l1"/>
</div>
<div class="row" attrs="{'invisible': [('iface_customer_display', '=', False)]}">
<label string="Next Customer (Line 2)" for="customer_display_msg_next_l2" class="col-lg-3 o_light_label"/>
<field name="customer_display_msg_next_l2"/>
</div>
<div class="row" attrs="{'invisible': [('iface_customer_display', '=', False)]}">
<label string="PoS Closed (Line 1)" for="customer_display_msg_closed_l1" class="col-lg-3 o_light_label"/>
<field name="customer_display_msg_closed_l1"/>
</div>
<div class="row" attrs="{'invisible': [('iface_customer_display', '=', False)]}">
<label string="PoS Closed (Line 2)" for="customer_display_msg_closed_l2" class="col-lg-3 o_light_label"/>
<field name="customer_display_msg_closed_l2"/>
</div>
</xpath>
</field>
</record>
</odoo>
Loading…
Cancel
Save