Browse Source

Merge PR #450 into 12.0

Signed-off-by legalsylvain
pull/455/head
OCA-git-bot 4 years ago
parent
commit
22f38af6d9
  1. 1
      pos_customer_required/__init__.py
  2. 25
      pos_customer_required/__manifest__.py
  3. 111
      pos_customer_required/i18n/ca.po
  4. 112
      pos_customer_required/i18n/fr.po
  5. 104
      pos_customer_required/i18n/nl_NL.po
  6. 96
      pos_customer_required/i18n/pos_customer_required.pot
  7. 3
      pos_customer_required/models/__init__.py
  8. 25
      pos_customer_required/models/pos_config.py
  9. 27
      pos_customer_required/models/pos_make_payment.py
  10. 23
      pos_customer_required/models/pos_order.py
  11. 8
      pos_customer_required/readme/CONFIGURE.rst
  12. 4
      pos_customer_required/readme/CONTRIBUTORS.rst
  13. 28
      pos_customer_required/readme/DESCRIPTION.rst
  14. 3
      pos_customer_required/readme/USAGE.rst
  15. BIN
      pos_customer_required/static/description/frontend_pos_error_message.png
  16. BIN
      pos_customer_required/static/description/icon.png
  17. 58
      pos_customer_required/static/src/js/pos_customer_required.js
  18. 20
      pos_customer_required/static/src/xml/templates.xml
  19. 1
      pos_customer_required/tests/__init__.py
  20. 48
      pos_customer_required/tests/test_pos.py
  21. 37
      pos_customer_required/views/pos_config_view.xml
  22. 28
      pos_customer_required/views/pos_order_view.xml

1
pos_customer_required/__init__.py

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

25
pos_customer_required/__manifest__.py

@ -0,0 +1,25 @@
# Copyright (C) 2004-Today Apertoso NV (<http://www.apertoso.be>)
# Copyright (C) 2016-Today: La Louve (<http://www.lalouve.net/>)
# Copyright (C) 2019-Today: Druidoo (<https://www.druidoo.io>)
# @author: Jos DE GRAEVE (<Jos.DeGraeve@apertoso.be>)
# @author: Sylvain LE GAL (https://twitter.com/legalsylvain)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html
{
'name': 'Point of Sale Require Customer',
'version': '12.0.1.0.0',
'category': 'Point Of Sale',
'summary': 'Point of Sale Require Customer',
'author': 'Apertoso NV, La Louve, Odoo Community Association (OCA)',
'website': 'https://github.com/OCA/pos',
'license': 'AGPL-3',
'depends': [
'point_of_sale',
],
'data': [
'static/src/xml/templates.xml',
'views/pos_config_view.xml',
'views/pos_order_view.xml',
],
'installable': True,
}

111
pos_customer_required/i18n/ca.po

@ -0,0 +1,111 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * pos_customer_required
#
# Translators:
# Marc Tormo i Bochaca <mtbochaca@gmail.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-28 05:50+0000\n"
"PO-Revision-Date: 2017-03-28 05:50+0000\n"
"Last-Translator: Marc Tormo i Bochaca <mtbochaca@gmail.com>, 2017\n"
"Language-Team: Catalan (https://www.transifex.com/oca/teams/23907/ca/)\n"
"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: pos_customer_required
#. openerp-web
#: code:addons/pos_customer_required/static/src/js/pos_customer_required.js:25
#, python-format
msgid "An anonymous order cannot be confirmed"
msgstr "Una comanda anònima no pot ser confirmada "
#. module: pos_customer_required
#: code:addons/pos_customer_required/models/pos_make_payment.py:23
#, python-format
msgid ""
"An anonymous order cannot be confirmed.\n"
"Please select a customer for this order."
msgstr ""
"Una comanda anònima no pot ser confirmada.\n"
"Si us plau seleccioneu un client per a aquesta comanda. "
#. module: pos_customer_required
#: code:addons/pos_customer_required/models/pos_order.py:33
#, python-format
msgid "Customer is required for this order and is missing."
msgstr "En necessari que hi hagi un client per a aquesta comanda i no hi és. "
#. module: pos_customer_required
#: selection:pos.config,require_customer:0
msgid "Optional"
msgstr "Opcional "
#. module: pos_customer_required
#. openerp-web
#: code:addons/pos_customer_required/static/src/js/pos_customer_required.js:26
#, python-format
msgid "Please select a customer for this order."
msgstr "Si us plau seleccioneu un client per a aquesta comanda. "
#. module: pos_customer_required
#: model:ir.model,name:pos_customer_required.model_pos_order
msgid "Point of Sale"
msgstr "Punt de Venda "
#. module: pos_customer_required
#: model:ir.model,name:pos_customer_required.model_pos_make_payment
msgid "Point of Sale Payment"
msgstr "Pagament del Punt de Venda "
#. module: pos_customer_required
#: model:ir.model.fields,field_description:pos_customer_required.field_pos_config_require_customer
msgid "Require Customer"
msgstr "Client Requerit "
#. module: pos_customer_required
#: model:ir.model.fields,field_description:pos_customer_required.field_pos_order_require_customer
msgid "Require customer"
msgstr "Client requerit "
#. module: pos_customer_required
#: model:ir.model.fields,help:pos_customer_required.field_pos_config_require_customer
msgid ""
"Require customer for orders in this point of sale:\n"
"* 'Optional' (customer is optional);\n"
"* 'Required before paying';\n"
"* 'Required before starting the order';"
msgstr ""
"Requerir client per a comandes en aquest punt de venda:\n"
"* 'Opcional' (el client és opcional);\n"
"* 'Requerit abans de pagar';\n"
"* 'Requerit abans d'entrar la comanda';"
#. module: pos_customer_required
#: selection:pos.config,require_customer:0
msgid "Required before paying"
msgstr "Requerit abans de pagar "
#. module: pos_customer_required
#: selection:pos.config,require_customer:0
msgid "Required before starting the order"
msgstr "Requerit abans d'entrar la comanda "
#. module: pos_customer_required
#: model:ir.model.fields,help:pos_customer_required.field_pos_order_require_customer
msgid ""
"True if a customer is required to begin the order.\n"
"See the PoS Config to change this setting"
msgstr ""
"Veritable si un client es demanat per començar la comanda.\n"
"Mireu la configuració del TPV per canviar aquest paràmetre "
#. module: pos_customer_required
#: model:ir.model,name:pos_customer_required.model_pos_config
msgid "pos.config"
msgstr "pos.config"

112
pos_customer_required/i18n/fr.po

@ -0,0 +1,112 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * pos_customer_required
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2016
# leemannd <denis.leemann@camptocamp.com>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-12-21 03:45+0000\n"
"PO-Revision-Date: 2016-12-21 03:45+0000\n"
"Last-Translator: leemannd <denis.leemann@camptocamp.com>, 2016\n"
"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: pos_customer_required
#. openerp-web
#: code:addons/pos_customer_required/static/src/js/pos_customer_required.js:25
#, python-format
msgid "An anonymous order cannot be confirmed"
msgstr "Une commande anonyme ne peut pas être confirmée"
#. module: pos_customer_required
#: code:addons/pos_customer_required/models/pos_make_payment.py:23
#, python-format
msgid ""
"An anonymous order cannot be confirmed.\n"
"Please select a customer for this order."
msgstr ""
"Une commande anonyme ne peut pas être confirmée\n"
"Sélectionnez un client pour cette commande."
#. module: pos_customer_required
#: code:addons/pos_customer_required/models/pos_order.py:33
#, python-format
msgid "Customer is required for this order and is missing."
msgstr "Un client est requis et manquant."
#. module: pos_customer_required
#: selection:pos.config,require_customer:0
msgid "Optional"
msgstr "Facultatif"
#. module: pos_customer_required
#. openerp-web
#: code:addons/pos_customer_required/static/src/js/pos_customer_required.js:26
#, python-format
msgid "Please select a customer for this order."
msgstr "Sélectionnez un client pour cette commande."
#. module: pos_customer_required
#: model:ir.model,name:pos_customer_required.model_pos_order
msgid "Point of Sale"
msgstr "Point de vente"
#. module: pos_customer_required
#: model:ir.model,name:pos_customer_required.model_pos_make_payment
msgid "Point of Sale Payment"
msgstr "Paiement du ticket"
#. module: pos_customer_required
#: model:ir.model.fields,field_description:pos_customer_required.field_pos_config_require_customer
msgid "Require Customer"
msgstr "Client requis"
#. module: pos_customer_required
#: model:ir.model.fields,field_description:pos_customer_required.field_pos_order_require_customer
msgid "Require customer"
msgstr "Client requis"
#. module: pos_customer_required
#: model:ir.model.fields,help:pos_customer_required.field_pos_config_require_customer
msgid ""
"Require customer for orders in this point of sale:\n"
"* 'Optional' (customer is optional);\n"
"* 'Required before paying';\n"
"* 'Required before starting the order';"
msgstr ""
"Client requis pour les commandes de ce terminal de point de vente:\n"
"* 'Optionnel' (Le client est optionnel);\n"
"* 'Le client est requis avant le payement';\n"
"* 'Le client est requis avant de commencer la commande';"
#. module: pos_customer_required
#: selection:pos.config,require_customer:0
msgid "Required before paying"
msgstr "Requis avant de payer"
#. module: pos_customer_required
#: selection:pos.config,require_customer:0
msgid "Required before starting the order"
msgstr "Requis avant de commencer la vente"
#. module: pos_customer_required
#: model:ir.model.fields,help:pos_customer_required.field_pos_order_require_customer
msgid ""
"True if a customer is required to begin the order.\n"
"See the PoS Config to change this setting"
msgstr ""
"Vrai si un client est requis pour commencer une vente.\n"
"Voir la configuration du point de vente pour changer ce paramètre."
#. module: pos_customer_required
#: model:ir.model,name:pos_customer_required.model_pos_config
msgid "pos.config"
msgstr "pos.config"

104
pos_customer_required/i18n/nl_NL.po

@ -0,0 +1,104 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * pos_customer_required
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-12-13 19:57+0000\n"
"PO-Revision-Date: 2016-12-13 19:57+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\n"
"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/"
"teams/23907/nl_NL/)\n"
"Language: nl_NL\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: pos_customer_required
#. openerp-web
#: code:addons/pos_customer_required/static/src/js/pos_customer_required.js:25
#, python-format
msgid "An anonymous order cannot be confirmed"
msgstr "Een anoniem kassa order kan niet worden bevestigd"
#. module: pos_customer_required
#: code:addons/pos_customer_required/models/pos_make_payment.py:23
#, python-format
msgid ""
"An anonymous order cannot be confirmed.\n"
"Please select a customer for this order."
msgstr ""
#. module: pos_customer_required
#: code:addons/pos_customer_required/models/pos_order.py:33
#, python-format
msgid "Customer is required for this order and is missing."
msgstr ""
#. module: pos_customer_required
#: selection:pos.config,require_customer:0
msgid "Optional"
msgstr ""
#. module: pos_customer_required
#. openerp-web
#: code:addons/pos_customer_required/static/src/js/pos_customer_required.js:26
#, python-format
msgid "Please select a customer for this order."
msgstr ""
#. module: pos_customer_required
#: model:ir.model,name:pos_customer_required.model_pos_order
msgid "Point of Sale"
msgstr "Kassa"
#. module: pos_customer_required
#: model:ir.model,name:pos_customer_required.model_pos_make_payment
msgid "Point of Sale Payment"
msgstr ""
#. module: pos_customer_required
#: model:ir.model.fields,field_description:pos_customer_required.field_pos_config_require_customer
msgid "Require Customer"
msgstr ""
#. module: pos_customer_required
#: model:ir.model.fields,field_description:pos_customer_required.field_pos_order_require_customer
msgid "Require customer"
msgstr "Klant verplichten"
#. module: pos_customer_required
#: model:ir.model.fields,help:pos_customer_required.field_pos_config_require_customer
msgid ""
"Require customer for orders in this point of sale:\n"
"* 'Optional' (customer is optional);\n"
"* 'Required before paying';\n"
"* 'Required before starting the order';"
msgstr ""
#. module: pos_customer_required
#: selection:pos.config,require_customer:0
msgid "Required before paying"
msgstr ""
#. module: pos_customer_required
#: selection:pos.config,require_customer:0
msgid "Required before starting the order"
msgstr ""
#. module: pos_customer_required
#: model:ir.model.fields,help:pos_customer_required.field_pos_order_require_customer
msgid ""
"True if a customer is required to begin the order.\n"
"See the PoS Config to change this setting"
msgstr ""
#. module: pos_customer_required
#: model:ir.model,name:pos_customer_required.model_pos_config
msgid "pos.config"
msgstr ""

96
pos_customer_required/i18n/pos_customer_required.pot

@ -0,0 +1,96 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * pos_customer_required
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: pos_customer_required
#. openerp-web
#: code:addons/pos_customer_required/static/src/js/pos_customer_required.js:25
#, python-format
msgid "An anonymous order cannot be confirmed"
msgstr ""
#. module: pos_customer_required
#: code:addons/pos_customer_required/models/pos_make_payment.py:23
#, python-format
msgid "An anonymous order cannot be confirmed.\n"
"Please select a customer for this order."
msgstr ""
#. module: pos_customer_required
#: code:addons/pos_customer_required/models/pos_order.py:33
#, python-format
msgid "Customer is required for this order and is missing."
msgstr ""
#. module: pos_customer_required
#: selection:pos.config,require_customer:0
msgid "Optional"
msgstr ""
#. module: pos_customer_required
#. openerp-web
#: code:addons/pos_customer_required/static/src/js/pos_customer_required.js:26
#, python-format
msgid "Please select a customer for this order."
msgstr ""
#. module: pos_customer_required
#: model:ir.model,name:pos_customer_required.model_pos_order
msgid "Point of Sale"
msgstr ""
#. module: pos_customer_required
#: model:ir.model,name:pos_customer_required.model_pos_make_payment
msgid "Point of Sale Payment"
msgstr ""
#. module: pos_customer_required
#: model:ir.model.fields,field_description:pos_customer_required.field_pos_config_require_customer
msgid "Require Customer"
msgstr ""
#. module: pos_customer_required
#: model:ir.model.fields,field_description:pos_customer_required.field_pos_order_require_customer
msgid "Require customer"
msgstr ""
#. module: pos_customer_required
#: model:ir.model.fields,help:pos_customer_required.field_pos_config_require_customer
msgid "Require customer for orders in this point of sale:\n"
"* 'Optional' (customer is optional);\n"
"* 'Required before paying';\n"
"* 'Required before starting the order';"
msgstr ""
#. module: pos_customer_required
#: selection:pos.config,require_customer:0
msgid "Required before paying"
msgstr ""
#. module: pos_customer_required
#: selection:pos.config,require_customer:0
msgid "Required before starting the order"
msgstr ""
#. module: pos_customer_required
#: model:ir.model.fields,help:pos_customer_required.field_pos_order_require_customer
msgid "True if a customer is required to begin the order.\n"
"See the PoS Config to change this setting"
msgstr ""
#. module: pos_customer_required
#: model:ir.model,name:pos_customer_required.model_pos_config
msgid "pos.config"
msgstr ""

3
pos_customer_required/models/__init__.py

@ -0,0 +1,3 @@
from . import pos_config
from . import pos_order
from . import pos_make_payment

25
pos_customer_required/models/pos_config.py

@ -0,0 +1,25 @@
# Copyright (C) 2004-Today Apertoso NV (<http://www.apertoso.be>)
# Copyright (C) 2016-Today: La Louve (<http://www.lalouve.net/>)
# Copyright (C) 2019-Today: Druidoo (<https://www.druidoo.io>)
# @author: Jos DE GRAEVE (<Jos.DeGraeve@apertoso.be>)
# @author: Sylvain LE GAL (https://twitter.com/legalsylvain)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import fields, models
class PosConfig(models.Model):
_inherit = 'pos.config'
require_customer = fields.Selection([
('no', 'Optional'),
('payment', 'Required before paying'),
('order', 'Required before starting the order'),
],
string='Require Customer',
default='no',
help="Require customer for orders in this point of sale:\n"
"* 'Optional' (customer is optional);\n"
"* 'Required before paying';\n"
"* 'Required before starting the order';",
)

27
pos_customer_required/models/pos_make_payment.py

@ -0,0 +1,27 @@
# Copyright (C) 2016-Today: La Louve (<http://www.lalouve.net/>)
# Copyright (C) 2019-Today: Druidoo (<https://www.druidoo.io>)
# @author: Sylvain LE GAL (https://twitter.com/legalsylvain)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import models, api, _
from odoo.exceptions import UserError
class PosMakePayment(models.TransientModel):
_inherit = 'pos.make.payment'
@api.multi
def check(self):
# Load current order
order_obj = self.env['pos.order']
order = order_obj.browse(self.env.context.get('active_id', False))
# Check if control is required
if not order.partner_id\
and order.session_id.config_id.require_customer != 'no':
raise UserError(_(
"An anonymous order cannot be confirmed.\n"
"Please select a customer for this order."))
return super(PosMakePayment, self).check()

23
pos_customer_required/models/pos_order.py

@ -0,0 +1,23 @@
# Copyright (C) 2004-Today Apertoso NV (<http://www.apertoso.be>)
# Copyright (C) 2016-Today: La Louve (<http://www.lalouve.net/>)
# Copyright (C) 2019-Today: Druidoo (<https://www.druidoo.io>)
# @author: Jos DE GRAEVE (<Jos.DeGraeve@apertoso.be>)
# @author: Sylvain LE GAL (https://twitter.com/legalsylvain)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import fields, models, exceptions, api, _
class PosOrder(models.Model):
_inherit = 'pos.order'
require_customer = fields.Selection(
related='session_id.config_id.require_customer',
)
@api.constrains('partner_id', 'require_customer')
def _check_partner(self):
for rec in self:
if rec.require_customer != 'no' and not rec.partner_id:
raise exceptions.ValidationError(_(
'Customer is required for this order and is missing.'))

8
pos_customer_required/readme/CONFIGURE.rst

@ -0,0 +1,8 @@
To configure this module, you need to:
* go to point of sale -> configuration -> point of sales
* select the point of sales you want configure
* search for the "Require Customer" and choose between the following values:
* 'Optional'; (this module has no effect on this PoS config)
* 'Required before paying';
* 'Required before starting the order';

4
pos_customer_required/readme/CONTRIBUTORS.rst

@ -0,0 +1,4 @@
* Jos De Graeve <Jos.DeGraeve@apertoso.be>
* Sylvain LE GAL <https://twitter.com/legalsylvain>
* Pedro M. Baeza <pedro.baeza@gmail.com> ( reviews & feedback )
* Druidoo <https://www.druidoo.io>

28
pos_customer_required/readme/DESCRIPTION.rst

@ -0,0 +1,28 @@
This module was written to extend the functionality of odoo pos
and allows you to require a customer for each pos order. In the
pos session configuration, you can choose to require the customer for pos
orders.
If a customer is not selected, the pos ui will display an error message.
In the backend the customer field is required when needed.
Two new options are available:
* Customer 'Required before starting the order';
* Customer 'Required before paying';
'Required before starting the order' Option
-------------------------------------------
In the frontend PoS, the default screen is the screen to select customers.
* Users are not allowed to start selling before having selected a customer;
* Users can not 'deselect a customer', only select an other one;
'Required before paying' Option
-------------------------------
In the frontend PoS, the user can start selling, but if the user tries to
make payment and if a customer is not selected, the pos ui will display an
error message.
.. image:: /pos_customer_required/static/description/frontend_pos_error_message.png

3
pos_customer_required/readme/USAGE.rst

@ -0,0 +1,3 @@
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
:alt: Try me on Runbot
:target: https://runbot.odoo-community.org/runbot/184/9.0

BIN
pos_customer_required/static/description/frontend_pos_error_message.png

After

Width: 400  |  Height: 183  |  Size: 6.8 KiB

BIN
pos_customer_required/static/description/icon.png

After

Width: 96  |  Height: 96  |  Size: 4.5 KiB

58
pos_customer_required/static/src/js/pos_customer_required.js

@ -0,0 +1,58 @@
/*
Copyright (C) 2004-Today Apertoso NV (<http://www.apertoso.be>)
Copyright (C) 2016-Today La Louve (<http://www.lalouve.net/>)
@author: Jos DE GRAEVE (<Jos.DeGraeve@apertoso.be>)
@author: Sylvain LE GAL (https://twitter.com/legalsylvain)
The licence is in the file __manifest__.py
*/
odoo.define('pos_customer_required.pos_customer_required', function (require) {
"use strict";
var screens = require('point_of_sale.screens');
var gui = require('point_of_sale.gui');
var core = require('web.core');
var _t = core._t;
screens.PaymentScreenWidget.include({
validate_order: function(options) {
if(this.pos.config.require_customer != 'no'
&& !this.pos.get_order().get_client()){
this.gui.show_popup('error',{
'title': _t('An anonymous order cannot be confirmed'),
'body': _t('Please select a customer for this order.'),
});
return;
}
return this._super(options);
}
});
/*
Because of clientlist screen behaviour, it is not possible to simply
use: set_default_screen('clientlist') + remove cancel button on
customer screen.
Instead of,
- we overload the function : show_screen(screen_name,params,refresh),
- and we replace the required screen by the 'clientlist' screen if the
current PoS Order has no Customer.
*/
var _show_screen_ = gui.Gui.prototype.show_screen;
gui.Gui.prototype.show_screen = function(screen_name, params, refresh){
if(this.pos.config.require_customer == 'order'
&& !this.pos.get_order().get_client()
&& screen_name != 'clientlist'){
// We call first the original screen, to avoid to break the
// 'previous screen' mecanism
_show_screen_.call(this, screen_name, params, refresh);
screen_name = 'clientlist';
}
_show_screen_.call(this, screen_name, params, refresh);
};
});

20
pos_customer_required/static/src/xml/templates.xml

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2004-Today Apertoso NV (<http://www.apertoso.be>)
Copyright (C) 2016-Today La Louve (<http://www.lalouve.net/>)
@author: Jos DE GRAEVE (<Jos.DeGraeve@apertoso.be>)
@author: Sylvain LE GAL (https://twitter.com/legalsylvain)
The licence is in the file __manifest__.py
-->
<odoo>
<data>
<template id="assets_frontend" inherit_id="point_of_sale.assets">
<xpath expr="." position="inside">
<script type="text/javascript" src="/pos_customer_required/static/src/js/pos_customer_required.js"/>
</xpath>
</template>
</data>
</odoo>

1
pos_customer_required/tests/__init__.py

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

48
pos_customer_required/tests/test_pos.py

@ -0,0 +1,48 @@
import odoo.tests.common as common
from odoo import exceptions
class TestPosRequireCustomer(common.TransactionCase):
def setUp(self):
super(TestPosRequireCustomer, self).setUp()
self.pos_config = self.env.ref('point_of_sale.pos_config_main').copy()
def test_customer_not_required(self):
self.pos_config.require_customer = 'no'
# Now Create new session and create a
# pos order in this session
pos_session = self.env['pos.session'].create({
'user_id': 1,
'config_id': self.pos_config.id
})
# should not raise any exception
self.env['pos.order'].create({
'session_id': pos_session.id,
'partner_id': False,
'amount_tax': 0.0,
'amount_total': 0.0,
'amount_paid': 0.0,
'amount_return': 0.0
})
def test_customer_is_required(self):
self.pos_config.require_customer = 'order'
# Now Create new session and create a
# pos order in this session
pos_session = self.env['pos.session'].create({
'user_id': 1,
'config_id': self.pos_config.id
})
# should raise exceptions.ValidationError
with self.assertRaises(exceptions.ValidationError):
self.env['pos.order'].create({
'session_id': pos_session.id,
'partner_id': False,
'amount_tax': 0.0,
'amount_total': 0.0,
'amount_paid': 0.0,
'amount_return': 0.0
})

37
pos_customer_required/views/pos_config_view.xml

@ -0,0 +1,37 @@
<?xml version="1.0"?>
<!--
Copyright (C) 2004-Today Apertoso NV (<http://www.apertoso.be>)
Copyright (C) 2016-Today La Louve (<http://www.lalouve.net/>)
@author: Jos DE GRAEVE (<Jos.DeGraeve@apertoso.be>)
@author: Sylvain LE GAL (https://twitter.com/legalsylvain)
The licence is in the file __manifest__.py
-->
<odoo>
<record model="ir.ui.view" id="view_pos_config_form">
<field name="name">view.pos.config.form</field>
<field name="model">pos.config</field>
<field name="inherit_id" ref="point_of_sale.pos_config_view_form"/>
<field name="arch" type="xml">
<div id="product_prices" position="after">
<div class="col-xs-12 col-lg-6 o_setting_box" id="require_customer">
<div class="o_setting_right_pane">
<label for="require_customer" string="Require Customer"/>
<div class="text-muted">
Require Customer
</div>
<div class="content-group">
<div class="mt16">
<field name="require_customer" class="o_light_label" widget="radio"/>
</div>
</div>
</div>
</div>
</div>
</field>
</record>
</odoo>

28
pos_customer_required/views/pos_order_view.xml

@ -0,0 +1,28 @@
<?xml version="1.0"?>
<!--
Copyright (C) 2004-Today Apertoso NV (<http://www.apertoso.be>)
Copyright (C) 2016-Today La Louve (<http://www.lalouve.net/>)
@author: Jos DE GRAEVE (<Jos.DeGraeve@apertoso.be>)
@author: Sylvain LE GAL (https://twitter.com/legalsylvain)
The licence is in the file __manifest__.py
-->
<odoo>
<record model="ir.ui.view" id="view_pos_order_form">
<field name="name">view.pos.order.form</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="//sheet" position="inside">
<field name="require_customer" invisible="1"/>
</xpath>
<xpath expr="//field[@name='partner_id']" position="attributes">
<attribute name="attrs">{'readonly': [('state', '=', 'invoiced')], 'required': [('require_customer', '!=', 'no')]}</attribute>
</xpath>
</field>
</record>
</odoo>
Loading…
Cancel
Save