Browse Source

origin master

Rodney Enciso Arias 8 years ago
commit
50addc035a
51 changed files with 5686 additions and 0 deletions
  1. 124 0
      README.rst
  2. 34 0
      __init__.py
  3. BIN
      __init__.pyc
  4. 34 0
      __openerp__.py
  5. 95 0
      demo/pos_pricelist_demo.yml
  6. 160 0
      i18n/am.po
  7. 160 0
      i18n/bg.po
  8. 160 0
      i18n/ca.po
  9. 160 0
      i18n/de.po
  10. 160 0
      i18n/el_GR.po
  11. 161 0
      i18n/es.po
  12. 160 0
      i18n/es_ES.po
  13. 160 0
      i18n/fi.po
  14. 161 0
      i18n/fr.po
  15. 160 0
      i18n/gl.po
  16. 160 0
      i18n/hr.po
  17. 160 0
      i18n/hr_HR.po
  18. 161 0
      i18n/it.po
  19. 160 0
      i18n/nl.po
  20. 145 0
      i18n/nl_NL.po
  21. 141 0
      i18n/pos_pricelist.pot
  22. 160 0
      i18n/pt.po
  23. 160 0
      i18n/pt_BR.po
  24. 160 0
      i18n/pt_PT.po
  25. 161 0
      i18n/sl.po
  26. 160 0
      i18n/tr.po
  27. 160 0
      i18n/zh_CN.po
  28. 30 0
      migrations/8.0.1.1.0/post-migration.py
  29. 8 0
      models/__init__.py
  30. BIN
      models/__init__.pyc
  31. 12 0
      models/account_fiscal_position.py
  32. BIN
      models/account_fiscal_position.pyc
  33. 160 0
      models/point_of_sale.py
  34. BIN
      models/point_of_sale.pyc
  35. 28 0
      models/pos_pricelist.py
  36. BIN
      models/pos_pricelist.pyc
  37. 36 0
      report/report_receipt.xml
  38. 13 0
      security/account_fiscal_position_security.xml
  39. 3 0
      security/ir.model.access.csv
  40. 150 0
      static/src/css/style.css
  41. 195 0
      static/src/js/db.js
  42. 24 0
      static/src/js/main.js
  43. 810 0
      static/src/js/models.js
  44. 32 0
      static/src/js/screens.js
  45. 184 0
      static/src/js/tests.js
  46. 87 0
      static/src/js/widgets.js
  47. 37 0
      static/src/xml/pos.xml
  48. 28 0
      test/test.py
  49. 28 0
      views/point_of_sale_view.xml
  50. 29 0
      views/pos_pricelist_template.xml
  51. 15 0
      views/pos_pricelist_views.xml

+ 124 - 0
README.rst

@@ -0,0 +1,124 @@
+.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
+    :alt: License: AGPL-3
+
+Dynamic Price for Odoo Point of Sale
+====================================
+
+Motivation
+----------
+
+Many issues report this feature. This why I took decision to start this module
+
+Reported issues :
+
+`odoo 8 POS price list discount has no effect. <https://github.com/odoo/odoo/issues/3579>`_
+
+`ODOO POS Pricelist - Public Price & Discounted Price in Receipt. <https://github.com/odoo/odoo/issues/1758>`_
+
+`V8.0 pos gives wrong price when using min qty in pos pricelist <https://github.com/odoo/odoo/issues/2297>`_
+
+Goal of the module
+------------------
+
+The goal of this module is to bring the pricelist computation engine to the POS.
+This module loads all the necessary data into the POS in order to have a coherent behaviour (offline/online/backend).
+
+
+Installation
+============
+
+Nothing special is needed to install this module.
+
+
+Configuration
+=============
+
+You'll have new configuration parameters at Point of Sale > Configuration > Point of Sales
+
+* Price with Taxes: Show prices with taxes in POS session or not
+
+
+Usage
+=====
+
+Implemented features at POS Session
+-----------------------------------
+
+1.  Attached pricelist on partner will take effect on the POS, which means that if we attach a pricelist to a partner.
+The POS will recognize it and will compute the price according to the rule defined.
+
+2. Fiscal Position of each partner will also be present so taxes will be correctly computed
+(conforming to the fiscal position).
+
+- Implemented Rules are :
+
+1. (-1) : Rule based on other pricelist
+2. (-2) : Rule based on supplierinfo
+3. (default) : Any price type which is set on the product form
+
+3. An new option is introduced in the POS config to let the user show price with taxes in product widget.
+the UI is updated when we change the customer in order to adapt the prices.
+The computation take in account the pricelist and the fiscal position of the customer
+
+4. When we mouseover the price tag, a tooltip is shown to indicate the computation depending on the quantity like this output :
+1x -> 100 €
+3x -> 70 €
+5x -> 50 €
+
+
+Implemented features at backend
+-------------------------------
+
+1. Tax details
+
+- Tax details per order line
+- Tax details aggregated by tax at order level
+
+2. Ticket
+
+- Tax details table added at end of printed ticket
+
+
+Known issues / Roadmap
+======================
+
+Missing features
+----------------
+
+* As you may know, product template is not fully implemented in the POS, so I decided to drop it from this module.
+
+
+Bug Tracker
+===========
+
+Bugs are tracked on `GitHub Issues <https://github.com/OCA/pos/issues>`_.
+In case of trouble, please check there if your issue has already been reported.
+If you spotted it first, help us smashing it by providing a detailed and welcomed feedback
+`here <https://github.com/OCA/pos/issues/new?body=module:%20pos_pricelist%0Aversion:%208.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
+
+
+Credits
+=======
+
+Contributors
+------------
+
+* Adil Houmadi <ah@taktik.be>
+* Pablo Cayuela <pablo.cayuela@aserti.es>
+* Antonio Espinosa <antonioea@antiun.com>
+
+
+Maintainer
+----------
+
+.. image:: https://odoo-community.org/logo.png
+   :alt: Odoo Community Association
+   :target: https://odoo-community.org
+
+This module is maintained by the OCA.
+
+OCA, or the Odoo Community Association, is a nonprofit organization whose
+mission is to support the collaborative development of Odoo features and
+promote its widespread use.
+
+To contribute to this module, please visit http://odoo-community.org.

+ 34 - 0
__init__.py

@@ -0,0 +1,34 @@
+# -#- coding: utf-8 -#-
+##############################################################################
+# Point Of Sale - Pricelist for POS Odoo
+# Copyright (C) 2014 Taktik (http://www.taktik.be)
+# @author Adil Houmadi <ah@taktik.be>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Affero General Public License for more details.
+# You should have received a copy of the GNU Affero General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+from . import models
+from openerp import SUPERUSER_ID
+
+
+def set_pos_line_taxes(cr, registry):
+    """Copy the product taxes to the pos.line"""
+    cr.execute("""insert into pline_tax_rel
+                    select l.id, t.id
+                    from pos_order_line l
+                    join pos_order o on l.order_id = o.id
+                    join product_product p on l.product_id = p.id
+                    join product_template pt on pt.id = p.product_tmpl_id
+                    join product_taxes_rel rel on rel.prod_id = pt.id
+                    join account_tax t on rel.tax_id = t.id
+                    where t.company_id = o.company_id""")
+    registry['pos.order']._install_tax_detail(cr, SUPERUSER_ID)

BIN
__init__.pyc


+ 34 - 0
__openerp__.py

@@ -0,0 +1,34 @@
+# -*- coding: utf-8 -*-
+# © 2014-2015 Taktik (http://www.taktik.be) - Adil Houmadi <ah@taktik.be>
+# © 2016 Serv. Tecnol. Avanzados - Pedro M. Baeza
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+{
+    'name': 'POS Pricelist',
+    'version': '8.0.1.3.0',
+    'category': 'Point Of Sale',
+    'sequence': 1,
+    'author': "Adil Houmadi @Taktik, "
+              "Serv. Tecnol. Avanzados - Pedro M. Baeza, "
+              "Odoo Community Association (OCA)",
+    'summary': 'Pricelist for Point of sale',
+    'depends': [
+        "point_of_sale",
+    ],
+    'data': [
+        "views/pos_pricelist_template.xml",
+        "views/pos_pricelist_views.xml",
+        "views/point_of_sale_view.xml",
+        "report/report_receipt.xml",
+        "security/ir.model.access.csv",
+        "security/account_fiscal_position_security.xml",
+    ],
+    'demo': [
+        'demo/pos_pricelist_demo.yml',
+    ],
+    'qweb': [
+        'static/src/xml/pos.xml'
+    ],
+    'post_init_hook': "set_pos_line_taxes",
+    'installable': True,
+}

+ 95 - 0
demo/pos_pricelist_demo.yml

@@ -0,0 +1,95 @@
+-
+ This product will have two rule (min_qty:3 => 10%, min_qty:5 => 30%)
+-
+ !record {model: product.product, id: pos_product_product_1}:
+    default_code: ABC123
+    name: POS Product 1
+    type: product
+    categ_id: product.product_category_1
+    list_price: 100.0
+    standard_price: 50.0
+    uom_id: product.product_uom_unit
+    uom_po_id: product.product_uom_unit
+    available_in_pos: True
+
+-
+  This product will have one rule (min_qty:2 => 10%)
+-
+ !record {model: product.product, id: pos_product_product_2}:
+    default_code: ABC124
+    name: POS Product 2
+    type: product
+    categ_id: product.product_category_1
+    list_price: 100.0
+    standard_price: 100.0
+    uom_id: product.product_uom_unit
+    uom_po_id: product.product_uom_unit
+    available_in_pos: True
+
+-
+  This product will have a rule that (based on supplier discount)
+-
+ !record {model: product.product, id: pos_product_product_3}:
+    default_code: ABC125
+    name: POS Product 3
+    type: product
+    categ_id: product.product_category_1
+    list_price: 100.0
+    standard_price: 50.0
+    uom_id: product.product_uom_unit
+    uom_po_id: product.product_uom_unit
+    available_in_pos: True
+    seller_ids:
+      - delay: 1
+        name: base.res_partner_3
+        pricelist_ids:
+          - min_quantity : 2.0
+            price : 80
+
+-
+  This product belgon to computer category (5% dicount)
+-
+ !record {model: product.product, id: pos_product_product_4}:
+    default_code: ABC125
+    name: POS Product 4
+    type: product
+    categ_id: product.product_category_4
+    list_price: 100.0
+    standard_price: 50.0
+    uom_id: product.product_uom_unit
+    uom_po_id: product.product_uom_unit
+    available_in_pos: True
+-
+  Prepare pricelist items
+-
+  !record {model: product.pricelist.version, id: product.ver0}:
+    items_id:
+      - name: 10% Discount on POS Product 1 (Qty 3)
+        sequence: 2
+        product_id: pos_product_product_1
+        base: 1
+        price_discount: -0.10
+        min_quantity: 3
+      - name: 30% Discount on POS Product 1 (Qty 5)
+        sequence: 1
+        product_id: pos_product_product_1
+        min_quantity: 5
+        base: 1
+        price_discount: -0.30
+      - name: 10% Discount (POS Product 2)
+        sequence: 1
+        product_id: pos_product_product_2
+        base: 2
+        price_discount: -0.10
+        min_quantity: 2
+      - name: 20% Discount given by supplier
+        sequence: 1
+        min_quantity: 2
+        product_id: pos_product_product_3
+        base: -2
+      - name: 5% Discount on all Computer related products (Qty 2)
+        sequence: 1
+        min_quantity: 2
+        base: 1
+        categ_id: product.product_category_4
+        price_discount: -0.05

+ 160 - 0
i18n/am.po

@@ -0,0 +1,160 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * pos_pricelist
+# 
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: pos (8.0)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-08-15 21:29+0000\n"
+"PO-Revision-Date: 2016-04-06 15:48+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: Amharic (http://www.transifex.com/oca/OCA-pos-8-0/language/am/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: am\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,amount:0 view:website:point_of_sale.report_receipt
+msgid "Amount"
+msgstr ""
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:402
+#, python-format
+msgid ""
+"At least one pricelist has no active version ! Please create or activate "
+"one."
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,base:0 view:website:point_of_sale.report_receipt
+msgid "Base"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:account.fiscal.position.tax,company_id:0
+msgid "Company"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_uid:0
+msgid "Created by"
+msgstr "Creado por"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_date:0
+msgid "Created on"
+msgstr "Creado en"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,display_name:0
+msgid "Display Name"
+msgstr ""
+
+#. module: pos_pricelist
+#: help:pos.config,display_price_with_taxes:0
+msgid "Display Prices with taxes on POS"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,id:0
+msgid "ID"
+msgstr "ID"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,__last_update:0
+msgid "Last Modified on"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_uid:0
+msgid "Last Updated by"
+msgstr "Última actualización por"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_date:0
+msgid "Last Updated on"
+msgstr "Última actualización en"
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order_line
+msgid "Lines of Point of Sale"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,pos_order:0
+msgid "POS Order"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_1_product_template
+msgid "POS Product 1"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_2_product_template
+msgid "POS Product 2"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_3_product_template
+msgid "POS Product 3"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_4_product_template
+msgid "POS Product 4"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Payments"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order
+msgid "Point of Sale"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.config,display_price_with_taxes:0
+msgid "Price With Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:401
+#, python-format
+msgid "Pricelist Error"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,tax:0 view:website:point_of_sale.report_receipt
+msgid "Tax"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,name:0
+msgid "Tax Description"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form field:pos.order,taxes:0
+#: field:pos.order.line,tax_ids:0
+msgid "Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_account_fiscal_position_tax
+msgid "Taxes Fiscal Position"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Taxes detail"
+msgstr ""

+ 160 - 0
i18n/bg.po

@@ -0,0 +1,160 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * pos_pricelist
+# 
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: pos (8.0)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-09-18 01:07+0000\n"
+"PO-Revision-Date: 2016-04-06 15:48+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: Bulgarian (http://www.transifex.com/oca/OCA-pos-8-0/language/bg/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: bg\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,amount:0 view:website:point_of_sale.report_receipt
+msgid "Amount"
+msgstr ""
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:402
+#, python-format
+msgid ""
+"At least one pricelist has no active version ! Please create or activate "
+"one."
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,base:0 view:website:point_of_sale.report_receipt
+msgid "Base"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:account.fiscal.position.tax,company_id:0
+msgid "Company"
+msgstr "Фирма"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_uid:0
+msgid "Created by"
+msgstr "Създадено от"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_date:0
+msgid "Created on"
+msgstr "Създадено на"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,display_name:0
+msgid "Display Name"
+msgstr ""
+
+#. module: pos_pricelist
+#: help:pos.config,display_price_with_taxes:0
+msgid "Display Prices with taxes on POS"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,id:0
+msgid "ID"
+msgstr "ID"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,__last_update:0
+msgid "Last Modified on"
+msgstr "Последно обновено на"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_uid:0
+msgid "Last Updated by"
+msgstr "Последно обновено от"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_date:0
+msgid "Last Updated on"
+msgstr "Последно обновено на"
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order_line
+msgid "Lines of Point of Sale"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,pos_order:0
+msgid "POS Order"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_1_product_template
+msgid "POS Product 1"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_2_product_template
+msgid "POS Product 2"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_3_product_template
+msgid "POS Product 3"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_4_product_template
+msgid "POS Product 4"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Payments"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order
+msgid "Point of Sale"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.config,display_price_with_taxes:0
+msgid "Price With Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:401
+#, python-format
+msgid "Pricelist Error"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,tax:0 view:website:point_of_sale.report_receipt
+msgid "Tax"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,name:0
+msgid "Tax Description"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form field:pos.order,taxes:0
+#: field:pos.order.line,tax_ids:0
+msgid "Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_account_fiscal_position_tax
+msgid "Taxes Fiscal Position"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Taxes detail"
+msgstr ""

+ 160 - 0
i18n/ca.po

@@ -0,0 +1,160 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * pos_pricelist
+# 
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: pos (8.0)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-08-15 21:29+0000\n"
+"PO-Revision-Date: 2016-04-06 15:48+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: Catalan (http://www.transifex.com/oca/OCA-pos-8-0/language/ca/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: ca\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,amount:0 view:website:point_of_sale.report_receipt
+msgid "Amount"
+msgstr ""
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:402
+#, python-format
+msgid ""
+"At least one pricelist has no active version ! Please create or activate "
+"one."
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,base:0 view:website:point_of_sale.report_receipt
+msgid "Base"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:account.fiscal.position.tax,company_id:0
+msgid "Company"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_uid:0
+msgid "Created by"
+msgstr "Creat per"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_date:0
+msgid "Created on"
+msgstr "Creat el"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,display_name:0
+msgid "Display Name"
+msgstr ""
+
+#. module: pos_pricelist
+#: help:pos.config,display_price_with_taxes:0
+msgid "Display Prices with taxes on POS"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,id:0
+msgid "ID"
+msgstr "ID"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,__last_update:0
+msgid "Last Modified on"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_uid:0
+msgid "Last Updated by"
+msgstr "Darrera Actualització per"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_date:0
+msgid "Last Updated on"
+msgstr "Darrera Actualització el"
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order_line
+msgid "Lines of Point of Sale"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,pos_order:0
+msgid "POS Order"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_1_product_template
+msgid "POS Product 1"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_2_product_template
+msgid "POS Product 2"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_3_product_template
+msgid "POS Product 3"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_4_product_template
+msgid "POS Product 4"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Payments"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order
+msgid "Point of Sale"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.config,display_price_with_taxes:0
+msgid "Price With Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:401
+#, python-format
+msgid "Pricelist Error"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,tax:0 view:website:point_of_sale.report_receipt
+msgid "Tax"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,name:0
+msgid "Tax Description"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form field:pos.order,taxes:0
+#: field:pos.order.line,tax_ids:0
+msgid "Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_account_fiscal_position_tax
+msgid "Taxes Fiscal Position"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Taxes detail"
+msgstr ""

+ 160 - 0
i18n/de.po

@@ -0,0 +1,160 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * pos_pricelist
+# 
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: pos (8.0)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-09-18 01:07+0000\n"
+"PO-Revision-Date: 2016-04-06 15:48+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: German (http://www.transifex.com/oca/OCA-pos-8-0/language/de/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: de\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,amount:0 view:website:point_of_sale.report_receipt
+msgid "Amount"
+msgstr ""
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:402
+#, python-format
+msgid ""
+"At least one pricelist has no active version ! Please create or activate "
+"one."
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,base:0 view:website:point_of_sale.report_receipt
+msgid "Base"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:account.fiscal.position.tax,company_id:0
+msgid "Company"
+msgstr "Unternehmen"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_uid:0
+msgid "Created by"
+msgstr "Erstellt von"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_date:0
+msgid "Created on"
+msgstr "Erstellt am:"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,display_name:0
+msgid "Display Name"
+msgstr "Anzeigename"
+
+#. module: pos_pricelist
+#: help:pos.config,display_price_with_taxes:0
+msgid "Display Prices with taxes on POS"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,id:0
+msgid "ID"
+msgstr "ID"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,__last_update:0
+msgid "Last Modified on"
+msgstr "Zuletzt geändert am"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_uid:0
+msgid "Last Updated by"
+msgstr "Zuletzt aktualisiert von"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_date:0
+msgid "Last Updated on"
+msgstr "Zuletzt aktualisiert am"
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order_line
+msgid "Lines of Point of Sale"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,pos_order:0
+msgid "POS Order"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_1_product_template
+msgid "POS Product 1"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_2_product_template
+msgid "POS Product 2"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_3_product_template
+msgid "POS Product 3"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_4_product_template
+msgid "POS Product 4"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Payments"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order
+msgid "Point of Sale"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.config,display_price_with_taxes:0
+msgid "Price With Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:401
+#, python-format
+msgid "Pricelist Error"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,tax:0 view:website:point_of_sale.report_receipt
+msgid "Tax"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,name:0
+msgid "Tax Description"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form field:pos.order,taxes:0
+#: field:pos.order.line,tax_ids:0
+msgid "Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_account_fiscal_position_tax
+msgid "Taxes Fiscal Position"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Taxes detail"
+msgstr ""

+ 160 - 0
i18n/el_GR.po

@@ -0,0 +1,160 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * pos_pricelist
+# 
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: pos (8.0)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-08-15 21:29+0000\n"
+"PO-Revision-Date: 2016-04-06 15:48+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: Greek (Greece) (http://www.transifex.com/oca/OCA-pos-8-0/language/el_GR/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: el_GR\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,amount:0 view:website:point_of_sale.report_receipt
+msgid "Amount"
+msgstr ""
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:402
+#, python-format
+msgid ""
+"At least one pricelist has no active version ! Please create or activate "
+"one."
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,base:0 view:website:point_of_sale.report_receipt
+msgid "Base"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:account.fiscal.position.tax,company_id:0
+msgid "Company"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_uid:0
+msgid "Created by"
+msgstr "Δημιουργήθηκε από "
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_date:0
+msgid "Created on"
+msgstr "Δημιουργήθηκε στις"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,display_name:0
+msgid "Display Name"
+msgstr ""
+
+#. module: pos_pricelist
+#: help:pos.config,display_price_with_taxes:0
+msgid "Display Prices with taxes on POS"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,id:0
+msgid "ID"
+msgstr "Κωδικός"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,__last_update:0
+msgid "Last Modified on"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_uid:0
+msgid "Last Updated by"
+msgstr "Τελευταία ενημέρωση από"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_date:0
+msgid "Last Updated on"
+msgstr "Τελευταία ενημέρωση στις"
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order_line
+msgid "Lines of Point of Sale"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,pos_order:0
+msgid "POS Order"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_1_product_template
+msgid "POS Product 1"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_2_product_template
+msgid "POS Product 2"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_3_product_template
+msgid "POS Product 3"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_4_product_template
+msgid "POS Product 4"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Payments"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order
+msgid "Point of Sale"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.config,display_price_with_taxes:0
+msgid "Price With Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:401
+#, python-format
+msgid "Pricelist Error"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,tax:0 view:website:point_of_sale.report_receipt
+msgid "Tax"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,name:0
+msgid "Tax Description"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form field:pos.order,taxes:0
+#: field:pos.order.line,tax_ids:0
+msgid "Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_account_fiscal_position_tax
+msgid "Taxes Fiscal Position"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Taxes detail"
+msgstr ""

+ 161 - 0
i18n/es.po

@@ -0,0 +1,161 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * pos_pricelist
+# 
+# Translators:
+# Javier García-Panach <panaka7@gmail.com>, 2016
+msgid ""
+msgstr ""
+"Project-Id-Version: pos (8.0)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-08-15 21:29+0000\n"
+"PO-Revision-Date: 2016-09-16 21:45+0000\n"
+"Last-Translator: OCA Transbot <transbot@odoo-community.org>\n"
+"Language-Team: Spanish (http://www.transifex.com/oca/OCA-pos-8-0/language/es/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: es\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,amount:0 view:website:point_of_sale.report_receipt
+msgid "Amount"
+msgstr "Cuota"
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:402
+#, python-format
+msgid ""
+"At least one pricelist has no active version ! Please create or activate "
+"one."
+msgstr "¡Al menos una lista de precios no tiene ua versión activa! Por favor, cree o active una."
+
+#. module: pos_pricelist
+#: field:pos.order.tax,base:0 view:website:point_of_sale.report_receipt
+msgid "Base"
+msgstr "Base imponible"
+
+#. module: pos_pricelist
+#: field:account.fiscal.position.tax,company_id:0
+msgid "Company"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_uid:0
+msgid "Created by"
+msgstr "Creado por"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_date:0
+msgid "Created on"
+msgstr "Creado en"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,display_name:0
+msgid "Display Name"
+msgstr "Nombre mostrado"
+
+#. module: pos_pricelist
+#: help:pos.config,display_price_with_taxes:0
+msgid "Display Prices with taxes on POS"
+msgstr "Mostrar los precios con impuestos incluidos en el TPV"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,id:0
+msgid "ID"
+msgstr "ID"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,__last_update:0
+msgid "Last Modified on"
+msgstr "Última modificación el"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_uid:0
+msgid "Last Updated by"
+msgstr "Última actualización por"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_date:0
+msgid "Last Updated on"
+msgstr "Última actualización en"
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order_line
+msgid "Lines of Point of Sale"
+msgstr "Líneas del Terminal Punto de Venta"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,pos_order:0
+msgid "POS Order"
+msgstr "Pedido"
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_1_product_template
+msgid "POS Product 1"
+msgstr "TPV Producto 1"
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_2_product_template
+msgid "POS Product 2"
+msgstr "TPV Producto 2"
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_3_product_template
+msgid "POS Product 3"
+msgstr "TPV Producto 3"
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_4_product_template
+msgid "POS Product 4"
+msgstr "TPV Producto 4"
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Payments"
+msgstr "Pagos"
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order
+msgid "Point of Sale"
+msgstr "Terminal Punto de Venta"
+
+#. module: pos_pricelist
+#: field:pos.config,display_price_with_taxes:0
+msgid "Price With Taxes"
+msgstr "Precios con impuestos incluidos"
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:401
+#, python-format
+msgid "Pricelist Error"
+msgstr "Error en lista de precios"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,tax:0 view:website:point_of_sale.report_receipt
+msgid "Tax"
+msgstr "Impuesto"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,name:0
+msgid "Tax Description"
+msgstr "Descripción del impuesto"
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form field:pos.order,taxes:0
+#: field:pos.order.line,tax_ids:0
+msgid "Taxes"
+msgstr "Impuestos"
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_account_fiscal_position_tax
+msgid "Taxes Fiscal Position"
+msgstr "Impuestos de posición fiscal"
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Taxes detail"
+msgstr "Detalle de impuestos"

+ 160 - 0
i18n/es_ES.po

@@ -0,0 +1,160 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * pos_pricelist
+# 
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: pos (8.0)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-08-15 21:29+0000\n"
+"PO-Revision-Date: 2016-04-06 15:48+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: Spanish (Spain) (http://www.transifex.com/oca/OCA-pos-8-0/language/es_ES/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: es_ES\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,amount:0 view:website:point_of_sale.report_receipt
+msgid "Amount"
+msgstr ""
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:402
+#, python-format
+msgid ""
+"At least one pricelist has no active version ! Please create or activate "
+"one."
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,base:0 view:website:point_of_sale.report_receipt
+msgid "Base"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:account.fiscal.position.tax,company_id:0
+msgid "Company"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_uid:0
+msgid "Created by"
+msgstr "Creado por"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_date:0
+msgid "Created on"
+msgstr "Creado en"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,display_name:0
+msgid "Display Name"
+msgstr ""
+
+#. module: pos_pricelist
+#: help:pos.config,display_price_with_taxes:0
+msgid "Display Prices with taxes on POS"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,id:0
+msgid "ID"
+msgstr "ID"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,__last_update:0
+msgid "Last Modified on"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_uid:0
+msgid "Last Updated by"
+msgstr "Última actualización por"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_date:0
+msgid "Last Updated on"
+msgstr "Última actualización en"
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order_line
+msgid "Lines of Point of Sale"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,pos_order:0
+msgid "POS Order"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_1_product_template
+msgid "POS Product 1"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_2_product_template
+msgid "POS Product 2"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_3_product_template
+msgid "POS Product 3"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_4_product_template
+msgid "POS Product 4"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Payments"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order
+msgid "Point of Sale"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.config,display_price_with_taxes:0
+msgid "Price With Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:401
+#, python-format
+msgid "Pricelist Error"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,tax:0 view:website:point_of_sale.report_receipt
+msgid "Tax"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,name:0
+msgid "Tax Description"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form field:pos.order,taxes:0
+#: field:pos.order.line,tax_ids:0
+msgid "Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_account_fiscal_position_tax
+msgid "Taxes Fiscal Position"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Taxes detail"
+msgstr ""

+ 160 - 0
i18n/fi.po

@@ -0,0 +1,160 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * pos_pricelist
+# 
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: pos (8.0)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-08-15 21:29+0000\n"
+"PO-Revision-Date: 2016-04-06 15:48+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: Finnish (http://www.transifex.com/oca/OCA-pos-8-0/language/fi/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: fi\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,amount:0 view:website:point_of_sale.report_receipt
+msgid "Amount"
+msgstr ""
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:402
+#, python-format
+msgid ""
+"At least one pricelist has no active version ! Please create or activate "
+"one."
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,base:0 view:website:point_of_sale.report_receipt
+msgid "Base"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:account.fiscal.position.tax,company_id:0
+msgid "Company"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_uid:0
+msgid "Created by"
+msgstr "Luonut"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_date:0
+msgid "Created on"
+msgstr "Luotu"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,display_name:0
+msgid "Display Name"
+msgstr "Nimi"
+
+#. module: pos_pricelist
+#: help:pos.config,display_price_with_taxes:0
+msgid "Display Prices with taxes on POS"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,id:0
+msgid "ID"
+msgstr "ID"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,__last_update:0
+msgid "Last Modified on"
+msgstr "Viimeksi muokattu"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_uid:0
+msgid "Last Updated by"
+msgstr "Viimeksi päivittänyt"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_date:0
+msgid "Last Updated on"
+msgstr "Viimeksi päivitetty"
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order_line
+msgid "Lines of Point of Sale"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,pos_order:0
+msgid "POS Order"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_1_product_template
+msgid "POS Product 1"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_2_product_template
+msgid "POS Product 2"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_3_product_template
+msgid "POS Product 3"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_4_product_template
+msgid "POS Product 4"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Payments"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order
+msgid "Point of Sale"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.config,display_price_with_taxes:0
+msgid "Price With Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:401
+#, python-format
+msgid "Pricelist Error"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,tax:0 view:website:point_of_sale.report_receipt
+msgid "Tax"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,name:0
+msgid "Tax Description"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form field:pos.order,taxes:0
+#: field:pos.order.line,tax_ids:0
+msgid "Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_account_fiscal_position_tax
+msgid "Taxes Fiscal Position"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Taxes detail"
+msgstr ""

+ 161 - 0
i18n/fr.po

@@ -0,0 +1,161 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * pos_pricelist
+# 
+# Translators:
+# Christophe CHAUVET <christophe.chauvet@gmail.com>, 2016
+msgid ""
+msgstr ""
+"Project-Id-Version: pos (8.0)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-08-15 21:29+0000\n"
+"PO-Revision-Date: 2016-09-17 19:03+0000\n"
+"Last-Translator: Christophe CHAUVET <christophe.chauvet@gmail.com>\n"
+"Language-Team: French (http://www.transifex.com/oca/OCA-pos-8-0/language/fr/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: fr\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,amount:0 view:website:point_of_sale.report_receipt
+msgid "Amount"
+msgstr "Montant"
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:402
+#, python-format
+msgid ""
+"At least one pricelist has no active version ! Please create or activate "
+"one."
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,base:0 view:website:point_of_sale.report_receipt
+msgid "Base"
+msgstr "Base"
+
+#. module: pos_pricelist
+#: field:account.fiscal.position.tax,company_id:0
+msgid "Company"
+msgstr "Société"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_uid:0
+msgid "Created by"
+msgstr "Créé par"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_date:0
+msgid "Created on"
+msgstr "Date"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,display_name:0
+msgid "Display Name"
+msgstr "Nom à afficher"
+
+#. module: pos_pricelist
+#: help:pos.config,display_price_with_taxes:0
+msgid "Display Prices with taxes on POS"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,id:0
+msgid "ID"
+msgstr "ID"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,__last_update:0
+msgid "Last Modified on"
+msgstr "Dernière modification le"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_uid:0
+msgid "Last Updated by"
+msgstr "Dernière mise à jour par"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_date:0
+msgid "Last Updated on"
+msgstr "Dernière mise à jour le"
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order_line
+msgid "Lines of Point of Sale"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,pos_order:0
+msgid "POS Order"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_1_product_template
+msgid "POS Product 1"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_2_product_template
+msgid "POS Product 2"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_3_product_template
+msgid "POS Product 3"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_4_product_template
+msgid "POS Product 4"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Payments"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order
+msgid "Point of Sale"
+msgstr "Point de vente"
+
+#. module: pos_pricelist
+#: field:pos.config,display_price_with_taxes:0
+msgid "Price With Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:401
+#, python-format
+msgid "Pricelist Error"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,tax:0 view:website:point_of_sale.report_receipt
+msgid "Tax"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,name:0
+msgid "Tax Description"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form field:pos.order,taxes:0
+#: field:pos.order.line,tax_ids:0
+msgid "Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_account_fiscal_position_tax
+msgid "Taxes Fiscal Position"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Taxes detail"
+msgstr ""

+ 160 - 0
i18n/gl.po

@@ -0,0 +1,160 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * pos_pricelist
+# 
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: pos (8.0)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-08-15 21:29+0000\n"
+"PO-Revision-Date: 2016-04-06 15:48+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: Galician (http://www.transifex.com/oca/OCA-pos-8-0/language/gl/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: gl\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,amount:0 view:website:point_of_sale.report_receipt
+msgid "Amount"
+msgstr ""
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:402
+#, python-format
+msgid ""
+"At least one pricelist has no active version ! Please create or activate "
+"one."
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,base:0 view:website:point_of_sale.report_receipt
+msgid "Base"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:account.fiscal.position.tax,company_id:0
+msgid "Company"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_uid:0
+msgid "Created by"
+msgstr "Creado por"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_date:0
+msgid "Created on"
+msgstr "Creado en"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,display_name:0
+msgid "Display Name"
+msgstr ""
+
+#. module: pos_pricelist
+#: help:pos.config,display_price_with_taxes:0
+msgid "Display Prices with taxes on POS"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,id:0
+msgid "ID"
+msgstr "ID"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,__last_update:0
+msgid "Last Modified on"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_uid:0
+msgid "Last Updated by"
+msgstr "ültima actualización por"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_date:0
+msgid "Last Updated on"
+msgstr "Última actualización en"
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order_line
+msgid "Lines of Point of Sale"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,pos_order:0
+msgid "POS Order"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_1_product_template
+msgid "POS Product 1"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_2_product_template
+msgid "POS Product 2"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_3_product_template
+msgid "POS Product 3"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_4_product_template
+msgid "POS Product 4"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Payments"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order
+msgid "Point of Sale"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.config,display_price_with_taxes:0
+msgid "Price With Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:401
+#, python-format
+msgid "Pricelist Error"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,tax:0 view:website:point_of_sale.report_receipt
+msgid "Tax"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,name:0
+msgid "Tax Description"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form field:pos.order,taxes:0
+#: field:pos.order.line,tax_ids:0
+msgid "Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_account_fiscal_position_tax
+msgid "Taxes Fiscal Position"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Taxes detail"
+msgstr ""

+ 160 - 0
i18n/hr.po

@@ -0,0 +1,160 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * pos_pricelist
+# 
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: pos (8.0)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-09-18 01:07+0000\n"
+"PO-Revision-Date: 2016-04-06 15:48+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: Croatian (http://www.transifex.com/oca/OCA-pos-8-0/language/hr/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: hr\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_pricelist
+#: field:pos.order.tax,amount:0 view:website:point_of_sale.report_receipt
+msgid "Amount"
+msgstr ""
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:402
+#, python-format
+msgid ""
+"At least one pricelist has no active version ! Please create or activate "
+"one."
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,base:0 view:website:point_of_sale.report_receipt
+msgid "Base"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:account.fiscal.position.tax,company_id:0
+msgid "Company"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_uid:0
+msgid "Created by"
+msgstr "Kreirao"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_date:0
+msgid "Created on"
+msgstr "Kreirano"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,display_name:0
+msgid "Display Name"
+msgstr "Naziv "
+
+#. module: pos_pricelist
+#: help:pos.config,display_price_with_taxes:0
+msgid "Display Prices with taxes on POS"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,id:0
+msgid "ID"
+msgstr "ID"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,__last_update:0
+msgid "Last Modified on"
+msgstr "Zadnje modificirano"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_uid:0
+msgid "Last Updated by"
+msgstr "Zadnji ažurirao"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_date:0
+msgid "Last Updated on"
+msgstr "Zadnje ažuriranje"
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order_line
+msgid "Lines of Point of Sale"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,pos_order:0
+msgid "POS Order"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_1_product_template
+msgid "POS Product 1"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_2_product_template
+msgid "POS Product 2"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_3_product_template
+msgid "POS Product 3"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_4_product_template
+msgid "POS Product 4"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Payments"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order
+msgid "Point of Sale"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.config,display_price_with_taxes:0
+msgid "Price With Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:401
+#, python-format
+msgid "Pricelist Error"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,tax:0 view:website:point_of_sale.report_receipt
+msgid "Tax"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,name:0
+msgid "Tax Description"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form field:pos.order,taxes:0
+#: field:pos.order.line,tax_ids:0
+msgid "Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_account_fiscal_position_tax
+msgid "Taxes Fiscal Position"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Taxes detail"
+msgstr ""

+ 160 - 0
i18n/hr_HR.po

@@ -0,0 +1,160 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * pos_pricelist
+# 
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: pos (8.0)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-09-18 01:07+0000\n"
+"PO-Revision-Date: 2016-04-06 15:48+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: Croatian (Croatia) (http://www.transifex.com/oca/OCA-pos-8-0/language/hr_HR/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: hr_HR\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_pricelist
+#: field:pos.order.tax,amount:0 view:website:point_of_sale.report_receipt
+msgid "Amount"
+msgstr ""
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:402
+#, python-format
+msgid ""
+"At least one pricelist has no active version ! Please create or activate "
+"one."
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,base:0 view:website:point_of_sale.report_receipt
+msgid "Base"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:account.fiscal.position.tax,company_id:0
+msgid "Company"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_uid:0
+msgid "Created by"
+msgstr "Kreirao"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_date:0
+msgid "Created on"
+msgstr "Kreirano"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,display_name:0
+msgid "Display Name"
+msgstr "Naziv"
+
+#. module: pos_pricelist
+#: help:pos.config,display_price_with_taxes:0
+msgid "Display Prices with taxes on POS"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,id:0
+msgid "ID"
+msgstr "ID"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,__last_update:0
+msgid "Last Modified on"
+msgstr "Zadnje modificirano"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_uid:0
+msgid "Last Updated by"
+msgstr "Zadnji ažurirao"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_date:0
+msgid "Last Updated on"
+msgstr "Zadnje ažurirano"
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order_line
+msgid "Lines of Point of Sale"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,pos_order:0
+msgid "POS Order"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_1_product_template
+msgid "POS Product 1"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_2_product_template
+msgid "POS Product 2"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_3_product_template
+msgid "POS Product 3"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_4_product_template
+msgid "POS Product 4"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Payments"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order
+msgid "Point of Sale"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.config,display_price_with_taxes:0
+msgid "Price With Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:401
+#, python-format
+msgid "Pricelist Error"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,tax:0 view:website:point_of_sale.report_receipt
+msgid "Tax"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,name:0
+msgid "Tax Description"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form field:pos.order,taxes:0
+#: field:pos.order.line,tax_ids:0
+msgid "Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_account_fiscal_position_tax
+msgid "Taxes Fiscal Position"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Taxes detail"
+msgstr ""

+ 161 - 0
i18n/it.po

@@ -0,0 +1,161 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * pos_pricelist
+# 
+# Translators:
+# Paolo Valier, 2016
+msgid ""
+msgstr ""
+"Project-Id-Version: pos (8.0)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-05-01 05:28+0000\n"
+"PO-Revision-Date: 2016-05-01 08:45+0000\n"
+"Last-Translator: Paolo Valier\n"
+"Language-Team: Italian (http://www.transifex.com/oca/OCA-pos-8-0/language/it/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: it\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,amount:0 view:website:point_of_sale.report_receipt
+msgid "Amount"
+msgstr "Importo"
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:402
+#, python-format
+msgid ""
+"At least one pricelist has no active version ! Please create or activate "
+"one."
+msgstr "Almeno un Listino Prezzi non ha una versione attiva! Creare ed attivarne una."
+
+#. module: pos_pricelist
+#: field:pos.order.tax,base:0 view:website:point_of_sale.report_receipt
+msgid "Base"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:account.fiscal.position.tax,company_id:0
+msgid "Company"
+msgstr "Azienda"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_uid:0
+msgid "Created by"
+msgstr "Creato da"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_date:0
+msgid "Created on"
+msgstr "Creato il"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,display_name:0
+msgid "Display Name"
+msgstr "Nome da visualizzare"
+
+#. module: pos_pricelist
+#: help:pos.config,display_price_with_taxes:0
+msgid "Display Prices with taxes on POS"
+msgstr "Visualizza Prezzi con imposte nel POS"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,id:0
+msgid "ID"
+msgstr "ID"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,__last_update:0
+msgid "Last Modified on"
+msgstr "Ultima Modifica il"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_uid:0
+msgid "Last Updated by"
+msgstr "Ultimo Aggiornamento di"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_date:0
+msgid "Last Updated on"
+msgstr "Ultimo Aggiornamento il"
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order_line
+msgid "Lines of Point of Sale"
+msgstr "Righe del Punto Vendita"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,pos_order:0
+msgid "POS Order"
+msgstr "Ordine POS"
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_1_product_template
+msgid "POS Product 1"
+msgstr "Prodotto 1 POS"
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_2_product_template
+msgid "POS Product 2"
+msgstr "Prodotto 2 POS"
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_3_product_template
+msgid "POS Product 3"
+msgstr "Prodotto 3 POS"
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_4_product_template
+msgid "POS Product 4"
+msgstr "Prodotto 4 POS"
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Payments"
+msgstr "Pagamenti"
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order
+msgid "Point of Sale"
+msgstr "Punto Vendita"
+
+#. module: pos_pricelist
+#: field:pos.config,display_price_with_taxes:0
+msgid "Price With Taxes"
+msgstr "Prezzi con Imposte"
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:401
+#, python-format
+msgid "Pricelist Error"
+msgstr "Errore Listino di Vendita"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,tax:0 view:website:point_of_sale.report_receipt
+msgid "Tax"
+msgstr "Imposta"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,name:0
+msgid "Tax Description"
+msgstr "Descrizione Imposta"
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form field:pos.order,taxes:0
+#: field:pos.order.line,tax_ids:0
+msgid "Taxes"
+msgstr "Imposte"
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_account_fiscal_position_tax
+msgid "Taxes Fiscal Position"
+msgstr "Posizione Fiscale Imposte"
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Taxes detail"
+msgstr "Dettaglio Imposte"

+ 160 - 0
i18n/nl.po

@@ -0,0 +1,160 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * pos_pricelist
+# 
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: pos (8.0)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-08-15 21:29+0000\n"
+"PO-Revision-Date: 2016-04-06 15:48+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: Dutch (http://www.transifex.com/oca/OCA-pos-8-0/language/nl/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: nl\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,amount:0 view:website:point_of_sale.report_receipt
+msgid "Amount"
+msgstr ""
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:402
+#, python-format
+msgid ""
+"At least one pricelist has no active version ! Please create or activate "
+"one."
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,base:0 view:website:point_of_sale.report_receipt
+msgid "Base"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:account.fiscal.position.tax,company_id:0
+msgid "Company"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_uid:0
+msgid "Created by"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_date:0
+msgid "Created on"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,display_name:0
+msgid "Display Name"
+msgstr "Te tonen naam"
+
+#. module: pos_pricelist
+#: help:pos.config,display_price_with_taxes:0
+msgid "Display Prices with taxes on POS"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,id:0
+msgid "ID"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,__last_update:0
+msgid "Last Modified on"
+msgstr "Laatst bijgewerkt op"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_uid:0
+msgid "Last Updated by"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_date:0
+msgid "Last Updated on"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order_line
+msgid "Lines of Point of Sale"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,pos_order:0
+msgid "POS Order"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_1_product_template
+msgid "POS Product 1"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_2_product_template
+msgid "POS Product 2"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_3_product_template
+msgid "POS Product 3"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_4_product_template
+msgid "POS Product 4"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Payments"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order
+msgid "Point of Sale"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.config,display_price_with_taxes:0
+msgid "Price With Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:401
+#, python-format
+msgid "Pricelist Error"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,tax:0 view:website:point_of_sale.report_receipt
+msgid "Tax"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,name:0
+msgid "Tax Description"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form field:pos.order,taxes:0
+#: field:pos.order.line,tax_ids:0
+msgid "Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_account_fiscal_position_tax
+msgid "Taxes Fiscal Position"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Taxes detail"
+msgstr ""

+ 145 - 0
i18n/nl_NL.po

@@ -0,0 +1,145 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * pos_pricelist
+# 
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: pos (8.0)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-04-15 14:51+0000\n"
+"PO-Revision-Date: 2016-04-06 15:48+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: Dutch (Netherlands) (http://www.transifex.com/oca/OCA-pos-8-0/language/nl_NL/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: nl_NL\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,amount:0 view:website:point_of_sale.report_receipt
+msgid "Amount"
+msgstr ""
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:402
+#, python-format
+msgid ""
+"At least one pricelist has no active version ! Please create or activate "
+"one."
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,base:0 view:website:point_of_sale.report_receipt
+msgid "Base"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_uid:0
+msgid "Created by"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_date:0
+msgid "Created on"
+msgstr ""
+
+#. module: pos_pricelist
+#: help:pos.config,display_price_with_taxes:0
+msgid "Display Prices with taxes on POS"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,id:0
+msgid "ID"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_uid:0
+msgid "Last Updated by"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_date:0
+msgid "Last Updated on"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order_line
+msgid "Lines of Point of Sale"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,pos_order:0
+msgid "POS Order"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_1_product_template
+msgid "POS Product 1"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_2_product_template
+msgid "POS Product 2"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_3_product_template
+msgid "POS Product 3"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_4_product_template
+msgid "POS Product 4"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Payments"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order
+msgid "Point of Sale"
+msgstr "Kassa"
+
+#. module: pos_pricelist
+#: field:pos.config,display_price_with_taxes:0
+msgid "Price With Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:401
+#, python-format
+msgid "Pricelist Error"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,tax:0 view:website:point_of_sale.report_receipt
+msgid "Tax"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,name:0
+msgid "Tax Description"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form field:pos.order,taxes:0
+#: field:pos.order.line,tax_ids:0
+msgid "Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_account_fiscal_position_tax
+msgid "Taxes Fiscal Position"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Taxes detail"
+msgstr ""

+ 141 - 0
i18n/pos_pricelist.pot

@@ -0,0 +1,141 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+#	* pos_pricelist
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 8.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2015-07-24 14:44+0000\n"
+"PO-Revision-Date: 2015-07-24 14:44+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_pricelist
+#: field:pos.order.tax,amount:0
+#: view:website:point_of_sale.report_receipt
+msgid "Amount"
+msgstr ""
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:386
+#, python-format
+msgid "At least one pricelist has no active version ! Please create or activate one."
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,base:0
+#: view:website:point_of_sale.report_receipt
+msgid "Base"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_uid:0
+msgid "Created by"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_date:0
+msgid "Created on"
+msgstr ""
+
+#. module: pos_pricelist
+#: help:pos.config,display_price_with_taxes:0
+msgid "Display Prices with taxes on POS"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,id:0
+msgid "ID"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_uid:0
+msgid "Last Updated by"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_date:0
+msgid "Last Updated on"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order_line
+msgid "Lines of Point of Sale"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,pos_order:0
+msgid "POS Order"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_1_product_template
+msgid "POS Product 1"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_2_product_template
+msgid "POS Product 2"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_3_product_template
+msgid "POS Product 3"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_4_product_template
+msgid "POS Product 4"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Payments"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order
+msgid "Point of Sale"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.config,display_price_with_taxes:0
+msgid "Price With Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:385
+#, python-format
+msgid "Pricelist Error"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,tax:0
+#: view:website:point_of_sale.report_receipt
+msgid "Tax"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,name:0
+msgid "Tax Description"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+#: field:pos.order,taxes:0
+#: field:pos.order.line,tax_ids:0
+msgid "Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Taxes detail"
+msgstr ""
+

+ 160 - 0
i18n/pt.po

@@ -0,0 +1,160 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * pos_pricelist
+# 
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: pos (8.0)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-08-15 21:29+0000\n"
+"PO-Revision-Date: 2016-04-06 15:48+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: Portuguese (http://www.transifex.com/oca/OCA-pos-8-0/language/pt/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: pt\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,amount:0 view:website:point_of_sale.report_receipt
+msgid "Amount"
+msgstr ""
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:402
+#, python-format
+msgid ""
+"At least one pricelist has no active version ! Please create or activate "
+"one."
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,base:0 view:website:point_of_sale.report_receipt
+msgid "Base"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:account.fiscal.position.tax,company_id:0
+msgid "Company"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_uid:0
+msgid "Created by"
+msgstr "Criado por"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_date:0
+msgid "Created on"
+msgstr "Criado em"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,display_name:0
+msgid "Display Name"
+msgstr ""
+
+#. module: pos_pricelist
+#: help:pos.config,display_price_with_taxes:0
+msgid "Display Prices with taxes on POS"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,id:0
+msgid "ID"
+msgstr "ID"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,__last_update:0
+msgid "Last Modified on"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_uid:0
+msgid "Last Updated by"
+msgstr "Atualizado pela última vez por"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_date:0
+msgid "Last Updated on"
+msgstr "Atualizado pela última vez em"
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order_line
+msgid "Lines of Point of Sale"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,pos_order:0
+msgid "POS Order"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_1_product_template
+msgid "POS Product 1"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_2_product_template
+msgid "POS Product 2"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_3_product_template
+msgid "POS Product 3"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_4_product_template
+msgid "POS Product 4"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Payments"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order
+msgid "Point of Sale"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.config,display_price_with_taxes:0
+msgid "Price With Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:401
+#, python-format
+msgid "Pricelist Error"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,tax:0 view:website:point_of_sale.report_receipt
+msgid "Tax"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,name:0
+msgid "Tax Description"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form field:pos.order,taxes:0
+#: field:pos.order.line,tax_ids:0
+msgid "Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_account_fiscal_position_tax
+msgid "Taxes Fiscal Position"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Taxes detail"
+msgstr ""

+ 160 - 0
i18n/pt_BR.po

@@ -0,0 +1,160 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * pos_pricelist
+# 
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: pos (8.0)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-09-18 01:07+0000\n"
+"PO-Revision-Date: 2016-04-06 15:48+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: Portuguese (Brazil) (http://www.transifex.com/oca/OCA-pos-8-0/language/pt_BR/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: pt_BR\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,amount:0 view:website:point_of_sale.report_receipt
+msgid "Amount"
+msgstr ""
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:402
+#, python-format
+msgid ""
+"At least one pricelist has no active version ! Please create or activate "
+"one."
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,base:0 view:website:point_of_sale.report_receipt
+msgid "Base"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:account.fiscal.position.tax,company_id:0
+msgid "Company"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_uid:0
+msgid "Created by"
+msgstr "Criado por"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_date:0
+msgid "Created on"
+msgstr "Criado em"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,display_name:0
+msgid "Display Name"
+msgstr "Nome para Mostrar"
+
+#. module: pos_pricelist
+#: help:pos.config,display_price_with_taxes:0
+msgid "Display Prices with taxes on POS"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,id:0
+msgid "ID"
+msgstr "Identificação"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,__last_update:0
+msgid "Last Modified on"
+msgstr "Última atualização em"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_uid:0
+msgid "Last Updated by"
+msgstr "Última atualização por"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_date:0
+msgid "Last Updated on"
+msgstr "Última atualização em"
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order_line
+msgid "Lines of Point of Sale"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,pos_order:0
+msgid "POS Order"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_1_product_template
+msgid "POS Product 1"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_2_product_template
+msgid "POS Product 2"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_3_product_template
+msgid "POS Product 3"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_4_product_template
+msgid "POS Product 4"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Payments"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order
+msgid "Point of Sale"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.config,display_price_with_taxes:0
+msgid "Price With Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:401
+#, python-format
+msgid "Pricelist Error"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,tax:0 view:website:point_of_sale.report_receipt
+msgid "Tax"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,name:0
+msgid "Tax Description"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form field:pos.order,taxes:0
+#: field:pos.order.line,tax_ids:0
+msgid "Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_account_fiscal_position_tax
+msgid "Taxes Fiscal Position"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Taxes detail"
+msgstr ""

+ 160 - 0
i18n/pt_PT.po

@@ -0,0 +1,160 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * pos_pricelist
+# 
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: pos (8.0)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-08-15 21:29+0000\n"
+"PO-Revision-Date: 2016-04-06 15:48+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: Portuguese (Portugal) (http://www.transifex.com/oca/OCA-pos-8-0/language/pt_PT/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: pt_PT\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,amount:0 view:website:point_of_sale.report_receipt
+msgid "Amount"
+msgstr ""
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:402
+#, python-format
+msgid ""
+"At least one pricelist has no active version ! Please create or activate "
+"one."
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,base:0 view:website:point_of_sale.report_receipt
+msgid "Base"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:account.fiscal.position.tax,company_id:0
+msgid "Company"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_uid:0
+msgid "Created by"
+msgstr "Criado por"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_date:0
+msgid "Created on"
+msgstr "Criado em"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,display_name:0
+msgid "Display Name"
+msgstr ""
+
+#. module: pos_pricelist
+#: help:pos.config,display_price_with_taxes:0
+msgid "Display Prices with taxes on POS"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,id:0
+msgid "ID"
+msgstr "ID"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,__last_update:0
+msgid "Last Modified on"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_uid:0
+msgid "Last Updated by"
+msgstr "Atualizado pela última vez por"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_date:0
+msgid "Last Updated on"
+msgstr "Atualizado pela última vez em"
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order_line
+msgid "Lines of Point of Sale"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,pos_order:0
+msgid "POS Order"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_1_product_template
+msgid "POS Product 1"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_2_product_template
+msgid "POS Product 2"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_3_product_template
+msgid "POS Product 3"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_4_product_template
+msgid "POS Product 4"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Payments"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order
+msgid "Point of Sale"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.config,display_price_with_taxes:0
+msgid "Price With Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:401
+#, python-format
+msgid "Pricelist Error"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,tax:0 view:website:point_of_sale.report_receipt
+msgid "Tax"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,name:0
+msgid "Tax Description"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form field:pos.order,taxes:0
+#: field:pos.order.line,tax_ids:0
+msgid "Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_account_fiscal_position_tax
+msgid "Taxes Fiscal Position"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Taxes detail"
+msgstr ""

+ 161 - 0
i18n/sl.po

@@ -0,0 +1,161 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * pos_pricelist
+# 
+# Translators:
+# Matjaž Mozetič <m.mozetic@matmoz.si>, 2016
+msgid ""
+msgstr ""
+"Project-Id-Version: pos (8.0)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-05-01 05:28+0000\n"
+"PO-Revision-Date: 2016-05-01 05:38+0000\n"
+"Last-Translator: Matjaž Mozetič <m.mozetic@matmoz.si>\n"
+"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-pos-8-0/language/sl/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: sl\n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,amount:0 view:website:point_of_sale.report_receipt
+msgid "Amount"
+msgstr "Znesek"
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:402
+#, python-format
+msgid ""
+"At least one pricelist has no active version ! Please create or activate "
+"one."
+msgstr "Vsaj en cenik nima aktivne verzije! Ustvarite jo ali aktivirajte."
+
+#. module: pos_pricelist
+#: field:pos.order.tax,base:0 view:website:point_of_sale.report_receipt
+msgid "Base"
+msgstr "Osnova"
+
+#. module: pos_pricelist
+#: field:account.fiscal.position.tax,company_id:0
+msgid "Company"
+msgstr "Družba"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_uid:0
+msgid "Created by"
+msgstr "Ustvaril"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_date:0
+msgid "Created on"
+msgstr "Ustvarjeno"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,display_name:0
+msgid "Display Name"
+msgstr "Prikazni naziv"
+
+#. module: pos_pricelist
+#: help:pos.config,display_price_with_taxes:0
+msgid "Display Prices with taxes on POS"
+msgstr "Prikaži cene z davki v POS"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,id:0
+msgid "ID"
+msgstr "ID"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,__last_update:0
+msgid "Last Modified on"
+msgstr "Zadnjič spremenjeno"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_uid:0
+msgid "Last Updated by"
+msgstr "Zadnji posodobil"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_date:0
+msgid "Last Updated on"
+msgstr "Zadnjič posodobljeno"
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order_line
+msgid "Lines of Point of Sale"
+msgstr "Postavke prodajne točke"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,pos_order:0
+msgid "POS Order"
+msgstr "POS nalog"
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_1_product_template
+msgid "POS Product 1"
+msgstr "POS proizvod 1"
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_2_product_template
+msgid "POS Product 2"
+msgstr "POS proizvod 2"
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_3_product_template
+msgid "POS Product 3"
+msgstr "POS proizvod 3"
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_4_product_template
+msgid "POS Product 4"
+msgstr "POS proizvod 4"
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Payments"
+msgstr "Plačila"
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order
+msgid "Point of Sale"
+msgstr "POS prodajna točka"
+
+#. module: pos_pricelist
+#: field:pos.config,display_price_with_taxes:0
+msgid "Price With Taxes"
+msgstr "Cena z davki"
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:401
+#, python-format
+msgid "Pricelist Error"
+msgstr "Napaka pri ceniku"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,tax:0 view:website:point_of_sale.report_receipt
+msgid "Tax"
+msgstr "Davek"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,name:0
+msgid "Tax Description"
+msgstr "Opis davka"
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form field:pos.order,taxes:0
+#: field:pos.order.line,tax_ids:0
+msgid "Taxes"
+msgstr "Davki"
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_account_fiscal_position_tax
+msgid "Taxes Fiscal Position"
+msgstr "Fiskalni položaj davkov"
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Taxes detail"
+msgstr "Podrobnosti davkov"

+ 160 - 0
i18n/tr.po

@@ -0,0 +1,160 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * pos_pricelist
+# 
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: pos (8.0)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-08-15 21:29+0000\n"
+"PO-Revision-Date: 2016-04-06 15:48+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: Turkish (http://www.transifex.com/oca/OCA-pos-8-0/language/tr/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: tr\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,amount:0 view:website:point_of_sale.report_receipt
+msgid "Amount"
+msgstr ""
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:402
+#, python-format
+msgid ""
+"At least one pricelist has no active version ! Please create or activate "
+"one."
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,base:0 view:website:point_of_sale.report_receipt
+msgid "Base"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:account.fiscal.position.tax,company_id:0
+msgid "Company"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_uid:0
+msgid "Created by"
+msgstr "Oluşturan"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_date:0
+msgid "Created on"
+msgstr "Oluşturuldu"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,display_name:0
+msgid "Display Name"
+msgstr ""
+
+#. module: pos_pricelist
+#: help:pos.config,display_price_with_taxes:0
+msgid "Display Prices with taxes on POS"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,id:0
+msgid "ID"
+msgstr "ID"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,__last_update:0
+msgid "Last Modified on"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_uid:0
+msgid "Last Updated by"
+msgstr "Son güncelleyen"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_date:0
+msgid "Last Updated on"
+msgstr "Son güncelleme"
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order_line
+msgid "Lines of Point of Sale"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,pos_order:0
+msgid "POS Order"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_1_product_template
+msgid "POS Product 1"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_2_product_template
+msgid "POS Product 2"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_3_product_template
+msgid "POS Product 3"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_4_product_template
+msgid "POS Product 4"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Payments"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order
+msgid "Point of Sale"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.config,display_price_with_taxes:0
+msgid "Price With Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:401
+#, python-format
+msgid "Pricelist Error"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,tax:0 view:website:point_of_sale.report_receipt
+msgid "Tax"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,name:0
+msgid "Tax Description"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form field:pos.order,taxes:0
+#: field:pos.order.line,tax_ids:0
+msgid "Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_account_fiscal_position_tax
+msgid "Taxes Fiscal Position"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Taxes detail"
+msgstr ""

+ 160 - 0
i18n/zh_CN.po

@@ -0,0 +1,160 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * pos_pricelist
+# 
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: pos (8.0)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-09-18 01:07+0000\n"
+"PO-Revision-Date: 2016-04-06 15:48+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: Chinese (China) (http://www.transifex.com/oca/OCA-pos-8-0/language/zh_CN/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: zh_CN\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,amount:0 view:website:point_of_sale.report_receipt
+msgid "Amount"
+msgstr ""
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:402
+#, python-format
+msgid ""
+"At least one pricelist has no active version ! Please create or activate "
+"one."
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,base:0 view:website:point_of_sale.report_receipt
+msgid "Base"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:account.fiscal.position.tax,company_id:0
+msgid "Company"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_uid:0
+msgid "Created by"
+msgstr "创建者"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,create_date:0
+msgid "Created on"
+msgstr "创建时间"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,display_name:0
+msgid "Display Name"
+msgstr ""
+
+#. module: pos_pricelist
+#: help:pos.config,display_price_with_taxes:0
+msgid "Display Prices with taxes on POS"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,id:0
+msgid "ID"
+msgstr "ID"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,__last_update:0
+msgid "Last Modified on"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_uid:0
+msgid "Last Updated by"
+msgstr "最后更新者"
+
+#. module: pos_pricelist
+#: field:pos.order.tax,write_date:0
+msgid "Last Updated on"
+msgstr "上次更新日期"
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order_line
+msgid "Lines of Point of Sale"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,pos_order:0
+msgid "POS Order"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_1_product_template
+msgid "POS Product 1"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_2_product_template
+msgid "POS Product 2"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_3_product_template
+msgid "POS Product 3"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:product.template,name:pos_pricelist.pos_product_product_4_product_template
+msgid "POS Product 4"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Payments"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_pos_order
+msgid "Point of Sale"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.config,display_price_with_taxes:0
+msgid "Price With Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#. openerp-web
+#: code:addons/pos_pricelist/static/src/js/models.js:401
+#, python-format
+msgid "Pricelist Error"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,tax:0 view:website:point_of_sale.report_receipt
+msgid "Tax"
+msgstr ""
+
+#. module: pos_pricelist
+#: field:pos.order.tax,name:0
+msgid "Tax Description"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form field:pos.order,taxes:0
+#: field:pos.order.line,tax_ids:0
+msgid "Taxes"
+msgstr ""
+
+#. module: pos_pricelist
+#: model:ir.model,name:pos_pricelist.model_account_fiscal_position_tax
+msgid "Taxes Fiscal Position"
+msgstr ""
+
+#. module: pos_pricelist
+#: view:pos.order:pos_pricelist.view_pos_pos_form
+msgid "Taxes detail"
+msgstr ""

+ 30 - 0
migrations/8.0.1.1.0/post-migration.py

@@ -0,0 +1,30 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+#    Copyright (C) 2015 Aserti Global Solutions (http://www.aserti.es/).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as published
+#    by the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+__name__ = "Copy the product taxes to the pos.line"
+
+
+def migrate(cr, version):
+        cr.execute("""insert into pline_tax_rel
+                    select l.id, t.id
+                    from pos_order_line l
+                    join pos_order o on l.order_id = o.id
+                    join product_taxes_rel rel on rel.prod_id = l.product_id
+                    join account_tax t on rel.tax_id = t.id
+                    where t.company_id = o.company_id""")

+ 8 - 0
models/__init__.py

@@ -0,0 +1,8 @@
+# -*- coding: utf-8 -*-
+# © 2015 Taktik (http://www.taktik.be) - Adil Houmadi <ah@taktik.be>
+# © 2016 Serv. Tecnol. Avanzados - Pedro M. Baeza
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+from . import account_fiscal_position
+from . import pos_pricelist
+from . import point_of_sale

BIN
models/__init__.pyc


+ 12 - 0
models/account_fiscal_position.py

@@ -0,0 +1,12 @@
+# -*- coding: utf-8 -*-
+# © 2016 Serv. Tecnol. Avanzados - Pedro M. Baeza
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+from openerp import fields, models
+
+
+class AccountFiscalPositionTax(models.Model):
+    _inherit = "account.fiscal.position.tax"
+
+    company_id = fields.Many2one(
+        related="position_id.company_id", string="Company")

BIN
models/account_fiscal_position.pyc


+ 160 - 0
models/point_of_sale.py

@@ -0,0 +1,160 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+#    Copyright (C) 2015 Aserti Global Solutions (http://www.aserti.es/).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as published
+#    by the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+
+from openerp import models, fields, api
+from openerp.addons import decimal_precision as dp
+import logging
+_logger = logging.getLogger(__name__)
+
+
+class PosOrderTax(models.Model):
+    _name = 'pos.order.tax'
+
+    pos_order = fields.Many2one('pos.order', string='POS Order',
+                                ondelete='cascade', index=True)
+    tax = fields.Many2one('account.tax', string='Tax')
+    name = fields.Char(string='Tax Description', required=True)
+    base = fields.Float(string='Base', digits=dp.get_precision('Account'))
+    amount = fields.Float(string='Amount', digits=dp.get_precision('Account'))
+
+
+class PosOrderLine(models.Model):
+    _inherit = "pos.order.line"
+
+    @api.multi
+    def _compute_taxes(self):
+        res = {
+            'total': 0,
+            'total_included': 0,
+            'taxes': [],
+        }
+        for line in self:
+            price = line.price_unit * (1 - (line.discount or 0.0) / 100.0)
+            taxes = line.tax_ids.compute_all(
+                price, line.qty, product=line.product_id,
+                partner=line.order_id.partner_id)
+            res['total'] += taxes['total']
+            res['total_included'] += taxes['total_included']
+            res['taxes'] += taxes['taxes']
+        return res
+
+    @api.one
+    @api.depends('tax_ids', 'qty', 'price_unit',
+                 'product_id', 'discount', 'order_id.partner_id')
+    def _amount_line_all(self):
+        taxes = self._compute_taxes()
+        self.price_subtotal = taxes['total']
+        self.price_subtotal_incl = taxes['total_included']
+
+    tax_ids = fields.Many2many(
+        'account.tax', 'pline_tax_rel', 'pos_line_id', 'tax_id',
+        "Taxes", domain=[('type_tax_use', '=', 'sale')])
+    price_subtotal = fields.Float(compute="_amount_line_all", store=True)
+    price_subtotal_incl = fields.Float(compute="_amount_line_all", store=True)
+
+
+class PosOrder(models.Model):
+    _inherit = "pos.order"
+
+    taxes = fields.One2many(comodel_name='pos.order.tax',
+                            inverse_name='pos_order', readonly=True)
+
+    @api.model
+    def _amount_line_tax(self, line):
+        price = line.price_unit * (1 - (line.discount or 0.0) / 100.0)
+        taxes = line.tax_ids.compute_all(
+            price, line.qty, product=line.product_id,
+            partner=line.order_id.partner_id)['taxes']
+        val = 0.0
+        for c in taxes:
+            val += c.get('amount', 0.0)
+        return val
+
+    @api.multi
+    def _tax_list_get(self):
+        agg_taxes = {}
+        tax_lines = []
+        for order in self:
+            for line in order.lines:
+                tax_lines.append({
+                    'base': line.price_subtotal,
+                    'taxes': line._compute_taxes()['taxes']
+                })
+
+        for tax_line in tax_lines:
+            base = tax_line['base']
+            for tax in tax_line['taxes']:
+                tax_id = str(tax['id'])
+                if tax_id in agg_taxes:
+                    agg_taxes[tax_id]['base'] += base
+                    agg_taxes[tax_id]['amount'] += tax['amount']
+                else:
+                    agg_taxes[tax_id] = {
+                        'tax_id': tax_id,
+                        'name': tax['name'],
+                        'base': base,
+                        'amount': tax['amount'],
+                    }
+        return agg_taxes
+
+    @api.multi
+    def compute_tax_detail(self):
+        taxes_to_delete = False
+        for order in self:
+            taxes_to_delete = self.env['pos.order.tax'].search(
+                [('pos_order', '=', order.id)])
+            # Update order taxes list
+            for key, tax in order._tax_list_get().iteritems():
+                current = taxes_to_delete.filtered(
+                    lambda r: r.tax.id == tax['tax_id'])
+                if current:
+                    current.write({
+                        'base': tax['base'],
+                        'amount': tax['amount'],
+                    })
+                    taxes_to_delete -= current
+                else:
+                    self.env['pos.order.tax'].create({
+                        'pos_order': order.id,
+                        'tax': tax['tax_id'],
+                        'name': tax['name'],
+                        'base': tax['base'],
+                        'amount': tax['amount'],
+                    })
+        if taxes_to_delete:
+            taxes_to_delete.unlink()
+
+    @api.multi
+    def action_paid(self):
+        result = super(PosOrder, self).action_paid()
+        self.compute_tax_detail()
+        return result
+
+    @api.model
+    def _install_tax_detail(self):
+        """Create tax details to pos.order's already paid, done or invoiced.
+        """
+        # Find orders with state : paid, done or invoiced
+        orders = self.search([('state', 'in', ('paid', 'done', 'invoiced')),
+                              ('taxes', '=', False)])
+        # Compute tax detail
+        orders.compute_tax_detail()
+        _logger.info("%d orders computed installing module.", len(orders))

BIN
models/point_of_sale.pyc


+ 28 - 0
models/pos_pricelist.py

@@ -0,0 +1,28 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+# Point Of Sale - Pricelist for POS Odoo
+# Copyright (C) 2015 Taktik (http://www.taktik.be)
+# @author Adil Houmadi <ah@taktik.be>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Affero General Public License for more details.
+# You should have received a copy of the GNU Affero General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+from openerp import models, fields
+
+
+class PosPriceListConfig(models.Model):
+    _inherit = 'pos.config'
+
+    display_price_with_taxes = fields.Boolean(
+        string='Price With Taxes',
+        help="Display Prices with taxes on POS"
+    )

BIN
models/pos_pricelist.pyc


+ 36 - 0
report/report_receipt.xml

@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+<data>
+
+<template id="report_receipt"
+          inherit_id="point_of_sale.report_receipt"
+          name="Add taxes detail">
+    <xpath expr="//div[@class='page']" position="inside">
+        <table class="table table-condensed">
+            <thead>
+                <tr>
+                    <th>Tax</th>
+                    <th class="text-right">Base</th>
+                    <th class="text-right">Amount</th>
+                </tr>
+            </thead>
+            <tbody>
+                <tr t-foreach="o.taxes" t-as="tax">
+                    <td>
+                        <span t-esc="tax.name"/>
+                    </td>
+                    <td class="text-right">
+                        <span t-esc="formatLang(tax.base, currency_obj=res_company.currency_id)"/>
+                    </td>
+                    <td class="text-right">
+                        <span t-esc="formatLang(tax.amount, currency_obj=res_company.currency_id)"/>
+                    </td>
+                </tr>
+            </tbody>
+        </table>
+    </xpath>
+</template>
+
+
+</data>
+</openerp>

+ 13 - 0
security/account_fiscal_position_security.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<openerp>
+<data noupdate="1">
+
+    <record id="account_fiscal_position_tax_multi_company_rule" model="ir.rule">
+        <field name="name">Account fiscal position tax multi-company</field>
+        <field name="model_id" ref="model_account_fiscal_position_tax"/>
+        <field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'child_of', [user.company_id.id])]</field>
+    </record>
+
+</data>
+</openerp>

+ 3 - 0
security/ir.model.access.csv

@@ -0,0 +1,3 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_pos_order_tax,pos.order.tax,model_pos_order_tax,point_of_sale.group_pos_user,1,0,0,0
+access_pos_order_tax_manager,pos.order.tax manager,model_pos_order_tax,point_of_sale.group_pos_manager,1,1,1,1

+ 150 - 0
static/src/css/style.css

@@ -0,0 +1,150 @@
+/******************************************************************************
+*    Point Of Sale - Pricelist for POS Odoo
+*    Copyright (C) 2014 Taktik (http://www.taktik.be)
+*    @author Adil Houmadi <ah@taktik.be>
+*
+*    This program is free software: you can redistribute it and/or modify
+*    it under the terms of the GNU Affero General Public License as
+*    published by the Free Software Foundation, either version 3 of the
+*    License, or (at your option) any later version.
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU Affero General Public License for more details.
+*    You should have received a copy of the GNU Affero General Public License
+*    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*
+******************************************************************************/
+.popover {
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: 1060;
+  display: none;
+  max-width: 276px;
+  padding: 1px;
+  text-align: left;
+  white-space: normal;
+  background-color: #fff;
+  -webkit-background-clip: padding-box;
+          background-clip: padding-box;
+  border: 1px solid #ccc;
+  border: 1px solid rgba(0, 0, 0, .2);
+  border-radius: 6px;
+  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
+          box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
+}
+.popover-title {
+  padding: 8px 14px;
+  margin: 0;
+  font-size: 14px;
+  font-weight: normal;
+  line-height: 18px;
+  background-color: #f7f7f7;
+  border-bottom: 1px solid #ebebeb;
+  border-radius: 5px 5px 0 0;
+}
+
+/* ToolTip */
+.tooltip {
+  position: absolute;
+  z-index: 1070;
+  display: block;
+  font-size: 12px;
+  line-height: 1.4;
+  visibility: visible;
+  filter: alpha(opacity=0);
+  opacity: 0;
+}
+.tooltip.in {
+  filter: alpha(opacity=90);
+  opacity: .9;
+}
+.tooltip.top {
+  padding: 5px 0;
+  margin-top: -3px;
+}
+.tooltip.right {
+  padding: 0 5px;
+  margin-left: 3px;
+}
+.tooltip.bottom {
+  padding: 5px 0;
+  margin-top: 3px;
+}
+.tooltip.left {
+  padding: 0 5px;
+  margin-left: -3px;
+}
+.tooltip-inner {
+  max-width: 200px;
+  padding: 3px 8px;
+  color: #fff;
+  text-align: center;
+  text-decoration: none;
+  background-color: #000;
+  border-radius: 4px;
+}
+.tooltip-arrow {
+  position: absolute;
+  width: 0;
+  height: 0;
+  border-color: transparent;
+  border-style: solid;
+}
+.tooltip.top .tooltip-arrow {
+  bottom: 0;
+  left: 50%;
+  margin-left: -5px;
+  border-width: 5px 5px 0;
+  border-top-color: #000;
+}
+.tooltip.top-left .tooltip-arrow {
+  bottom: 0;
+  left: 5px;
+  border-width: 5px 5px 0;
+  border-top-color: #000;
+}
+.tooltip.top-right .tooltip-arrow {
+  right: 5px;
+  bottom: 0;
+  border-width: 5px 5px 0;
+  border-top-color: #000;
+}
+.tooltip.right .tooltip-arrow {
+  top: 50%;
+  left: 0;
+  margin-top: -5px;
+  border-width: 5px 5px 5px 0;
+  border-right-color: #000;
+}
+.tooltip.left .tooltip-arrow {
+  top: 50%;
+  right: 0;
+  margin-top: -5px;
+  border-width: 5px 0 5px 5px;
+  border-left-color: #000;
+}
+.tooltip.bottom .tooltip-arrow {
+  top: 0;
+  left: 50%;
+  margin-left: -5px;
+  border-width: 0 5px 5px;
+  border-bottom-color: #000;
+}
+.tooltip.bottom-left .tooltip-arrow {
+  top: 0;
+  left: 5px;
+  border-width: 0 5px 5px;
+  border-bottom-color: #000;
+}
+.tooltip.bottom-right .tooltip-arrow {
+  top: 0;
+  right: 5px;
+  border-width: 0 5px 5px;
+  border-bottom-color: #000;
+}
+.pos .pos-right-align {
+    text-align: right;
+    vertical-align: top;
+}

+ 195 - 0
static/src/js/db.js

@@ -0,0 +1,195 @@
+/******************************************************************************
+ *    Point Of Sale - Pricelist for POS Odoo
+ *    Copyright (C) 2014 Taktik (http://www.taktik.be)
+ *    @author Adil Houmadi <ah@taktik.be>
+ *
+ *    This program is free software: you can redistribute it and/or modify
+ *    it under the terms of the GNU Affero General Public License as
+ *    published by the Free Software Foundation, either version 3 of the
+ *    License, or (at your option) any later version.
+ *    This program is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *    GNU Affero General Public License for more details.
+ *    You should have received a copy of the GNU Affero General Public License
+ *    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ ******************************************************************************/
+function pos_pricelist_db(instance, module) {
+
+    module.PosDB = module.PosDB.extend({
+        init: function (options) {
+            options = options || {};
+            this._super(options);
+            this.pricelist_by_id = {};
+            this.pricelist_version_by_id = {};
+            this.pricelist_item_by_id = {};
+            this.pricelist_item_sorted = [];
+            this.product_category_by_id = {};
+            this.product_category_children = {};
+            this.product_category_ancestors = {};
+            this.product_price_type_by_id = {};
+            this.supplierinfo_by_id = {};
+            this.pricelist_partnerinfo_by_id = {};
+            this.fiscal_position_tax_by_id = {};
+        },
+        add_fiscal_position_taxes: function (fiscal_position_taxes) {
+            if (!(fiscal_position_taxes instanceof Array)) {
+                fiscal_position_taxes = [fiscal_position_taxes];
+            }
+            var fiscal_position_tax;
+            while (fiscal_position_tax = fiscal_position_taxes.pop()) {
+                this.fiscal_position_tax_by_id[fiscal_position_tax.id]
+                    = fiscal_position_tax;
+            }
+        },
+        add_pricelist_partnerinfo: function (pricelist_partnerinfos) {
+            if (!(pricelist_partnerinfos instanceof Array)) {
+                pricelist_partnerinfos = [pricelist_partnerinfos];
+            }
+            var partner_info;
+            while (partner_info = pricelist_partnerinfos.pop()) {
+                this.pricelist_partnerinfo_by_id[partner_info.id]
+                    = partner_info;
+            }
+        },
+        add_supplierinfo: function (supplierinfos) {
+            if (!(supplierinfos instanceof Array)) {
+                supplierinfos = [supplierinfos];
+            }
+            var supplier_info;
+            while (supplier_info = supplierinfos.pop()) {
+                this.supplierinfo_by_id[supplier_info.id] = supplier_info;
+            }
+        },
+        add_pricelists: function (pricelists) {
+            if (!(pricelists instanceof Array)) {
+                pricelists = [pricelists];
+            }
+            var pricelist;
+            while (pricelist = pricelists.pop()) {
+                this.pricelist_by_id[pricelist.id] = pricelist;
+            }
+        },
+        add_pricelist_versions: function (versions) {
+            if (!(versions instanceof Array)) {
+                versions = [versions];
+            }
+            var version;
+            while (version = versions.pop()) {
+                this.pricelist_version_by_id[version.id] = version;
+            }
+        },
+        add_pricelist_items: function (items) {
+            if (!(items instanceof Array)) {
+                items = [items];
+            }
+            var item;
+            while (item = items.pop()) {
+                this.pricelist_item_by_id[item.id] = item;
+            }
+            this.pricelist_item_sorted = this._items_sorted();
+        },
+        add_price_types: function (price_types) {
+            if (!(price_types instanceof Array)) {
+                price_types = [price_types];
+            }
+            var ptype;
+            while (ptype = price_types.pop()) {
+                this.product_price_type_by_id[ptype.id] = ptype;
+            }
+        },
+        add_product_categories: function (categories) {
+            if (!(categories instanceof Array)) {
+                categories = [categories];
+            }
+            var category;
+            while (category = categories.pop()) {
+                this.product_category_by_id[category.id] = category;
+                this.product_category_children[category.id] =
+                    category.child_id;
+            }
+            this._make_ancestors();
+        },
+        _make_ancestors: function () {
+            var category, ancestors;
+            for (var id in this.product_category_by_id) {
+                category = this.product_category_by_id[id];
+                ancestors = [];
+                while (category.parent_id) {
+                    ancestors.push(category.parent_id[0]);
+                    category = category.parent_id ?
+                        this.product_category_by_id[category.parent_id[0]] :
+                        false;
+                }
+                this.product_category_ancestors[parseInt(id)] = ancestors;
+            }
+        },
+        _items_sorted: function () {
+            var items = this.pricelist_item_by_id;
+            var list = [];
+            for (var key in items) {
+                list.push(items[key]);
+            }
+            list.sort(function (a, b) {
+                if (a.sequence < b.sequence) return -1;
+                if (a.sequence > b.sequence) return 1;
+                if (a.min_quantity > b.min_quantity) return -1;
+                if (a.min_quantity < b.min_quantity) return 1;
+                return 0;
+            });
+            return list;
+        },
+        map_tax: function (fiscal_position_id, taxes_ids) {
+            var taxes = [];
+            var found_taxes = {};
+            for (var id in this.fiscal_position_tax_by_id) {
+                var fp_line = this.fiscal_position_tax_by_id[id];
+                if (fp_line && fp_line.position_id &&
+                		fp_line.position_id[0] == fiscal_position_id &&
+                		taxes_ids.indexOf(fp_line.tax_src_id[0]) > -1) {
+                    taxes.push(fp_line.tax_dest_id[0]);
+                    found_taxes[fp_line.tax_src_id[0]] = true;
+                }
+            }
+            for (var i = 0, len = taxes_ids.length; i < len; i++) {
+            	var tax_id = taxes_ids[i];
+            	if (!(tax_id in found_taxes)) {
+            		taxes.push(tax_id);
+            	}
+            }
+            return taxes;
+        },
+        add_products: function (products) {
+            this._super(products);
+            var pos = posmodel.pos_widget.pos;
+            for (var id in this.product_by_id) {
+                if (this.product_by_id.hasOwnProperty(id)) {
+                    var product = this.product_by_id[id];
+                    var orderline = new openerp.point_of_sale.Orderline({}, {
+                        pos: pos,
+                        order: null,
+                        product: product,
+                        price: product.price
+                    });
+                    var prices = orderline.get_all_prices();
+                    this.product_by_id[id].price_with_taxes
+                        = prices['priceWithTax']
+                }
+            }
+        },
+        find_product_rules: function (product) {
+            var len = this.pricelist_item_sorted.length;
+            var rules = [];
+            for (var i = 0; i < len; i++) {
+                var rule = this.pricelist_item_sorted[i];
+                if ((rule.product_id && rule.product_id[0] == product.id) ||
+                    (rule.categ_id && product.categ_id
+                    && rule.categ_id[0] == product.categ_id[0])) {
+                    rules.push(rule);
+                }
+            }
+            return rules;
+        }
+    })
+}

+ 24 - 0
static/src/js/main.js

@@ -0,0 +1,24 @@
+/******************************************************************************
+*    Point Of Sale - Pricelist for POS Odoo
+*    Copyright (C) 2014 Taktik (http://www.taktik.be)
+*    @author Adil Houmadi <ah@taktik.be>
+*
+*    This program is free software: you can redistribute it and/or modify
+*    it under the terms of the GNU Affero General Public License as
+*    published by the Free Software Foundation, either version 3 of the
+*    License, or (at your option) any later version.
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU Affero General Public License for more details.
+*    You should have received a copy of the GNU Affero General Public License
+*    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*
+******************************************************************************/
+openerp.pos_pricelist = function (instance) {
+    var module = instance.point_of_sale;
+    pos_pricelist_db(instance, module);
+    pos_pricelist_models(instance, module);
+    pos_pricelist_screens(instance, module);
+    pos_pricelist_widgets(instance, module);
+};

+ 810 - 0
static/src/js/models.js

@@ -0,0 +1,810 @@
+/******************************************************************************
+ *    Point Of Sale - Pricelist for POS Odoo
+ *    Copyright (C) 2014 Taktik (http://www.taktik.be)
+ *    @author Adil Houmadi <ah@taktik.be>
+ *
+ *    This program is free software: you can redistribute it and/or modify
+ *    it under the terms of the GNU Affero General Public License as
+ *    published by the Free Software Foundation, either version 3 of the
+ *    License, or (at your option) any later version.
+ *    This program is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *    GNU Affero General Public License for more details.
+ *    You should have received a copy of the GNU Affero General Public License
+ *    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ ******************************************************************************/
+function pos_pricelist_models(instance, module) {
+
+    var _t = instance.web._t;
+    var round_pr = instance.web.round_precision;
+    var round_di = instance.web.round_decimals;
+
+    /**
+     * Extend the POS model
+     */
+    var PosModelParent = module.PosModel;
+    module.PosModel = module.PosModel.extend({
+        /**
+         * @param session
+         * @param attributes
+         */
+        initialize: function (session, attributes) {
+            PosModelParent.prototype.initialize.apply(this, arguments);
+            this.pricelist_engine = new module.PricelistEngine({
+                'pos': this,
+                'db': this.db,
+                'pos_widget': this.pos_widget
+            });
+            arrange_elements(this);
+        },
+        /**
+         * find model based on name
+         * @param model_name
+         * @returns {{}}
+         */
+        find_model: function (model_name) {
+            var self = this;
+            var lookup = {};
+            for (var i = 0, len = self.models.length; i < len; i++) {
+                if (self.models[i].model === model_name) {
+                    lookup[i] = self.models[i]
+                }
+            }
+            return lookup
+        },
+        /**
+         * @param removed_order
+         * @param index
+         * @param reason
+         */
+        on_removed_order: function (removed_order, index, reason) {
+            PosModelParent.prototype.on_removed_order.apply(this, arguments);
+            if ((reason === 'abandon' || removed_order.temporary)
+                && this.get('orders').size() > 0) {
+                var current_order = (this.get('orders').at(index)
+                || this.get('orders').last());
+                var partner = current_order.get_client() ?
+                    current_order.get_client() :
+                    false;
+                this.pricelist_engine.update_products_ui(partner);
+            }
+        }
+    });
+
+    /**
+     * Extend the order
+     */
+    module.Order = module.Order.extend({
+        /**
+         * override this method to merge lines
+         * TODO : Need some refactoring in the standard POS to Do it better
+         * TODO : from line 73 till 85, we need to move this to another method
+         * @param product
+         * @param options
+         */
+        addProduct: function (product, options) {
+            options = options || {};
+            var attr = JSON.parse(JSON.stringify(product));
+            attr.pos = this.pos;
+            attr.order = this;
+            var line = new module.Orderline({}, {
+                pos: this.pos,
+                order: this,
+                product: product
+            });
+            var self = this;
+            var found = false;
+
+            if (options.quantity !== undefined) {
+                line.set_quantity(options.quantity);
+            }
+            if (options.price !== undefined) {
+                line.set_unit_price(options.price);
+            }
+            if (options.discount !== undefined) {
+                line.set_discount(options.discount);
+            }
+
+            var orderlines = [];
+            if (self.get('orderLines').models !== undefined) {
+                orderlines = self.get('orderLines').models;
+            }
+            for (var i = 0; i < orderlines.length; i++) {
+                var _line = orderlines[i];
+                if (_line && _line.can_be_merged_with(line) &&
+                    options.merge !== false) {
+                    _line.merge(line);
+                    found = true;
+                    break;
+                }
+            }
+            if (!found) {
+                this.get('orderLines').add(line);
+            }
+            this.selectLine(this.getLastOrderline());
+        }
+    });
+
+    /**
+     * Extend the Order line
+     */
+    var OrderlineParent = module.Orderline;
+    module.Orderline = module.Orderline.extend({
+        /**
+         * @param attr
+         * @param options
+         */
+        initialize: function (attr, options) {
+            OrderlineParent.prototype.initialize.apply(this, arguments);
+            this.manual_price = false;
+            if (this.product !== undefined) {
+                var qty = this.compute_qty(this.order, this.product);
+                var partner = this.order ? this.order.get_client() : null;
+                var product = this.product;
+                var db = this.pos.db;
+                var price = this.pos.pricelist_engine.compute_price_all(
+                    db, product, partner, qty
+                );
+                if (price !== false) {
+                    this.price = round_di(parseFloat(price) || 0, this.pos.dp['Product Price']);
+                }
+            }
+        },
+        /**
+         * @param state
+         */
+        set_manual_price: function (state) {
+            this.manual_price = state;
+        },
+        /**
+         * @param quantity
+         */
+        set_quantity: function (quantity) {
+            var partner = this.order ? this.order.get_client() : null;
+            var product = this.product;
+            var db = this.pos.db;
+            var old_price = 0;
+            if (this.get_quantity()) {
+                old_price = this.pos.pricelist_engine.compute_price_all(
+                    db, product, partner, this.get_quantity()
+                );
+            }
+            OrderlineParent.prototype.set_quantity.apply(this, arguments);
+            var price = this.pos.pricelist_engine.compute_price_all(
+                db, product, partner, quantity
+            );
+            /* Update the price if the unit price is actually different from
+               the unit price of the previous quantity, to preserve manually
+               entered prices as much as possible. */
+            if (price !== false && price !== old_price) {
+                this.set_unit_price(price);
+            }
+        },
+        /**
+         * override this method to take fiscal positions in consideration
+         * get all price
+         * TODO : find a better way to do it : need some refactoring
+         * in the pos standard
+         * @returns {{
+         *  priceWithTax: *, priceWithoutTax: *, tax: number, taxDetails: {}
+         *  }}
+         */
+        get_all_prices: function () {
+            var base = this.get_base_price();
+            var totalTax = base;
+            var totalNoTax = base;
+            var taxtotal = 0;
+            var taxdetail = {};
+            var product_taxes = this.get_applicable_taxes_for_orderline();
+            var all_taxes = _(this.compute_all(product_taxes, base)).flatten();
+            _(all_taxes).each(function (tax) {
+                if (tax.price_include) {
+                    totalNoTax -= tax.amount;
+                } else {
+                    totalTax += tax.amount;
+                }
+                taxtotal += tax.amount;
+                taxdetail[tax.id] = tax.amount;
+            });
+            totalNoTax = round_pr(totalNoTax, this.pos.currency.rounding);
+            return {
+                "priceWithTax": totalTax,
+                "priceWithoutTax": totalNoTax,
+                "tax": taxtotal,
+                "taxDetails": taxdetail
+            };
+        },
+        /**
+         * Override this method to avoid a return false
+         * if the price is different
+         * Check super method : (this.price !== orderline.price)
+         * is not necessary in our case
+         * @param orderline
+         * @returns {boolean}
+         */
+        can_be_merged_with: function (orderline) {
+            var result = OrderlineParent.prototype.can_be_merged_with.apply(
+                this, arguments
+            );
+            if (!result) {
+                if (!this.manual_price) {
+                    return (
+                        this.get_product().id === orderline.get_product().id
+                    );
+                } else {
+                    return false;
+                }
+            }
+            return true;
+        },
+        /**
+         * Override to set price
+         * @param orderline
+         */
+        merge: function (orderline) {
+            OrderlineParent.prototype.merge.apply(this, arguments);
+            this.set_unit_price(orderline.price);
+        },
+        /**
+         * @param order
+         * @param product
+         * @returns {number}
+         */
+        compute_qty: function (order, product) {
+            var qty = 1;
+            var orderlines = [];
+            if (order && order.get('orderLines').models !== undefined) {
+                orderlines = order.get('orderLines').models;
+            }
+            for (var i = 0; i < orderlines.length; i++) {
+                if (orderlines[i].product.id === product.id
+                    && !orderlines[i].manual_price) {
+                    qty += orderlines[i].quantity;
+                }
+            }
+            return qty;
+        },
+        /**
+         * @returns {Array}
+         */
+        get_applicable_taxes_for_orderline: function () {
+            // find applicable taxes for this product and this customer
+            var product = this.get_product();
+            var product_tax_ids = product.taxes_id;
+            var product_taxes = [];
+            var taxes = this.pos.taxes;
+            var partner = this.order ? this.order.get_client() : null;
+            if (partner && partner.property_account_position) {
+            	product_tax_ids =
+                    this.pos.db.map_tax(
+                        partner.property_account_position[0], product_tax_ids
+                    );
+            }
+            for (var i = 0, ilen = product_tax_ids.length;
+                 i < ilen; i++) {
+                var tax_id = product_tax_ids[i];
+                var tax = _.detect(taxes, function (t) {
+                    return t.id === tax_id;
+                });
+                product_taxes.push(tax);
+            }
+            return product_taxes;
+        },
+        get_display_unit_price: function(){
+            var rounding = this.pos.currency.rounding;
+            if (this.pos.config.display_price_with_taxes) {
+                return round_pr(this.get_price_with_tax() / this.get_quantity(), rounding);
+            } else {
+                return round_pr(this.get_base_price() / this.get_quantity(), rounding);
+            }
+        },
+        /**
+         * @returns {*}
+         */
+        get_display_price: function () {
+            if (this.pos.config.display_price_with_taxes) {
+                return this.get_price_with_tax();
+            }
+            return OrderlineParent.prototype.get_display_price.apply(
+                this, arguments
+            );
+        },
+
+        export_as_JSON: function() {
+            var res = OrderlineParent.prototype.export_as_JSON.apply(this, arguments);
+            var product_tax_ids = this.get_product().taxes_id || [];
+            var partner = this.order ? this.order.get_client() : null;
+            if (partner && partner.property_account_position) {
+            	product_tax_ids =
+                    this.pos.db.map_tax(
+                        partner.property_account_position[0], product_tax_ids
+                    );
+            }
+            res["tax_ids"] = [[6, false, product_tax_ids]];
+            return res;
+        }
+    });
+
+    /**
+     * Pricelist Engine to compute price
+     */
+    module.PricelistEngine = instance.web.Class.extend({
+        /**
+         * @param options
+         */
+        init: function (options) {
+            options = options || {};
+            this.pos = options.pos;
+            this.db = options.db;
+            this.pos_widget = options.pos_widget;
+        },
+        /**
+         * compute price for all price list
+         * @param db
+         * @param product
+         * @param partner
+         * @param qty
+         * @returns {*}
+         */
+        compute_price_all: function (db, product, partner, qty) {
+            var price_list_id = false;
+            if (partner && partner.property_product_pricelist) {
+                price_list_id = partner.property_product_pricelist[0];
+            } else {
+                price_list_id = this.pos.config.pricelist_id[0];
+            }
+            return this.compute_price(
+                db, product, partner, qty, parseInt(price_list_id)
+            );
+        },
+        /**
+         * loop find a valid version for the price list id given in param
+         * @param db
+         * @param pricelist_id
+         * @returns {boolean}
+         */
+        find_valid_pricelist_version: function (db, pricelist_id) {
+            var date = new Date();
+            var version = false;
+            var pricelist = db.pricelist_by_id[pricelist_id];
+            for (var i = 0, len = pricelist.version_id.length; i < len; i++) {
+                var v = db.pricelist_version_by_id[pricelist.version_id[i]];
+                if (((v.date_start == false)
+                    || (new Date(v.date_start) <= date)) &&
+                    ((v.date_end == false)
+                    || (new Date(v.date_end) >= date))) {
+                    version = v;
+                    break;
+                }
+            }
+            return version;
+        },
+        /**
+         * compute the price for the given product
+         * @param database
+         * @param product
+         * @param partner
+         * @param qty
+         * @param pricelist_id
+         * @returns {boolean}
+         */
+        compute_price: function (database, product, partner, qty, pricelist_id) {
+
+            var self = this;
+            var db = database;
+
+            // get a valid version
+            var version = this.find_valid_pricelist_version(db, pricelist_id);
+            if (version == false) {
+                var message = _t('Pricelist Error');
+                var comment = _t('At least one pricelist has no active ' +
+                    'version ! Please create or activate one.');
+                show_error(this, message, comment);
+                return false;
+            }
+
+            // get categories
+            var categ_ids = [];
+            if (product.categ_id) {
+                categ_ids.push(product.categ_id[0]);
+                categ_ids = categ_ids.concat(
+                    db.product_category_ancestors[product.categ_id[0]]
+                );
+            }
+
+            // find items
+            var items = [], i, len;
+            for (i = 0, len = db.pricelist_item_sorted.length; i < len; i++) {
+                var item = db.pricelist_item_sorted[i];
+                if ((item.product_id === false
+                    || item.product_id[0] === product.id) &&
+                    (item.categ_id === false
+                    || categ_ids.indexOf(item.categ_id[0]) !== -1) &&
+                    (item.price_version_id[0] === version.id)) {
+                    items.push(item);
+                }
+            }
+
+            var results = {};
+            results[product.id] = 0.0;
+            var price_types = {};
+            var price = false;
+
+            // loop through items
+            for (i = 0, len = items.length; i < len; i++) {
+                var rule = items[i];
+
+                if (rule.min_quantity && qty < rule.min_quantity) {
+                    continue;
+                }
+                if (rule.product_id && rule.product_id[0]
+                    && product.id != rule.product_id[0]) {
+                    continue;
+                }
+                if (rule.categ_id) {
+                    var cat_id = product.categ_id[0];
+                    while (cat_id) {
+                        if (cat_id == rule.categ_id[0]) {
+                            break;
+                        }
+                        cat_id = db.product_category_by_id[cat_id].parent_id[0]
+                    }
+                    if (!(cat_id)) {
+                        continue;
+                    }
+                }
+                // Based on field
+                switch (rule.base) {
+                    case -1:
+                        if (rule.base_pricelist_id) {
+                            price = self.compute_price(
+                                db, product, false, qty,
+                                rule.base_pricelist_id[0]
+                            );
+                        }
+                        break;
+                    case -2:
+                        var seller = false;
+                        for (var index in product.seller_ids) {
+                            var seller_id = product.seller_ids[index];
+                            var _tmp_seller = db.supplierinfo_by_id[seller_id];
+                            if ((!partner) || (_tmp_seller.name.length
+                                && _tmp_seller.name[0] != partner.name))
+                                continue;
+                            seller = _tmp_seller
+                        }
+                        if (!seller && product.seller_ids) {
+                            seller =
+                                db.supplierinfo_by_id[product.seller_ids[0]];
+                        }
+                        if (seller) {
+                            for (var _id in seller.pricelist_ids) {
+                                var info_id = seller.pricelist_ids[_id];
+                                var line =
+                                    db.pricelist_partnerinfo_by_id[info_id];
+                                if (line.min_quantity <= qty) {
+                                    price = line.price
+                                }
+                            }
+                        }
+                        break;
+                    default:
+                        if (!price_types.hasOwnProperty(rule.base)) {
+                            price_types[rule.base] =
+                                db.product_price_type_by_id[rule.base];
+                        }
+                        var price_type = price_types[rule.base];
+                        if (db.product_by_id[product.id]
+                                .hasOwnProperty(price_type.field)) {
+                            price =
+                                db.product_by_id[product.id][price_type.field];
+                            if(price_type.field === 'list_price' && product.price_extra){
+                                price += product.price_extra;
+                            }
+                        }
+                }
+                if (price !== false) {
+                    var price_limit = price;
+                    price = price * (1.0 + (rule['price_discount']
+                            ? rule['price_discount']
+                            : 0.0));
+                    if (rule['price_round']) {
+                        price = parseFloat(price.toFixed(
+                                Math.ceil(Math.log(1.0 / rule['price_round'])
+                                    / Math.log(10)))
+                        );
+                    }
+                    price += (rule['price_surcharge']
+                        ? rule['price_surcharge']
+                        : 0.0);
+                    if (rule['price_min_margin']) {
+                        price = Math.max(
+                            price, price_limit + rule['price_min_margin']
+                        )
+                    }
+                    if (rule['price_max_margin']) {
+                        price = Math.min(
+                            price, price_limit + rule['price_min_margin']
+                        )
+                    }
+                }
+                break;
+            }
+            return price
+        },
+        /**
+         * @param partner
+         */
+        update_products_ui: function (partner) {
+            var db = this.db;
+            if (!this.pos_widget.product_screen) return;
+            var product_list_ui
+                = this.pos_widget.product_screen.$(
+                '.product-list span.product'
+            );
+            for (var i = 0, len = product_list_ui.length; i < len; i++) {
+                var product_ui = product_list_ui[i];
+                var product_id = $(product_ui).data('product-id');
+                var product = $.extend({}, db.get_product_by_id(product_id));
+                var rules = db.find_product_rules(product);
+                var quantities = [];
+                quantities.push(1);
+                for (var j = 0; j < rules.length; j++) {
+                    if ($.inArray(rules[j].min_quantity, quantities) === -1) {
+                        quantities.push(rules[j].min_quantity);
+                    }
+                }
+                quantities = quantities.sort();
+                var prices_displayed = '';
+                for (var k = 0; k < quantities.length; k++) {
+                    var qty = quantities[k];
+                    var price = this.compute_price_all(
+                        db, product, partner, qty
+                    );
+                    if (price !== false) {
+                        if (this.pos.config.display_price_with_taxes) {
+                            var prices = this.simulate_price(
+                                product, partner, price, qty
+                            );
+                            price = prices['priceWithTax']
+                        }
+                        price = round_di(parseFloat(price)
+                            || 0, this.pos.dp['Product Price']);
+                        price = this.pos_widget.format_currency(price);
+                        if (k == 0) {
+                            $(product_ui).find('.price-tag').html(price);
+                        }
+                        prices_displayed += qty
+                            + 'x &#8594; ' + price + '<br/>';
+                    }
+                }
+                if (prices_displayed != '') {
+                    $(product_ui).find('.price-tag').attr(
+                        'data-original-title', prices_displayed
+                    );
+                    $(product_ui).find('.price-tag').attr(
+                        'data-toggle', 'tooltip'
+                    );
+                    $(product_ui).find('.price-tag').tooltip(
+                        {delay: {show: 50, hide: 100}}
+                    );
+                }
+            }
+        },
+        simulate_price: function (product, partner, price, qty) {
+            // create a fake order in order to get price
+            // for this customer
+            var order = new module.Order({pos: this.pos});
+            order.set_client(partner);
+            var orderline = new openerp.point_of_sale.Orderline
+            ({}, {
+                pos: this.pos, order: order,
+                product: product, price: price
+            });
+            orderline.set_quantity(qty);
+            // reset the sequence
+            this.pos.pos_session.sequence_number--;
+            var prices = orderline.get_all_prices();
+            return prices;
+        },
+        /**
+         *
+         * @param partner
+         * @param orderLines
+         */
+        update_ticket: function (partner, orderLines) {
+            var db = this.db;
+            for (var i = 0, len = orderLines.length; i < len; i++) {
+                var line = orderLines[i];
+                var product = line.product;
+                var quantity = line.quantity;
+                var price = this.compute_price_all(
+                    db, product, partner, quantity
+                );
+                if (price !== false) {
+                    line.set_unit_price(price);
+                }
+            }
+        }
+    });
+    /**
+     * show error
+     * @param context
+     * @param message
+     * @param comment
+     */
+    function show_error(context, message, comment) {
+        context.pos.pos_widget.screen_selector.show_popup('error', {
+            'message': message,
+            'comment': comment
+        });
+    }
+
+    /**
+     * patch models to load some entities
+     * @param pos_model
+     */
+    function arrange_elements(pos_model) {
+
+        var product_model = pos_model.find_model('product.product');
+        if (_.size(product_model) == 1) {
+            var product_index = parseInt(Object.keys(product_model)[0]);
+            pos_model.models[product_index].fields.push(
+                'categ_id', 'seller_ids', 'price_extra'
+            );
+        }
+
+        var res_product_pricelist = pos_model.find_model('product.pricelist');
+        if (_.size(res_product_pricelist) == 1) {
+            var pricelist_index = parseInt(Object.keys(
+                    res_product_pricelist)[0]
+            );
+            pos_model.models.splice(++pricelist_index, 0,
+                {
+                    model: 'account.fiscal.position.tax',
+                    fields: ['display_name',
+                        'position_id',
+                        'tax_src_id',
+                        'tax_dest_id'],
+                    domain: null,
+                    loaded: function (self, fiscal_position_taxes) {
+                        self.db.add_fiscal_position_taxes(
+                            fiscal_position_taxes
+                        );
+                    }
+                },
+                {
+                    model: 'pricelist.partnerinfo',
+                    fields: ['display_name',
+                        'min_quantity',
+                        'name',
+                        'price',
+                        'suppinfo_id'],
+                    domain: null,
+                    loaded: function (self, pricelist_partnerinfos) {
+                        self.db.add_pricelist_partnerinfo(
+                            pricelist_partnerinfos
+                        );
+                    }
+                },
+                {
+                    model: 'product.supplierinfo',
+                    fields: ['delay',
+                        'name',
+                        'min_qty',
+                        'pricelist_ids',
+                        'product_code',
+                        'product_name',
+                        'sequence',
+                        'qty',
+                        'product_tmpl_id'],
+                    domain: [['product_tmpl_id.available_in_pos','=',true]],
+                    loaded: function (self, supplierinfos) {
+                        self.db.add_supplierinfo(supplierinfos);
+                    }
+                },
+                {
+                    model: 'product.category',
+                    fields: ['name',
+                        'display_name',
+                        'parent_id',
+                        'child_id'],
+                    domain: null,
+                    loaded: function (self, categories) {
+                        self.db.add_product_categories(categories);
+
+                    }
+                },
+                {
+                    model: 'product.pricelist',
+                    fields: ['display_name',
+                        'name',
+                        'version_id',
+                        'currency_id'],
+                    domain: function () {
+                        return [
+                            ['type', '=', 'sale']
+                        ]
+                    },
+                    loaded: function (self, pricelists) {
+                        self.db.add_pricelists(pricelists);
+                    }
+                },
+                {
+                    model: 'product.pricelist.version',
+                    fields: ['name',
+                        'pricelist_id',
+                        'date_start',
+                        'date_end',
+                        'items'],
+                    domain: null,
+                    loaded: function (self, versions) {
+                        self.db.add_pricelist_versions(versions);
+                    }
+                },
+                {
+                    model: 'product.pricelist.item',
+                    fields: ['name',
+                        'base',
+                        'base_pricelist_id',
+                        'categ_id',
+                        'min_quantity',
+                        'price_discount',
+                        'price_max_margin',
+                        'price_min_margin',
+                        'price_round',
+                        'price_surcharge',
+                        'price_version_id',
+                        'product_id',
+                        'product_tmpl_id',
+                        'sequence'
+                    ],
+                    domain: null,
+                    loaded: function (self, items) {
+                        self.db.add_pricelist_items(items);
+                    }
+                },
+                {
+                    model: 'product.price.type',
+                    fields: ['name', 'field', 'currency_id'],
+                    domain: null,
+                    loaded: function (self, price_types) {
+                        // we need to add price type
+                        // field to product.product model if not the case
+                        var product_model =
+                            posmodel.find_model('product.product');
+                        for (var i = 0, len = price_types.length;
+                             i < len; i++) {
+                            var p_type = price_types[i].field;
+                            if (_.size(product_model) == 1) {
+                                var product_index =
+                                    parseInt(Object.keys(product_model)[0]);
+                                if (posmodel.models[product_index]
+                                        .fields.indexOf(p_type) === -1) {
+                                    posmodel.models[product_index].fields.push(
+                                        p_type
+                                    );
+                                }
+                            }
+                        }
+                        self.db.add_price_types(price_types);
+                    }
+                }
+            );
+        }
+
+        var res_partner_model = pos_model.find_model('res.partner');
+        if (_.size(res_partner_model) == 1) {
+            var res_partner_index =
+                parseInt(Object.keys(res_partner_model)[0]);
+            pos_model.models[res_partner_index].fields.push(
+                'property_account_position',
+                'property_product_pricelist'
+            );
+        }
+
+    }
+
+}

+ 32 - 0
static/src/js/screens.js

@@ -0,0 +1,32 @@
+/******************************************************************************
+*    Point Of Sale - Pricelist for POS Odoo
+*    Copyright (C) 2014 Taktik (http://www.taktik.be)
+*    @author Adil Houmadi <ah@taktik.be>
+*
+*    This program is free software: you can redistribute it and/or modify
+*    it under the terms of the GNU Affero General Public License as
+*    published by the Free Software Foundation, either version 3 of the
+*    License, or (at your option) any later version.
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU Affero General Public License for more details.
+*    You should have received a copy of the GNU Affero General Public License
+*    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*
+******************************************************************************/
+function pos_pricelist_screens(instance, module) {
+
+    module.ClientListScreenWidget = module.ClientListScreenWidget.extend({
+        save_changes: function () {
+            this._super();
+            if (this.has_client_changed()) {
+                var currentOrder = this.pos.get('selectedOrder');
+                var orderLines = currentOrder.get('orderLines').models;
+                var partner = currentOrder.get_client();
+                this.pos.pricelist_engine.update_products_ui(partner);
+                this.pos.pricelist_engine.update_ticket(partner, orderLines);
+            }
+        }
+    });
+}

+ 184 - 0
static/src/js/tests.js

@@ -0,0 +1,184 @@
+/******************************************************************************
+ *    Point Of Sale - Pricelist for POS Odoo
+ *    Copyright (C) 2014 Taktik (http://www.taktik.be)
+ *    @author Adil Houmadi <ah@taktik.be>
+ *
+ *    This program is free software: you can redistribute it and/or modify
+ *    it under the terms of the GNU Affero General Public License as
+ *    published by the Free Software Foundation, either version 3 of the
+ *    License, or (at your option) any later version.
+ *    This program is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *    GNU Affero General Public License for more details.
+ *    You should have received a copy of the GNU Affero General Public License
+ *    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ ******************************************************************************/
+(function () {
+    'use strict';
+
+    openerp.Tour.register({
+        id: 'pos_pricelist_order',
+        name: 'Complete a order trough the Front-End using POS Pricelist',
+        path: '/web#model=pos.session.opening&action=point_of_sale.action_pos_session_opening',
+        mode: 'test',
+        steps: [
+            {
+                wait: 2000,
+                title: 'Wait for screen to be ready'
+            },
+            {
+                wait: 2000,
+                title: 'Load the Session',
+                waitNot: '.oe_loading:visible',
+                element: 'span:contains("Resume Session"),' +
+                'span:contains("Start Session")'
+            },
+            {
+                title: 'Loading Screen',
+                waitFor: '.loader'
+            },
+            {
+                wait: 2000,
+                title: 'The Point of Sale',
+                waitFor: '.pos'
+            },
+            {
+                title: "We will buy some Products!, let's add (POS Product 1)",
+                element: '.product-list ' +
+                '.product-name:contains("POS Product 1")'
+            },
+            {
+                wait: 5000,
+                title: 'The order total has been ' +
+                'updated to the correct value : 100€',
+                waitFor: '.order .total .value:contains("100.00 €")'
+            },
+            {
+                wait: 5000,
+                title: 'We will add one more unit!',
+                element: '.product-list ' +
+                '.product-name:contains("POS Product 1")'
+            },
+            {
+                wait: 4000,
+                title: 'We will add another unit',
+                element: '.product-list ' +
+                '.product-name:contains("POS Product 1")'
+            },
+            {
+                wait: 4000,
+                title: 'The order total should be updated ' +
+                ': 270€ which means 90€/Unit (Rule 10% Discount from 3 Units)',
+                waitFor: '.order .total .value:contains("270.00 €")'
+            },
+            {
+                wait: 8000,
+                title: 'We will add another product',
+                element: '.product-list ' +
+                '.product-name:contains("POS Product 2")'
+            },
+            {
+                wait: 4000,
+                title: 'We will add another unit for this product ' +
+                '(POS Product 2)',
+                element: '.product-list ' +
+                '.product-name:contains("POS Product 2")'
+            },
+            {
+                wait: 4000,
+                title: "Let's verify the total that we should pay," +
+                " it's should be equal to : 450€, which means that <br>" +
+                "10% Discount if offered if we buy 2 units of " +
+                "(POS Product 2), Rule based on standard price",
+                waitFor: '.order .total .value:contains("450.00 €")'
+            },
+            {
+                wait: 10000,
+                title: "Now, we will add (POS Product 3), for this " +
+                "product if we buy more then 2 units <br>" +
+                "20% Discount is given by supplier to our customers",
+                element: '.product-list .product-name:contains("POS Product 3")'
+            },
+            {
+                wait: 10000,
+                title: 'We will add another unit for ' +
+                'this product (POS Product 3)',
+                element: '.product-list ' +
+                '.product-name:contains("POS Product 3")'
+            },
+            {
+                wait: 5000,
+                title: "Let's check the total (610€)",
+                waitFor: '.order .total .value:contains("610.00 €")'
+            },
+            {
+                wait: 5000,
+                title: "Now, we will add (POS Product 4), this product " +
+                "belong to (Comptuer) category in which " +
+                "we apply 5% if customer buy more then 2 products",
+                element: '.product-list ' +
+                '.product-name:contains("POS Product 4")'
+            },
+            {
+                wait: 10000,
+                title: 'We will add another unit for ' +
+                'this product (POS Product 4)',
+                element: '.product-list ' +
+                '.product-name:contains("POS Product 4")'
+            },
+            {
+                wait: 5000,
+                title: "Let's check the total again (800€)",
+                waitFor: '.order .total .value:contains("800.00 €")'
+            },
+            {
+                wait: 5000,
+                title: "Let's pay the order",
+                element: ".paypad-button:contains('Bank')"
+            },
+            {
+                wait: 1000,
+                title: "Let's accept the payment",
+                onload: function () {
+                    window._print = window.print;
+                    window.print = function () {
+                        console.log('Print!')
+                    };
+                },
+                element: ".button .iconlabel:contains('Validate'):visible"
+            },
+            {
+                wait: 1000,
+                title: "Let's finish the order",
+                element: ".button:not(.disabled) " +
+                ".iconlabel:contains('Next'):visible"
+            },
+            {
+                wait: 1000,
+                onload: function () {
+                    window.print = window._print;
+                    window._print = undefined;
+                },
+                title: "Let's wait for the order posting",
+                waitFor: ".oe_status.js_synch .js_connected:visible"
+            },
+            {
+                wait: 1000,
+                title: "Let's close the Point of Sale",
+                element: ".header-button:contains('Close')"
+            },
+            {
+                title: "Let's confirm",
+                element: ".header-button.confirm:contains('Confirm')"
+            },
+            {
+                title: "Wait for the backend to ready itself",
+                element: 'span:contains("Resume Session"),' +
+                'span:contains("Start Session")'
+            }
+        ]
+    });
+
+})();

+ 87 - 0
static/src/js/widgets.js

@@ -0,0 +1,87 @@
+/******************************************************************************
+ *    Point Of Sale - Pricelist for POS Odoo
+ *    Copyright (C) 2014 Taktik (http://www.taktik.be)
+ *    @author Adil Houmadi <ah@taktik.be>
+ *
+ *    This program is free software: you can redistribute it and/or modify
+ *    it under the terms of the GNU Affero General Public License as
+ *    published by the Free Software Foundation, either version 3 of the
+ *    License, or (at your option) any later version.
+ *    This program is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *    GNU Affero General Public License for more details.
+ *    You should have received a copy of the GNU Affero General Public License
+ *    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ ******************************************************************************/
+function pos_pricelist_widgets(instance, module) {
+
+    var round_di = instance.web.round_decimals;
+
+    module.OrderWidget = module.OrderWidget.extend({
+        set_value: function (val) {
+            this._super(val);
+            var order = this.pos.get('selectedOrder');
+            if (this.editable && order.getSelectedLine()) {
+                var mode = this.numpad_state.get('mode');
+                if (mode === 'price') {
+                    order.getSelectedLine().set_manual_price(true);
+                }
+            }
+        }
+    });
+
+    module.OrderButtonWidget = module.OrderButtonWidget.extend({
+        selectOrder: function (event) {
+            this._super(event);
+            var partner = this.order.get_client()
+                ? this.order.get_client()
+                : false;
+            this.pos.pricelist_engine.update_products_ui(partner);
+        }
+    });
+
+    instance.point_of_sale.ProductListWidget.include({
+        init: function (parent, options) {
+            this._super(parent, options);
+            this.display_price_with_taxes = false;
+            if (
+                posmodel
+                && posmodel.config
+                && posmodel.config.display_price_with_taxes
+            ) {
+                this.display_price_with_taxes
+                    = posmodel.config.display_price_with_taxes
+            }
+        },
+        renderElement: function () {
+            this._super();
+            var order = posmodel.get_order();
+            var customer = null;
+            if(order) {
+                customer = order.get_client();
+            }
+            this.pos.pricelist_engine.update_products_ui(customer);
+        }
+    });
+
+    module.PosBaseWidget.include({
+        format_pr: function(amount, precision) {
+            // Do not call _super because no addon or XML is using this method
+            var currency = (this.pos && this.pos.currency) ? this.pos.currency : {symbol:'$', position: 'after', rounding: 0.01, decimals: 2};
+            var decimals = currency.decimals;
+
+            if (precision && this.pos.dp[precision] !== undefined) {
+                decimals = this.pos.dp[precision];
+            }
+
+            if (typeof amount === 'number') {
+                amount = round_di(amount,decimals).toFixed(decimals);
+                amount = openerp.instances[this.session.name].web.format_value(round_di(amount, decimals), { type: 'float', digits: [69, decimals]});
+            }
+            return amount
+        }
+    });
+}
+

+ 37 - 0
static/src/xml/pos.xml

@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<templates id="template" xml:space="preserve">
+    <t t-extend="Product">
+        <t t-jquery=".product-img" t-operation="replace">
+            <div class="product-img">
+                <img t-att-src='image_url' />
+                <t t-if="!product.to_weight">
+                    <span class="price-tag">
+                        <t t-if="widget.display_price_with_taxes">
+                            <t t-esc="widget.format_currency(product.price_with_taxes,'Product Price')"/>
+                        </t>
+                        <t t-if="!widget.display_price_with_taxes">
+                            <t t-esc="widget.format_currency(product.price,'Product Price')"/>
+                        </t>
+                    </span>
+                </t>
+                <t t-if="product.to_weight">
+                    <span class="price-tag">
+                        <t t-if="widget.display_price_with_taxes">
+                            <t t-esc="widget.format_currency(product.price_with_taxes,'Product Price')+'/Kg'"/>
+                        </t>
+                        <t t-if="!widget.display_price_with_taxes">
+                            <t t-esc="widget.format_currency(product.price,'Product Price')+'/Kg'"/>
+                        </t>
+                    </span>
+                </t>
+            </div>
+        </t>
+    </t>
+    <t t-extend="PosTicket">
+        <t t-jquery="t[t-esc='orderline.get_quantity_str_with_unit()']" t-operation="after">
+            <t t-if="orderline.quantity != 1">
+                x<t t-esc="widget.format_pr(orderline.get_display_unit_price())"/>
+            </t>
+        </t>
+    </t>
+</templates>

+ 28 - 0
test/test.py

@@ -0,0 +1,28 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+# Point Of Sale - Pricelist for POS Odoo
+# Copyright (C) 2014 Taktik (http://www.taktik.be)
+# @author Adil Houmadi <ah@taktik.be>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Affero General Public License for more details.
+# You should have received a copy of the GNU Affero General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+import openerp.tests
+
+
+@openerp.tests.common.at_install(False)
+@openerp.tests.common.post_install(True)
+class TestPOS(openerp.tests.HttpCase):
+    def test_01_pos(self):
+        self.phantom_js("/", "openerp.Tour.run('pos_pricelist_order', 'test')",
+                        "openerp.Tour.tours.pos_pricelist_order",
+                        login="admin")

+ 28 - 0
views/point_of_sale_view.xml

@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<openerp>
+    <data>
+
+        <record id="view_pos_pos_form" model="ir.ui.view">
+            <field name="name">pos.order</field>
+            <field name="model">pos.order</field>
+            <field name="inherit_id" ref="point_of_sale.view_pos_pos_form"/>
+            <field name="arch" type="xml">
+            	<xpath expr="//field[@name='lines']/tree/field[@name='discount']" position="after">
+            		<field name="tax_ids" widget="many2many_tags"/>
+            	</xpath>
+                <page string="Payments" position="after">
+                    <page string="Taxes">
+                        <field name="taxes">
+                            <tree editable="bottom" string="Taxes detail">
+                                <field name="name"/>
+                                <field name="base"/>
+                                <field name="amount"/>
+                            </tree>
+                        </field>
+                    </page>
+                </page>
+			</field>
+		</record>
+
+    </data>
+</openerp>

+ 29 - 0
views/pos_pricelist_template.xml

@@ -0,0 +1,29 @@
+<openerp>
+    <data>
+        <template id="pos_pricelist_assets_backend"
+                  name="pos_pricelist_assets_backend"
+                  inherit_id="point_of_sale.assets_backend">
+            <xpath expr="." position="inside">
+                <script src="/pos_pricelist/static/src/js/db.js"
+                        type="text/javascript"></script>
+                <script src="/pos_pricelist/static/src/js/models.js"
+                        type="text/javascript"></script>
+                <script src="/pos_pricelist/static/src/js/widgets.js"
+                        type="text/javascript"></script>
+                <script src="/pos_pricelist/static/src/js/screens.js"
+                        type="text/javascript"></script>
+                <script src="/pos_pricelist/static/src/js/tests.js"
+                        type="text/javascript"></script>
+                <script src="/pos_pricelist/static/src/js/main.js"
+                        type="text/javascript"></script>
+            </xpath>
+        </template>
+
+        <template id="pos_pricelist_assets" name="pos_pricelist_css" inherit_id="point_of_sale.index">
+            <xpath expr="//script[@id='loading-script']" position="before">
+                <link rel="stylesheet" href="/pos_pricelist/static/src/css/style.css"/>
+            </xpath>
+        </template>
+
+    </data>
+</openerp>

+ 15 - 0
views/pos_pricelist_views.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<openerp>
+    <data>
+        <record id="view_pos_config_form_pos_pricelist" model="ir.ui.view">
+            <field name="name">view.pos.config.form.pos.pricelist</field>
+            <field name="model">pos.config</field>
+            <field name="inherit_id" ref="point_of_sale.view_pos_config_form"/>
+            <field name="arch" type="xml">
+                <field name="iface_big_scrollbars" position="after">
+                    <field name="display_price_with_taxes"/>
+                </field>
+            </field>
+        </record>
+    </data>
+</openerp>