From 1f10eb54fd414d7545e22c23490d6328f8b53d78 Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Sat, 18 Jan 2020 11:12:46 +0100 Subject: [PATCH] [MIG][12.0] pos_payment_terminal --- pos_payment_terminal/__manifest__.py | 7 +-- pos_payment_terminal/demo/pos_config.xml | 8 +++ .../demo/pos_payment_terminal_demo.xml | 8 --- pos_payment_terminal/i18n/fr.po | 45 +++++++++------- .../i18n/pos_payment_terminal.pot | 32 ++++++++---- .../models/account_journal.py | 1 - pos_payment_terminal/models/pos_order.py | 3 +- pos_payment_terminal/readme/CONFIGURE.rst | 13 +++-- pos_payment_terminal/readme/CONTRIBUTORS.rst | 1 + .../description/account_journal_form.png | Bin 0 -> 18067 bytes .../static/description/pos_config.png | Bin 0 -> 18282 bytes .../{pos_payment_terminal.js => devices.js} | 49 +----------------- pos_payment_terminal/static/src/js/models.js | 30 +++++++++++ pos_payment_terminal/static/src/js/screens.js | 42 +++++++++++++++ .../views/account_journal.xml | 11 ++-- pos_payment_terminal/views/assets.xml | 13 +++++ pos_payment_terminal/views/pos_config.xml | 13 +++-- .../views/pos_payment_terminal_template.xml | 11 ---- 18 files changed, 174 insertions(+), 113 deletions(-) create mode 100644 pos_payment_terminal/demo/pos_config.xml delete mode 100644 pos_payment_terminal/demo/pos_payment_terminal_demo.xml create mode 100644 pos_payment_terminal/static/description/account_journal_form.png create mode 100644 pos_payment_terminal/static/description/pos_config.png rename pos_payment_terminal/static/src/js/{pos_payment_terminal.js => devices.js} (58%) mode change 100755 => 100644 create mode 100644 pos_payment_terminal/static/src/js/models.js create mode 100644 pos_payment_terminal/static/src/js/screens.js create mode 100644 pos_payment_terminal/views/assets.xml delete mode 100644 pos_payment_terminal/views/pos_payment_terminal_template.xml diff --git a/pos_payment_terminal/__manifest__.py b/pos_payment_terminal/__manifest__.py index dfa8a3a5..f1e60cda 100644 --- a/pos_payment_terminal/__manifest__.py +++ b/pos_payment_terminal/__manifest__.py @@ -7,15 +7,16 @@ 'version': '12.0.0.1.1', 'category': 'Point Of Sale', 'summary': 'Manage Payment Terminal device from POS front end', - 'author': "Aurélien DUMAINE,Akretion,Odoo Community Association (OCA)", + 'author': "Aurélien DUMAINE,GRAP,Akretion," + "Odoo Community Association (OCA)", 'license': 'AGPL-3', 'depends': ['point_of_sale'], 'data': [ 'views/pos_config.xml', 'views/account_journal.xml', - 'views/pos_payment_terminal_template.xml', + 'views/assets.xml', ], - 'demo': ['demo/pos_payment_terminal_demo.xml'], + 'demo': ['demo/pos_config.xml'], 'qweb': ['static/src/xml/pos_payment_terminal.xml'], 'installable': True, } diff --git a/pos_payment_terminal/demo/pos_config.xml b/pos_payment_terminal/demo/pos_config.xml new file mode 100644 index 00000000..8388c36a --- /dev/null +++ b/pos_payment_terminal/demo/pos_config.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/pos_payment_terminal/demo/pos_payment_terminal_demo.xml b/pos_payment_terminal/demo/pos_payment_terminal_demo.xml deleted file mode 100644 index fb3dbd39..00000000 --- a/pos_payment_terminal/demo/pos_payment_terminal_demo.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/pos_payment_terminal/i18n/fr.po b/pos_payment_terminal/i18n/fr.po index cc5f61ab..3f7250bc 100644 --- a/pos_payment_terminal/i18n/fr.po +++ b/pos_payment_terminal/i18n/fr.po @@ -1,23 +1,24 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * pos_payment_terminal +# * pos_payment_terminal # -# Translators: -# OCA Transbot , 2017 -# leemannd , 2017 msgid "" msgstr "" -"Project-Id-Version: Odoo Server 10.0\n" +"Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-03-01 02:01+0000\n" -"PO-Revision-Date: 2018-03-01 02:01+0000\n" -"Last-Translator: leemannd , 2017\n" -"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n" -"Language: fr\n" +"POT-Creation-Date: 2020-01-18 10:52+0000\n" +"PO-Revision-Date: 2020-01-18 10:52+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: nplurals=2; plural=(n > 1);\n" +"Plural-Forms: \n" + +#. module: pos_payment_terminal +#: model:ir.model.fields,help:pos_payment_terminal.field_pos_config__iface_payment_terminal +msgid "A payment terminal is available on the Proxy" +msgstr "Un terminal de paiment est disponible sur le proxy" #. module: pos_payment_terminal #: selection:account.journal,payment_mode:0 @@ -35,17 +36,28 @@ msgid "Journal" msgstr "Journal" #. module: pos_payment_terminal -#: model:ir.model.fields,field_description:pos_payment_terminal.field_account_journal_payment_mode +#: model:ir.model.fields,field_description:pos_payment_terminal.field_account_journal__payment_mode msgid "Payment Mode" msgstr "Moyen de paiement" +#. module: pos_payment_terminal +#: model:ir.model.fields,field_description:pos_payment_terminal.field_pos_config__iface_payment_terminal +#: model_terms:ir.ui.view,arch_db:pos_payment_terminal.view_pos_config_form +msgid "Payment Terminal" +msgstr "Terminal de paiement" + +#. module: pos_payment_terminal +#: model:ir.model,name:pos_payment_terminal.model_pos_config +msgid "Point of Sale Configuration" +msgstr "Paramétrage du point de vente" + #. module: pos_payment_terminal #: model:ir.model,name:pos_payment_terminal.model_pos_order msgid "Point of Sale Orders" -msgstr "" +msgstr "Commandes du point de vente" #. module: pos_payment_terminal -#: model:ir.model.fields,help:pos_payment_terminal.field_account_journal_payment_mode +#: model:ir.model.fields,help:pos_payment_terminal.field_account_journal__payment_mode msgid "Select the payment mode sent to the payment terminal" msgstr "Sélectionner le mode de paiement envoyé au terminal de paiement" @@ -55,8 +67,3 @@ msgstr "Sélectionner le mode de paiement envoyé au terminal de paiement" #, python-format msgid "Start transaction" msgstr "Démarrer la transaction" - -#. module: pos_payment_terminal -#: model:ir.model,name:pos_payment_terminal.model_pos_config -msgid "pos.config" -msgstr "pos.config" diff --git a/pos_payment_terminal/i18n/pos_payment_terminal.pot b/pos_payment_terminal/i18n/pos_payment_terminal.pot index 3883db26..baf366ee 100644 --- a/pos_payment_terminal/i18n/pos_payment_terminal.pot +++ b/pos_payment_terminal/i18n/pos_payment_terminal.pot @@ -1,11 +1,13 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * pos_payment_terminal +# * pos_payment_terminal # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 10.0\n" +"Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-01-18 10:55+0000\n" +"PO-Revision-Date: 2020-01-18 10:55+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -13,6 +15,11 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" +#. module: pos_payment_terminal +#: model:ir.model.fields,help:pos_payment_terminal.field_pos_config__iface_payment_terminal +msgid "A payment terminal is available on the Proxy" +msgstr "" + #. module: pos_payment_terminal #: selection:account.journal,payment_mode:0 msgid "Card" @@ -29,17 +36,28 @@ msgid "Journal" msgstr "" #. module: pos_payment_terminal -#: model:ir.model.fields,field_description:pos_payment_terminal.field_account_journal_payment_mode +#: model:ir.model.fields,field_description:pos_payment_terminal.field_account_journal__payment_mode msgid "Payment Mode" msgstr "" +#. module: pos_payment_terminal +#: model:ir.model.fields,field_description:pos_payment_terminal.field_pos_config__iface_payment_terminal +#: model_terms:ir.ui.view,arch_db:pos_payment_terminal.view_pos_config_form +msgid "Payment Terminal" +msgstr "" + +#. module: pos_payment_terminal +#: model:ir.model,name:pos_payment_terminal.model_pos_config +msgid "Point of Sale Configuration" +msgstr "" + #. module: pos_payment_terminal #: model:ir.model,name:pos_payment_terminal.model_pos_order msgid "Point of Sale Orders" msgstr "" #. module: pos_payment_terminal -#: model:ir.model.fields,help:pos_payment_terminal.field_account_journal_payment_mode +#: model:ir.model.fields,help:pos_payment_terminal.field_account_journal__payment_mode msgid "Select the payment mode sent to the payment terminal" msgstr "" @@ -49,9 +67,3 @@ msgstr "" #, python-format msgid "Start transaction" msgstr "" - -#. module: pos_payment_terminal -#: model:ir.model,name:pos_payment_terminal.model_pos_config -msgid "pos.config" -msgstr "" - diff --git a/pos_payment_terminal/models/account_journal.py b/pos_payment_terminal/models/account_journal.py index 84853a9c..84080a1a 100644 --- a/pos_payment_terminal/models/account_journal.py +++ b/pos_payment_terminal/models/account_journal.py @@ -2,7 +2,6 @@ # © 2015-2016 Akretion (Alexis de Lattre ) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). - from odoo import models, fields diff --git a/pos_payment_terminal/models/pos_order.py b/pos_payment_terminal/models/pos_order.py index d00f1e98..1d6dcebe 100644 --- a/pos_payment_terminal/models/pos_order.py +++ b/pos_payment_terminal/models/pos_order.py @@ -1,9 +1,10 @@ # © 2018 ACSONE SA/NV # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + from collections import defaultdict import logging -from odoo import models, api +from odoo import api, models _logger = logging.getLogger(__name__) diff --git a/pos_payment_terminal/readme/CONFIGURE.rst b/pos_payment_terminal/readme/CONFIGURE.rst index b3a26cb1..8fa91aa0 100644 --- a/pos_payment_terminal/readme/CONFIGURE.rst +++ b/pos_payment_terminal/readme/CONFIGURE.rst @@ -1,4 +1,11 @@ +* Go to Point of Sale > Configuration > Point of Sale, and check + the field "Payment Terminal" -This module support two payment modes : *card* and *check*. The payment -mode should be configured on the main Odoo server, in the menu *Point -of Sale > Configuration > Payment Methods*, under the *Point of Sale* tab. +.. figure:: ../static/description/pos_config_form.png + +* Then, in the same point of sale form, click on "Payment Methods" to + set correctly your account journals. + This module support two payment modes : *card* and *check*, this + option is available in te Point of sale tab. + +.. figure:: ../static/description/account_journal_form.png diff --git a/pos_payment_terminal/readme/CONTRIBUTORS.rst b/pos_payment_terminal/readme/CONTRIBUTORS.rst index 5e00e970..2246ef2f 100644 --- a/pos_payment_terminal/readme/CONTRIBUTORS.rst +++ b/pos_payment_terminal/readme/CONTRIBUTORS.rst @@ -1,2 +1,3 @@ * Aurelien Dumaine * Alexis de Lattre +* Sylvain LE GAL (https://twitter.com/legalsylvain) diff --git a/pos_payment_terminal/static/description/account_journal_form.png b/pos_payment_terminal/static/description/account_journal_form.png new file mode 100644 index 0000000000000000000000000000000000000000..c7484bd0d33111f1f84c4863436b30e4e707e6d9 GIT binary patch literal 18067 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 A%>V!Z literal 0 HcmV?d00001 diff --git a/pos_payment_terminal/static/description/pos_config.png b/pos_payment_terminal/static/description/pos_config.png new file mode 100644 index 0000000000000000000000000000000000000000..bb45b504cf2da6c247bb1f5f60b961b5e4eae8aa GIT binary patch literal 18282 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 literal 0 HcmV?d00001 diff --git a/pos_payment_terminal/static/src/js/pos_payment_terminal.js b/pos_payment_terminal/static/src/js/devices.js old mode 100755 new mode 100644 similarity index 58% rename from pos_payment_terminal/static/src/js/pos_payment_terminal.js rename to pos_payment_terminal/static/src/js/devices.js index 00f84b01..a46d074b --- a/pos_payment_terminal/static/src/js/pos_payment_terminal.js +++ b/pos_payment_terminal/static/src/js/devices.js @@ -7,19 +7,13 @@ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). */ -odoo.define('pos_payment_terminal.pos_payment_terminal', function (require) { +odoo.define('pos_payment_terminal.devices', function (require) { "use strict"; - var screens = require('point_of_sale.screens'); var devices = require('point_of_sale.devices'); - var models = require('point_of_sale.models'); - var core = require('web.core'); - var _t = core._t; - var QWeb = core.qweb; - - models.load_fields('account.journal', ['payment_mode']); devices.ProxyDevice.include({ + init: function(parents, options) { var self = this; self._super(parents, options); @@ -73,43 +67,4 @@ odoo.define('pos_payment_terminal.pos_payment_terminal', function (require) { }, }); - - screens.PaymentScreenWidget.include({ - render_paymentlines : function(){ - this._super.apply(this, arguments); - var self = this; - this.$('.paymentlines-container').unbind('click').on('click', '.payment-terminal-transaction-start', function(event){ - // Why this "on" thing links severaltime the button to the action if I don't use "unlink" to reset the button links before ? - //console.log(event.target); - self.pos.get_order().in_transaction = true; - self.order_changes(); - self.pos.proxy.payment_terminal_transaction_start($(this).data('cid'), self.pos.currency.name, self.pos.currency.decimals); - }); - }, - order_changes: function(){ - this._super.apply(this, arguments); - var order = this.pos.get_order(); - if (!order) { - return; - } else if (order.in_transaction) { - self.$('.next').html(''); - } else { - self.$('.next').html('Validate '); - } - } - }); - - var _orderproto = models.Order.prototype; - models.Order = models.Order.extend({ - initialize: function(){ - _orderproto.initialize.apply(this, arguments); - this.in_transaction = false; - }, - export_as_JSON: function() { - var vals = _orderproto.export_as_JSON.apply(this, arguments); - vals['transactions'] = this.transactions || {}; - return vals; - } - }); - }); diff --git a/pos_payment_terminal/static/src/js/models.js b/pos_payment_terminal/static/src/js/models.js new file mode 100644 index 00000000..cfb4035c --- /dev/null +++ b/pos_payment_terminal/static/src/js/models.js @@ -0,0 +1,30 @@ +/* + POS Payment Terminal module for Odoo + Copyright (C) 2014-2016 Aurélien DUMAINE + Copyright (C) 2014-2016 Akretion (www.akretion.com) + @author: Aurélien DUMAINE + @author: Alexis de Lattre + License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +*/ + +odoo.define('pos_payment_terminal.models', function (require) { + "use strict"; + + var models = require('point_of_sale.models'); + var _orderproto = models.Order.prototype; + + models.load_fields('account.journal', ['payment_mode']); + + models.Order = models.Order.extend({ + initialize: function(){ + _orderproto.initialize.apply(this, arguments); + this.in_transaction = false; + }, + export_as_JSON: function() { + var vals = _orderproto.export_as_JSON.apply(this, arguments); + vals['transactions'] = this.transactions || {}; + return vals; + } + }); + +}); diff --git a/pos_payment_terminal/static/src/js/screens.js b/pos_payment_terminal/static/src/js/screens.js new file mode 100644 index 00000000..eddbd4d7 --- /dev/null +++ b/pos_payment_terminal/static/src/js/screens.js @@ -0,0 +1,42 @@ +/* + POS Payment Terminal module for Odoo + Copyright (C) 2014-2016 Aurélien DUMAINE + Copyright (C) 2014-2016 Akretion (www.akretion.com) + @author: Aurélien DUMAINE + @author: Alexis de Lattre + License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +*/ + +odoo.define('pos_payment_terminal.screens', function (require) { + "use strict"; + + var screens = require('point_of_sale.screens'); + + screens.PaymentScreenWidget.include({ + + render_paymentlines : function(){ + this._super.apply(this, arguments); + var self = this; + this.$('.paymentlines-container').unbind('click').on('click', '.payment-terminal-transaction-start', function(event){ + // Why this "on" thing links severaltime the button to the action + // if I don't use "unlink" to reset the button links before ? + self.pos.get_order().in_transaction = true; + self.order_changes(); + self.pos.proxy.payment_terminal_transaction_start($(this).data('cid'), self.pos.currency.name, self.pos.currency.decimals); + }); + }, + + order_changes: function(){ + this._super.apply(this, arguments); + var order = this.pos.get_order(); + if (!order) { + return; + } else if (order.in_transaction) { + self.$('.next').html(''); + } else { + self.$('.next').html('Validate '); + } + } + }); + +}); diff --git a/pos_payment_terminal/views/account_journal.xml b/pos_payment_terminal/views/account_journal.xml index 0e62aa9f..6c38cb33 100644 --- a/pos_payment_terminal/views/account_journal.xml +++ b/pos_payment_terminal/views/account_journal.xml @@ -1,14 +1,15 @@ - - pos.payment.terminal.journal.form + account.journal - - - + + + + + diff --git a/pos_payment_terminal/views/assets.xml b/pos_payment_terminal/views/assets.xml new file mode 100644 index 00000000..e3759f4f --- /dev/null +++ b/pos_payment_terminal/views/assets.xml @@ -0,0 +1,13 @@ + + + + + + diff --git a/pos_payment_terminal/views/pos_config.xml b/pos_payment_terminal/views/pos_config.xml index 6339b396..e6f68899 100644 --- a/pos_payment_terminal/views/pos_config.xml +++ b/pos_payment_terminal/views/pos_config.xml @@ -1,14 +1,17 @@ + - pos.payment.terminal.config.form pos.config - + - - - + +
+
+
diff --git a/pos_payment_terminal/views/pos_payment_terminal_template.xml b/pos_payment_terminal/views/pos_payment_terminal_template.xml deleted file mode 100644 index 0b619aff..00000000 --- a/pos_payment_terminal/views/pos_payment_terminal_template.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - -