Wolfgang Pichler
4 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
38 changed files with 4897 additions and 0 deletions
-
105pos_loyalty/README.rst
-
3pos_loyalty/__init__.py
-
36pos_loyalty/__manifest__.py
-
8pos_loyalty/demo/templates.xml
-
523pos_loyalty/i18n/es.po
-
504pos_loyalty/i18n/fr.po
-
498pos_loyalty/i18n/hr_HR.po
-
497pos_loyalty/i18n/it.po
-
498pos_loyalty/i18n/nl_NL.po
-
483pos_loyalty/i18n/pos_loyalty.pot
-
9pos_loyalty/models/__init__.py
-
30pos_loyalty/models/loyalty_program.py
-
73pos_loyalty/models/loyalty_reward.py
-
34pos_loyalty/models/loyalty_rule.py
-
14pos_loyalty/models/pos_config.py
-
30pos_loyalty/models/pos_order.py
-
20pos_loyalty/models/pos_order_line.py
-
13pos_loyalty/models/res_partner.py
-
4pos_loyalty/readme/CONFIGURE.rst
-
3pos_loyalty/readme/CONTRIBUTORS.rst
-
6pos_loyalty/readme/DESCRIPTION.rst
-
11pos_loyalty/readme/USAGE.rst
-
7pos_loyalty/security/ir.model.access.csv
-
BINpos_loyalty/static/description/icon.png
-
449pos_loyalty/static/description/index.html
-
21pos_loyalty/static/src/css/pos.css
-
477pos_loyalty/static/src/js/pos.js
-
170pos_loyalty/static/src/js/tests.js
-
85pos_loyalty/static/src/xml/pos.xml
-
2pos_loyalty/tests/__init__.py
-
68pos_loyalty/tests/test_pos_loyalty.py
-
83pos_loyalty/views/loyalty_program_view.xml
-
37pos_loyalty/views/loyalty_reward_view.xml
-
31pos_loyalty/views/loyalty_rule_view.xml
-
23pos_loyalty/views/pos_config_view.xml
-
15pos_loyalty/views/pos_order_view.xml
-
18pos_loyalty/views/res_partner_view.xml
-
9pos_loyalty/views/templates.xml
@ -0,0 +1,105 @@ |
|||||
|
=============== |
||||
|
Loyalty Program |
||||
|
=============== |
||||
|
|
||||
|
.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
||||
|
!! This file is generated by oca-gen-addon-readme !! |
||||
|
!! changes will be overwritten. !! |
||||
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
||||
|
|
||||
|
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png |
||||
|
:target: https://odoo-community.org/page/development-status |
||||
|
:alt: Beta |
||||
|
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png |
||||
|
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html |
||||
|
:alt: License: AGPL-3 |
||||
|
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpos-lightgray.png?logo=github |
||||
|
:target: https://github.com/OCA/pos/tree/11.0/pos_loyalty |
||||
|
:alt: OCA/pos |
||||
|
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png |
||||
|
:target: https://translation.odoo-community.org/projects/pos-11-0/pos-11-0-pos_loyalty |
||||
|
:alt: Translate me on Weblate |
||||
|
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png |
||||
|
:target: https://runbot.odoo-community.org/runbot/184/11.0 |
||||
|
:alt: Try me on Runbot |
||||
|
|
||||
|
|badge1| |badge2| |badge3| |badge4| |badge5| |
||||
|
|
||||
|
This module allows you to define a loyalty program in the point of sale, |
||||
|
where the customers earn loyalty points and get rewards. |
||||
|
|
||||
|
This module is a forward-port to v10 of the pos_loyalty module from Odoo's |
||||
|
saas-6 branch. |
||||
|
The functionality was moved to the Enterprise edition in later versions. |
||||
|
|
||||
|
**Table of contents** |
||||
|
|
||||
|
.. contents:: |
||||
|
:local: |
||||
|
|
||||
|
Configuration |
||||
|
============= |
||||
|
|
||||
|
To use this module, you need to: |
||||
|
|
||||
|
* Go to *Point of Sale > Configuration > Loyalty Programs* and define a new loyalty program with specific rules and rewards. |
||||
|
* Assign the loyalty program to the desired Point of Sale. |
||||
|
|
||||
|
Usage |
||||
|
===== |
||||
|
|
||||
|
The Loyalty Program defines rules for acquiring points and rewards on which they can be spent. |
||||
|
|
||||
|
Rules can be defined globally for all products (fields on loyalty.program) and / or rules that are applied only on specific product or PoS category (loyalty.rule records) on a *points per product sold* or *points per currency spent* basis. The specific rules (loyalty.rule) can be defined as cumulative, which means that they will be aggregated with other matching rules (loyalty.rule records and loyalty.program fields). In the case of non-cumulative rules only the points from that one matching rule are used. Additionally, *fixed points per order* can be added which are applied regardless of whether or not cumulative or non-cumulative rules were applied also. |
||||
|
|
||||
|
Rewards can be of three types: |
||||
|
|
||||
|
* *Gift* - give a single unit of product for free |
||||
|
* *Discount* - give a discount to the whole order. It should be added at the end of the order so that the correct total price is used. |
||||
|
* *Resale* - allow for customer to sell back his earned points. These are calculated by setting the price on the Resale product (*resale_product.list_price* * *customer.loyalty_points*) |
||||
|
|
||||
|
All rewards can define how many points they cost (point_cost) and how many are needed so that the customer can become eligable for the reward (minimum_points). for Gift and Discount rewards minimum_points are considered only if they are greater then the point_cost for that reward (minimum_points > point_cost). For Resale products only minimum_points can be used. |
||||
|
|
||||
|
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 <https://github.com/OCA/pos/issues/new?body=module:%20pos_loyalty%0Aversion:%2011.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_. |
||||
|
|
||||
|
Do not contact contributors directly about support or help with technical issues. |
||||
|
|
||||
|
Credits |
||||
|
======= |
||||
|
|
||||
|
Authors |
||||
|
~~~~~~~ |
||||
|
|
||||
|
* OpenERP SA |
||||
|
* RGB Consulting SL |
||||
|
* Lambda IS |
||||
|
|
||||
|
Contributors |
||||
|
~~~~~~~~~~~~ |
||||
|
|
||||
|
* RGB Consulting SL (http://www.rgbconsulting.com) |
||||
|
* Forward-port from Odoo SA saas-6 branch |
||||
|
* Kiril Vangelovski <kiril@lambda-is.com> |
||||
|
|
||||
|
Maintainers |
||||
|
~~~~~~~~~~~ |
||||
|
|
||||
|
This module is maintained by the OCA. |
||||
|
|
||||
|
.. image:: https://odoo-community.org/logo.png |
||||
|
:alt: Odoo Community Association |
||||
|
:target: https://odoo-community.org |
||||
|
|
||||
|
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. |
||||
|
|
||||
|
This module is part of the `OCA/pos <https://github.com/OCA/pos/tree/11.0/pos_loyalty>`_ project on GitHub. |
||||
|
|
||||
|
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. |
@ -0,0 +1,3 @@ |
|||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). |
||||
|
|
||||
|
from . import models |
@ -0,0 +1,36 @@ |
|||||
|
# Copyright 2004-2010 OpenERP SA |
||||
|
# Copyright 2017 RGB Consulting S.L. (https://www.rgbconsulting.com) |
||||
|
# Copyright 2018 Lambda IS DOOEL <https://www.lambda-is.com> |
||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). |
||||
|
|
||||
|
{ |
||||
|
'name': 'Loyalty Program', |
||||
|
'version': '12.0.1.0.0', |
||||
|
'category': 'Point of Sale', |
||||
|
'license': 'AGPL-3', |
||||
|
'author': "OpenERP SA, " |
||||
|
"RGB Consulting SL, " |
||||
|
"Lambda IS, " |
||||
|
"Odoo Community Association (OCA)", |
||||
|
'website': "https://odoo-community.org/", |
||||
|
'depends': ['point_of_sale'], |
||||
|
'demo': [ |
||||
|
'demo/templates.xml', |
||||
|
], |
||||
|
'data': [ |
||||
|
'security/ir.model.access.csv', |
||||
|
'views/templates.xml', |
||||
|
'views/loyalty_program_view.xml', |
||||
|
'views/loyalty_reward_view.xml', |
||||
|
'views/loyalty_rule_view.xml', |
||||
|
'views/pos_config_view.xml', |
||||
|
'views/pos_order_view.xml', |
||||
|
'views/res_partner_view.xml', |
||||
|
], |
||||
|
|
||||
|
'qweb': [ |
||||
|
'static/src/xml/pos.xml', |
||||
|
], |
||||
|
|
||||
|
'installable': True, |
||||
|
} |
@ -0,0 +1,8 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<odoo> |
||||
|
<template id="assets_demo" inherit_id="point_of_sale.assets"> |
||||
|
<xpath expr="." position="inside"> |
||||
|
<script type="text/javascript" src="/pos_loyalty/static/src/js/tests.js"></script> |
||||
|
</xpath> |
||||
|
</template> |
||||
|
</odoo> |
@ -0,0 +1,523 @@ |
|||||
|
# Translation of Odoo Server. |
||||
|
# This file contains the translation of the following modules: |
||||
|
# * pos_loyalty |
||||
|
# |
||||
|
# Translators: |
||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017 |
||||
|
# enjolras <yo@miguelrevilla.com>, 2017 |
||||
|
msgid "" |
||||
|
msgstr "" |
||||
|
"Project-Id-Version: Odoo Server 10.0\n" |
||||
|
"Report-Msgid-Bugs-To: \n" |
||||
|
"POT-Creation-Date: 2018-03-01 02:01+0000\n" |
||||
|
"PO-Revision-Date: 2018-03-01 02:01+0000\n" |
||||
|
"Last-Translator: enjolras <yo@miguelrevilla.com>, 2017\n" |
||||
|
"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n" |
||||
|
"Language: es\n" |
||||
|
"MIME-Version: 1.0\n" |
||||
|
"Content-Type: text/plain; charset=UTF-8\n" |
||||
|
"Content-Transfer-Encoding: \n" |
||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_program_pp_order |
||||
|
msgid "" |
||||
|
"Amount of loyalty points given to the customer for each point of sale order" |
||||
|
msgstr "" |
||||
|
"Cantidad de puntos de fidelidad añadidos al cliente por cada pedido del " |
||||
|
"punto de venta" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_program_pp_product |
||||
|
msgid "Amount of loyalty points given to the customer per product sold" |
||||
|
msgstr "" |
||||
|
"Cantidad de puntos de fidelidad añadidos al cliente por producto vendido" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_program_pp_currency |
||||
|
msgid "Amount of loyalty points given to the customer per sold currency" |
||||
|
msgstr "Cantidad de puntos de fidelidad añadidos al cliente por moneda vendida" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_pp_currency |
||||
|
msgid "Amount of points earned per currency" |
||||
|
msgstr "Cantidad de puntos ganados por moneda" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_pp_product |
||||
|
msgid "Amount of points earned per product" |
||||
|
msgstr "Cantidad de puntos ganados por producto" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: selection:loyalty.rule,type:0 |
||||
|
msgid "Category" |
||||
|
msgstr "Categoría" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.actions.act_window,help:pos_loyalty.loyalty_program_action |
||||
|
msgid "Click create to define a Loyalty Program." |
||||
|
msgstr "Haga clic en crear para definir un Programa de Fidelización" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_res_partner |
||||
|
msgid "Contact" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_point_cost |
||||
|
msgid "Cost of the reward per monetary unit discounted" |
||||
|
msgstr "Coste de la recompensa por unidad monetaria descontada" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_create_uid |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_create_uid |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_create_uid |
||||
|
msgid "Created by" |
||||
|
msgstr "Creado por" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_create_date |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_create_date |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_create_date |
||||
|
msgid "Created on" |
||||
|
msgstr "Creado el" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_cumulative |
||||
|
msgid "Cumulative" |
||||
|
msgstr "Acumulativo" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_discount |
||||
|
#: selection:loyalty.reward,type:0 |
||||
|
msgid "Discount" |
||||
|
msgstr "Descuento" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_discount_product_id |
||||
|
msgid "Discount Product" |
||||
|
msgstr "Producto de descuento" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_discount_max |
||||
|
msgid "Discount limit" |
||||
|
msgstr "Límite de descuento" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: code:addons/pos_loyalty/models/loyalty_reward.py:64 |
||||
|
#, python-format |
||||
|
msgid "Discount product field is mandatory for discount rewards" |
||||
|
msgstr "" |
||||
|
"El campo Producto de descuento es obligatorio para las recompensas de tipo " |
||||
|
"descuento." |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_display_name |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_display_name |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_display_name |
||||
|
msgid "Display Name" |
||||
|
msgstr "Nombre a mostrar" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: selection:loyalty.reward,type:0 |
||||
|
msgid "Gift" |
||||
|
msgstr "Regalo" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_gift_product_id |
||||
|
msgid "Gift Product" |
||||
|
msgstr "Producto de regalo" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: code:addons/pos_loyalty/models/loyalty_reward.py:57 |
||||
|
#, python-format |
||||
|
msgid "Gift product field is mandatory for gift rewards" |
||||
|
msgstr "" |
||||
|
"El campo Producto de regalo es obligatorio para las recompensas de tipo " |
||||
|
"regalo" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_id |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_id |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_id |
||||
|
msgid "ID" |
||||
|
msgstr "ID" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program___last_update |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward___last_update |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule___last_update |
||||
|
msgid "Last Modified on" |
||||
|
msgstr "Última modificación el" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_write_uid |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_write_uid |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_write_uid |
||||
|
msgid "Last Updated by" |
||||
|
msgstr "Última actualización por" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_write_date |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_write_date |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_write_date |
||||
|
msgid "Last Updated on" |
||||
|
msgstr "Última actualización el" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_pos_order_line |
||||
|
#, fuzzy |
||||
|
msgid "Lines of Point of Sale Orders" |
||||
|
msgstr "Pedidos del TPV" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_pos_order_loyalty_points |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_res_partner_loyalty_points |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_res_users_loyalty_points |
||||
|
msgid "Loyalty Points" |
||||
|
msgstr "Puntos de fidelidad" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_loyalty_program_id |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_loyalty_program_id |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_pos_config_loyalty_id |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_program_form_view |
||||
|
msgid "Loyalty Program" |
||||
|
msgstr "Programa de fidelización" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.pos_config_view_form |
||||
|
#, fuzzy |
||||
|
msgid "Loyalty Program (OCA)" |
||||
|
msgstr "Programa de fidelización" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_name |
||||
|
msgid "Loyalty Program Name" |
||||
|
msgstr "Nombre programa de fidelización" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.actions.act_window,name:pos_loyalty.loyalty_program_action |
||||
|
#: model:ir.ui.menu,name:pos_loyalty.loyalty_program_menu |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_program_tree_view |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.partner_property_form_view |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.pos_order_form_view |
||||
|
msgid "Loyalty Programs" |
||||
|
msgstr "Programas de fidelización" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.actions.act_window,help:pos_loyalty.loyalty_program_action |
||||
|
msgid "" |
||||
|
"Loyalty Programs allow you customers to earn points\n" |
||||
|
" and rewards when purchasing from your shops." |
||||
|
msgstr "" |
||||
|
"Los programas de fidelización le permiten a los clientes ganar puntos\n" |
||||
|
" y recompensas al comprar en tus tiendas." |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_reward_form_view |
||||
|
msgid "Loyalty Reward" |
||||
|
msgstr "Recompensa de fidelización" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_rule_form_view |
||||
|
msgid "Loyalty Rule" |
||||
|
msgstr "Regla de fidelización" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_program_rounding |
||||
|
msgid "Loyalty point amounts will be rounded to multiples of this value" |
||||
|
msgstr "Los puntos de fidelidad se redondearán a múltiplos de este valor" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.pos_config_view_form |
||||
|
#, fuzzy |
||||
|
msgid "Loyalty program that will be available in this PoS" |
||||
|
msgstr "El programa de fidelización al que pertenece esta regla" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_discount_max |
||||
|
msgid "Maximum discounted amount allowed forthis discount reward" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_minimum_points |
||||
|
msgid "Minimum Points" |
||||
|
msgstr "Puntos mínimos" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_minimum_points |
||||
|
msgid "" |
||||
|
"Minimum amount of points the customer must have to qualify for this reward" |
||||
|
msgstr "Cantidad mínima de puntos de cliente para acceder a esta recompensa" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/js/pos.js:379 |
||||
|
#, python-format |
||||
|
msgid "No Rewards Available" |
||||
|
msgstr "No hay recompensas disponibles" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/js/pos.js:393 |
||||
|
#, python-format |
||||
|
msgid "Please select a reward" |
||||
|
msgstr "Selecciona una recompensa" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_point_cost |
||||
|
msgid "Point Cost" |
||||
|
msgstr "Coste Puntos" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_point_product_id |
||||
|
msgid "Point Product" |
||||
|
msgstr "Producto Punto" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_pos_order |
||||
|
msgid "Point of Sale Orders" |
||||
|
msgstr "Pedidos del TPV" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: code:addons/pos_loyalty/models/loyalty_reward.py:72 |
||||
|
#, python-format |
||||
|
msgid "Point product field is mandatory for point resale rewards" |
||||
|
msgstr "" |
||||
|
"El campo Producto Punto es obligatorio para recompensas de reventa de puntos" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:6 |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:71 |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:81 |
||||
|
#, python-format |
||||
|
msgid "Points" |
||||
|
msgstr "Puntos" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_rounding |
||||
|
msgid "Points Rounding" |
||||
|
msgstr "Redondeo Puntos" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:57 |
||||
|
#, python-format |
||||
|
msgid "Points Spent" |
||||
|
msgstr "Puntos Gastados" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:54 |
||||
|
#, python-format |
||||
|
msgid "Points Won" |
||||
|
msgstr "Puntos Ganados" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_pp_currency |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_pp_currency |
||||
|
msgid "Points per currency" |
||||
|
msgstr "Puntos por moneda" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_pp_order |
||||
|
msgid "Points per order" |
||||
|
msgstr "Puntos por venta" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_pp_product |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_pp_product |
||||
|
msgid "Points per product" |
||||
|
msgstr "Puntos por producto" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: selection:loyalty.rule,type:0 |
||||
|
msgid "Product" |
||||
|
msgstr "Producto" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_point_product_id |
||||
|
msgid "Product that represents a point that is sold by the customer" |
||||
|
msgstr "Producto que representa un punto vendido por el cliente" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: selection:loyalty.reward,type:0 |
||||
|
msgid "Resale" |
||||
|
msgstr "Reventa" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_name |
||||
|
msgid "Reward Name" |
||||
|
msgstr "Nombre recompensa" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_program_form_view |
||||
|
msgid "Reward the customer with gifts or discounts for loyalty points" |
||||
|
msgstr "" |
||||
|
"Recompensar al cliente con regalos o descuentos por puntos de fidelidad" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:25 |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_reward_ids |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_program_form_view |
||||
|
#, python-format |
||||
|
msgid "Rewards" |
||||
|
msgstr "Recompensas" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_name |
||||
|
msgid "Rule Name" |
||||
|
msgstr "Nombre de regla" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_rule_ids |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_program_form_view |
||||
|
msgid "Rules" |
||||
|
msgstr "Reglas" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_program_form_view |
||||
|
msgid "" |
||||
|
"Rules define how loyalty points are earned for specific products or " |
||||
|
"categories" |
||||
|
msgstr "" |
||||
|
"Las reglas definen cómo se obtienen puntos de fidelidad para productos o " |
||||
|
"categorías específicos" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_category_id |
||||
|
msgid "Target Category" |
||||
|
msgstr "Categoría afectada" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_product_id |
||||
|
msgid "Target Product" |
||||
|
msgstr "Producto afectado" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_loyalty_program_id |
||||
|
msgid "The Loyalty Program this reward belongs to" |
||||
|
msgstr "El programa de fidelización al que pertenece esta recompensa" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_loyalty_program_id |
||||
|
msgid "The Loyalty Program this rule belongs to" |
||||
|
msgstr "El programa de fidelización al que pertenece esta regla" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_pos_order_loyalty_points |
||||
|
msgid "The amount of Loyalty points awarded to the customer with this order" |
||||
|
msgstr "" |
||||
|
"La cantidad de puntos de fidelidad que el cliente obtiene con este pedido" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_category_id |
||||
|
msgid "The category affected by this rule" |
||||
|
msgstr "La categoría afectada por esta regla" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_type |
||||
|
msgid "The concept this rule applies to" |
||||
|
msgstr "El concepto al que aplica esta regla" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_discount |
||||
|
msgid "The discount percentage" |
||||
|
msgstr "El porcentaje de descuento" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_res_partner_loyalty_points |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_res_users_loyalty_points |
||||
|
msgid "The loyalty points the user won as part of a Loyalty Program" |
||||
|
msgstr "" |
||||
|
"Los puntos de fidelidad que el usuario ganó como parte de un Programa de " |
||||
|
"Fidelización" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_pos_config_loyalty_id |
||||
|
msgid "The loyalty program used by this Point of Sale" |
||||
|
msgstr "El programa de fidelización utilizado en este Punto de Venta" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_cumulative |
||||
|
msgid "" |
||||
|
"The points from this rule will be added to points won from other rules with " |
||||
|
"the same concept" |
||||
|
msgstr "" |
||||
|
"Los puntos de esta regla se añadirán a los puntos ganados en otras reglas " |
||||
|
"con el mismo concepto" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_product_id |
||||
|
msgid "The product affected by this rule" |
||||
|
msgstr "El producto afectado por esta regla" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_gift_product_id |
||||
|
msgid "The product given as a reward" |
||||
|
msgstr "El producto utilizado como recompensa" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_discount_product_id |
||||
|
msgid "The product used to apply discounts" |
||||
|
msgstr "El producto utilizado para aplicar descuentos" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/js/pos.js:380 |
||||
|
#, python-format |
||||
|
msgid "" |
||||
|
"There are no rewards available for this customer as part of the loyalty " |
||||
|
"program" |
||||
|
msgstr "" |
||||
|
"No hay recompensas disponibles para este cliente como parte de este programa " |
||||
|
"de fidelización" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:60 |
||||
|
#, python-format |
||||
|
msgid "Total Points" |
||||
|
msgstr "Total Puntos" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_type |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_type |
||||
|
msgid "Type" |
||||
|
msgstr "Tipo" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_type |
||||
|
msgid "Type of the reward" |
||||
|
msgstr "Tipo de recompensa" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.pos_config_view_form |
||||
|
msgid "abc" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_loyalty_program |
||||
|
msgid "loyalty.program" |
||||
|
msgstr "loyalty.program" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_loyalty_reward |
||||
|
msgid "loyalty.reward" |
||||
|
msgstr "loyalty.reward" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_loyalty_rule |
||||
|
msgid "loyalty.rule" |
||||
|
msgstr "loyalty.rule" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_pos_config |
||||
|
msgid "pos.config" |
||||
|
msgstr "pos.config" |
||||
|
|
||||
|
#~ msgid "Partner" |
||||
|
#~ msgstr "Empresa" |
@ -0,0 +1,504 @@ |
|||||
|
# Translation of Odoo Server. |
||||
|
# This file contains the translation of the following modules: |
||||
|
# * pos_loyalty |
||||
|
# |
||||
|
# Translators: |
||||
|
# leemannd <denis.leemann@camptocamp.com>, 2017 |
||||
|
# OCA Transbot <transbot@odoo-community.org>, 2018 |
||||
|
msgid "" |
||||
|
msgstr "" |
||||
|
"Project-Id-Version: Odoo Server 10.0\n" |
||||
|
"Report-Msgid-Bugs-To: \n" |
||||
|
"POT-Creation-Date: 2018-03-01 02:01+0000\n" |
||||
|
"PO-Revision-Date: 2018-03-01 02:01+0000\n" |
||||
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2018\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_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_program_pp_order |
||||
|
msgid "" |
||||
|
"Amount of loyalty points given to the customer for each point of sale order" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_program_pp_product |
||||
|
msgid "Amount of loyalty points given to the customer per product sold" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_program_pp_currency |
||||
|
msgid "Amount of loyalty points given to the customer per sold currency" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_pp_currency |
||||
|
msgid "Amount of points earned per currency" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_pp_product |
||||
|
msgid "Amount of points earned per product" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: selection:loyalty.rule,type:0 |
||||
|
msgid "Category" |
||||
|
msgstr "Catégorie" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.actions.act_window,help:pos_loyalty.loyalty_program_action |
||||
|
msgid "Click create to define a Loyalty Program." |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_res_partner |
||||
|
msgid "Contact" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_point_cost |
||||
|
msgid "Cost of the reward per monetary unit discounted" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_create_uid |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_create_uid |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_create_uid |
||||
|
msgid "Created by" |
||||
|
msgstr "Créé par" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_create_date |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_create_date |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_create_date |
||||
|
msgid "Created on" |
||||
|
msgstr "Créé le" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_cumulative |
||||
|
msgid "Cumulative" |
||||
|
msgstr "Cumulatif" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_discount |
||||
|
#: selection:loyalty.reward,type:0 |
||||
|
msgid "Discount" |
||||
|
msgstr "Rabaias" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_discount_product_id |
||||
|
msgid "Discount Product" |
||||
|
msgstr "Produit Soldé" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_discount_max |
||||
|
msgid "Discount limit" |
||||
|
msgstr "Limite de Rabais" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: code:addons/pos_loyalty/models/loyalty_reward.py:64 |
||||
|
#, python-format |
||||
|
msgid "Discount product field is mandatory for discount rewards" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_display_name |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_display_name |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_display_name |
||||
|
msgid "Display Name" |
||||
|
msgstr "Nom Affiché" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: selection:loyalty.reward,type:0 |
||||
|
msgid "Gift" |
||||
|
msgstr "Cadeau" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_gift_product_id |
||||
|
msgid "Gift Product" |
||||
|
msgstr "Produit Cadeau" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: code:addons/pos_loyalty/models/loyalty_reward.py:57 |
||||
|
#, python-format |
||||
|
msgid "Gift product field is mandatory for gift rewards" |
||||
|
msgstr "" |
||||
|
"Le champs 'produit cadeau' est nécessaire pour les cadeau de récompense" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_id |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_id |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_id |
||||
|
msgid "ID" |
||||
|
msgstr "ID" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program___last_update |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward___last_update |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule___last_update |
||||
|
msgid "Last Modified on" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_write_uid |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_write_uid |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_write_uid |
||||
|
msgid "Last Updated by" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_write_date |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_write_date |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_write_date |
||||
|
msgid "Last Updated on" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_pos_order_line |
||||
|
msgid "Lines of Point of Sale Orders" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_pos_order_loyalty_points |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_res_partner_loyalty_points |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_res_users_loyalty_points |
||||
|
msgid "Loyalty Points" |
||||
|
msgstr "Points de fidélité" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_loyalty_program_id |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_loyalty_program_id |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_pos_config_loyalty_id |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_program_form_view |
||||
|
msgid "Loyalty Program" |
||||
|
msgstr "Programme de Fidélité" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.pos_config_view_form |
||||
|
#, fuzzy |
||||
|
msgid "Loyalty Program (OCA)" |
||||
|
msgstr "Programme de Fidélité" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_name |
||||
|
msgid "Loyalty Program Name" |
||||
|
msgstr "Nom du Programme de Fidélité" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.actions.act_window,name:pos_loyalty.loyalty_program_action |
||||
|
#: model:ir.ui.menu,name:pos_loyalty.loyalty_program_menu |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_program_tree_view |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.partner_property_form_view |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.pos_order_form_view |
||||
|
msgid "Loyalty Programs" |
||||
|
msgstr "Progammes de Fidélité" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.actions.act_window,help:pos_loyalty.loyalty_program_action |
||||
|
msgid "" |
||||
|
"Loyalty Programs allow you customers to earn points\n" |
||||
|
" and rewards when purchasing from your shops." |
||||
|
msgstr "" |
||||
|
"Les programmes de fidélité permettent aux clients de gagner des points\n" |
||||
|
"et des cadeaux lors de leurs achats sur vos sites internet." |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_reward_form_view |
||||
|
msgid "Loyalty Reward" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_rule_form_view |
||||
|
msgid "Loyalty Rule" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_program_rounding |
||||
|
msgid "Loyalty point amounts will be rounded to multiples of this value" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.pos_config_view_form |
||||
|
msgid "Loyalty program that will be available in this PoS" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_discount_max |
||||
|
msgid "Maximum discounted amount allowed forthis discount reward" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_minimum_points |
||||
|
msgid "Minimum Points" |
||||
|
msgstr "Points Minimum" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_minimum_points |
||||
|
msgid "" |
||||
|
"Minimum amount of points the customer must have to qualify for this reward" |
||||
|
msgstr "Le minimum de points requis pour avoir le droit à cette récompense" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/js/pos.js:379 |
||||
|
#, python-format |
||||
|
msgid "No Rewards Available" |
||||
|
msgstr "Pas de récompenses disponible" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/js/pos.js:393 |
||||
|
#, python-format |
||||
|
msgid "Please select a reward" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_point_cost |
||||
|
msgid "Point Cost" |
||||
|
msgstr "Coût en points" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_point_product_id |
||||
|
msgid "Point Product" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_pos_order |
||||
|
msgid "Point of Sale Orders" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: code:addons/pos_loyalty/models/loyalty_reward.py:72 |
||||
|
#, python-format |
||||
|
msgid "Point product field is mandatory for point resale rewards" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:6 |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:71 |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:81 |
||||
|
#, python-format |
||||
|
msgid "Points" |
||||
|
msgstr "Points" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_rounding |
||||
|
msgid "Points Rounding" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:57 |
||||
|
#, python-format |
||||
|
msgid "Points Spent" |
||||
|
msgstr "Points dépensés" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:54 |
||||
|
#, python-format |
||||
|
msgid "Points Won" |
||||
|
msgstr "Points Gagnés" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_pp_currency |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_pp_currency |
||||
|
msgid "Points per currency" |
||||
|
msgstr "Points par devise" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_pp_order |
||||
|
msgid "Points per order" |
||||
|
msgstr "Points par commande" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_pp_product |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_pp_product |
||||
|
msgid "Points per product" |
||||
|
msgstr "Points par produit" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: selection:loyalty.rule,type:0 |
||||
|
msgid "Product" |
||||
|
msgstr "Produit" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_point_product_id |
||||
|
msgid "Product that represents a point that is sold by the customer" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: selection:loyalty.reward,type:0 |
||||
|
msgid "Resale" |
||||
|
msgstr "Revente" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_name |
||||
|
msgid "Reward Name" |
||||
|
msgstr "Nom de Récompense" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_program_form_view |
||||
|
msgid "Reward the customer with gifts or discounts for loyalty points" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:25 |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_reward_ids |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_program_form_view |
||||
|
#, python-format |
||||
|
msgid "Rewards" |
||||
|
msgstr "Récompenses" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_name |
||||
|
msgid "Rule Name" |
||||
|
msgstr "Nom de Règle" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_rule_ids |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_program_form_view |
||||
|
msgid "Rules" |
||||
|
msgstr "Règles" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_program_form_view |
||||
|
msgid "" |
||||
|
"Rules define how loyalty points are earned for specific products or " |
||||
|
"categories" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_category_id |
||||
|
msgid "Target Category" |
||||
|
msgstr "Catégorie cible" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_product_id |
||||
|
msgid "Target Product" |
||||
|
msgstr "Produit Cible" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_loyalty_program_id |
||||
|
msgid "The Loyalty Program this reward belongs to" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_loyalty_program_id |
||||
|
msgid "The Loyalty Program this rule belongs to" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_pos_order_loyalty_points |
||||
|
msgid "The amount of Loyalty points awarded to the customer with this order" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_category_id |
||||
|
msgid "The category affected by this rule" |
||||
|
msgstr "La catégorie affectée par la règle" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_type |
||||
|
msgid "The concept this rule applies to" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_discount |
||||
|
msgid "The discount percentage" |
||||
|
msgstr "Le pourcentage de rabais" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_res_partner_loyalty_points |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_res_users_loyalty_points |
||||
|
msgid "The loyalty points the user won as part of a Loyalty Program" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_pos_config_loyalty_id |
||||
|
msgid "The loyalty program used by this Point of Sale" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_cumulative |
||||
|
msgid "" |
||||
|
"The points from this rule will be added to points won from other rules with " |
||||
|
"the same concept" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_product_id |
||||
|
msgid "The product affected by this rule" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_gift_product_id |
||||
|
msgid "The product given as a reward" |
||||
|
msgstr "Le produit est donné en guise de récompense" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_discount_product_id |
||||
|
msgid "The product used to apply discounts" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/js/pos.js:380 |
||||
|
#, python-format |
||||
|
msgid "" |
||||
|
"There are no rewards available for this customer as part of the loyalty " |
||||
|
"program" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:60 |
||||
|
#, python-format |
||||
|
msgid "Total Points" |
||||
|
msgstr "Points Totaux" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_type |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_type |
||||
|
msgid "Type" |
||||
|
msgstr "Type" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_type |
||||
|
msgid "Type of the reward" |
||||
|
msgstr "Type de récompense" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.pos_config_view_form |
||||
|
msgid "abc" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_loyalty_program |
||||
|
msgid "loyalty.program" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_loyalty_reward |
||||
|
msgid "loyalty.reward" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_loyalty_rule |
||||
|
msgid "loyalty.rule" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_pos_config |
||||
|
msgid "pos.config" |
||||
|
msgstr "pos.config" |
||||
|
|
||||
|
#~ msgid "Partner" |
||||
|
#~ msgstr "Partner" |
@ -0,0 +1,498 @@ |
|||||
|
# Translation of Odoo Server. |
||||
|
# This file contains the translation of the following modules: |
||||
|
# * pos_loyalty |
||||
|
# |
||||
|
# Translators: |
||||
|
# Bole <bole@dajmi5.com>, 2017 |
||||
|
msgid "" |
||||
|
msgstr "" |
||||
|
"Project-Id-Version: Odoo Server 10.0\n" |
||||
|
"Report-Msgid-Bugs-To: \n" |
||||
|
"POT-Creation-Date: 2017-07-12 02:44+0000\n" |
||||
|
"PO-Revision-Date: 2017-07-12 02:44+0000\n" |
||||
|
"Last-Translator: Bole <bole@dajmi5.com>, 2017\n" |
||||
|
"Language-Team: Croatian (Croatia) (https://www.transifex.com/oca/teams/23907/" |
||||
|
"hr_HR/)\n" |
||||
|
"Language: hr_HR\n" |
||||
|
"MIME-Version: 1.0\n" |
||||
|
"Content-Type: text/plain; charset=UTF-8\n" |
||||
|
"Content-Transfer-Encoding: \n" |
||||
|
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" |
||||
|
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_program_pp_order |
||||
|
msgid "" |
||||
|
"Amount of loyalty points given to the customer for each point of sale order" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_program_pp_product |
||||
|
msgid "Amount of loyalty points given to the customer per product sold" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_program_pp_currency |
||||
|
msgid "Amount of loyalty points given to the customer per sold currency" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_pp_currency |
||||
|
msgid "Amount of points earned per currency" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_pp_product |
||||
|
msgid "Amount of points earned per product" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: selection:loyalty.rule,type:0 |
||||
|
msgid "Category" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.actions.act_window,help:pos_loyalty.loyalty_program_action |
||||
|
msgid "Click create to define a Loyalty Program." |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_res_partner |
||||
|
msgid "Contact" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_point_cost |
||||
|
msgid "Cost of the reward per monetary unit discounted" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_create_uid |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_create_uid |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_create_uid |
||||
|
msgid "Created by" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_create_date |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_create_date |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_create_date |
||||
|
msgid "Created on" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_cumulative |
||||
|
msgid "Cumulative" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_discount |
||||
|
#: selection:loyalty.reward,type:0 |
||||
|
msgid "Discount" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_discount_product_id |
||||
|
msgid "Discount Product" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_discount_max |
||||
|
msgid "Discount limit" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: code:addons/pos_loyalty/models/loyalty_reward.py:64 |
||||
|
#, python-format |
||||
|
msgid "Discount product field is mandatory for discount rewards" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_display_name |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_display_name |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_display_name |
||||
|
msgid "Display Name" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: selection:loyalty.reward,type:0 |
||||
|
msgid "Gift" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_gift_product_id |
||||
|
msgid "Gift Product" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: code:addons/pos_loyalty/models/loyalty_reward.py:57 |
||||
|
#, python-format |
||||
|
msgid "Gift product field is mandatory for gift rewards" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_id |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_id |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_id |
||||
|
msgid "ID" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program___last_update |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward___last_update |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule___last_update |
||||
|
msgid "Last Modified on" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_write_uid |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_write_uid |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_write_uid |
||||
|
msgid "Last Updated by" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_write_date |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_write_date |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_write_date |
||||
|
msgid "Last Updated on" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_pos_order_line |
||||
|
msgid "Lines of Point of Sale Orders" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_pos_order_loyalty_points |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_res_partner_loyalty_points |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_res_users_loyalty_points |
||||
|
msgid "Loyalty Points" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_loyalty_program_id |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_loyalty_program_id |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_pos_config_loyalty_id |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_program_form_view |
||||
|
msgid "Loyalty Program" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.pos_config_view_form |
||||
|
msgid "Loyalty Program (OCA)" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_name |
||||
|
msgid "Loyalty Program Name" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.actions.act_window,name:pos_loyalty.loyalty_program_action |
||||
|
#: model:ir.ui.menu,name:pos_loyalty.loyalty_program_menu |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_program_tree_view |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.partner_property_form_view |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.pos_order_form_view |
||||
|
msgid "Loyalty Programs" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.actions.act_window,help:pos_loyalty.loyalty_program_action |
||||
|
msgid "" |
||||
|
"Loyalty Programs allow you customers to earn points\n" |
||||
|
" and rewards when purchasing from your shops." |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_reward_form_view |
||||
|
msgid "Loyalty Reward" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_rule_form_view |
||||
|
msgid "Loyalty Rule" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_program_rounding |
||||
|
msgid "Loyalty point amounts will be rounded to multiples of this value" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.pos_config_view_form |
||||
|
msgid "Loyalty program that will be available in this PoS" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_discount_max |
||||
|
msgid "Maximum discounted amount allowed forthis discount reward" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_minimum_points |
||||
|
msgid "Minimum Points" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_minimum_points |
||||
|
msgid "" |
||||
|
"Minimum amount of points the customer must have to qualify for this reward" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/js/pos.js:379 |
||||
|
#, python-format |
||||
|
msgid "No Rewards Available" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/js/pos.js:393 |
||||
|
#, python-format |
||||
|
msgid "Please select a reward" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_point_cost |
||||
|
msgid "Point Cost" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_point_product_id |
||||
|
msgid "Point Product" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_pos_order |
||||
|
msgid "Point of Sale Orders" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: code:addons/pos_loyalty/models/loyalty_reward.py:72 |
||||
|
#, python-format |
||||
|
msgid "Point product field is mandatory for point resale rewards" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:6 |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:71 |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:81 |
||||
|
#, python-format |
||||
|
msgid "Points" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_rounding |
||||
|
msgid "Points Rounding" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:57 |
||||
|
#, python-format |
||||
|
msgid "Points Spent" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:54 |
||||
|
#, python-format |
||||
|
msgid "Points Won" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_pp_currency |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_pp_currency |
||||
|
msgid "Points per currency" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_pp_order |
||||
|
msgid "Points per order" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_pp_product |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_pp_product |
||||
|
msgid "Points per product" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: selection:loyalty.rule,type:0 |
||||
|
msgid "Product" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_point_product_id |
||||
|
msgid "Product that represents a point that is sold by the customer" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: selection:loyalty.reward,type:0 |
||||
|
msgid "Resale" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_name |
||||
|
msgid "Reward Name" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_program_form_view |
||||
|
msgid "Reward the customer with gifts or discounts for loyalty points" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:25 |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_reward_ids |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_program_form_view |
||||
|
#, python-format |
||||
|
msgid "Rewards" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_name |
||||
|
msgid "Rule Name" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_rule_ids |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_program_form_view |
||||
|
msgid "Rules" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_program_form_view |
||||
|
msgid "" |
||||
|
"Rules define how loyalty points are earned for specific products or " |
||||
|
"categories" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_category_id |
||||
|
msgid "Target Category" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_product_id |
||||
|
msgid "Target Product" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_loyalty_program_id |
||||
|
msgid "The Loyalty Program this reward belongs to" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_loyalty_program_id |
||||
|
msgid "The Loyalty Program this rule belongs to" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_pos_order_loyalty_points |
||||
|
msgid "The amount of Loyalty points awarded to the customer with this order" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_category_id |
||||
|
msgid "The category affected by this rule" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_type |
||||
|
msgid "The concept this rule applies to" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_discount |
||||
|
msgid "The discount percentage" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_res_partner_loyalty_points |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_res_users_loyalty_points |
||||
|
msgid "The loyalty points the user won as part of a Loyalty Program" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_pos_config_loyalty_id |
||||
|
msgid "The loyalty program used by this Point of Sale" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_cumulative |
||||
|
msgid "" |
||||
|
"The points from this rule will be added to points won from other rules with " |
||||
|
"the same concept" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_product_id |
||||
|
msgid "The product affected by this rule" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_gift_product_id |
||||
|
msgid "The product given as a reward" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_discount_product_id |
||||
|
msgid "The product used to apply discounts" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/js/pos.js:380 |
||||
|
#, python-format |
||||
|
msgid "" |
||||
|
"There are no rewards available for this customer as part of the loyalty " |
||||
|
"program" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:60 |
||||
|
#, python-format |
||||
|
msgid "Total Points" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_type |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_type |
||||
|
msgid "Type" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_type |
||||
|
msgid "Type of the reward" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.pos_config_view_form |
||||
|
msgid "abc" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_loyalty_program |
||||
|
msgid "loyalty.program" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_loyalty_reward |
||||
|
msgid "loyalty.reward" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_loyalty_rule |
||||
|
msgid "loyalty.rule" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_pos_config |
||||
|
msgid "pos.config" |
||||
|
msgstr "pos.config" |
@ -0,0 +1,497 @@ |
|||||
|
# Translation of Odoo Server. |
||||
|
# This file contains the translation of the following modules: |
||||
|
# * pos_loyalty |
||||
|
# |
||||
|
# Translators: |
||||
|
# Francesco Fresta <franco.fresta@gmail.com>, 2018 |
||||
|
msgid "" |
||||
|
msgstr "" |
||||
|
"Project-Id-Version: Odoo Server 10.0\n" |
||||
|
"Report-Msgid-Bugs-To: \n" |
||||
|
"POT-Creation-Date: 2018-03-01 02:01+0000\n" |
||||
|
"PO-Revision-Date: 2018-03-01 02:01+0000\n" |
||||
|
"Last-Translator: Francesco Fresta <franco.fresta@gmail.com>, 2018\n" |
||||
|
"Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\n" |
||||
|
"Language: it\n" |
||||
|
"MIME-Version: 1.0\n" |
||||
|
"Content-Type: text/plain; charset=UTF-8\n" |
||||
|
"Content-Transfer-Encoding: \n" |
||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_program_pp_order |
||||
|
msgid "" |
||||
|
"Amount of loyalty points given to the customer for each point of sale order" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_program_pp_product |
||||
|
msgid "Amount of loyalty points given to the customer per product sold" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_program_pp_currency |
||||
|
msgid "Amount of loyalty points given to the customer per sold currency" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_pp_currency |
||||
|
msgid "Amount of points earned per currency" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_pp_product |
||||
|
msgid "Amount of points earned per product" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: selection:loyalty.rule,type:0 |
||||
|
msgid "Category" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.actions.act_window,help:pos_loyalty.loyalty_program_action |
||||
|
msgid "Click create to define a Loyalty Program." |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_res_partner |
||||
|
msgid "Contact" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_point_cost |
||||
|
msgid "Cost of the reward per monetary unit discounted" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_create_uid |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_create_uid |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_create_uid |
||||
|
msgid "Created by" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_create_date |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_create_date |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_create_date |
||||
|
msgid "Created on" |
||||
|
msgstr "Creato il" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_cumulative |
||||
|
msgid "Cumulative" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_discount |
||||
|
#: selection:loyalty.reward,type:0 |
||||
|
msgid "Discount" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_discount_product_id |
||||
|
msgid "Discount Product" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_discount_max |
||||
|
msgid "Discount limit" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: code:addons/pos_loyalty/models/loyalty_reward.py:64 |
||||
|
#, python-format |
||||
|
msgid "Discount product field is mandatory for discount rewards" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_display_name |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_display_name |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_display_name |
||||
|
msgid "Display Name" |
||||
|
msgstr "Mostra il nome" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: selection:loyalty.reward,type:0 |
||||
|
msgid "Gift" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_gift_product_id |
||||
|
msgid "Gift Product" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: code:addons/pos_loyalty/models/loyalty_reward.py:57 |
||||
|
#, python-format |
||||
|
msgid "Gift product field is mandatory for gift rewards" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_id |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_id |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_id |
||||
|
msgid "ID" |
||||
|
msgstr "ID" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program___last_update |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward___last_update |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule___last_update |
||||
|
msgid "Last Modified on" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_write_uid |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_write_uid |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_write_uid |
||||
|
msgid "Last Updated by" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_write_date |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_write_date |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_write_date |
||||
|
msgid "Last Updated on" |
||||
|
msgstr "Ultimo aggiornamento il" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_pos_order_line |
||||
|
#, fuzzy |
||||
|
msgid "Lines of Point of Sale Orders" |
||||
|
msgstr "Punto di riordino" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_pos_order_loyalty_points |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_res_partner_loyalty_points |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_res_users_loyalty_points |
||||
|
msgid "Loyalty Points" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_loyalty_program_id |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_loyalty_program_id |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_pos_config_loyalty_id |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_program_form_view |
||||
|
msgid "Loyalty Program" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.pos_config_view_form |
||||
|
msgid "Loyalty Program (OCA)" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_name |
||||
|
msgid "Loyalty Program Name" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.actions.act_window,name:pos_loyalty.loyalty_program_action |
||||
|
#: model:ir.ui.menu,name:pos_loyalty.loyalty_program_menu |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_program_tree_view |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.partner_property_form_view |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.pos_order_form_view |
||||
|
msgid "Loyalty Programs" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.actions.act_window,help:pos_loyalty.loyalty_program_action |
||||
|
msgid "" |
||||
|
"Loyalty Programs allow you customers to earn points\n" |
||||
|
" and rewards when purchasing from your shops." |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_reward_form_view |
||||
|
msgid "Loyalty Reward" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_rule_form_view |
||||
|
msgid "Loyalty Rule" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_program_rounding |
||||
|
msgid "Loyalty point amounts will be rounded to multiples of this value" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.pos_config_view_form |
||||
|
msgid "Loyalty program that will be available in this PoS" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_discount_max |
||||
|
msgid "Maximum discounted amount allowed forthis discount reward" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_minimum_points |
||||
|
msgid "Minimum Points" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_minimum_points |
||||
|
msgid "" |
||||
|
"Minimum amount of points the customer must have to qualify for this reward" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/js/pos.js:379 |
||||
|
#, python-format |
||||
|
msgid "No Rewards Available" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/js/pos.js:393 |
||||
|
#, python-format |
||||
|
msgid "Please select a reward" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_point_cost |
||||
|
msgid "Point Cost" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_point_product_id |
||||
|
msgid "Point Product" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_pos_order |
||||
|
msgid "Point of Sale Orders" |
||||
|
msgstr "Punto di riordino" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: code:addons/pos_loyalty/models/loyalty_reward.py:72 |
||||
|
#, python-format |
||||
|
msgid "Point product field is mandatory for point resale rewards" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:6 |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:71 |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:81 |
||||
|
#, python-format |
||||
|
msgid "Points" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_rounding |
||||
|
msgid "Points Rounding" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:57 |
||||
|
#, python-format |
||||
|
msgid "Points Spent" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:54 |
||||
|
#, python-format |
||||
|
msgid "Points Won" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_pp_currency |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_pp_currency |
||||
|
msgid "Points per currency" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_pp_order |
||||
|
msgid "Points per order" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_pp_product |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_pp_product |
||||
|
msgid "Points per product" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: selection:loyalty.rule,type:0 |
||||
|
msgid "Product" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_point_product_id |
||||
|
msgid "Product that represents a point that is sold by the customer" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: selection:loyalty.reward,type:0 |
||||
|
msgid "Resale" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_name |
||||
|
msgid "Reward Name" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_program_form_view |
||||
|
msgid "Reward the customer with gifts or discounts for loyalty points" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:25 |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_reward_ids |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_program_form_view |
||||
|
#, python-format |
||||
|
msgid "Rewards" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_name |
||||
|
msgid "Rule Name" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_rule_ids |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_program_form_view |
||||
|
msgid "Rules" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_program_form_view |
||||
|
msgid "" |
||||
|
"Rules define how loyalty points are earned for specific products or " |
||||
|
"categories" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_category_id |
||||
|
msgid "Target Category" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_product_id |
||||
|
msgid "Target Product" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_loyalty_program_id |
||||
|
msgid "The Loyalty Program this reward belongs to" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_loyalty_program_id |
||||
|
msgid "The Loyalty Program this rule belongs to" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_pos_order_loyalty_points |
||||
|
msgid "The amount of Loyalty points awarded to the customer with this order" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_category_id |
||||
|
msgid "The category affected by this rule" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_type |
||||
|
msgid "The concept this rule applies to" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_discount |
||||
|
msgid "The discount percentage" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_res_partner_loyalty_points |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_res_users_loyalty_points |
||||
|
msgid "The loyalty points the user won as part of a Loyalty Program" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_pos_config_loyalty_id |
||||
|
msgid "The loyalty program used by this Point of Sale" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_cumulative |
||||
|
msgid "" |
||||
|
"The points from this rule will be added to points won from other rules with " |
||||
|
"the same concept" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_product_id |
||||
|
msgid "The product affected by this rule" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_gift_product_id |
||||
|
msgid "The product given as a reward" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_discount_product_id |
||||
|
msgid "The product used to apply discounts" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/js/pos.js:380 |
||||
|
#, python-format |
||||
|
msgid "" |
||||
|
"There are no rewards available for this customer as part of the loyalty " |
||||
|
"program" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:60 |
||||
|
#, python-format |
||||
|
msgid "Total Points" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_type |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_type |
||||
|
msgid "Type" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_type |
||||
|
msgid "Type of the reward" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.pos_config_view_form |
||||
|
msgid "abc" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_loyalty_program |
||||
|
msgid "loyalty.program" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_loyalty_reward |
||||
|
msgid "loyalty.reward" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_loyalty_rule |
||||
|
msgid "loyalty.rule" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_pos_config |
||||
|
msgid "pos.config" |
||||
|
msgstr "pos.config" |
@ -0,0 +1,498 @@ |
|||||
|
# Translation of Odoo Server. |
||||
|
# This file contains the translation of the following modules: |
||||
|
# * pos_loyalty |
||||
|
# |
||||
|
# Translators: |
||||
|
# Peter Hageman <hageman.p@gmail.com>, 2017 |
||||
|
msgid "" |
||||
|
msgstr "" |
||||
|
"Project-Id-Version: Odoo Server 10.0\n" |
||||
|
"Report-Msgid-Bugs-To: \n" |
||||
|
"POT-Creation-Date: 2017-07-12 02:44+0000\n" |
||||
|
"PO-Revision-Date: 2017-07-12 02:44+0000\n" |
||||
|
"Last-Translator: Peter Hageman <hageman.p@gmail.com>, 2017\n" |
||||
|
"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/" |
||||
|
"teams/23907/nl_NL/)\n" |
||||
|
"Language: nl_NL\n" |
||||
|
"MIME-Version: 1.0\n" |
||||
|
"Content-Type: text/plain; charset=UTF-8\n" |
||||
|
"Content-Transfer-Encoding: \n" |
||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_program_pp_order |
||||
|
msgid "" |
||||
|
"Amount of loyalty points given to the customer for each point of sale order" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_program_pp_product |
||||
|
msgid "Amount of loyalty points given to the customer per product sold" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_program_pp_currency |
||||
|
msgid "Amount of loyalty points given to the customer per sold currency" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_pp_currency |
||||
|
msgid "Amount of points earned per currency" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_pp_product |
||||
|
msgid "Amount of points earned per product" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: selection:loyalty.rule,type:0 |
||||
|
msgid "Category" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.actions.act_window,help:pos_loyalty.loyalty_program_action |
||||
|
msgid "Click create to define a Loyalty Program." |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_res_partner |
||||
|
msgid "Contact" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_point_cost |
||||
|
msgid "Cost of the reward per monetary unit discounted" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_create_uid |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_create_uid |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_create_uid |
||||
|
msgid "Created by" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_create_date |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_create_date |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_create_date |
||||
|
msgid "Created on" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_cumulative |
||||
|
msgid "Cumulative" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_discount |
||||
|
#: selection:loyalty.reward,type:0 |
||||
|
msgid "Discount" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_discount_product_id |
||||
|
msgid "Discount Product" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_discount_max |
||||
|
msgid "Discount limit" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: code:addons/pos_loyalty/models/loyalty_reward.py:64 |
||||
|
#, python-format |
||||
|
msgid "Discount product field is mandatory for discount rewards" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_display_name |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_display_name |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_display_name |
||||
|
msgid "Display Name" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: selection:loyalty.reward,type:0 |
||||
|
msgid "Gift" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_gift_product_id |
||||
|
msgid "Gift Product" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: code:addons/pos_loyalty/models/loyalty_reward.py:57 |
||||
|
#, python-format |
||||
|
msgid "Gift product field is mandatory for gift rewards" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_id |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_id |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_id |
||||
|
msgid "ID" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program___last_update |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward___last_update |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule___last_update |
||||
|
msgid "Last Modified on" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_write_uid |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_write_uid |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_write_uid |
||||
|
msgid "Last Updated by" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_write_date |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_write_date |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_write_date |
||||
|
msgid "Last Updated on" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_pos_order_line |
||||
|
#, fuzzy |
||||
|
msgid "Lines of Point of Sale Orders" |
||||
|
msgstr "Kassaorders" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_pos_order_loyalty_points |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_res_partner_loyalty_points |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_res_users_loyalty_points |
||||
|
msgid "Loyalty Points" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_loyalty_program_id |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_loyalty_program_id |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_pos_config_loyalty_id |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_program_form_view |
||||
|
msgid "Loyalty Program" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.pos_config_view_form |
||||
|
msgid "Loyalty Program (OCA)" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_name |
||||
|
msgid "Loyalty Program Name" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.actions.act_window,name:pos_loyalty.loyalty_program_action |
||||
|
#: model:ir.ui.menu,name:pos_loyalty.loyalty_program_menu |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_program_tree_view |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.partner_property_form_view |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.pos_order_form_view |
||||
|
msgid "Loyalty Programs" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.actions.act_window,help:pos_loyalty.loyalty_program_action |
||||
|
msgid "" |
||||
|
"Loyalty Programs allow you customers to earn points\n" |
||||
|
" and rewards when purchasing from your shops." |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_reward_form_view |
||||
|
msgid "Loyalty Reward" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_rule_form_view |
||||
|
msgid "Loyalty Rule" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_program_rounding |
||||
|
msgid "Loyalty point amounts will be rounded to multiples of this value" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.pos_config_view_form |
||||
|
msgid "Loyalty program that will be available in this PoS" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_discount_max |
||||
|
msgid "Maximum discounted amount allowed forthis discount reward" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_minimum_points |
||||
|
msgid "Minimum Points" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_minimum_points |
||||
|
msgid "" |
||||
|
"Minimum amount of points the customer must have to qualify for this reward" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/js/pos.js:379 |
||||
|
#, python-format |
||||
|
msgid "No Rewards Available" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/js/pos.js:393 |
||||
|
#, python-format |
||||
|
msgid "Please select a reward" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_point_cost |
||||
|
msgid "Point Cost" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_point_product_id |
||||
|
msgid "Point Product" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_pos_order |
||||
|
msgid "Point of Sale Orders" |
||||
|
msgstr "Kassaorders" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: code:addons/pos_loyalty/models/loyalty_reward.py:72 |
||||
|
#, python-format |
||||
|
msgid "Point product field is mandatory for point resale rewards" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:6 |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:71 |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:81 |
||||
|
#, python-format |
||||
|
msgid "Points" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_rounding |
||||
|
msgid "Points Rounding" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:57 |
||||
|
#, python-format |
||||
|
msgid "Points Spent" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:54 |
||||
|
#, python-format |
||||
|
msgid "Points Won" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_pp_currency |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_pp_currency |
||||
|
msgid "Points per currency" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_pp_order |
||||
|
msgid "Points per order" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_pp_product |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_pp_product |
||||
|
msgid "Points per product" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: selection:loyalty.rule,type:0 |
||||
|
msgid "Product" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_point_product_id |
||||
|
msgid "Product that represents a point that is sold by the customer" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: selection:loyalty.reward,type:0 |
||||
|
msgid "Resale" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_name |
||||
|
msgid "Reward Name" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_program_form_view |
||||
|
msgid "Reward the customer with gifts or discounts for loyalty points" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:25 |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_reward_ids |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_program_form_view |
||||
|
#, python-format |
||||
|
msgid "Rewards" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_name |
||||
|
msgid "Rule Name" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_rule_ids |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_program_form_view |
||||
|
msgid "Rules" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_program_form_view |
||||
|
msgid "" |
||||
|
"Rules define how loyalty points are earned for specific products or " |
||||
|
"categories" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_category_id |
||||
|
msgid "Target Category" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_product_id |
||||
|
msgid "Target Product" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_loyalty_program_id |
||||
|
msgid "The Loyalty Program this reward belongs to" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_loyalty_program_id |
||||
|
msgid "The Loyalty Program this rule belongs to" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_pos_order_loyalty_points |
||||
|
msgid "The amount of Loyalty points awarded to the customer with this order" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_category_id |
||||
|
msgid "The category affected by this rule" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_type |
||||
|
msgid "The concept this rule applies to" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_discount |
||||
|
msgid "The discount percentage" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_res_partner_loyalty_points |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_res_users_loyalty_points |
||||
|
msgid "The loyalty points the user won as part of a Loyalty Program" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_pos_config_loyalty_id |
||||
|
msgid "The loyalty program used by this Point of Sale" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_cumulative |
||||
|
msgid "" |
||||
|
"The points from this rule will be added to points won from other rules with " |
||||
|
"the same concept" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_product_id |
||||
|
msgid "The product affected by this rule" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_gift_product_id |
||||
|
msgid "The product given as a reward" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_discount_product_id |
||||
|
msgid "The product used to apply discounts" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/js/pos.js:380 |
||||
|
#, python-format |
||||
|
msgid "" |
||||
|
"There are no rewards available for this customer as part of the loyalty " |
||||
|
"program" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:60 |
||||
|
#, python-format |
||||
|
msgid "Total Points" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_type |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_type |
||||
|
msgid "Type" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_type |
||||
|
msgid "Type of the reward" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.pos_config_view_form |
||||
|
msgid "abc" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_loyalty_program |
||||
|
msgid "loyalty.program" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_loyalty_reward |
||||
|
msgid "loyalty.reward" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_loyalty_rule |
||||
|
msgid "loyalty.rule" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_pos_config |
||||
|
msgid "pos.config" |
||||
|
msgstr "pos.config" |
@ -0,0 +1,483 @@ |
|||||
|
# Translation of Odoo Server. |
||||
|
# This file contains the translation of the following modules: |
||||
|
# * pos_loyalty |
||||
|
# |
||||
|
msgid "" |
||||
|
msgstr "" |
||||
|
"Project-Id-Version: Odoo Server 11.0\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_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_program_pp_order |
||||
|
msgid "Amount of loyalty points given to the customer for each point of sale order" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_program_pp_product |
||||
|
msgid "Amount of loyalty points given to the customer per product sold" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_program_pp_currency |
||||
|
msgid "Amount of loyalty points given to the customer per sold currency" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_pp_currency |
||||
|
msgid "Amount of points earned per currency" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_pp_product |
||||
|
msgid "Amount of points earned per product" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: selection:loyalty.rule,type:0 |
||||
|
msgid "Category" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.actions.act_window,help:pos_loyalty.loyalty_program_action |
||||
|
msgid "Click create to define a Loyalty Program." |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_res_partner |
||||
|
msgid "Contact" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_point_cost |
||||
|
msgid "Cost of the reward per monetary unit discounted" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_create_uid |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_create_uid |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_create_uid |
||||
|
msgid "Created by" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_create_date |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_create_date |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_create_date |
||||
|
msgid "Created on" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_cumulative |
||||
|
msgid "Cumulative" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_discount |
||||
|
#: selection:loyalty.reward,type:0 |
||||
|
msgid "Discount" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_discount_product_id |
||||
|
msgid "Discount Product" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_discount_max |
||||
|
msgid "Discount limit" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: code:addons/pos_loyalty/models/loyalty_reward.py:64 |
||||
|
#, python-format |
||||
|
msgid "Discount product field is mandatory for discount rewards" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_display_name |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_display_name |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_display_name |
||||
|
msgid "Display Name" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: selection:loyalty.reward,type:0 |
||||
|
msgid "Gift" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_gift_product_id |
||||
|
msgid "Gift Product" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: code:addons/pos_loyalty/models/loyalty_reward.py:57 |
||||
|
#, python-format |
||||
|
msgid "Gift product field is mandatory for gift rewards" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_id |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_id |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_id |
||||
|
msgid "ID" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program___last_update |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward___last_update |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule___last_update |
||||
|
msgid "Last Modified on" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_write_uid |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_write_uid |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_write_uid |
||||
|
msgid "Last Updated by" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_write_date |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_write_date |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_write_date |
||||
|
msgid "Last Updated on" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_pos_order_line |
||||
|
msgid "Lines of Point of Sale Orders" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_pos_order_loyalty_points |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_res_partner_loyalty_points |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_res_users_loyalty_points |
||||
|
msgid "Loyalty Points" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_loyalty_program_id |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_loyalty_program_id |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_pos_config_loyalty_id |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_program_form_view |
||||
|
msgid "Loyalty Program" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.pos_config_view_form |
||||
|
msgid "Loyalty Program (OCA)" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_name |
||||
|
msgid "Loyalty Program Name" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.actions.act_window,name:pos_loyalty.loyalty_program_action |
||||
|
#: model:ir.ui.menu,name:pos_loyalty.loyalty_program_menu |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_program_tree_view |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.partner_property_form_view |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.pos_order_form_view |
||||
|
msgid "Loyalty Programs" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.actions.act_window,help:pos_loyalty.loyalty_program_action |
||||
|
msgid "Loyalty Programs allow you customers to earn points\n" |
||||
|
" and rewards when purchasing from your shops." |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_reward_form_view |
||||
|
msgid "Loyalty Reward" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_rule_form_view |
||||
|
msgid "Loyalty Rule" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_program_rounding |
||||
|
msgid "Loyalty point amounts will be rounded to multiples of this value" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.pos_config_view_form |
||||
|
msgid "Loyalty program that will be available in this PoS" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_discount_max |
||||
|
msgid "Maximum discounted amount allowed forthis discount reward" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_minimum_points |
||||
|
msgid "Minimum Points" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_minimum_points |
||||
|
msgid "Minimum amount of points the customer must have to qualify for this reward" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/js/pos.js:379 |
||||
|
#, python-format |
||||
|
msgid "No Rewards Available" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/js/pos.js:393 |
||||
|
#, python-format |
||||
|
msgid "Please select a reward" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_point_cost |
||||
|
msgid "Point Cost" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_point_product_id |
||||
|
msgid "Point Product" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_pos_order |
||||
|
msgid "Point of Sale Orders" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: code:addons/pos_loyalty/models/loyalty_reward.py:72 |
||||
|
#, python-format |
||||
|
msgid "Point product field is mandatory for point resale rewards" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:6 |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:71 |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:81 |
||||
|
#, python-format |
||||
|
msgid "Points" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_rounding |
||||
|
msgid "Points Rounding" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:57 |
||||
|
#, python-format |
||||
|
msgid "Points Spent" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:54 |
||||
|
#, python-format |
||||
|
msgid "Points Won" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_pp_currency |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_pp_currency |
||||
|
msgid "Points per currency" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_pp_order |
||||
|
msgid "Points per order" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_pp_product |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_pp_product |
||||
|
msgid "Points per product" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: selection:loyalty.rule,type:0 |
||||
|
msgid "Product" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_point_product_id |
||||
|
msgid "Product that represents a point that is sold by the customer" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: selection:loyalty.reward,type:0 |
||||
|
msgid "Resale" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_name |
||||
|
msgid "Reward Name" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_program_form_view |
||||
|
msgid "Reward the customer with gifts or discounts for loyalty points" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:25 |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_reward_ids |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_program_form_view |
||||
|
#, python-format |
||||
|
msgid "Rewards" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_name |
||||
|
msgid "Rule Name" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_program_rule_ids |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_program_form_view |
||||
|
msgid "Rules" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.loyalty_program_form_view |
||||
|
msgid "Rules define how loyalty points are earned for specific products or categories" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_category_id |
||||
|
msgid "Target Category" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_product_id |
||||
|
msgid "Target Product" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_loyalty_program_id |
||||
|
msgid "The Loyalty Program this reward belongs to" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_loyalty_program_id |
||||
|
msgid "The Loyalty Program this rule belongs to" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_pos_order_loyalty_points |
||||
|
msgid "The amount of Loyalty points awarded to the customer with this order" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_category_id |
||||
|
msgid "The category affected by this rule" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_type |
||||
|
msgid "The concept this rule applies to" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_discount |
||||
|
msgid "The discount percentage" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_res_partner_loyalty_points |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_res_users_loyalty_points |
||||
|
msgid "The loyalty points the user won as part of a Loyalty Program" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_pos_config_loyalty_id |
||||
|
msgid "The loyalty program used by this Point of Sale" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_cumulative |
||||
|
msgid "The points from this rule will be added to points won from other rules with the same concept" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_rule_product_id |
||||
|
msgid "The product affected by this rule" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_gift_product_id |
||||
|
msgid "The product given as a reward" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_discount_product_id |
||||
|
msgid "The product used to apply discounts" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/js/pos.js:380 |
||||
|
#, python-format |
||||
|
msgid "There are no rewards available for this customer as part of the loyalty program" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#. openerp-web |
||||
|
#: code:addons/pos_loyalty/static/src/xml/pos.xml:60 |
||||
|
#, python-format |
||||
|
msgid "Total Points" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_reward_type |
||||
|
#: model:ir.model.fields,field_description:pos_loyalty.field_loyalty_rule_type |
||||
|
msgid "Type" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model.fields,help:pos_loyalty.field_loyalty_reward_type |
||||
|
msgid "Type of the reward" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.ui.view,arch_db:pos_loyalty.pos_config_view_form |
||||
|
msgid "abc" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_loyalty_program |
||||
|
msgid "loyalty.program" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_loyalty_reward |
||||
|
msgid "loyalty.reward" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_loyalty_rule |
||||
|
msgid "loyalty.rule" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: pos_loyalty |
||||
|
#: model:ir.model,name:pos_loyalty.model_pos_config |
||||
|
msgid "pos.config" |
||||
|
msgstr "" |
||||
|
|
@ -0,0 +1,9 @@ |
|||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). |
||||
|
|
||||
|
from . import loyalty_program |
||||
|
from . import loyalty_reward |
||||
|
from . import loyalty_rule |
||||
|
from . import pos_config |
||||
|
from . import pos_order |
||||
|
from . import pos_order_line |
||||
|
from . import res_partner |
@ -0,0 +1,30 @@ |
|||||
|
# Copyright 2004-2010 OpenERP SA |
||||
|
# Copyright 2017 RGB Consulting S.L. (https://www.rgbconsulting.com) |
||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). |
||||
|
|
||||
|
from odoo import fields, models |
||||
|
|
||||
|
|
||||
|
class LoyaltyProgram(models.Model): |
||||
|
_name = 'loyalty.program' |
||||
|
|
||||
|
name = fields.Char(string='Loyalty Program Name', size=32, index=True, |
||||
|
required=True) |
||||
|
pp_currency = fields.Float(string='Points per currency', |
||||
|
help='Amount of loyalty points given to the ' |
||||
|
'customer per sold currency') |
||||
|
pp_product = fields.Float(string='Points per product', |
||||
|
help='Amount of loyalty points given to the ' |
||||
|
'customer per product sold') |
||||
|
pp_order = fields.Float(string='Points per order', |
||||
|
help='Amount of loyalty points given to the ' |
||||
|
'customer for each point of sale order') |
||||
|
rounding = fields.Float(string='Points Rounding', default=1, |
||||
|
help='Loyalty point amounts will be rounded to ' |
||||
|
'multiples of this value') |
||||
|
rule_ids = fields.One2many(comodel_name='loyalty.rule', |
||||
|
inverse_name='loyalty_program_id', |
||||
|
string='Rules') |
||||
|
reward_ids = fields.One2many(comodel_name='loyalty.reward', |
||||
|
inverse_name='loyalty_program_id', |
||||
|
string='Rewards') |
@ -0,0 +1,73 @@ |
|||||
|
# Copyright 2004-2010 OpenERP SA |
||||
|
# Copyright 2017 RGB Consulting S.L. (https://www.rgbconsulting.com) |
||||
|
# Copyright 2018 Lambda IS DOOEL <https://www.lambda-is.com> |
||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). |
||||
|
|
||||
|
from odoo import fields, models, api, _ |
||||
|
from odoo.exceptions import ValidationError |
||||
|
|
||||
|
|
||||
|
class LoyaltyReward(models.Model): |
||||
|
_name = 'loyalty.reward' |
||||
|
|
||||
|
name = fields.Char(string='Reward Name', size=32, index=True, |
||||
|
required=True) |
||||
|
type = fields.Selection(selection=[('gift', 'Gift'), |
||||
|
('discount', 'Discount'), |
||||
|
('resale', 'Resale')], |
||||
|
string='Type', required=True, |
||||
|
help='Type of the reward') |
||||
|
minimum_points = fields.Float(string='Minimum Points', |
||||
|
help='Minimum amount of points the customer' |
||||
|
' must have to qualify for this reward') |
||||
|
point_cost = fields.Float(string='Point Cost', |
||||
|
help='Cost of the reward per monetary unit ' |
||||
|
'discounted') |
||||
|
discount = fields.Float(help='The discount percentage') |
||||
|
discount_max = fields.Float(string='Discount limit', |
||||
|
help='Maximum discounted amount allowed for' |
||||
|
'this discount reward') |
||||
|
loyalty_program_id = fields.Many2one(comodel_name='loyalty.program', |
||||
|
string='Loyalty Program', |
||||
|
help='The Loyalty Program this reward' |
||||
|
' belongs to') |
||||
|
gift_product_id = fields.Many2one(comodel_name='product.product', |
||||
|
domain=[('available_in_pos', '=', True)], |
||||
|
string='Gift Product', |
||||
|
help='The product given as a reward') |
||||
|
discount_product_id = fields.Many2one(comodel_name='product.product', |
||||
|
domain=[ |
||||
|
('available_in_pos', '=', True)], |
||||
|
string='Discount Product', |
||||
|
help='The product used to apply ' |
||||
|
'discounts') |
||||
|
point_product_id = fields.Many2one(comodel_name='product.product', |
||||
|
domain=[ |
||||
|
('available_in_pos', '=', True)], |
||||
|
string='Point Product', |
||||
|
help='Product that represents a point ' |
||||
|
'that is sold by the customer') |
||||
|
|
||||
|
@api.multi |
||||
|
@api.constrains('type', 'gift_product_id') |
||||
|
def _check_gift_product(self): |
||||
|
for reward in self: |
||||
|
if reward.type == 'gift' and not reward.gift_product_id: |
||||
|
raise ValidationError( |
||||
|
_('Gift product field is mandatory for gift rewards')) |
||||
|
|
||||
|
@api.multi |
||||
|
@api.constrains('type', 'discount_product_id') |
||||
|
def _check_discount_product(self): |
||||
|
for reward in self: |
||||
|
if reward.type == 'discount' and not reward.discount_product_id: |
||||
|
raise ValidationError(_('Discount product field is ' |
||||
|
'mandatory for discount rewards')) |
||||
|
|
||||
|
@api.multi |
||||
|
@api.constrains('type', 'point_product_id') |
||||
|
def _check_point_product(self): |
||||
|
for reward in self: |
||||
|
if reward.type == 'resale' and not reward.point_product_id: |
||||
|
raise ValidationError(_('Point product field is ' |
||||
|
'mandatory for point resale rewards')) |
@ -0,0 +1,34 @@ |
|||||
|
# Copyright 2004-2010 OpenERP SA |
||||
|
# Copyright 2017 RGB Consulting S.L. (https://www.rgbconsulting.com) |
||||
|
# Copyright 2018 Lambda IS DOOEL <https://www.lambda-is.com> |
||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). |
||||
|
|
||||
|
from odoo import fields, models |
||||
|
|
||||
|
|
||||
|
class LoyaltyRule(models.Model): |
||||
|
_name = 'loyalty.rule' |
||||
|
|
||||
|
name = fields.Char(string='Rule Name', size=32, index=True, required=True) |
||||
|
type = fields.Selection(selection=[('product', 'Product'), |
||||
|
('category', 'Category')], |
||||
|
string='Type', required=True, default='product', |
||||
|
help='The concept this rule applies to') |
||||
|
cumulative = fields.Boolean(help='The points from this rule will be added ' |
||||
|
'to points won from other rules with ' |
||||
|
'the same concept') |
||||
|
pp_product = fields.Float(string='Points per product', |
||||
|
help='Amount of points earned per product') |
||||
|
pp_currency = fields.Float(string='Points per currency', |
||||
|
help='Amount of points earned per currency') |
||||
|
loyalty_program_id = fields.Many2one(comodel_name='loyalty.program', |
||||
|
string='Loyalty Program', |
||||
|
help='The Loyalty Program this rule ' |
||||
|
'belongs to') |
||||
|
product_id = fields.Many2one(comodel_name='product.product', |
||||
|
domain=[('available_in_pos', '=', True)], |
||||
|
string='Target Product', |
||||
|
help='The product affected by this rule') |
||||
|
category_id = fields.Many2one(comodel_name='pos.category', |
||||
|
string='Target Category', |
||||
|
help='The category affected by this rule') |
@ -0,0 +1,14 @@ |
|||||
|
# Copyright 2004-2010 OpenERP SA |
||||
|
# Copyright 2017 RGB Consulting S.L. (https://www.rgbconsulting.com) |
||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). |
||||
|
|
||||
|
from odoo import fields, models |
||||
|
|
||||
|
|
||||
|
class PosConfig(models.Model): |
||||
|
_inherit = 'pos.config' |
||||
|
|
||||
|
loyalty_id = fields.Many2one(comodel_name='loyalty.program', |
||||
|
string='Loyalty Program', |
||||
|
help='The loyalty program used by this ' |
||||
|
'Point of Sale') |
@ -0,0 +1,30 @@ |
|||||
|
# Copyright 2004-2010 OpenERP SA |
||||
|
# Copyright 2017 RGB Consulting S.L. (https://www.rgbconsulting.com) |
||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). |
||||
|
|
||||
|
from odoo import fields, models, api |
||||
|
|
||||
|
|
||||
|
class PosOrder(models.Model): |
||||
|
_inherit = 'pos.order' |
||||
|
|
||||
|
loyalty_points = fields.Float(string='Loyalty Points', |
||||
|
help='The amount of Loyalty points awarded ' |
||||
|
'to the customer with this order') |
||||
|
|
||||
|
@api.model |
||||
|
def _order_fields(self, ui_order): |
||||
|
res = super(PosOrder, self)._order_fields(ui_order) |
||||
|
res['loyalty_points'] = ui_order.get('loyalty_points', 0) |
||||
|
return res |
||||
|
|
||||
|
@api.model |
||||
|
def create_from_ui(self, orders): |
||||
|
res = super(PosOrder, self).create_from_ui(orders) |
||||
|
for order in orders: |
||||
|
order_partner = order['data']['partner_id'] |
||||
|
order_points = order['data'].get('loyalty_points', 0) |
||||
|
if order_points != 0 and order_partner: |
||||
|
partner = self.env['res.partner'].browse(order_partner) |
||||
|
partner.loyalty_points += order_points |
||||
|
return res |
@ -0,0 +1,20 @@ |
|||||
|
# Copyright 2018 Lambda IS DOOEL <https://www.lambda-is.com> |
||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). |
||||
|
|
||||
|
from odoo import api, models |
||||
|
|
||||
|
|
||||
|
class PosOrderLine(models.Model): |
||||
|
_inherit = 'pos.order.line' |
||||
|
|
||||
|
@api.model |
||||
|
def _order_line_fields(self, line, session_id=None): |
||||
|
line = super(PosOrderLine, self)._order_line_fields( |
||||
|
line, session_id=session_id) |
||||
|
if line and 'reward_id' in line[2]: |
||||
|
# Delete the key since field doesn't exist |
||||
|
# and raises a warning in the logs. |
||||
|
# TODO: add field and remove this if data will be |
||||
|
# used on server, example in report / widget. |
||||
|
del line[2]['reward_id'] |
||||
|
return line |
@ -0,0 +1,13 @@ |
|||||
|
# Copyright 2004-2010 OpenERP SA |
||||
|
# Copyright 2017 RGB Consulting S.L. (https://www.rgbconsulting.com) |
||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). |
||||
|
|
||||
|
from odoo import fields, models |
||||
|
|
||||
|
|
||||
|
class ResPartner(models.Model): |
||||
|
_inherit = 'res.partner' |
||||
|
|
||||
|
loyalty_points = fields.Float(string='Loyalty Points', |
||||
|
help='The loyalty points the user won as ' |
||||
|
'part of a Loyalty Program') |
@ -0,0 +1,4 @@ |
|||||
|
To use this module, you need to: |
||||
|
|
||||
|
* Go to *Point of Sale > Configuration > Loyalty Programs* and define a new loyalty program with specific rules and rewards. |
||||
|
* Assign the loyalty program to the desired Point of Sale. |
@ -0,0 +1,3 @@ |
|||||
|
* RGB Consulting SL (http://www.rgbconsulting.com) |
||||
|
* Forward-port from Odoo SA saas-6 branch |
||||
|
* Kiril Vangelovski <kiril@lambda-is.com> |
@ -0,0 +1,6 @@ |
|||||
|
This module allows you to define a loyalty program in the point of sale, |
||||
|
where the customers earn loyalty points and get rewards. |
||||
|
|
||||
|
This module is a forward-port to v12 of the pos_loyalty module from Odoo's |
||||
|
saas-6 branch. |
||||
|
The functionality was moved to the Enterprise edition in later versions. |
@ -0,0 +1,11 @@ |
|||||
|
The Loyalty Program defines rules for acquiring points and rewards on which they can be spent. |
||||
|
|
||||
|
Rules can be defined globally for all products (fields on loyalty.program) and / or rules that are applied only on specific product or PoS category (loyalty.rule records) on a *points per product sold* or *points per currency spent* basis. The specific rules (loyalty.rule) can be defined as cumulative, which means that they will be aggregated with other matching rules (loyalty.rule records and loyalty.program fields). In the case of non-cumulative rules only the points from that one matching rule are used. Additionally, *fixed points per order* can be added which are applied regardless of whether or not cumulative or non-cumulative rules were applied also. |
||||
|
|
||||
|
Rewards can be of three types: |
||||
|
|
||||
|
* *Gift* - give a single unit of product for free |
||||
|
* *Discount* - give a discount to the whole order. It should be added at the end of the order so that the correct total price is used. |
||||
|
* *Resale* - allow for customer to sell back his earned points. These are calculated by setting the price on the Resale product (*resale_product.list_price* * *customer.loyalty_points*) |
||||
|
|
||||
|
All rewards can define how many points they cost (point_cost) and how many are needed so that the customer can become eligable for the reward (minimum_points). for Gift and Discount rewards minimum_points are considered only if they are greater then the point_cost for that reward (minimum_points > point_cost). For Resale products only minimum_points can be used. |
@ -0,0 +1,7 @@ |
|||||
|
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink |
||||
|
access_loyalty_program,loyalty.program.user,model_loyalty_program,point_of_sale.group_pos_user,1,0,0,0 |
||||
|
access_loyalty_program_manager,loyalty.program.manager,model_loyalty_program,point_of_sale.group_pos_manager,1,1,1,1 |
||||
|
access_loyalty_rule,loyalty.rule.user,model_loyalty_rule,point_of_sale.group_pos_user,1,0,0,0 |
||||
|
access_loyalty_rule_manager,loyalty.rule.manager,model_loyalty_rule,point_of_sale.group_pos_manager,1,1,1,1 |
||||
|
access_loyalty_reward,loyalty.reward.user,model_loyalty_reward,point_of_sale.group_pos_user,1,0,0,0 |
||||
|
access_loyalty_reward_manager,loyalty.reward.manager,model_loyalty_reward,point_of_sale.group_pos_manager,1,1,1,1 |
After Width: 128 | Height: 128 | Size: 9.2 KiB |
@ -0,0 +1,449 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8" ?> |
||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
||||
|
<head> |
||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
||||
|
<meta name="generator" content="Docutils 0.14: http://docutils.sourceforge.net/" /> |
||||
|
<title>Loyalty Program</title> |
||||
|
<style type="text/css"> |
||||
|
|
||||
|
/* |
||||
|
:Author: David Goodger (goodger@python.org) |
||||
|
:Id: $Id: html4css1.css 7952 2016-07-26 18:15:59Z milde $ |
||||
|
:Copyright: This stylesheet has been placed in the public domain. |
||||
|
|
||||
|
Default cascading style sheet for the HTML output of Docutils. |
||||
|
|
||||
|
See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to |
||||
|
customize this style sheet. |
||||
|
*/ |
||||
|
|
||||
|
/* used to remove borders from tables and images */ |
||||
|
.borderless, table.borderless td, table.borderless th { |
||||
|
border: 0 } |
||||
|
|
||||
|
table.borderless td, table.borderless th { |
||||
|
/* Override padding for "table.docutils td" with "! important". |
||||
|
The right padding separates the table cells. */ |
||||
|
padding: 0 0.5em 0 0 ! important } |
||||
|
|
||||
|
.first { |
||||
|
/* Override more specific margin styles with "! important". */ |
||||
|
margin-top: 0 ! important } |
||||
|
|
||||
|
.last, .with-subtitle { |
||||
|
margin-bottom: 0 ! important } |
||||
|
|
||||
|
.hidden { |
||||
|
display: none } |
||||
|
|
||||
|
.subscript { |
||||
|
vertical-align: sub; |
||||
|
font-size: smaller } |
||||
|
|
||||
|
.superscript { |
||||
|
vertical-align: super; |
||||
|
font-size: smaller } |
||||
|
|
||||
|
a.toc-backref { |
||||
|
text-decoration: none ; |
||||
|
color: black } |
||||
|
|
||||
|
blockquote.epigraph { |
||||
|
margin: 2em 5em ; } |
||||
|
|
||||
|
dl.docutils dd { |
||||
|
margin-bottom: 0.5em } |
||||
|
|
||||
|
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] { |
||||
|
overflow: hidden; |
||||
|
} |
||||
|
|
||||
|
/* Uncomment (and remove this text!) to get bold-faced definition list terms |
||||
|
dl.docutils dt { |
||||
|
font-weight: bold } |
||||
|
*/ |
||||
|
|
||||
|
div.abstract { |
||||
|
margin: 2em 5em } |
||||
|
|
||||
|
div.abstract p.topic-title { |
||||
|
font-weight: bold ; |
||||
|
text-align: center } |
||||
|
|
||||
|
div.admonition, div.attention, div.caution, div.danger, div.error, |
||||
|
div.hint, div.important, div.note, div.tip, div.warning { |
||||
|
margin: 2em ; |
||||
|
border: medium outset ; |
||||
|
padding: 1em } |
||||
|
|
||||
|
div.admonition p.admonition-title, div.hint p.admonition-title, |
||||
|
div.important p.admonition-title, div.note p.admonition-title, |
||||
|
div.tip p.admonition-title { |
||||
|
font-weight: bold ; |
||||
|
font-family: sans-serif } |
||||
|
|
||||
|
div.attention p.admonition-title, div.caution p.admonition-title, |
||||
|
div.danger p.admonition-title, div.error p.admonition-title, |
||||
|
div.warning p.admonition-title, .code .error { |
||||
|
color: red ; |
||||
|
font-weight: bold ; |
||||
|
font-family: sans-serif } |
||||
|
|
||||
|
/* Uncomment (and remove this text!) to get reduced vertical space in |
||||
|
compound paragraphs. |
||||
|
div.compound .compound-first, div.compound .compound-middle { |
||||
|
margin-bottom: 0.5em } |
||||
|
|
||||
|
div.compound .compound-last, div.compound .compound-middle { |
||||
|
margin-top: 0.5em } |
||||
|
*/ |
||||
|
|
||||
|
div.dedication { |
||||
|
margin: 2em 5em ; |
||||
|
text-align: center ; |
||||
|
font-style: italic } |
||||
|
|
||||
|
div.dedication p.topic-title { |
||||
|
font-weight: bold ; |
||||
|
font-style: normal } |
||||
|
|
||||
|
div.figure { |
||||
|
margin-left: 2em ; |
||||
|
margin-right: 2em } |
||||
|
|
||||
|
div.footer, div.header { |
||||
|
clear: both; |
||||
|
font-size: smaller } |
||||
|
|
||||
|
div.line-block { |
||||
|
display: block ; |
||||
|
margin-top: 1em ; |
||||
|
margin-bottom: 1em } |
||||
|
|
||||
|
div.line-block div.line-block { |
||||
|
margin-top: 0 ; |
||||
|
margin-bottom: 0 ; |
||||
|
margin-left: 1.5em } |
||||
|
|
||||
|
div.sidebar { |
||||
|
margin: 0 0 0.5em 1em ; |
||||
|
border: medium outset ; |
||||
|
padding: 1em ; |
||||
|
background-color: #ffffee ; |
||||
|
width: 40% ; |
||||
|
float: right ; |
||||
|
clear: right } |
||||
|
|
||||
|
div.sidebar p.rubric { |
||||
|
font-family: sans-serif ; |
||||
|
font-size: medium } |
||||
|
|
||||
|
div.system-messages { |
||||
|
margin: 5em } |
||||
|
|
||||
|
div.system-messages h1 { |
||||
|
color: red } |
||||
|
|
||||
|
div.system-message { |
||||
|
border: medium outset ; |
||||
|
padding: 1em } |
||||
|
|
||||
|
div.system-message p.system-message-title { |
||||
|
color: red ; |
||||
|
font-weight: bold } |
||||
|
|
||||
|
div.topic { |
||||
|
margin: 2em } |
||||
|
|
||||
|
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle, |
||||
|
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle { |
||||
|
margin-top: 0.4em } |
||||
|
|
||||
|
h1.title { |
||||
|
text-align: center } |
||||
|
|
||||
|
h2.subtitle { |
||||
|
text-align: center } |
||||
|
|
||||
|
hr.docutils { |
||||
|
width: 75% } |
||||
|
|
||||
|
img.align-left, .figure.align-left, object.align-left, table.align-left { |
||||
|
clear: left ; |
||||
|
float: left ; |
||||
|
margin-right: 1em } |
||||
|
|
||||
|
img.align-right, .figure.align-right, object.align-right, table.align-right { |
||||
|
clear: right ; |
||||
|
float: right ; |
||||
|
margin-left: 1em } |
||||
|
|
||||
|
img.align-center, .figure.align-center, object.align-center { |
||||
|
display: block; |
||||
|
margin-left: auto; |
||||
|
margin-right: auto; |
||||
|
} |
||||
|
|
||||
|
table.align-center { |
||||
|
margin-left: auto; |
||||
|
margin-right: auto; |
||||
|
} |
||||
|
|
||||
|
.align-left { |
||||
|
text-align: left } |
||||
|
|
||||
|
.align-center { |
||||
|
clear: both ; |
||||
|
text-align: center } |
||||
|
|
||||
|
.align-right { |
||||
|
text-align: right } |
||||
|
|
||||
|
/* reset inner alignment in figures */ |
||||
|
div.align-right { |
||||
|
text-align: inherit } |
||||
|
|
||||
|
/* div.align-center * { */ |
||||
|
/* text-align: left } */ |
||||
|
|
||||
|
.align-top { |
||||
|
vertical-align: top } |
||||
|
|
||||
|
.align-middle { |
||||
|
vertical-align: middle } |
||||
|
|
||||
|
.align-bottom { |
||||
|
vertical-align: bottom } |
||||
|
|
||||
|
ol.simple, ul.simple { |
||||
|
margin-bottom: 1em } |
||||
|
|
||||
|
ol.arabic { |
||||
|
list-style: decimal } |
||||
|
|
||||
|
ol.loweralpha { |
||||
|
list-style: lower-alpha } |
||||
|
|
||||
|
ol.upperalpha { |
||||
|
list-style: upper-alpha } |
||||
|
|
||||
|
ol.lowerroman { |
||||
|
list-style: lower-roman } |
||||
|
|
||||
|
ol.upperroman { |
||||
|
list-style: upper-roman } |
||||
|
|
||||
|
p.attribution { |
||||
|
text-align: right ; |
||||
|
margin-left: 50% } |
||||
|
|
||||
|
p.caption { |
||||
|
font-style: italic } |
||||
|
|
||||
|
p.credits { |
||||
|
font-style: italic ; |
||||
|
font-size: smaller } |
||||
|
|
||||
|
p.label { |
||||
|
white-space: nowrap } |
||||
|
|
||||
|
p.rubric { |
||||
|
font-weight: bold ; |
||||
|
font-size: larger ; |
||||
|
color: maroon ; |
||||
|
text-align: center } |
||||
|
|
||||
|
p.sidebar-title { |
||||
|
font-family: sans-serif ; |
||||
|
font-weight: bold ; |
||||
|
font-size: larger } |
||||
|
|
||||
|
p.sidebar-subtitle { |
||||
|
font-family: sans-serif ; |
||||
|
font-weight: bold } |
||||
|
|
||||
|
p.topic-title { |
||||
|
font-weight: bold } |
||||
|
|
||||
|
pre.address { |
||||
|
margin-bottom: 0 ; |
||||
|
margin-top: 0 ; |
||||
|
font: inherit } |
||||
|
|
||||
|
pre.literal-block, pre.doctest-block, pre.math, pre.code { |
||||
|
margin-left: 2em ; |
||||
|
margin-right: 2em } |
||||
|
|
||||
|
pre.code .ln { color: grey; } /* line numbers */ |
||||
|
pre.code, code { background-color: #eeeeee } |
||||
|
pre.code .comment, code .comment { color: #5C6576 } |
||||
|
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold } |
||||
|
pre.code .literal.string, code .literal.string { color: #0C5404 } |
||||
|
pre.code .name.builtin, code .name.builtin { color: #352B84 } |
||||
|
pre.code .deleted, code .deleted { background-color: #DEB0A1} |
||||
|
pre.code .inserted, code .inserted { background-color: #A3D289} |
||||
|
|
||||
|
span.classifier { |
||||
|
font-family: sans-serif ; |
||||
|
font-style: oblique } |
||||
|
|
||||
|
span.classifier-delimiter { |
||||
|
font-family: sans-serif ; |
||||
|
font-weight: bold } |
||||
|
|
||||
|
span.interpreted { |
||||
|
font-family: sans-serif } |
||||
|
|
||||
|
span.option { |
||||
|
white-space: nowrap } |
||||
|
|
||||
|
span.pre { |
||||
|
white-space: pre } |
||||
|
|
||||
|
span.problematic { |
||||
|
color: red } |
||||
|
|
||||
|
span.section-subtitle { |
||||
|
/* font-size relative to parent (h1..h6 element) */ |
||||
|
font-size: 80% } |
||||
|
|
||||
|
table.citation { |
||||
|
border-left: solid 1px gray; |
||||
|
margin-left: 1px } |
||||
|
|
||||
|
table.docinfo { |
||||
|
margin: 2em 4em } |
||||
|
|
||||
|
table.docutils { |
||||
|
margin-top: 0.5em ; |
||||
|
margin-bottom: 0.5em } |
||||
|
|
||||
|
table.footnote { |
||||
|
border-left: solid 1px black; |
||||
|
margin-left: 1px } |
||||
|
|
||||
|
table.docutils td, table.docutils th, |
||||
|
table.docinfo td, table.docinfo th { |
||||
|
padding-left: 0.5em ; |
||||
|
padding-right: 0.5em ; |
||||
|
vertical-align: top } |
||||
|
|
||||
|
table.docutils th.field-name, table.docinfo th.docinfo-name { |
||||
|
font-weight: bold ; |
||||
|
text-align: left ; |
||||
|
white-space: nowrap ; |
||||
|
padding-left: 0 } |
||||
|
|
||||
|
/* "booktabs" style (no vertical lines) */ |
||||
|
table.docutils.booktabs { |
||||
|
border: 0px; |
||||
|
border-top: 2px solid; |
||||
|
border-bottom: 2px solid; |
||||
|
border-collapse: collapse; |
||||
|
} |
||||
|
table.docutils.booktabs * { |
||||
|
border: 0px; |
||||
|
} |
||||
|
table.docutils.booktabs th { |
||||
|
border-bottom: thin solid; |
||||
|
text-align: left; |
||||
|
} |
||||
|
|
||||
|
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils, |
||||
|
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils { |
||||
|
font-size: 100% } |
||||
|
|
||||
|
ul.auto-toc { |
||||
|
list-style-type: none } |
||||
|
|
||||
|
</style> |
||||
|
</head> |
||||
|
<body> |
||||
|
<div class="document" id="loyalty-program"> |
||||
|
<h1 class="title">Loyalty Program</h1> |
||||
|
|
||||
|
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
||||
|
!! This file is generated by oca-gen-addon-readme !! |
||||
|
!! changes will be overwritten. !! |
||||
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> |
||||
|
<p><a class="reference external" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external" href="https://github.com/OCA/pos/tree/11.0/pos_loyalty"><img alt="OCA/pos" src="https://img.shields.io/badge/github-OCA%2Fpos-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/pos-11-0/pos-11-0-pos_loyalty"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runbot.odoo-community.org/runbot/184/11.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p> |
||||
|
<p>This module allows you to define a loyalty program in the point of sale, |
||||
|
where the customers earn loyalty points and get rewards.</p> |
||||
|
<p>This module is a forward-port to v10 of the pos_loyalty module from Odoo’s |
||||
|
saas-6 branch. |
||||
|
The functionality was moved to the Enterprise edition in later versions.</p> |
||||
|
<p><strong>Table of contents</strong></p> |
||||
|
<div class="contents local topic" id="contents"> |
||||
|
<ul class="simple"> |
||||
|
<li><a class="reference internal" href="#configuration" id="id1">Configuration</a></li> |
||||
|
<li><a class="reference internal" href="#usage" id="id2">Usage</a></li> |
||||
|
<li><a class="reference internal" href="#bug-tracker" id="id3">Bug Tracker</a></li> |
||||
|
<li><a class="reference internal" href="#credits" id="id4">Credits</a><ul> |
||||
|
<li><a class="reference internal" href="#authors" id="id5">Authors</a></li> |
||||
|
<li><a class="reference internal" href="#contributors" id="id6">Contributors</a></li> |
||||
|
<li><a class="reference internal" href="#maintainers" id="id7">Maintainers</a></li> |
||||
|
</ul> |
||||
|
</li> |
||||
|
</ul> |
||||
|
</div> |
||||
|
<div class="section" id="configuration"> |
||||
|
<h1><a class="toc-backref" href="#id1">Configuration</a></h1> |
||||
|
<p>To use this module, you need to:</p> |
||||
|
<ul class="simple"> |
||||
|
<li>Go to <em>Point of Sale > Configuration > Loyalty Programs</em> and define a new loyalty program with specific rules and rewards.</li> |
||||
|
<li>Assign the loyalty program to the desired Point of Sale.</li> |
||||
|
</ul> |
||||
|
</div> |
||||
|
<div class="section" id="usage"> |
||||
|
<h1><a class="toc-backref" href="#id2">Usage</a></h1> |
||||
|
<p>The Loyalty Program defines rules for acquiring points and rewards on which they can be spent.</p> |
||||
|
<p>Rules can be defined globally for all products (fields on loyalty.program) and / or rules that are applied only on specific product or PoS category (loyalty.rule records) on a <em>points per product sold</em> or <em>points per currency spent</em> basis. The specific rules (loyalty.rule) can be defined as cumulative, which means that they will be aggregated with other matching rules (loyalty.rule records and loyalty.program fields). In the case of non-cumulative rules only the points from that one matching rule are used. Additionally, <em>fixed points per order</em> can be added which are applied regardless of whether or not cumulative or non-cumulative rules were applied also.</p> |
||||
|
<p>Rewards can be of three types:</p> |
||||
|
<ul class="simple"> |
||||
|
<li><em>Gift</em> - give a single unit of product for free</li> |
||||
|
<li><em>Discount</em> - give a discount to the whole order. It should be added at the end of the order so that the correct total price is used.</li> |
||||
|
<li><em>Resale</em> - allow for customer to sell back his earned points. These are calculated by setting the price on the Resale product (<em>resale_product.list_price</em> * <em>customer.loyalty_points</em>)</li> |
||||
|
</ul> |
||||
|
<p>All rewards can define how many points they cost (point_cost) and how many are needed so that the customer can become eligable for the reward (minimum_points). for Gift and Discount rewards minimum_points are considered only if they are greater then the point_cost for that reward (minimum_points > point_cost). For Resale products only minimum_points can be used.</p> |
||||
|
</div> |
||||
|
<div class="section" id="bug-tracker"> |
||||
|
<h1><a class="toc-backref" href="#id3">Bug Tracker</a></h1> |
||||
|
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/pos/issues">GitHub Issues</a>. |
||||
|
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 |
||||
|
<a class="reference external" href="https://github.com/OCA/pos/issues/new?body=module:%20pos_loyalty%0Aversion:%2011.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p> |
||||
|
<p>Do not contact contributors directly about support or help with technical issues.</p> |
||||
|
</div> |
||||
|
<div class="section" id="credits"> |
||||
|
<h1><a class="toc-backref" href="#id4">Credits</a></h1> |
||||
|
<div class="section" id="authors"> |
||||
|
<h2><a class="toc-backref" href="#id5">Authors</a></h2> |
||||
|
<ul class="simple"> |
||||
|
<li>OpenERP SA</li> |
||||
|
<li>RGB Consulting SL</li> |
||||
|
<li>Lambda IS</li> |
||||
|
</ul> |
||||
|
</div> |
||||
|
<div class="section" id="contributors"> |
||||
|
<h2><a class="toc-backref" href="#id6">Contributors</a></h2> |
||||
|
<ul class="simple"> |
||||
|
<li>RGB Consulting SL (<a class="reference external" href="http://www.rgbconsulting.com">http://www.rgbconsulting.com</a>)</li> |
||||
|
<li>Forward-port from Odoo SA saas-6 branch</li> |
||||
|
<li>Kiril Vangelovski <<a class="reference external" href="mailto:kiril@lambda-is.com">kiril@lambda-is.com</a>></li> |
||||
|
</ul> |
||||
|
</div> |
||||
|
<div class="section" id="maintainers"> |
||||
|
<h2><a class="toc-backref" href="#id7">Maintainers</a></h2> |
||||
|
<p>This module is maintained by the OCA.</p> |
||||
|
<a class="reference external image-reference" href="https://odoo-community.org"><img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" /></a> |
||||
|
<p>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.</p> |
||||
|
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/pos/tree/11.0/pos_loyalty">OCA/pos</a> project on GitHub.</p> |
||||
|
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</body> |
||||
|
</html> |
@ -0,0 +1,21 @@ |
|||||
|
|
||||
|
.pos .order .summary .loyalty-points{ |
||||
|
margin-left: 20px; |
||||
|
float: left; |
||||
|
padding: 10px; |
||||
|
max-width: 216px; |
||||
|
text-align: left; |
||||
|
color: #6EC89B; |
||||
|
background: rgba(110, 200, 155, 0.17); |
||||
|
border-radius: 3px; |
||||
|
} |
||||
|
.pos .order .summary .loyalty-points.negative{ |
||||
|
color: #C86E6E; |
||||
|
background: rgba(200, 110, 110, 0.17); |
||||
|
} |
||||
|
.pos .order .summary .loyalty-points-total { |
||||
|
border-top: solid 2px; |
||||
|
text-align: center; |
||||
|
padding-top: 4px; |
||||
|
margin-top: 4px; |
||||
|
} |
@ -0,0 +1,477 @@ |
|||||
|
/* Copyright 2004-2010 OpenERP SA |
||||
|
* Copyright 2017 RGB Consulting S.L. (https://www.rgbconsulting.com)
|
||||
|
* License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). */
|
||||
|
|
||||
|
odoo.define('pos_loyalty.loyalty_program', function(require) { |
||||
|
"use strict" |
||||
|
|
||||
|
var models = require('point_of_sale.models'); |
||||
|
var screens = require('point_of_sale.screens'); |
||||
|
|
||||
|
var utils = require('web.utils'); |
||||
|
var round_pr = utils.round_precision; |
||||
|
|
||||
|
var core = require('web.core'); |
||||
|
var QWeb = core.qweb; |
||||
|
var _t = core._t; |
||||
|
|
||||
|
models.load_fields('res.partner', 'loyalty_points'); |
||||
|
|
||||
|
models.load_models([{ |
||||
|
model: 'loyalty.program', |
||||
|
condition: function(self) { |
||||
|
return !!self.config.loyalty_id[0]; |
||||
|
}, |
||||
|
fields: ['name', 'pp_currency', 'pp_product', 'pp_order', 'rounding'], |
||||
|
domain: function(self) { |
||||
|
return [ |
||||
|
['id', '=', self.config.loyalty_id[0]] |
||||
|
]; |
||||
|
}, |
||||
|
loaded: function(self, loyalties) { |
||||
|
self.loyalty = loyalties[0]; |
||||
|
}, |
||||
|
}, { |
||||
|
model: 'loyalty.rule', |
||||
|
condition: function(self) { |
||||
|
return !!self.loyalty; |
||||
|
}, |
||||
|
fields: ['name', 'type', 'product_id', 'category_id', 'cumulative', 'pp_product', 'pp_currency'], |
||||
|
domain: function(self) { |
||||
|
return [ |
||||
|
['loyalty_program_id', '=', self.loyalty.id] |
||||
|
]; |
||||
|
}, |
||||
|
loaded: function(self, rules) { |
||||
|
|
||||
|
self.loyalty.rules = rules; |
||||
|
self.loyalty.rules_by_product_id = {}; |
||||
|
self.loyalty.rules_by_category_id = {}; |
||||
|
|
||||
|
function update_rules(rules, rule, id) { |
||||
|
if (!rules[id]) { |
||||
|
rules[id] = [rule]; |
||||
|
} else if (rule.cumulative) { |
||||
|
rules[id].unshift(rule); |
||||
|
} else { |
||||
|
rules[id].push(rule); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
_.each(rules, function(rule) { |
||||
|
if (rule.type === 'product') |
||||
|
update_rules(self.loyalty.rules_by_product_id, rule, rule.product_id[0]) |
||||
|
else if (rule.type === 'category') |
||||
|
update_rules(self.loyalty.rules_by_category_id, rule, rule.category_id[0]); |
||||
|
}); |
||||
|
}, |
||||
|
}, { |
||||
|
model: 'loyalty.reward', |
||||
|
condition: function(self) { |
||||
|
return !!self.loyalty; |
||||
|
}, |
||||
|
fields: ['name', 'type', 'minimum_points', 'gift_product_id', 'point_cost', 'discount_product_id', 'discount', 'discount_max', 'point_product_id'], |
||||
|
domain: function(self) { |
||||
|
return [ |
||||
|
['loyalty_program_id', '=', self.loyalty.id] |
||||
|
]; |
||||
|
}, |
||||
|
loaded: function(self, rewards) { |
||||
|
self.loyalty.rewards = rewards; |
||||
|
self.loyalty.rewards_by_id = {}; |
||||
|
for (var i = 0; i < rewards.length; i++) { |
||||
|
self.loyalty.rewards_by_id[rewards[i].id] = rewards[i]; |
||||
|
} |
||||
|
}, |
||||
|
}, ], { |
||||
|
'after': 'product.product' |
||||
|
}); |
||||
|
|
||||
|
var _orderline_super = models.Orderline.prototype; |
||||
|
models.Orderline = models.Orderline.extend({ |
||||
|
get_reward: function() { |
||||
|
return this.pos.loyalty.rewards_by_id[this.reward_id]; |
||||
|
}, |
||||
|
set_reward: function(reward) { |
||||
|
this.reward_id = reward.id; |
||||
|
}, |
||||
|
export_as_JSON: function() { |
||||
|
var json = _orderline_super.export_as_JSON.apply(this, arguments); |
||||
|
json.reward_id = this.reward_id; |
||||
|
return json; |
||||
|
}, |
||||
|
init_from_JSON: function(json) { |
||||
|
_orderline_super.init_from_JSON.apply(this, arguments); |
||||
|
this.reward_id = json.reward_id; |
||||
|
}, |
||||
|
}); |
||||
|
|
||||
|
var _order_super = models.Order.prototype; |
||||
|
models.Order = models.Order.extend({ |
||||
|
|
||||
|
/* The total of points won, excluding the points spent on rewards */ |
||||
|
get_won_points: function() { |
||||
|
if (!this.pos.loyalty || !this.get_client()) { |
||||
|
return 0; |
||||
|
} |
||||
|
|
||||
|
var orderLines = this.get_orderlines(); |
||||
|
var rounding = this.pos.loyalty.rounding; |
||||
|
|
||||
|
var product_sold = 0; |
||||
|
var total_sold = 0; |
||||
|
var total_points = 0; |
||||
|
|
||||
|
for (var i = 0; i < orderLines.length; i++) { |
||||
|
var line = orderLines[i]; |
||||
|
var product = line.get_product(); |
||||
|
var rules = this.pos.loyalty.rules_by_product_id[product.id] || []; |
||||
|
var overriden = false; |
||||
|
|
||||
|
if (line.get_reward()) { // Reward products are ignored
|
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
for (var j = 0; j < rules.length; j++) { |
||||
|
var rule = rules[j]; |
||||
|
total_points += round_pr(line.get_quantity() * rule.pp_product, rounding); |
||||
|
total_points += round_pr(line.get_price_with_tax() * rule.pp_currency, rounding); |
||||
|
// if affected by a non cumulative rule, skip the others. (non cumulative rules are put
|
||||
|
// at the beginning of the list when they are loaded )
|
||||
|
if (!rule.cumulative) { |
||||
|
overriden = true; |
||||
|
break; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// Test the category rules
|
||||
|
if (product.pos_categ_id) { |
||||
|
var category = this.pos.db.get_category_by_id(product.pos_categ_id[0]); |
||||
|
while (category && !overriden) { |
||||
|
var rules = this.pos.loyalty.rules_by_category_id[category.id] || []; |
||||
|
for (var j = 0; j < rules.length; j++) { |
||||
|
var rule = rules[j]; |
||||
|
total_points += round_pr(line.get_quantity() * rule.pp_product, rounding); |
||||
|
total_points += round_pr(line.get_price_with_tax() * rule.pp_currency, rounding); |
||||
|
if (!rule.cumulative) { |
||||
|
overriden = true; |
||||
|
break; |
||||
|
} |
||||
|
} |
||||
|
var _category = category; |
||||
|
category = this.pos.db.get_category_by_id(this.pos.db.get_category_parent_id(category.id)); |
||||
|
if (_category === category) { |
||||
|
break; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
if (!overriden) { |
||||
|
product_sold += line.get_quantity(); |
||||
|
total_sold += line.get_price_with_tax(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
total_points += round_pr(total_sold * this.pos.loyalty.pp_currency, rounding); |
||||
|
total_points += round_pr(product_sold * this.pos.loyalty.pp_product, rounding); |
||||
|
total_points += round_pr(this.pos.loyalty.pp_order, rounding); |
||||
|
|
||||
|
return total_points; |
||||
|
}, |
||||
|
|
||||
|
/* The total number of points spent on rewards */ |
||||
|
get_spent_points: function() { |
||||
|
if (!this.pos.loyalty || !this.get_client()) { |
||||
|
return 0; |
||||
|
} else { |
||||
|
var lines = this.get_orderlines(); |
||||
|
var rounding = this.pos.loyalty.rounding; |
||||
|
var points = 0; |
||||
|
|
||||
|
for (var i = 0; i < lines.length; i++) { |
||||
|
var line = lines[i]; |
||||
|
var reward = line.get_reward(); |
||||
|
if (reward) { |
||||
|
if (reward.type === 'gift') { |
||||
|
points += round_pr(line.get_quantity() * reward.point_cost, rounding); |
||||
|
} else if (reward.type === 'discount') { |
||||
|
points += reward.point_cost; |
||||
|
} else if (reward.type === 'resale') { |
||||
|
points += (-line.get_quantity()); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return points; |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
/* The total number of points lost or won after the order is validated */ |
||||
|
get_new_points: function() { |
||||
|
if (!this.pos.loyalty || !this.get_client()) { |
||||
|
return 0; |
||||
|
} else { |
||||
|
return round_pr(this.get_won_points() - this.get_spent_points(), this.pos.loyalty.rounding); |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
/* The total number of points that the customer will have after this order is validated */ |
||||
|
get_new_total_points: function() { |
||||
|
if (!this.pos.loyalty || !this.get_client()) { |
||||
|
return 0; |
||||
|
} else { |
||||
|
return round_pr(this.get_client().loyalty_points + this.get_new_points(), this.pos.loyalty.rounding); |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
/* The number of loyalty points currently owned by the customer */ |
||||
|
get_current_points: function() { |
||||
|
return this.get_client() ? this.get_client().loyalty_points : 0; |
||||
|
}, |
||||
|
|
||||
|
/* The total number of points spendable on rewards */ |
||||
|
get_spendable_points: function() { |
||||
|
if (!this.pos.loyalty || !this.get_client()) { |
||||
|
return 0; |
||||
|
} else { |
||||
|
return round_pr(this.get_client().loyalty_points - this.get_spent_points(), this.pos.loyalty.rounding); |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
has_discount_reward: function() { |
||||
|
var res = false; |
||||
|
var lines = this.get_orderlines(); |
||||
|
|
||||
|
for (var i = 0; i < lines.length; i++) { |
||||
|
var line = lines[i]; |
||||
|
var reward = line.get_reward(); |
||||
|
if (reward && reward.type === 'discount') { |
||||
|
res = true; |
||||
|
break; |
||||
|
} |
||||
|
} |
||||
|
return res; |
||||
|
}, |
||||
|
|
||||
|
/* The list of rewards that the current customer can get */ |
||||
|
get_available_rewards: function() { |
||||
|
var client = this.get_client(); |
||||
|
if (!client) { |
||||
|
return []; |
||||
|
} |
||||
|
var rewards = []; |
||||
|
var discount_reward_set = this.has_discount_reward(); |
||||
|
for (var i = 0; i < this.pos.loyalty.rewards.length; i++) { |
||||
|
var reward = this.pos.loyalty.rewards[i]; |
||||
|
|
||||
|
if (reward.minimum_points > this.get_spendable_points()) { |
||||
|
continue; |
||||
|
} else if (reward.type === 'gift' && |
||||
|
reward.point_cost > this.get_spendable_points()) { |
||||
|
continue; |
||||
|
} else if (reward.type === 'discount' && |
||||
|
(discount_reward_set || reward.point_cost > this.get_spendable_points())) { |
||||
|
continue; |
||||
|
} |
||||
|
rewards.push(reward); |
||||
|
} |
||||
|
return rewards; |
||||
|
}, |
||||
|
|
||||
|
apply_reward: function(reward) { |
||||
|
var client = this.get_client(); |
||||
|
if (!client) { |
||||
|
return; |
||||
|
} else if (reward.type === 'gift') { |
||||
|
var product = this.pos.db.get_product_by_id(reward.gift_product_id[0]); |
||||
|
|
||||
|
if (!product) { |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
this.add_product(product, { |
||||
|
price: 0, |
||||
|
quantity: 1, |
||||
|
merge: false, |
||||
|
extras: { |
||||
|
reward_id: reward.id |
||||
|
}, |
||||
|
}); |
||||
|
|
||||
|
} else if (reward.type === 'discount') { |
||||
|
|
||||
|
var crounding = this.pos.currency.rounding; |
||||
|
var order_total = this.get_total_with_tax(); |
||||
|
var discount = round_pr(order_total * reward.discount, crounding); |
||||
|
var discount_max = reward.discount_max |
||||
|
|
||||
|
if (discount_max && discount > discount_max) { |
||||
|
discount = discount_max; |
||||
|
} |
||||
|
|
||||
|
var product = this.pos.db.get_product_by_id(reward.discount_product_id[0]); |
||||
|
|
||||
|
if (!product) { |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
this.add_product(product, { |
||||
|
price: -discount, |
||||
|
quantity: 1, |
||||
|
merge: false, |
||||
|
extras: { |
||||
|
reward_id: reward.id |
||||
|
}, |
||||
|
}); |
||||
|
|
||||
|
} else if (reward.type === 'resale') { |
||||
|
|
||||
|
var lrounding = this.pos.loyalty.rounding; |
||||
|
var crounding = this.pos.currency.rounding; |
||||
|
var spendable = this.get_spendable_points(); |
||||
|
|
||||
|
var order_total = this.get_total_with_tax(); |
||||
|
var product = this.pos.db.get_product_by_id(reward.point_product_id[0]); |
||||
|
|
||||
|
if (!product) { |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
if (round_pr(spendable * product.price, crounding) > order_total) { |
||||
|
spendable = round_pr(Math.floor(order_total / product.price), lrounding); |
||||
|
} |
||||
|
|
||||
|
if (spendable < 0.00001) { |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
this.add_product(product, { |
||||
|
quantity: -spendable, |
||||
|
merge: false, |
||||
|
extras: { |
||||
|
reward_id: reward.id |
||||
|
}, |
||||
|
}); |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
finalize: function() { |
||||
|
var client = this.get_client(); |
||||
|
if (client) { |
||||
|
client.loyalty_points = this.get_new_total_points(); |
||||
|
this.pos.gui.screen_instances.clientlist.partner_cache.clear_node(client.id); |
||||
|
} |
||||
|
_order_super.finalize.apply(this, arguments); |
||||
|
}, |
||||
|
|
||||
|
export_for_printing: function() { |
||||
|
var json = _order_super.export_for_printing.apply(this, arguments); |
||||
|
if (this.pos.loyalty && this.get_client()) { |
||||
|
json.loyalty = { |
||||
|
rounding: this.pos.loyalty.rounding || 1, |
||||
|
name: this.pos.loyalty.name, |
||||
|
client: this.get_client().name, |
||||
|
points_won: this.get_won_points(), |
||||
|
points_spent: this.get_spent_points(), |
||||
|
points_total: this.get_new_total_points(), |
||||
|
}; |
||||
|
} |
||||
|
return json; |
||||
|
}, |
||||
|
|
||||
|
export_as_JSON: function() { |
||||
|
var json = _order_super.export_as_JSON.apply(this, arguments); |
||||
|
json.loyalty_points = this.get_new_points(); |
||||
|
return json; |
||||
|
}, |
||||
|
}); |
||||
|
|
||||
|
var LoyaltyButton = screens.ActionButtonWidget.extend({ |
||||
|
template: 'LoyaltyButton', |
||||
|
button_click: function() { |
||||
|
var self = this; |
||||
|
var order = this.pos.get_order(); |
||||
|
var client = order.get_client(); |
||||
|
if (!client) { |
||||
|
this.gui.show_screen('clientlist'); |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
var rewards = order.get_available_rewards(); |
||||
|
if (rewards.length === 0) { |
||||
|
this.gui.show_popup('error', { |
||||
|
'title': _t('No Rewards Available'), |
||||
|
'body': _t('There are no rewards available for this customer as part of the loyalty program'), |
||||
|
}); |
||||
|
} else if (rewards.length === 1 && this.pos.loyalty.rewards.length === 1) { |
||||
|
order.apply_reward(rewards[0]); |
||||
|
} else { |
||||
|
var list = []; |
||||
|
for (var i = 0; i < rewards.length; i++) { |
||||
|
list.push({ |
||||
|
label: rewards[i].name, |
||||
|
item: rewards[i], |
||||
|
}); |
||||
|
} |
||||
|
this.gui.show_popup('selection', { |
||||
|
'title': _t('Please select a reward'), |
||||
|
'list': list, |
||||
|
'confirm': function(reward) { |
||||
|
order.apply_reward(reward); |
||||
|
}, |
||||
|
}); |
||||
|
} |
||||
|
}, |
||||
|
}); |
||||
|
|
||||
|
screens.define_action_button({ |
||||
|
'name': 'loyalty', |
||||
|
'widget': LoyaltyButton, |
||||
|
'condition': function() { |
||||
|
return this.pos.loyalty && this.pos.loyalty.rewards.length; |
||||
|
}, |
||||
|
}); |
||||
|
|
||||
|
screens.OrderWidget.include({ |
||||
|
update_summary: function() { |
||||
|
this._super(); |
||||
|
|
||||
|
var order = this.pos.get_order(); |
||||
|
|
||||
|
var $loypoints = $(this.el).find('.summary .loyalty-points'); |
||||
|
|
||||
|
if (this.pos.loyalty && order.get_client()) { |
||||
|
var points_won = order.get_won_points(); |
||||
|
var points_spent = order.get_spent_points(); |
||||
|
var points_total = order.get_new_total_points(); |
||||
|
$loypoints.replaceWith($(QWeb.render('LoyaltyPoints', { |
||||
|
widget: this, |
||||
|
rounding: this.pos.loyalty.rounding, |
||||
|
points_won: points_won, |
||||
|
points_spent: points_spent, |
||||
|
points_total: points_total, |
||||
|
}))); |
||||
|
$loypoints = $(this.el).find('.summary .loyalty-points'); |
||||
|
$loypoints.removeClass('oe_hidden'); |
||||
|
|
||||
|
if (points_total < 0) { |
||||
|
$loypoints.addClass('negative'); |
||||
|
} else { |
||||
|
$loypoints.removeClass('negative'); |
||||
|
} |
||||
|
} else { |
||||
|
$loypoints.empty(); |
||||
|
$loypoints.addClass('oe_hidden'); |
||||
|
} |
||||
|
|
||||
|
if (this.pos.loyalty && |
||||
|
order.get_client() && |
||||
|
this.getParent().action_buttons && |
||||
|
this.getParent().action_buttons.loyalty) { |
||||
|
|
||||
|
var rewards = order.get_available_rewards(); |
||||
|
this.getParent().action_buttons.loyalty.highlight(!!rewards.length); |
||||
|
} |
||||
|
}, |
||||
|
}); |
||||
|
}); |
@ -0,0 +1,170 @@ |
|||||
|
// Copyright 2004-2018 Odoo SA
|
||||
|
// Copyright 2018 Lambda IS DOOEL <https://www.lambda-is.com>
|
||||
|
// License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
|
||||
|
odoo.define('pos_loyalty.tour.test_pos_loyalty', function(require) { |
||||
|
"use strict"; |
||||
|
|
||||
|
// Some of the steps are taken from the pos_basic_order tour in point_of_sale.
|
||||
|
// Added additional ones necessary for testing the rewards.
|
||||
|
|
||||
|
var Tour = require("web_tour.tour"); |
||||
|
|
||||
|
function add_customer(customer_name) { |
||||
|
return [{ |
||||
|
content: 'open customer screen', |
||||
|
trigger: '.button.set-customer', |
||||
|
}, { |
||||
|
content: 'choose customer ' + customer_name, |
||||
|
trigger: 'table.client-list tbody.client-list-contents tr.client-line td:contains("' + customer_name + '")', |
||||
|
}, { |
||||
|
content: 'select customer ' + customer_name, |
||||
|
trigger: '.button.next:contains("Set Customer")', |
||||
|
}, { |
||||
|
content: 'Check if customer ' + customer_name + ' is added', |
||||
|
trigger: '.button.set-customer:contains("' + customer_name + '")', |
||||
|
run: function() {}, // it's a check
|
||||
|
}]; |
||||
|
} |
||||
|
|
||||
|
function add_reward(reward_name) { |
||||
|
return [{ |
||||
|
content: 'open rewards screen', |
||||
|
trigger: '.control-button:contains("Rewards")', |
||||
|
}, { |
||||
|
content: 'choose reward', |
||||
|
trigger: '.selection-item:contains("' + reward_name + '")', |
||||
|
}] |
||||
|
} |
||||
|
|
||||
|
function add_product_to_order(product_name) { |
||||
|
return [{ |
||||
|
content: 'buy ' + product_name, |
||||
|
trigger: '.product-list .product-name:contains("' + product_name + '")', |
||||
|
}, { |
||||
|
content: 'the ' + product_name + ' have been added to the order', |
||||
|
trigger: '.order .product-name:contains("' + product_name + '")', |
||||
|
run: function() {}, // it's a check
|
||||
|
}]; |
||||
|
} |
||||
|
|
||||
|
function verify_order_product(product_name) { |
||||
|
return [{ |
||||
|
content: 'check if ' + product_name + ' is in order', |
||||
|
trigger: '.orderline .product-name:contains("' + product_name + '")', |
||||
|
run: function() {}, // it's a check
|
||||
|
}] |
||||
|
} |
||||
|
|
||||
|
function generate_keypad_steps(amount_str, keypad_selector) { |
||||
|
var i, steps = [], |
||||
|
current_char; |
||||
|
for (i = 0; i < amount_str.length; ++i) { |
||||
|
current_char = amount_str[i]; |
||||
|
steps.push({ |
||||
|
content: 'press ' + current_char + ' on payment keypad', |
||||
|
trigger: keypad_selector + ' .input-button:contains("' + current_char + '"):visible' |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
return steps; |
||||
|
} |
||||
|
|
||||
|
function generate_payment_screen_keypad_steps(amount_str) { |
||||
|
return generate_keypad_steps(amount_str, '.payment-numpad'); |
||||
|
} |
||||
|
|
||||
|
function generate_product_screen_keypad_steps(amount_str) { |
||||
|
return generate_keypad_steps(amount_str, '.numpad'); |
||||
|
} |
||||
|
|
||||
|
function verify_order_total(total_str) { |
||||
|
return [{ |
||||
|
content: 'order total contains ' + total_str, |
||||
|
trigger: '.order .total .value:contains("' + total_str + '")', |
||||
|
run: function() {}, // it's a check
|
||||
|
}]; |
||||
|
} |
||||
|
|
||||
|
function goto_payment_screen_and_select_payment_method() { |
||||
|
return [{ |
||||
|
content: "go to payment screen", |
||||
|
trigger: '.button.pay', |
||||
|
}, { |
||||
|
content: "pay with cash", |
||||
|
trigger: '.paymentmethod:contains("Cash")', |
||||
|
}]; |
||||
|
} |
||||
|
|
||||
|
function finish_order() { |
||||
|
return [{ |
||||
|
content: "validate the order", |
||||
|
trigger: '.button.next:visible', |
||||
|
}, { |
||||
|
content: "verify that the order is being sent to the backend", |
||||
|
trigger: ".js_connecting:visible", |
||||
|
run: function() {}, // it's a check
|
||||
|
}, { |
||||
|
content: "verify that the order has been succesfully sent to the backend", |
||||
|
trigger: ".js_connected:visible", |
||||
|
run: function() {}, // it's a check
|
||||
|
}, { |
||||
|
content: "next order", |
||||
|
trigger: '.button.next:visible', |
||||
|
}]; |
||||
|
} |
||||
|
|
||||
|
var steps = [{ |
||||
|
content: 'waiting for loading to finish', |
||||
|
trigger: '.o_main_content:has(.loader:hidden)', |
||||
|
run: function() {}, // it's a check
|
||||
|
}]; |
||||
|
|
||||
|
steps = steps.concat(add_customer('Agrolait')); |
||||
|
steps = steps.concat(add_product_to_order('Peaches')); |
||||
|
steps = steps.concat(verify_order_total('5.10')); |
||||
|
|
||||
|
steps = steps.concat(add_product_to_order('Peaches')); // buy another kg of peaches
|
||||
|
steps = steps.concat(verify_order_total('10.20')); |
||||
|
steps = steps.concat(goto_payment_screen_and_select_payment_method()); |
||||
|
steps = steps.concat(generate_payment_screen_keypad_steps("12.20")); |
||||
|
|
||||
|
steps = steps.concat([{ |
||||
|
content: "verify tendered", |
||||
|
trigger: '.col-tendered:contains("12.20")', |
||||
|
run: function() {}, // it's a check
|
||||
|
}, { |
||||
|
content: "verify change", |
||||
|
trigger: '.col-change:contains("2.00")', |
||||
|
run: function() {}, // it's a check
|
||||
|
}]); |
||||
|
|
||||
|
steps = steps.concat(finish_order()); |
||||
|
|
||||
|
Tour.register('test_pos_loyalty_acquire_points', { |
||||
|
test: true, |
||||
|
url: '/pos/web' |
||||
|
}, steps); |
||||
|
|
||||
|
steps = [{ |
||||
|
content: 'waiting for loading to finish', |
||||
|
trigger: '.o_main_content:has(.loader:hidden)', |
||||
|
run: function() {}, // it's a check
|
||||
|
}]; |
||||
|
steps = steps.concat(add_customer('Agrolait')); |
||||
|
steps = steps.concat(add_reward('Free Peaches')); |
||||
|
steps = steps.concat(verify_order_product('Peaches')); |
||||
|
steps = steps.concat(verify_order_total('0.00')); |
||||
|
steps = steps.concat(goto_payment_screen_and_select_payment_method()); |
||||
|
steps = steps.concat([{ |
||||
|
content: "verify tendered", |
||||
|
trigger: '.col-tendered:contains("0.00")', |
||||
|
run: function() {}, // it's a check
|
||||
|
}]); |
||||
|
steps = steps.concat(finish_order()); |
||||
|
|
||||
|
Tour.register('test_pos_loyalty_spend_points', { |
||||
|
test: true, |
||||
|
url: '/pos/web' |
||||
|
}, steps); |
||||
|
}) |
@ -0,0 +1,85 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<templates id="template" xml:space="preserve"> |
||||
|
|
||||
|
<t t-name="LoyaltyPoints"> |
||||
|
<div class='loyalty-points'> |
||||
|
<div class='loyalty-points-title'>Points</div> |
||||
|
<t t-if='points_won'> |
||||
|
<div class="loyalty-points-won"> |
||||
|
<span class='value'>+<t t-esc='widget.format_pr(points_won,rounding)'/></span> |
||||
|
</div> |
||||
|
</t> |
||||
|
<t t-if='points_spent'> |
||||
|
<div class="loyalty-points-spent"> |
||||
|
<span class='value'>-<t t-esc='widget.format_pr(points_spent,rounding)'/></span> |
||||
|
</div> |
||||
|
</t> |
||||
|
<div class='loyalty-points-total'> |
||||
|
<span class='value'><t t-esc='widget.format_pr(points_total,rounding)' /></span> |
||||
|
</div> |
||||
|
</div> |
||||
|
</t> |
||||
|
|
||||
|
<t t-name="LoyaltyButton"> |
||||
|
<div class='control-button'> |
||||
|
<i class='fa fa-star' /> Rewards |
||||
|
</div> |
||||
|
</t> |
||||
|
|
||||
|
<t t-extend='OrderWidget'> |
||||
|
<t t-jquery='.summary' t-operation='prepend'> |
||||
|
<div class='loyalty-points oe_hidden'>.</div> |
||||
|
</t> |
||||
|
</t> |
||||
|
|
||||
|
<t t-extend='ClientLine'> |
||||
|
<t t-jquery='.client-line' t-operation='append'> |
||||
|
<td> |
||||
|
<t t-esc='widget.format_pr(partner.loyalty_points || 0, widget.pos.loyalty ? widget.pos.loyalty.rounding : 1.0)' /> |
||||
|
</td> |
||||
|
</t> |
||||
|
</t> |
||||
|
|
||||
|
<t t-extend="XmlReceipt"> |
||||
|
<t t-jquery='.before-footer' t-operation='append'> |
||||
|
<t t-if='receipt.loyalty'> |
||||
|
<div class='loyalty' value-decimals='2' value-autoint='on'> |
||||
|
<div>--------------------------------</div> |
||||
|
<br/> |
||||
|
<div size='double-height'><t t-esc='receipt.loyalty.name'/></div> |
||||
|
<br /> |
||||
|
<div><t t-esc='receipt.loyalty.client' /></div> |
||||
|
<br/> |
||||
|
<t t-if='receipt.loyalty.points_won'> |
||||
|
<line><left>Points Won</left><right><value><t t-esc='receipt.loyalty.points_won' /></value></right></line> |
||||
|
</t> |
||||
|
<t t-if='receipt.loyalty.points_spent'> |
||||
|
<line><left>Points Spent</left><right><value><t t-esc='receipt.loyalty.points_spent' /></value></right></line> |
||||
|
</t> |
||||
|
<t t-if='receipt.loyalty.points_total'> |
||||
|
<line><left>Total Points</left><right><value><t t-esc='receipt.loyalty.points_total' /></value></right></line> |
||||
|
</t> |
||||
|
<br /> |
||||
|
</div> |
||||
|
</t> |
||||
|
</t> |
||||
|
</t> |
||||
|
|
||||
|
<t t-extend='ClientDetails'> |
||||
|
<t t-jquery='.client-details-right' t-operation='prepend'> |
||||
|
<div class='client-detail'> |
||||
|
<span class='label'>Points</span> |
||||
|
<span class='detail client-points'> |
||||
|
<t t-esc='widget.format_pr(partner.loyalty_points || 0, widget.pos.loyalty ? widget.pos.loyalty.rounding : 1.0)' /> |
||||
|
</span> |
||||
|
</div> |
||||
|
</t> |
||||
|
</t> |
||||
|
|
||||
|
<t t-extend='ClientListScreenWidget'> |
||||
|
<t t-jquery='.client-list thead tr' t-operation='append'> |
||||
|
<th>Points</th> |
||||
|
</t> |
||||
|
</t> |
||||
|
|
||||
|
</templates> |
@ -0,0 +1,2 @@ |
|||||
|
|
||||
|
from . import test_pos_loyalty |
@ -0,0 +1,68 @@ |
|||||
|
# Copyright 2004-2018 Odoo SA |
||||
|
# Copyright 2018 Lambda IS DOOEL <https://www.lambda-is.com> |
||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). |
||||
|
|
||||
|
from odoo.tests import HttpCase |
||||
|
|
||||
|
|
||||
|
class TestPOSLoyalty(HttpCase): |
||||
|
|
||||
|
def test_pos_loyalty(self): |
||||
|
main_pos_config = self.env.ref('point_of_sale.pos_config_main') |
||||
|
target_product = self.env.ref('point_of_sale.letter_tray') |
||||
|
free_product = self.env.ref('point_of_sale.desk_organizer') |
||||
|
customer = self.env.ref('base.res_partner_2') |
||||
|
loyalty_program = self.env['loyalty.program'].create({ |
||||
|
'name': 'foo', |
||||
|
'rule_ids': [(0, 0, { |
||||
|
'name': 'Peaches', |
||||
|
'type': 'product', |
||||
|
'product_id': target_product.id, |
||||
|
'pp_product': 10, |
||||
|
})], |
||||
|
'reward_ids': [(0, 0, { |
||||
|
'name': 'Free Peaches', |
||||
|
'type': 'gift', |
||||
|
'gift_product_id': target_product.id, |
||||
|
'point_cost': 20, |
||||
|
'minimum_points': 20, |
||||
|
}), (0, 0, { |
||||
|
'name': 'Free Onions', |
||||
|
'type': 'gift', |
||||
|
'gift_product_id': free_product.id, |
||||
|
'point_cost': 20, |
||||
|
'minimum_points': 20, |
||||
|
})] |
||||
|
}) |
||||
|
main_pos_config.write({'loyalty_id': loyalty_program.id}) |
||||
|
main_pos_config.open_session_cb() |
||||
|
|
||||
|
# needed because tests are run before the module is marked as |
||||
|
# installed. In js web will only load qweb coming from modules |
||||
|
# that are returned by the backend in module_boot. Without |
||||
|
# this you end up with js, css but no qweb. |
||||
|
self.env['ir.module.module'].search( |
||||
|
[('name', '=', 'pos_loyalty')], limit=1).state = 'installed' |
||||
|
|
||||
|
# Process an order with 2kg of Peaches which should |
||||
|
# add 20 loyalty points |
||||
|
self.phantom_js("/pos/web", |
||||
|
"odoo.__DEBUG__.services['web_tour.tour'].run(" |
||||
|
"'test_pos_loyalty_acquire_points')", |
||||
|
"odoo.__DEBUG__.services['web_tour.tour'].tours" |
||||
|
".test_pos_loyalty_acquire_points.ready", |
||||
|
login="admin") |
||||
|
|
||||
|
self.assertEqual(customer.loyalty_points, 20) |
||||
|
|
||||
|
# Spend 20 loyalty points on "Free Peaches" reward |
||||
|
self.phantom_js("/pos/web", |
||||
|
"odoo.__DEBUG__.services['web_tour.tour'].run(" |
||||
|
"'test_pos_loyalty_spend_points')", |
||||
|
"odoo.__DEBUG__.services['web_tour.tour'].tours" |
||||
|
".test_pos_loyalty_spend_points.ready", |
||||
|
login="admin") |
||||
|
|
||||
|
customer_points = customer.read( |
||||
|
['loyalty_points'])[0]['loyalty_points'] |
||||
|
self.assertEqual(customer_points, 0) |
@ -0,0 +1,83 @@ |
|||||
|
<?xml version="1.0"?> |
||||
|
<odoo> |
||||
|
<record id="loyalty_program_form_view" model="ir.ui.view"> |
||||
|
<field name="name">loyalty.program.form</field> |
||||
|
<field name="model">loyalty.program</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<form string="Loyalty Program"> |
||||
|
<sheet> |
||||
|
<div class="oe_title"> |
||||
|
<label class="oe_edit_only" for="name"/> |
||||
|
<h1> |
||||
|
<field name="name" class="oe_inline"/> |
||||
|
</h1> |
||||
|
</div> |
||||
|
|
||||
|
<group> |
||||
|
<group> |
||||
|
<field name="pp_product"/> |
||||
|
<field name="pp_currency"/> |
||||
|
</group> |
||||
|
<group> |
||||
|
<field name="pp_order"/> |
||||
|
<field name="rounding"/> |
||||
|
</group> |
||||
|
</group> |
||||
|
|
||||
|
<separator string="Rules" colspan="4"/> |
||||
|
<p>Rules define how loyalty points are earned for specific products or categories</p> |
||||
|
<field name="rule_ids" colspan="4" nolabel="1"> |
||||
|
<tree string="Rules"> |
||||
|
<field name="name"/> |
||||
|
<field name="pp_product"/> |
||||
|
<field name="pp_currency"/> |
||||
|
<field name="cumulative"/> |
||||
|
</tree> |
||||
|
</field> |
||||
|
|
||||
|
<separator string="Rewards" colspan="4"/> |
||||
|
<p>Reward the customer with gifts or discounts for loyalty points</p> |
||||
|
<field name="reward_ids" colspan="4" nolabel="1"> |
||||
|
<tree string="Rewards"> |
||||
|
<field name="name"/> |
||||
|
<field name="type"/> |
||||
|
</tree> |
||||
|
</field> |
||||
|
</sheet> |
||||
|
</form> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="loyalty_program_tree_view" model="ir.ui.view"> |
||||
|
<field name="name">loyalty.program.tree</field> |
||||
|
<field name="model">loyalty.program</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<tree string="Loyalty Programs"> |
||||
|
<field name="name"/> |
||||
|
</tree> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="loyalty_program_action" model="ir.actions.act_window"> |
||||
|
<field name="name">Loyalty Programs</field> |
||||
|
<field name="type">ir.actions.act_window</field> |
||||
|
<field name="res_model">loyalty.program</field> |
||||
|
<field name="view_type">form</field> |
||||
|
<field name="view_mode">tree,form</field> |
||||
|
<field name="help" type="html"> |
||||
|
<p class="oe_view_nocontent_create"> |
||||
|
Click create to define a Loyalty Program. |
||||
|
</p> |
||||
|
<p> |
||||
|
Loyalty Programs allow you customers to earn points |
||||
|
and rewards when purchasing from your shops. |
||||
|
</p> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<menuitem parent="point_of_sale.menu_point_config_product" |
||||
|
action="loyalty_program_action" |
||||
|
id="loyalty_program_menu" |
||||
|
sequence="30" |
||||
|
groups="point_of_sale.group_pos_manager"/> |
||||
|
</odoo> |
@ -0,0 +1,37 @@ |
|||||
|
<?xml version="1.0"?> |
||||
|
<odoo> |
||||
|
<record id="loyalty_reward_form_view" model="ir.ui.view"> |
||||
|
<field name="name">loyalty.reward.form</field> |
||||
|
<field name="model">loyalty.reward</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<form string="Loyalty Reward"> |
||||
|
<div class="oe_title"> |
||||
|
<label class="oe_edit_only" for="name"/> |
||||
|
<h1> |
||||
|
<field name="name" class="oe_inline"/> |
||||
|
</h1> |
||||
|
</div> |
||||
|
<group> |
||||
|
<field name="type"/> |
||||
|
</group> |
||||
|
<group > |
||||
|
<field name="gift_product_id" |
||||
|
attrs="{'invisible':[('type','!=','gift')], 'required':[('type','=','gift')]}"/> |
||||
|
<field name="discount" |
||||
|
attrs="{'invisible':[('type','!=','discount')]}"/> |
||||
|
<field name="discount_max" |
||||
|
attrs="{'invisible':[('type','!=','discount')]}"/> |
||||
|
<field name="discount_product_id" |
||||
|
attrs="{'invisible':[('type','!=','discount')], 'required':[('type','=','discount')]}"/> |
||||
|
<field name="point_product_id" |
||||
|
attrs="{'invisible': [('type','!=','resale')], 'required': [('type','=','resale')]}"/> |
||||
|
</group> |
||||
|
<group> |
||||
|
<field name="point_cost" |
||||
|
attrs="{'invisible':[('type','=','resale')]}"/> |
||||
|
<field name="minimum_points"/> |
||||
|
</group> |
||||
|
</form> |
||||
|
</field> |
||||
|
</record> |
||||
|
</odoo> |
@ -0,0 +1,31 @@ |
|||||
|
<?xml version="1.0"?> |
||||
|
<odoo> |
||||
|
<record id="loyalty_rule_form_view" model="ir.ui.view"> |
||||
|
<field name="name">loyalty.rule.form</field> |
||||
|
<field name="model">loyalty.rule</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<form string="Loyalty Rule"> |
||||
|
<div class="oe_title"> |
||||
|
<label class="oe_edit_only" for="name"/> |
||||
|
<h1> |
||||
|
<field name="name" class="oe_inline"/> |
||||
|
</h1> |
||||
|
</div> |
||||
|
<group> |
||||
|
<group> |
||||
|
<field name="type"/> |
||||
|
</group> |
||||
|
<group> |
||||
|
<field name="product_id" attrs="{'invisible': [('type','!=','product')], 'required': [('type','=','product')]}"/> |
||||
|
<field name="category_id" attrs="{'invisible': [('type','!=','category')], 'required': [('type','=','category')]}"/> |
||||
|
</group> |
||||
|
</group> |
||||
|
<group col="6"> |
||||
|
<field name="pp_product"/> |
||||
|
<field name="pp_currency"/> |
||||
|
<field name="cumulative"/> |
||||
|
</group> |
||||
|
</form> |
||||
|
</field> |
||||
|
</record> |
||||
|
</odoo> |
@ -0,0 +1,23 @@ |
|||||
|
<?xml version="1.0"?> |
||||
|
<odoo> |
||||
|
<record id="pos_config_view_form" model="ir.ui.view"> |
||||
|
<field name="name">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"> |
||||
|
<xpath expr="//div[@id='pricelist_setting']" position="after"> |
||||
|
<div class="col-xs-12 col-md-6 o_setting_box" title="abc"> |
||||
|
<div class="o_setting_right_pane"> |
||||
|
<label for="loyalty_id" string="Loyalty Program (OCA)"/> |
||||
|
<div class="text-muted"> |
||||
|
Loyalty program that will be available in this PoS |
||||
|
</div> |
||||
|
<div class="content-group mt16"> |
||||
|
<field name="loyalty_id"/> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</xpath> |
||||
|
</field> |
||||
|
</record> |
||||
|
</odoo> |
@ -0,0 +1,15 @@ |
|||||
|
<?xml version="1.0"?> |
||||
|
<odoo> |
||||
|
<record id="pos_order_form_view" model="ir.ui.view"> |
||||
|
<field name="name">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="//page[@name='extra']" position="inside"> |
||||
|
<group name="loyalty" string="Loyalty Programs"> |
||||
|
<field name="loyalty_points"/> |
||||
|
</group> |
||||
|
</xpath> |
||||
|
</field> |
||||
|
</record> |
||||
|
</odoo> |
@ -0,0 +1,18 @@ |
|||||
|
<?xml version="1.0"?> |
||||
|
<odoo> |
||||
|
<record id="partner_property_form_view" model="ir.ui.view"> |
||||
|
<field name="name">partner.property.form</field> |
||||
|
<field name="model">res.partner</field> |
||||
|
<field name="inherit_id" ref="point_of_sale.view_partner_property_form"/> |
||||
|
<field name="arch" type="xml"> |
||||
|
<button name="%(point_of_sale.action_pos_pos_form)d" position="before"> |
||||
|
<button class="oe_stat_button" type="action" name="%(point_of_sale.action_pos_pos_form)d" |
||||
|
context="{'search_default_partner_id': active_id,'default_partner_id': active_id}" |
||||
|
attrs="{'invisible': ['|', ('customer', '=', False), ('pos_order_count', '=', 0)]}" |
||||
|
icon="fa-star"> |
||||
|
<field name="loyalty_points" widget="statinfo"/> |
||||
|
</button> |
||||
|
</button> |
||||
|
</field> |
||||
|
</record> |
||||
|
</odoo> |
@ -0,0 +1,9 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<odoo> |
||||
|
<template id="assets" inherit_id="point_of_sale.assets"> |
||||
|
<xpath expr="." position="inside"> |
||||
|
<script type="text/javascript" src="/pos_loyalty/static/src/js/pos.js"></script> |
||||
|
<link rel="stylesheet" href="/pos_loyalty/static/src/css/pos.css"/> |
||||
|
</xpath> |
||||
|
</template> |
||||
|
</odoo> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue