From bb0e0f7af301678ee8700eeac244839893729fd3 Mon Sep 17 00:00:00 2001 From: Sergey Krylov Date: Wed, 19 Feb 2025 14:24:47 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=B0=D1=87=D0=B0=D0=BB=D1=8C=D0=BD?= =?UTF-8?q?=D0=BE=D0=B5=20=D0=BD=D0=B0=D0=BF=D0=BE=D0=BB=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- __init__.py | 5 + __manifest__.py | 27 + data/sale_loyalty_data.xml | 11 + i18n/ar.po | 507 +++++ i18n/bg.po | 508 +++++ i18n/ca.po | 527 +++++ i18n/cs.po | 509 +++++ i18n/da.po | 507 +++++ i18n/de.po | 523 +++++ i18n/es.po | 519 +++++ i18n/es_419.po | 516 +++++ i18n/et.po | 522 +++++ i18n/fa.po | 509 +++++ i18n/fi.po | 518 +++++ i18n/fr.po | 523 +++++ i18n/he.po | 513 +++++ i18n/hu.po | 511 +++++ i18n/id.po | 513 +++++ i18n/it.po | 523 +++++ i18n/ja.po | 503 +++++ i18n/ko.po | 503 +++++ i18n/lt.po | 513 +++++ i18n/lv.po | 506 +++++ i18n/nl.po | 521 +++++ i18n/pl.po | 512 +++++ i18n/pt.po | 504 +++++ i18n/pt_BR.po | 518 +++++ i18n/ru.po | 523 +++++ i18n/sale_loyalty.pot | 499 +++++ i18n/sk.po | 503 +++++ i18n/sl.po | 511 +++++ i18n/sr.po | 513 +++++ i18n/sv.po | 522 +++++ i18n/th.po | 508 +++++ i18n/tr.po | 517 +++++ i18n/uk.po | 514 +++++ i18n/vi.po | 515 +++++ i18n/zh_CN.po | 505 +++++ i18n/zh_TW.po | 503 +++++ models/__init__.py | 9 + models/loyalty_card.py | 37 + models/loyalty_program.py | 27 + models/loyalty_reward.py | 18 + models/sale_order.py | 1045 ++++++++++ models/sale_order_coupon_points.py | 18 + models/sale_order_line.py | 119 ++ security/ir.model.access.csv | 16 + tests/__init__.py | 12 + tests/common.py | 328 +++ tests/test_buy_gift_card.py | 36 + tests/test_loyalty.py | 565 ++++++ tests/test_pay_with_gift_card.py | 153 ++ tests/test_program_multi_company.py | 83 + tests/test_program_numbers.py | 1754 +++++++++++++++++ tests/test_program_rules.py | 316 +++ tests/test_program_with_code_operations.py | 333 ++++ tests/test_program_without_code_operations.py | 64 + tests/test_sale_invoicing.py | 120 ++ views/loyalty_card_views.xml | 15 + views/loyalty_program_views.xml | 24 + views/res_partner_views.xml | 15 + views/sale_loyalty_menus.xml | 16 + views/sale_order_views.xml | 24 + views/sale_portal_templates.xml | 65 + wizard/__init__.py | 5 + wizard/sale_loyalty_coupon_wizard.py | 30 + wizard/sale_loyalty_coupon_wizard_views.xml | 29 + wizard/sale_loyalty_reward_wizard.py | 55 + wizard/sale_loyalty_reward_wizard_views.xml | 49 + 69 files changed, 23884 insertions(+) create mode 100644 __init__.py create mode 100644 __manifest__.py create mode 100644 data/sale_loyalty_data.xml create mode 100644 i18n/ar.po create mode 100644 i18n/bg.po create mode 100644 i18n/ca.po create mode 100644 i18n/cs.po create mode 100644 i18n/da.po create mode 100644 i18n/de.po create mode 100644 i18n/es.po create mode 100644 i18n/es_419.po create mode 100644 i18n/et.po create mode 100644 i18n/fa.po create mode 100644 i18n/fi.po create mode 100644 i18n/fr.po create mode 100644 i18n/he.po create mode 100644 i18n/hu.po create mode 100644 i18n/id.po create mode 100644 i18n/it.po create mode 100644 i18n/ja.po create mode 100644 i18n/ko.po create mode 100644 i18n/lt.po create mode 100644 i18n/lv.po create mode 100644 i18n/nl.po create mode 100644 i18n/pl.po create mode 100644 i18n/pt.po create mode 100644 i18n/pt_BR.po create mode 100644 i18n/ru.po create mode 100644 i18n/sale_loyalty.pot create mode 100644 i18n/sk.po create mode 100644 i18n/sl.po create mode 100644 i18n/sr.po create mode 100644 i18n/sv.po create mode 100644 i18n/th.po create mode 100644 i18n/tr.po create mode 100644 i18n/uk.po create mode 100644 i18n/vi.po create mode 100644 i18n/zh_CN.po create mode 100644 i18n/zh_TW.po create mode 100644 models/__init__.py create mode 100644 models/loyalty_card.py create mode 100644 models/loyalty_program.py create mode 100644 models/loyalty_reward.py create mode 100644 models/sale_order.py create mode 100644 models/sale_order_coupon_points.py create mode 100644 models/sale_order_line.py create mode 100644 security/ir.model.access.csv create mode 100644 tests/__init__.py create mode 100644 tests/common.py create mode 100644 tests/test_buy_gift_card.py create mode 100644 tests/test_loyalty.py create mode 100644 tests/test_pay_with_gift_card.py create mode 100644 tests/test_program_multi_company.py create mode 100644 tests/test_program_numbers.py create mode 100644 tests/test_program_rules.py create mode 100644 tests/test_program_with_code_operations.py create mode 100644 tests/test_program_without_code_operations.py create mode 100644 tests/test_sale_invoicing.py create mode 100644 views/loyalty_card_views.xml create mode 100644 views/loyalty_program_views.xml create mode 100644 views/res_partner_views.xml create mode 100644 views/sale_loyalty_menus.xml create mode 100644 views/sale_order_views.xml create mode 100644 views/sale_portal_templates.xml create mode 100644 wizard/__init__.py create mode 100644 wizard/sale_loyalty_coupon_wizard.py create mode 100644 wizard/sale_loyalty_coupon_wizard_views.xml create mode 100644 wizard/sale_loyalty_reward_wizard.py create mode 100644 wizard/sale_loyalty_reward_wizard_views.xml diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..2ae6446 --- /dev/null +++ b/__init__.py @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from . import models +from . import wizard diff --git a/__manifest__.py b/__manifest__.py new file mode 100644 index 0000000..4125f06 --- /dev/null +++ b/__manifest__.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. +{ + 'name': 'Sale Loyalty', + 'summary': 'Use discounts and loyalty programs in sales orders', + 'description': 'Integrate discount and loyalty programs mechanisms in sales orders.', + 'category': 'Sales/Sales', + 'version': '1.0', + 'depends': ['sale', 'loyalty'], + 'auto_install': True, + 'data': [ + 'security/ir.model.access.csv', + + 'data/sale_loyalty_data.xml', + + 'wizard/sale_loyalty_coupon_wizard_views.xml', + 'wizard/sale_loyalty_reward_wizard_views.xml', + + 'views/loyalty_card_views.xml', + 'views/loyalty_program_views.xml', + 'views/sale_order_views.xml', + 'views/sale_portal_templates.xml', + 'views/res_partner_views.xml', + 'views/sale_loyalty_menus.xml', + ], + 'license': 'LGPL-3', +} diff --git a/data/sale_loyalty_data.xml b/data/sale_loyalty_data.xml new file mode 100644 index 0000000..773af10 --- /dev/null +++ b/data/sale_loyalty_data.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/i18n/ar.po b/i18n/ar.po new file mode 100644 index 0000000..250d1ce --- /dev/null +++ b/i18n/ar.po @@ -0,0 +1,507 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_loyalty +# +# Translators: +# Wil Odoo, 2023 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-26 21:55+0000\n" +"PO-Revision-Date: 2023-10-26 23:09+0000\n" +"Last-Translator: Wil Odoo, 2023\n" +"Language-Team: Arabic (https://app.transifex.com/odoo/teams/41243/ar/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: ar\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid " - On product with the following taxes: %(taxes)s" +msgstr "- على المنتجات التي تحتوي على الضرائب التالية: %(taxes)s " + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid " Copy" +msgstr " نسخة " + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "A better global discount is already applied." +msgstr "تم تطبيق خصم شامل أفضل بالفعل. " + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"A minimum of %(amount)s %(currency)s should be purchased to get the reward" +msgstr "يجب شراء %(amount)s %(currency)s كحد أدنى للحصول على المكافأة " + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Apply" +msgstr "تطبيق" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_reward_wizard_action +msgid "Available Rewards" +msgstr "المكافآت المتاحة" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose a product:" +msgstr "اختر منتجًا:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose your reward:" +msgstr "اختر مكافأتك:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Code:" +msgstr "الكود:" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__coupon_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__coupon_id +msgid "Coupon" +msgstr "كوبون" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__coupon_code +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Coupon Code" +msgstr "كود الكوبون" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__coupon_point_ids +msgid "Coupon Point" +msgstr "نقاط الكوبون " + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "Coupon not found while trying to add the following reward: %s" +msgstr "لم يتم العثور على الكوبون عند محاولة إضافة المكافأة التالية: %s " + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Coupons & Loyalty" +msgstr "الكوبونات والولاء " + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_uid +msgid "Created by" +msgstr "أنشئ بواسطة" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_date +msgid "Created on" +msgstr "أنشئ في" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Discard" +msgstr "إهمال " + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_discount_loyalty_type_config +msgid "Discount & Loyalty" +msgstr "الخصم والولاء " + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Discount: %(desc)s%(tax_str)s" +msgstr "الخصم: %(desc)s%(tax_str)s " + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__display_name +msgid "Display Name" +msgstr "اسم العرض " + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_coupon_wizard_action +msgid "Enter Promotion or Coupon Code" +msgstr "أدخل رمز العرض الترويجي أو رمز الكوبون " + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Expired Date:" +msgstr "تاريخ انتهاء الصلاحية: " + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Free Product - %(product)s" +msgstr "منتج مجاني - %(product)s " + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift #" +msgstr "رقم الهدية " + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift Card Code" +msgstr "كود بطاقة الهدايا " + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_gift_ewallet_type_config +msgid "Gift cards & eWallet" +msgstr "بطاقات الهدايا والمحفظة الإلكترونية " + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__points_cost +msgid "How much point this reward costs on the loyalty card." +msgstr "عدد النقاط التي تستهلكها هذه المكافأة في بطاقة الولاء. " + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__id +msgid "ID" +msgstr "المُعرف" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Invalid product to claim." +msgstr "لا يمكن المطالبة بهذا المنتج. " + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_coupon_wizard.py:0 +#, python-format +msgid "Invalid sales order." +msgstr "أمر البيع غير صحيح. " + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__is_reward_line +msgid "Is a program reward line" +msgstr "بند مكافأة برنامج" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_uid +msgid "Last Updated by" +msgstr "آخر تحديث بواسطة" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_date +msgid "Last Updated on" +msgstr "آخر تحديث في" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_card +msgid "Loyalty Coupon" +msgstr "كوبون الولاء " + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_program +msgid "Loyalty Program" +msgstr "برنامج الولاء" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_reward +msgid "Loyalty Reward" +msgstr "مكافأة الولاء" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__applied_coupon_ids +msgid "Manually Applied Coupons" +msgstr "الكوبونات المطبقة يدوياً " + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__code_enabled_rule_ids +msgid "Manually Triggered Rules" +msgstr "القواعد المشغلة يدوياً " + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__multi_product_reward +msgid "Multi Product" +msgstr "منتج متعدد " + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"No card found for this loyalty program and no points will be given with this" +" order." +msgstr "" +"لم يتم العثور على بطاقة لبرنامج الولاء هذا ولن يتم إعطاء النقاط لهذا الطلب. " + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "No reward selected." +msgstr "لم يتم تحديد مكافأة." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "No rewards available for this customer!" +msgstr "لا توجد مكافآت متاحة لهذا العميل!" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "One or more rewards on the sale order is invalid. Please check them." +msgstr "هناك مكافأة واحدة أو أكثر غير صالحة في أمر البيع. يرجى التحقق منها. " + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__order_id +msgid "Order" +msgstr "الطلب" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__order_count +msgid "Order Count" +msgstr "عدد الطلبات " + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_card__order_id +msgid "Order Reference" +msgstr "مرجع الطلب " + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__points +msgid "Points" +msgstr "النقاط " + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__points_cost +msgid "Points Cost" +msgstr "تكلفة النقاط" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Promotions" +msgstr "العروض " + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_ids +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_id +msgid "Reward" +msgstr "مكافأة" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__reward_amount +msgid "Reward Amount" +msgstr "مبلغ المكافأة " + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "Reward Identifier Code" +msgstr "كود معرّف المكافأة " + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "Reward Products" +msgstr "منتجات المكافآت " + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_coupon_wizard +msgid "Sale Loyalty - Apply Coupon Wizard" +msgstr "ولاء المبيعات - معالج تطبيق الكوبونات " + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_reward_wizard +msgid "Sale Loyalty - Reward Selection Wizard" +msgstr "ولاء المبيعات - معالج تحديد المكافآت " + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_coupon_points +msgid "" +"Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon" +msgstr "نقاط كوبونات أوامر البيع - يراقب آثار أوامر البيع على الكوبونات " + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__sale_ok +msgid "Sales" +msgstr "المبيعات" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order +msgid "Sales Order" +msgstr "أمر البيع" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_line +msgid "Sales Order Line" +msgstr "بند أمر المبيعات" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_product_id +msgid "Selected Product" +msgstr "المنتج المحدد" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_reward_id +msgid "Selected Reward" +msgstr "المكافأة المحددة " + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "TEMPORARY DISCOUNT LINE" +msgstr "بند خصم مؤقت " + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "" +"Technical field used to link multiple reward lines from the same reward " +"together." +msgstr "حقل تقني يُستخدم لربط عدة بنود مكافآت من نفس المكافأة معاً. " + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon can only be claimed on future orders." +msgstr "يمكن استخدام الكوبون فقط في الطلبات المستقبلية. " + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon does not have enough points for the selected reward." +msgstr "ليس في الكوبون نقاط كافية للمكافأة المحددة. " + +#. module: sale_loyalty +#: model:ir.model.constraint,message:sale_loyalty.constraint_sale_order_coupon_points_order_coupon_unique +msgid "The coupon points entry already exists." +msgstr "مدخلات نقاط الكوبون موجودة بالفعل. " + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The program is not available for this order." +msgstr "البرنامج غير متاح لهذا الطلب. " + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_loyalty_card__order_id +msgid "The sales order from which coupon is generated" +msgstr "أمر المبيعات الذي تم إنشاء الكوبون منه" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "There is nothing to discount" +msgstr "لا يوجد ما يمكن تطبيق الخصم عليه " + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "These are the products that can be claimed with this rule." +msgstr "هذه هي المنتجات التي يمكن الحصول عليها من خلال هذه القاعدة. " + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is expired (%s)." +msgstr "هذا الرمز منتهي الصلاحية (%s)." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is invalid (%s)." +msgstr "هذا الكود غير صحيح (%s). " + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon has already been used." +msgstr "هذا الكوبون مستخدم بالفعل. " + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon is expired." +msgstr "لقد انتهت مدة صلاحية هذا الكوبون. " + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is already applied to this order." +msgstr "تم تطبيق هذا البرنامج في هذا الطلب بالفعل. " + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is not available for public users." +msgstr "هذا البرنامج غير متاح للمستخدمين العامين. " + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program requires a code to be applied." +msgstr "يتطلب هذا البرنامج رمزاً ليتم تطبيقه. " + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This promo code is already applied." +msgstr "هذا الكود الترويجي مطبق بالفعل. " + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Update current promotional lines and select new rewards if applicable." +msgstr "" +"تحديث البنود الترويجية الحالية وتحديد مكافآت جديدة، إذا كان ذلك منطبقاً. " + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "You don't have the required product quantities on your sales order." +msgstr "لا تملك الكميات المطلوبة من المنتج في أمر البيع الخاص بك. " + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "" +"You will find below your gift cards code. An email has been sent with it. " +"You can use it starting right now." +msgstr "" +"ستجد أدناه كود بطاقة الهدايا. لقد تم إرسال بريد إلكتروني بشأنه. بمقدورك " +"استخدامه منذ الآن. " diff --git a/i18n/bg.po b/i18n/bg.po new file mode 100644 index 0000000..e86e978 --- /dev/null +++ b/i18n/bg.po @@ -0,0 +1,508 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_loyalty +# +# Translators: +# Albena Mincheva , 2023 +# KeyVillage, 2023 +# aleksandar ivanov, 2023 +# Martin Trigaux, 2023 +# Igor Sheludko , 2023 +# Maria Boyadjieva , 2023 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-26 21:55+0000\n" +"PO-Revision-Date: 2023-10-26 23:09+0000\n" +"Last-Translator: Maria Boyadjieva , 2023\n" +"Language-Team: Bulgarian (https://app.transifex.com/odoo/teams/41243/bg/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: bg\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid " - On product with the following taxes: %(taxes)s" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid " Copy" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "A better global discount is already applied." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"A minimum of %(amount)s %(currency)s should be purchased to get the reward" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Apply" +msgstr "Приложи" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_reward_wizard_action +msgid "Available Rewards" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose a product:" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose your reward:" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Code:" +msgstr "Код:" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__coupon_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__coupon_id +msgid "Coupon" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__coupon_code +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Coupon Code" +msgstr "Код на фиша" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__coupon_point_ids +msgid "Coupon Point" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "Coupon not found while trying to add the following reward: %s" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Coupons & Loyalty" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_uid +msgid "Created by" +msgstr "Създадено от" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_date +msgid "Created on" +msgstr "Създадено на" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Discard" +msgstr "Отхвърлете" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_discount_loyalty_type_config +msgid "Discount & Loyalty" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Discount: %(desc)s%(tax_str)s" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__display_name +msgid "Display Name" +msgstr "Име за Показване" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_coupon_wizard_action +msgid "Enter Promotion or Coupon Code" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Expired Date:" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Free Product - %(product)s" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift #" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift Card Code" +msgstr "" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_gift_ewallet_type_config +msgid "Gift cards & eWallet" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__points_cost +msgid "How much point this reward costs on the loyalty card." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__id +msgid "ID" +msgstr "ID" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Invalid product to claim." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_coupon_wizard.py:0 +#, python-format +msgid "Invalid sales order." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__is_reward_line +msgid "Is a program reward line" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_uid +msgid "Last Updated by" +msgstr "Последно актуализирано от" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_date +msgid "Last Updated on" +msgstr "Последно актуализирано на" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_card +msgid "Loyalty Coupon" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_program +msgid "Loyalty Program" +msgstr "Програма за лоялност" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_reward +msgid "Loyalty Reward" +msgstr "Награда за лоялност" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__applied_coupon_ids +msgid "Manually Applied Coupons" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__code_enabled_rule_ids +msgid "Manually Triggered Rules" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__multi_product_reward +msgid "Multi Product" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"No card found for this loyalty program and no points will be given with this" +" order." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "No reward selected." +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "No rewards available for this customer!" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "One or more rewards on the sale order is invalid. Please check them." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__order_id +msgid "Order" +msgstr "Поръчка" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__order_count +msgid "Order Count" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_card__order_id +msgid "Order Reference" +msgstr "Референция за поръчка" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__points +msgid "Points" +msgstr "Точки" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__points_cost +msgid "Points Cost" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Promotions" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_ids +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_id +msgid "Reward" +msgstr "Награда" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__reward_amount +msgid "Reward Amount" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "Reward Identifier Code" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "Reward Products" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_coupon_wizard +msgid "Sale Loyalty - Apply Coupon Wizard" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_reward_wizard +msgid "Sale Loyalty - Reward Selection Wizard" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_coupon_points +msgid "" +"Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__sale_ok +msgid "Sales" +msgstr "Продажби" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order +msgid "Sales Order" +msgstr "Поръчка" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_line +msgid "Sales Order Line" +msgstr "Ред на поръчка за продажби" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_product_id +msgid "Selected Product" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_reward_id +msgid "Selected Reward" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "TEMPORARY DISCOUNT LINE" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "" +"Technical field used to link multiple reward lines from the same reward " +"together." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon can only be claimed on future orders." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon does not have enough points for the selected reward." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.constraint,message:sale_loyalty.constraint_sale_order_coupon_points_order_coupon_unique +msgid "The coupon points entry already exists." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The program is not available for this order." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_loyalty_card__order_id +msgid "The sales order from which coupon is generated" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "There is nothing to discount" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "These are the products that can be claimed with this rule." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is expired (%s)." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is invalid (%s)." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon has already been used." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon is expired." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is already applied to this order." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is not available for public users." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program requires a code to be applied." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This promo code is already applied." +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Update current promotional lines and select new rewards if applicable." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "You don't have the required product quantities on your sales order." +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "" +"You will find below your gift cards code. An email has been sent with it. " +"You can use it starting right now." +msgstr "" diff --git a/i18n/ca.po b/i18n/ca.po new file mode 100644 index 0000000..4dfd0c5 --- /dev/null +++ b/i18n/ca.po @@ -0,0 +1,527 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_loyalty +# +# Translators: +# Guspy12, 2023 +# Arnau Ros, 2023 +# Josep Anton Belchi, 2023 +# Marc Tormo i Bochaca , 2023 +# Carles Antoli , 2023 +# Martin Trigaux, 2023 +# Óscar Fonseca , 2023 +# Manel Fernandez Ramirez , 2023 +# martioodo hola, 2023 +# jabiri7, 2023 +# Ivan Espinola, 2023 +# marcescu, 2023 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-26 21:55+0000\n" +"PO-Revision-Date: 2023-10-26 23:09+0000\n" +"Last-Translator: marcescu, 2023\n" +"Language-Team: Catalan (https://app.transifex.com/odoo/teams/41243/ca/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: ca\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid " - On product with the following taxes: %(taxes)s" +msgstr "- Sobre el producte amb els impostos següents: %(taxes)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid " Copy" +msgstr " Copia" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "A better global discount is already applied." +msgstr "Ja s'aplica un descompte global millor." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"A minimum of %(amount)s %(currency)s should be purchased to get the reward" +msgstr "" +"Un mínim de %(amount)s %(currency)ss'ha de comprar per obtenir la recompensa" +" " + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Apply" +msgstr "Aplica" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_reward_wizard_action +msgid "Available Rewards" +msgstr "Recompenses disponibles" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose a product:" +msgstr "Trieu un producte:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose your reward:" +msgstr "Trieu la recompensa:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Code:" +msgstr "Codi:" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__coupon_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__coupon_id +msgid "Coupon" +msgstr "Cupó" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__coupon_code +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Coupon Code" +msgstr "Codi Cupó" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__coupon_point_ids +msgid "Coupon Point" +msgstr "Punt del cupó" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "Coupon not found while trying to add the following reward: %s" +msgstr "Cupó no trobat en intentar afegir la recompensa següent: %s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Coupons & Loyalty" +msgstr "Cupons i fidelitat" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_uid +msgid "Created by" +msgstr "Creat per" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_date +msgid "Created on" +msgstr "Creat el" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Discard" +msgstr "Descartar" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_discount_loyalty_type_config +msgid "Discount & Loyalty" +msgstr "Lleialtat del descompte" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Discount: %(desc)s%(tax_str)s" +msgstr "Descompte: %(desc)s%(tax_str)s" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__display_name +msgid "Display Name" +msgstr "Nom mostrat" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_coupon_wizard_action +msgid "Enter Promotion or Coupon Code" +msgstr "Introduïu el codi de promoció o de cupó" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Expired Date:" +msgstr "Data de venciment:" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Free Product - %(product)s" +msgstr "Producte lliure - %(product)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift #" +msgstr "Regal #" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift Card Code" +msgstr "Codi de targeta de regal" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_gift_ewallet_type_config +msgid "Gift cards & eWallet" +msgstr "Gift Cards eWallet" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__points_cost +msgid "How much point this reward costs on the loyalty card." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__id +msgid "ID" +msgstr "ID" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Invalid product to claim." +msgstr "Producte no vàlid per reclamar." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_coupon_wizard.py:0 +#, python-format +msgid "Invalid sales order." +msgstr "Comanda de vendes no vàlid." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__is_reward_line +msgid "Is a program reward line" +msgstr "És una línia de recompensa del programa" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_uid +msgid "Last Updated by" +msgstr "Última actualització per" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_date +msgid "Last Updated on" +msgstr "Última actualització el" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_card +msgid "Loyalty Coupon" +msgstr "Cupó lleial" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_program +msgid "Loyalty Program" +msgstr "Programa de fidelitat " + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_reward +msgid "Loyalty Reward" +msgstr "Recompensa de fidelitat" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__applied_coupon_ids +msgid "Manually Applied Coupons" +msgstr "Cupons aplicats manualment" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__code_enabled_rule_ids +msgid "Manually Triggered Rules" +msgstr "Regles activades manualment" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__multi_product_reward +msgid "Multi Product" +msgstr "Producte múltiple" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"No card found for this loyalty program and no points will be given with this" +" order." +msgstr "" +"No s'ha trobat cap targeta per a aquest programa de lleialtat i no es " +"donaran punts amb aquesta comanda." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "No reward selected." +msgstr "No s'ha seleccionat cap recompensa." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "No rewards available for this customer!" +msgstr "No hi ha cap recompensa disponible per a aquest client!" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "One or more rewards on the sale order is invalid. Please check them." +msgstr "" +"Una o més recompenses en la comanda de venda no són vàlides. Si us plau, " +"comproveu-les." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__order_id +msgid "Order" +msgstr "Ordre" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__order_count +msgid "Order Count" +msgstr "Comptador de comandes" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_card__order_id +msgid "Order Reference" +msgstr "Referència de comanda" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__points +msgid "Points" +msgstr "Punts " + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__points_cost +msgid "Points Cost" +msgstr "Cost dels punts" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Promotions" +msgstr "Promocions" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_ids +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_id +msgid "Reward" +msgstr "Recompensa" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__reward_amount +msgid "Reward Amount" +msgstr "Quantitat de la recompensa" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "Reward Identifier Code" +msgstr "Reenvia el codi d'identificació" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "Reward Products" +msgstr "Reenvia productes" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_coupon_wizard +msgid "Sale Loyalty - Apply Coupon Wizard" +msgstr "Lleialtat de vendes - Assistent d'aplicació de cupons" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_reward_wizard +msgid "Sale Loyalty - Reward Selection Wizard" +msgstr "Lleialtat de vendes - Auxiliar de reenviament de la selecció" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_coupon_points +msgid "" +"Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon" +msgstr "" +"Punts de cupó de comandes de venda - Fa un seguiment de com una comanda de " +"venda impacta un cupó" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__sale_ok +msgid "Sales" +msgstr "Vendes" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order +msgid "Sales Order" +msgstr "Comanda" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_line +msgid "Sales Order Line" +msgstr "Línia comanda de venda" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_product_id +msgid "Selected Product" +msgstr "Producte seleccionat" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_reward_id +msgid "Selected Reward" +msgstr "Reenviat seleccionat" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "TEMPORARY DISCOUNT LINE" +msgstr "LÍNIA TEMPORAL DE DESCOMPTE" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "" +"Technical field used to link multiple reward lines from the same reward " +"together." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon can only be claimed on future orders." +msgstr "El cupó només es pot reclamar per ordres futures." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon does not have enough points for the selected reward." +msgstr "El cupó no té prou punts per a la recompensa seleccionada." + +#. module: sale_loyalty +#: model:ir.model.constraint,message:sale_loyalty.constraint_sale_order_coupon_points_order_coupon_unique +msgid "The coupon points entry already exists." +msgstr "L'entrada de punts del cupó ja existeix." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The program is not available for this order." +msgstr "El programa no està disponible per a aquesta comanda." + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_loyalty_card__order_id +msgid "The sales order from which coupon is generated" +msgstr "La comanda de venda des de la qual es genera el cupó" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "There is nothing to discount" +msgstr "No hi ha res a descompte" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "These are the products that can be claimed with this rule." +msgstr "Aquests són els productes que es poden reclamar amb aquesta norma." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is expired (%s)." +msgstr "Aquest codi ha caducat (%s)." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is invalid (%s)." +msgstr "Aquest codi no és vàlid (%s)." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon has already been used." +msgstr "Aquest cupó ja s'ha utilitzat." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon is expired." +msgstr "Aquest cupó ha vençut." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is already applied to this order." +msgstr "Aquest programa ja s'aplica a aquesta comanda." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is not available for public users." +msgstr "Aquest programa no està disponible per als usuaris públics." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program requires a code to be applied." +msgstr "Aquest programa requereix un codi a aplicar." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This promo code is already applied." +msgstr "Aquest codi promocional ja s'ha aplicat." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Update current promotional lines and select new rewards if applicable." +msgstr "" +"Actualitza les línies promocionals actuals i selecciona noves recompenses si" +" escau." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "You don't have the required product quantities on your sales order." +msgstr "" +"No tens les quantitats de producte necessàries a la teva comanda de vendes." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "" +"You will find below your gift cards code. An email has been sent with it. " +"You can use it starting right now." +msgstr "" +"Trobareu sota el codi de targetes de regal. S'ha enviat un correu electrònic" +" amb ell. Pots utilitzar-lo ara mateix." diff --git a/i18n/cs.po b/i18n/cs.po new file mode 100644 index 0000000..9651600 --- /dev/null +++ b/i18n/cs.po @@ -0,0 +1,509 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_loyalty +# +# Translators: +# Ivana Bartonkova, 2023 +# Wil Odoo, 2023 +# Jakub Smolka, 2023 +# Jiří Podhorecký, 2023 +# Aleš Fiala , 2023 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-26 21:55+0000\n" +"PO-Revision-Date: 2023-10-26 23:09+0000\n" +"Last-Translator: Aleš Fiala , 2023\n" +"Language-Team: Czech (https://app.transifex.com/odoo/teams/41243/cs/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: cs\n" +"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid " - On product with the following taxes: %(taxes)s" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid " Copy" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "A better global discount is already applied." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"A minimum of %(amount)s %(currency)s should be purchased to get the reward" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Apply" +msgstr "Použít" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_reward_wizard_action +msgid "Available Rewards" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose a product:" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose your reward:" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Code:" +msgstr "Kód:" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__coupon_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__coupon_id +msgid "Coupon" +msgstr "Kupón" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__coupon_code +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Coupon Code" +msgstr "Kód kupónu" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__coupon_point_ids +msgid "Coupon Point" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "Coupon not found while trying to add the following reward: %s" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Coupons & Loyalty" +msgstr "Kupóny a věrnostní programy" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_uid +msgid "Created by" +msgstr "Vytvořeno uživatelem" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_date +msgid "Created on" +msgstr "Vytvořeno dne" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Discard" +msgstr "Zrušit" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_discount_loyalty_type_config +msgid "Discount & Loyalty" +msgstr "Slevy a věrnostní programy" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Discount: %(desc)s%(tax_str)s" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__display_name +msgid "Display Name" +msgstr "Zobrazovací název" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_coupon_wizard_action +msgid "Enter Promotion or Coupon Code" +msgstr "Zadejte propagační nebo kupónový kód" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Expired Date:" +msgstr "Datum vypršení platnosti:" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Free Product - %(product)s" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift #" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift Card Code" +msgstr "" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_gift_ewallet_type_config +msgid "Gift cards & eWallet" +msgstr "Poukazy a digitální peněženky" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__points_cost +msgid "How much point this reward costs on the loyalty card." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__id +msgid "ID" +msgstr "ID" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Invalid product to claim." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_coupon_wizard.py:0 +#, python-format +msgid "Invalid sales order." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__is_reward_line +msgid "Is a program reward line" +msgstr "Jde o programovou odměnu" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_uid +msgid "Last Updated by" +msgstr "Naposledy upraveno uživatelem" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_date +msgid "Last Updated on" +msgstr "Naposledy upraveno dne" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_card +msgid "Loyalty Coupon" +msgstr "Věrnostní kupón" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_program +msgid "Loyalty Program" +msgstr "Věrnostní program" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_reward +msgid "Loyalty Reward" +msgstr "Věrnostní odměna" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__applied_coupon_ids +msgid "Manually Applied Coupons" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__code_enabled_rule_ids +msgid "Manually Triggered Rules" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__multi_product_reward +msgid "Multi Product" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"No card found for this loyalty program and no points will be given with this" +" order." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "No reward selected." +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "No rewards available for this customer!" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "One or more rewards on the sale order is invalid. Please check them." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__order_id +msgid "Order" +msgstr "Objednávka" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__order_count +msgid "Order Count" +msgstr "Počet objednávek" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_card__order_id +msgid "Order Reference" +msgstr "Odkaz objednávky" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__points +msgid "Points" +msgstr "Body" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__points_cost +msgid "Points Cost" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Promotions" +msgstr "Propagace" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_ids +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_id +msgid "Reward" +msgstr "Odměna" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__reward_amount +msgid "Reward Amount" +msgstr "Velikost odměny" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "Reward Identifier Code" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "Reward Products" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_coupon_wizard +msgid "Sale Loyalty - Apply Coupon Wizard" +msgstr "Průvodce použitím kupónu" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_reward_wizard +msgid "Sale Loyalty - Reward Selection Wizard" +msgstr "Průvodce výběrem odměny" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_coupon_points +msgid "" +"Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon" +msgstr "Kupónové body - udržují přehled o dopadu prodejní objednávky na kupón" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__sale_ok +msgid "Sales" +msgstr "Prodej" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order +msgid "Sales Order" +msgstr "Prodejní objednávka" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_line +msgid "Sales Order Line" +msgstr "Položka prodejní objednávky" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_product_id +msgid "Selected Product" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_reward_id +msgid "Selected Reward" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "TEMPORARY DISCOUNT LINE" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "" +"Technical field used to link multiple reward lines from the same reward " +"together." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon can only be claimed on future orders." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon does not have enough points for the selected reward." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.constraint,message:sale_loyalty.constraint_sale_order_coupon_points_order_coupon_unique +msgid "The coupon points entry already exists." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The program is not available for this order." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_loyalty_card__order_id +msgid "The sales order from which coupon is generated" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "There is nothing to discount" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "These are the products that can be claimed with this rule." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is expired (%s)." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is invalid (%s)." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon has already been used." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon is expired." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is already applied to this order." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is not available for public users." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program requires a code to be applied." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This promo code is already applied." +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Update current promotional lines and select new rewards if applicable." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "You don't have the required product quantities on your sales order." +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "" +"You will find below your gift cards code. An email has been sent with it. " +"You can use it starting right now." +msgstr "" +"Níže najdete kód dárkových karet. Byl vám zaslán e-mail s tímto kódem. " +"Můžete jej použít od této chvíle." diff --git a/i18n/da.po b/i18n/da.po new file mode 100644 index 0000000..b56f330 --- /dev/null +++ b/i18n/da.po @@ -0,0 +1,507 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_loyalty +# +# Translators: +# lhmflexerp , 2023 +# Mads Søndergaard, 2023 +# Martin Trigaux, 2023 +# Sanne Kristensen , 2024 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-26 21:55+0000\n" +"PO-Revision-Date: 2023-10-26 23:09+0000\n" +"Last-Translator: Sanne Kristensen , 2024\n" +"Language-Team: Danish (https://app.transifex.com/odoo/teams/41243/da/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: da\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid " - On product with the following taxes: %(taxes)s" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid " Copy" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "A better global discount is already applied." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"A minimum of %(amount)s %(currency)s should be purchased to get the reward" +msgstr "" +"Et minimum på %(amount)s %(currency)s bør købet for at modtage belønningen" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Apply" +msgstr "Anvend" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_reward_wizard_action +msgid "Available Rewards" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose a product:" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose your reward:" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Code:" +msgstr "Kode:" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__coupon_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__coupon_id +msgid "Coupon" +msgstr "Kupon" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__coupon_code +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Coupon Code" +msgstr "Rabatkode" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__coupon_point_ids +msgid "Coupon Point" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "Coupon not found while trying to add the following reward: %s" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Coupons & Loyalty" +msgstr "Kuponer & loyalitetsprogrammer" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_uid +msgid "Created by" +msgstr "Oprettet af" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_date +msgid "Created on" +msgstr "Oprettet den" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Discard" +msgstr "Kassér" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_discount_loyalty_type_config +msgid "Discount & Loyalty" +msgstr "Rabat & Loyalitet" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Discount: %(desc)s%(tax_str)s" +msgstr "Rabat: %(desc)s%(tax_str)s" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__display_name +msgid "Display Name" +msgstr "Vis navn" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_coupon_wizard_action +msgid "Enter Promotion or Coupon Code" +msgstr "Angiv kampagne eller kupon kode" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Expired Date:" +msgstr "Udløbsdato:" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Free Product - %(product)s" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift #" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift Card Code" +msgstr "Gavekortkode" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_gift_ewallet_type_config +msgid "Gift cards & eWallet" +msgstr "Gavekort og eWallet" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__points_cost +msgid "How much point this reward costs on the loyalty card." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__id +msgid "ID" +msgstr "ID" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Invalid product to claim." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_coupon_wizard.py:0 +#, python-format +msgid "Invalid sales order." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__is_reward_line +msgid "Is a program reward line" +msgstr "Er en programbelønningslinje" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_uid +msgid "Last Updated by" +msgstr "Sidst opdateret af" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_date +msgid "Last Updated on" +msgstr "Sidst opdateret den" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_card +msgid "Loyalty Coupon" +msgstr "Loyalitetskupon" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_program +msgid "Loyalty Program" +msgstr "Loyalitetsprogram" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_reward +msgid "Loyalty Reward" +msgstr "Loyalitet Belønning" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__applied_coupon_ids +msgid "Manually Applied Coupons" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__code_enabled_rule_ids +msgid "Manually Triggered Rules" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__multi_product_reward +msgid "Multi Product" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"No card found for this loyalty program and no points will be given with this" +" order." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "No reward selected." +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "No rewards available for this customer!" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "One or more rewards on the sale order is invalid. Please check them." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__order_id +msgid "Order" +msgstr "Ordre" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__order_count +msgid "Order Count" +msgstr "Ordre antal" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_card__order_id +msgid "Order Reference" +msgstr "Ordre reference" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__points +msgid "Points" +msgstr "Point" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__points_cost +msgid "Points Cost" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Promotions" +msgstr "Kampagner" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_ids +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_id +msgid "Reward" +msgstr "Belønning" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__reward_amount +msgid "Reward Amount" +msgstr "Belønningsbeløb" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "Reward Identifier Code" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "Reward Products" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_coupon_wizard +msgid "Sale Loyalty - Apply Coupon Wizard" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_reward_wizard +msgid "Sale Loyalty - Reward Selection Wizard" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_coupon_points +msgid "" +"Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__sale_ok +msgid "Sales" +msgstr "Salg" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order +msgid "Sales Order" +msgstr "Salgsordre" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_line +msgid "Sales Order Line" +msgstr "Salgsordrelinje" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_product_id +msgid "Selected Product" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_reward_id +msgid "Selected Reward" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "TEMPORARY DISCOUNT LINE" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "" +"Technical field used to link multiple reward lines from the same reward " +"together." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon can only be claimed on future orders." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon does not have enough points for the selected reward." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.constraint,message:sale_loyalty.constraint_sale_order_coupon_points_order_coupon_unique +msgid "The coupon points entry already exists." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The program is not available for this order." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_loyalty_card__order_id +msgid "The sales order from which coupon is generated" +msgstr "Salgsordren som kuponen er genereret fra" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "There is nothing to discount" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "These are the products that can be claimed with this rule." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is expired (%s)." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is invalid (%s)." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon has already been used." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon is expired." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is already applied to this order." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is not available for public users." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program requires a code to be applied." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This promo code is already applied." +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Update current promotional lines and select new rewards if applicable." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "You don't have the required product quantities on your sales order." +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "" +"You will find below your gift cards code. An email has been sent with it. " +"You can use it starting right now." +msgstr "" diff --git a/i18n/de.po b/i18n/de.po new file mode 100644 index 0000000..cfe93a3 --- /dev/null +++ b/i18n/de.po @@ -0,0 +1,523 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_loyalty +# +# Translators: +# Wil Odoo, 2023 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-26 21:55+0000\n" +"PO-Revision-Date: 2023-10-26 23:09+0000\n" +"Last-Translator: Wil Odoo, 2023\n" +"Language-Team: German (https://app.transifex.com/odoo/teams/41243/de/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: de\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid " - On product with the following taxes: %(taxes)s" +msgstr " - Auf Produkte mit den folgenden Steuern: %(taxes)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid " Copy" +msgstr " Kopieren" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "A better global discount is already applied." +msgstr "Ein besserer Gesamtrabatt wird bereits angewendet." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"A minimum of %(amount)s %(currency)s should be purchased to get the reward" +msgstr "" +"Ein Minimum von %(amount)s%(currency)s sollte gekauft werden, um die " +"Belohnung zu erhalten" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Apply" +msgstr "Anwenden" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_reward_wizard_action +msgid "Available Rewards" +msgstr "Verfügbare Belohnungen" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose a product:" +msgstr "Wählen Sie ein Produkt aus:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose your reward:" +msgstr "Wählen Sie Ihre Belohnung:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Code:" +msgstr "Code:" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__coupon_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__coupon_id +msgid "Coupon" +msgstr "Gutschein" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__coupon_code +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Coupon Code" +msgstr "Gutscheincode" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__coupon_point_ids +msgid "Coupon Point" +msgstr "Gutscheinpunkt" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "Coupon not found while trying to add the following reward: %s" +msgstr "" +"Beim Versuch, die folgende Belohnung hinzuzufügen, wurde kein Gutschein " +"gefunden: %s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Coupons & Loyalty" +msgstr "Gutscheine & Treue" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_uid +msgid "Created by" +msgstr "Erstellt von" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_date +msgid "Created on" +msgstr "Erstellt am" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Discard" +msgstr "Verwerfen" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_discount_loyalty_type_config +msgid "Discount & Loyalty" +msgstr "Rabatt & Treue" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Discount: %(desc)s%(tax_str)s" +msgstr "Rabatt: %(desc)s%(tax_str)s" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__display_name +msgid "Display Name" +msgstr "Anzeigename" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_coupon_wizard_action +msgid "Enter Promotion or Coupon Code" +msgstr "Aktions- oder Gutscheincode eingeben" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Expired Date:" +msgstr "Ablaufdatum:" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Free Product - %(product)s" +msgstr "Gratisprodukt - %(product)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift #" +msgstr "Geschenk #" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift Card Code" +msgstr "Geschenkkarten-Code" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_gift_ewallet_type_config +msgid "Gift cards & eWallet" +msgstr "Geschenkkarten & E-Geldbörse" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__points_cost +msgid "How much point this reward costs on the loyalty card." +msgstr "" +"Wie viele Punkte von der Treuekarte für diese Belohnung benötigt werden." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__id +msgid "ID" +msgstr "ID" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Invalid product to claim." +msgstr "Anforderung eines ungültigen Produkts." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_coupon_wizard.py:0 +#, python-format +msgid "Invalid sales order." +msgstr "Ungültiger Verkaufsauftrag." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__is_reward_line +msgid "Is a program reward line" +msgstr "Ist eine Programm-Belohnungszeile" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_uid +msgid "Last Updated by" +msgstr "Zuletzt aktualisiert von" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_date +msgid "Last Updated on" +msgstr "Zuletzt aktualisiert am" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_card +msgid "Loyalty Coupon" +msgstr "Treuegutscheine" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_program +msgid "Loyalty Program" +msgstr "Treueprogramm" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_reward +msgid "Loyalty Reward" +msgstr "Treuebonus" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__applied_coupon_ids +msgid "Manually Applied Coupons" +msgstr "Manuell angewandte Gutscheine" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__code_enabled_rule_ids +msgid "Manually Triggered Rules" +msgstr "Manuell ausgelöste Regeln" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__multi_product_reward +msgid "Multi Product" +msgstr "Multi-Produkt" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"No card found for this loyalty program and no points will be given with this" +" order." +msgstr "" +"Es wurde keine Karte für dieses Treueprogramm gefunden und es werden keine " +"Punkte für diesen Auftrag vergeben." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "No reward selected." +msgstr "Keine Belohnung ausgewählt." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "No rewards available for this customer!" +msgstr "Keine Belohnung für diesen Kunden verfügbar" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "One or more rewards on the sale order is invalid. Please check them." +msgstr "" +"Eine oder mehrere Belohnungen für diesen Verkaufsauftrag sind ungültig. " +"Bitte überprüfen Sie diese." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__order_id +msgid "Order" +msgstr "Auftrag" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__order_count +msgid "Order Count" +msgstr "Anzahl Aufträge" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_card__order_id +msgid "Order Reference" +msgstr "Auftragsreferenz" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__points +msgid "Points" +msgstr "Punkte" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__points_cost +msgid "Points Cost" +msgstr "Punktekosten" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Promotions" +msgstr "Werbeaktionen" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_ids +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_id +msgid "Reward" +msgstr "Belohnung" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__reward_amount +msgid "Reward Amount" +msgstr "Belohnungsbetrag" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "Reward Identifier Code" +msgstr "Kenncode der Belohnung" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "Reward Products" +msgstr "Belohnungsprodukte" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_coupon_wizard +msgid "Sale Loyalty - Apply Coupon Wizard" +msgstr "Kundentreue - Assistent zur Anwendung von Gutscheinen" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_reward_wizard +msgid "Sale Loyalty - Reward Selection Wizard" +msgstr "Kundentreue - Assistent zur Auswahl der Belohnung" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_coupon_points +msgid "" +"Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon" +msgstr "" +"Gutscheinpunkte bei Verkaufsauftrag - Verfolgt, wie sich ein Verkaufsauftrag" +" auf einen Gutschein auswirkt" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__sale_ok +msgid "Sales" +msgstr "Verkauf" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order +msgid "Sales Order" +msgstr "Verkaufsauftrag" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_line +msgid "Sales Order Line" +msgstr "Verkaufsauftragszeile" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_product_id +msgid "Selected Product" +msgstr "Ausgewähltes Produkt" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_reward_id +msgid "Selected Reward" +msgstr "Ausgewählte Belohnung" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "TEMPORARY DISCOUNT LINE" +msgstr "ZEILE TEMPORÄRER RABATT" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "" +"Technical field used to link multiple reward lines from the same reward " +"together." +msgstr "" +"Technisches Feld, das verwendet wird, um mehrere Belohnungszeilen derselben " +"Belohnung miteinander zu verbinden." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon can only be claimed on future orders." +msgstr "Der Gutschein kann nur bei zukünftigen Bestellungen eingelöst werden." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon does not have enough points for the selected reward." +msgstr "" +"Der Gutschein hat nicht genügend Punkte für die ausgewählte Belohnung." + +#. module: sale_loyalty +#: model:ir.model.constraint,message:sale_loyalty.constraint_sale_order_coupon_points_order_coupon_unique +msgid "The coupon points entry already exists." +msgstr "Der Eintrag für die Gutscheinpunkte existiert bereits." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The program is not available for this order." +msgstr "Das Programm ist für diesen Auftrag nicht verfügbar." + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_loyalty_card__order_id +msgid "The sales order from which coupon is generated" +msgstr "Der Verkaufsauftrag, aus dem der Gutschein erstellt wird" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "There is nothing to discount" +msgstr "Es gibt keine anzuwendenden Rabatte" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "These are the products that can be claimed with this rule." +msgstr "" +"Dies sind die Produkte, die mit dieser Regel beansprucht werden können." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is expired (%s)." +msgstr "Dieser Code ist abgelaufen (%s)." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is invalid (%s)." +msgstr "Dieser Code ist ungültig (%s)." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon has already been used." +msgstr "Dieser Gutschein wurde bereits eingelöst." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon is expired." +msgstr "Dieser Gutschein ist abgelaufen." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is already applied to this order." +msgstr "Dieses Programm wird bereits auf diesem Auftrag angewendet." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is not available for public users." +msgstr "Dieses Programm ist für öffentliche Nutzer nicht verfügbar." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program requires a code to be applied." +msgstr "Für die Anwendung dieses Programms ist ein Code erforderlich." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This promo code is already applied." +msgstr "Dieser Aktionscode wird bereits angewendet." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Update current promotional lines and select new rewards if applicable." +msgstr "" +"Aktualisieren Sie die aktuellen Aktionszeilen und wählen Sie gegebenenfalls " +"neue Belohnungen aus." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "You don't have the required product quantities on your sales order." +msgstr "" +"Sie haben nicht die erforderlichen Produktmengen in Ihrem Verkaufsauftrag." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "" +"You will find below your gift cards code. An email has been sent with it. " +"You can use it starting right now." +msgstr "" +"Unten finden Sie den Code Ihrer Geschenkkarte. Sie erhalten diesen auch per " +"E-Mail. Sie können die Geschenkkarte ab sofort einsetzen." diff --git a/i18n/es.po b/i18n/es.po new file mode 100644 index 0000000..2e0c9dc --- /dev/null +++ b/i18n/es.po @@ -0,0 +1,519 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_loyalty +# +# Translators: +# Wil Odoo, 2023 +# Larissa Manderfeld, 2024 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-26 21:55+0000\n" +"PO-Revision-Date: 2023-10-26 23:09+0000\n" +"Last-Translator: Larissa Manderfeld, 2024\n" +"Language-Team: Spanish (https://app.transifex.com/odoo/teams/41243/es/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es\n" +"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid " - On product with the following taxes: %(taxes)s" +msgstr "- Sobre producto con los siguientes impuestos: %(taxes)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid " Copy" +msgstr " Copiar" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "A better global discount is already applied." +msgstr "Ya se aplicó un descuento global mejor." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"A minimum of %(amount)s %(currency)s should be purchased to get the reward" +msgstr "" +"Se debe comprar un mínimo de %(amount)s%(currency)s para obtener la " +"recompensa" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Apply" +msgstr "Aplicar" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_reward_wizard_action +msgid "Available Rewards" +msgstr "Recompensas disponibles" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose a product:" +msgstr "Elige un producto" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose your reward:" +msgstr "Elige tu recompensa:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Code:" +msgstr "Código:" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__coupon_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__coupon_id +msgid "Coupon" +msgstr "Cupón" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__coupon_code +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Coupon Code" +msgstr "Código de cupón" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__coupon_point_ids +msgid "Coupon Point" +msgstr "Punto de cupón" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "Coupon not found while trying to add the following reward: %s" +msgstr "" +"No se encontró el cupón al intentar agregar la siguiente recompensa: %s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Coupons & Loyalty" +msgstr "Cupones y lealtad" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_date +msgid "Created on" +msgstr "Creado el" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Discard" +msgstr "Descartar" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_discount_loyalty_type_config +msgid "Discount & Loyalty" +msgstr "Descuento y fidelidad" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Discount: %(desc)s%(tax_str)s" +msgstr "Descuento: %(desc)s%(tax_str)s" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__display_name +msgid "Display Name" +msgstr "Nombre mostrado" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_coupon_wizard_action +msgid "Enter Promotion or Coupon Code" +msgstr "Introduce el código de promoción o cupón" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Expired Date:" +msgstr "Fecha de caducidad:" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Free Product - %(product)s" +msgstr "Producto gratis - %(product)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift #" +msgstr "Regalo #" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift Card Code" +msgstr "Código de la tarjeta de regalo" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_gift_ewallet_type_config +msgid "Gift cards & eWallet" +msgstr "Tarjetas de regalo y monedero electrónico" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__points_cost +msgid "How much point this reward costs on the loyalty card." +msgstr "Cuántos puntos cuesta esta recompensa en la tarjeta de lealtad." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__id +msgid "ID" +msgstr "ID" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Invalid product to claim." +msgstr "Producto no válido para reclamar." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_coupon_wizard.py:0 +#, python-format +msgid "Invalid sales order." +msgstr "Orden de venta no válido." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__is_reward_line +msgid "Is a program reward line" +msgstr "Es una línea de recompensa del programa" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_uid +msgid "Last Updated by" +msgstr "Última actualización por" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_date +msgid "Last Updated on" +msgstr "Última actualización el" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_card +msgid "Loyalty Coupon" +msgstr "Cupón de fidelidad" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_program +msgid "Loyalty Program" +msgstr "Programa de fidelidad" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_reward +msgid "Loyalty Reward" +msgstr "Recompensa" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__applied_coupon_ids +msgid "Manually Applied Coupons" +msgstr "Cupones aplicados manualmente" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__code_enabled_rule_ids +msgid "Manually Triggered Rules" +msgstr "Reglas activadas manualmente" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__multi_product_reward +msgid "Multi Product" +msgstr "Productos múltiples" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"No card found for this loyalty program and no points will be given with this" +" order." +msgstr "" +"No se encontró ninguna tarjeta para este programa de fidelización y no se " +"otorgarán puntos con este pedido." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "No reward selected." +msgstr "No se ha seleccionado ninguna recompensa." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "No rewards available for this customer!" +msgstr "¡No hay recompensas disponibles para este cliente!" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "One or more rewards on the sale order is invalid. Please check them." +msgstr "" +"Una o más recompensas en el pedido de venta no son válidas. Por favor, " +"revíselos." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__order_id +msgid "Order" +msgstr "Pedido" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__order_count +msgid "Order Count" +msgstr "Recuento de pedidos" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_card__order_id +msgid "Order Reference" +msgstr "Referencia del pedido" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__points +msgid "Points" +msgstr "Puntos" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__points_cost +msgid "Points Cost" +msgstr "Coste por puntos." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Promotions" +msgstr "Promociones" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_ids +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_id +msgid "Reward" +msgstr "Recompensa" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__reward_amount +msgid "Reward Amount" +msgstr "Montante de la recompensa" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "Reward Identifier Code" +msgstr "Código de identificación de la recompensa" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "Reward Products" +msgstr "Productos de recompensa" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_coupon_wizard +msgid "Sale Loyalty - Apply Coupon Wizard" +msgstr "Lealtad de venta - Asistente para aplicar cupón" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_reward_wizard +msgid "Sale Loyalty - Reward Selection Wizard" +msgstr "Lealtad de venta - Asistente de selección de recompensas" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_coupon_points +msgid "" +"Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon" +msgstr "" +"Puntos de cupón de orden de venta: realiza un seguimiento de cómo una orden " +"de venta afecta un cupón" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__sale_ok +msgid "Sales" +msgstr "Ventas" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order +msgid "Sales Order" +msgstr "Orden de venta" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_line +msgid "Sales Order Line" +msgstr "Línea de orden de venta" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_product_id +msgid "Selected Product" +msgstr "Producto Seleccionado" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_reward_id +msgid "Selected Reward" +msgstr "Recompensa seleccionada" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "TEMPORARY DISCOUNT LINE" +msgstr "LÍNEA DE DESCUENTO TEMPORAL" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "" +"Technical field used to link multiple reward lines from the same reward " +"together." +msgstr "" +"Campo técnico que se usa para vincular varias líneas de recompensa en una " +"sola recompensa" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon can only be claimed on future orders." +msgstr "El cupón solo se puede reclamar en pedidos futuros." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon does not have enough points for the selected reward." +msgstr "El cupón no tiene suficientes puntos para la recompensa seleccionada." + +#. module: sale_loyalty +#: model:ir.model.constraint,message:sale_loyalty.constraint_sale_order_coupon_points_order_coupon_unique +msgid "The coupon points entry already exists." +msgstr "La entrada de puntos de cupón ya existe." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The program is not available for this order." +msgstr "El programa no está disponible para este pedido." + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_loyalty_card__order_id +msgid "The sales order from which coupon is generated" +msgstr "La orden de venta a partir de la cual se genera el cupón" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "There is nothing to discount" +msgstr "No hay nada que descontar" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "These are the products that can be claimed with this rule." +msgstr "Estos son los productos que se pueden reclamar con esta regla." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is expired (%s)." +msgstr "Este código ha caducado (%s)." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is invalid (%s)." +msgstr "Este código no es válido (%s)." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon has already been used." +msgstr "Este cupón ya ha sido utilizado." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon is expired." +msgstr "Este cupón está vencido." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is already applied to this order." +msgstr "Este programa ya está aplicado a este pedido." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is not available for public users." +msgstr "Este programa no está disponible para usuarios públicos." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program requires a code to be applied." +msgstr "Este programa requiere un código para ser aplicado." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This promo code is already applied." +msgstr "Este código de promoción ya está aplicado." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Update current promotional lines and select new rewards if applicable." +msgstr "" +"Actualice las líneas promocionales actuales y seleccione nuevas recompensas " +"si corresponde." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "You don't have the required product quantities on your sales order." +msgstr "No tiene las cantidades de productos requeridas en su orden de venta." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "" +"You will find below your gift cards code. An email has been sent with it. " +"You can use it starting right now." +msgstr "" +"A continuación encontrará su código de tarjeta de regalo. Se envió un correo" +" electrónico con él. Puede utilizarlo ahora mismo." diff --git a/i18n/es_419.po b/i18n/es_419.po new file mode 100644 index 0000000..21fdc2b --- /dev/null +++ b/i18n/es_419.po @@ -0,0 +1,516 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_loyalty +# +# Translators: +# Wil Odoo, 2023 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-26 21:55+0000\n" +"PO-Revision-Date: 2023-10-26 23:09+0000\n" +"Last-Translator: Wil Odoo, 2023\n" +"Language-Team: Spanish (Latin America) (https://app.transifex.com/odoo/teams/41243/es_419/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es_419\n" +"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid " - On product with the following taxes: %(taxes)s" +msgstr "- En el producto con los siguientes impuestos: %(taxes)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid " Copy" +msgstr " Copiar" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "A better global discount is already applied." +msgstr "Ya se aplicó un mejor descuento global." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"A minimum of %(amount)s %(currency)s should be purchased to get the reward" +msgstr "" +"Se debe comprar un mínimo de %(amount)s%(currency)s para obtener la " +"recompensa" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Apply" +msgstr "Aplicar" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_reward_wizard_action +msgid "Available Rewards" +msgstr "Recompensas disponibles" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose a product:" +msgstr "Elija un producto:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose your reward:" +msgstr "Elija su recompensa:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Code:" +msgstr "Código:" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__coupon_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__coupon_id +msgid "Coupon" +msgstr "Cupón" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__coupon_code +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Coupon Code" +msgstr "Código de cupón" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__coupon_point_ids +msgid "Coupon Point" +msgstr "Punto de cupón" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "Coupon not found while trying to add the following reward: %s" +msgstr "" +"No se encontró el cupón al intentar agregar la siguiente recompensa: %s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Coupons & Loyalty" +msgstr "Cupones y lealtad" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_date +msgid "Created on" +msgstr "Creado el" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Discard" +msgstr "Descartar" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_discount_loyalty_type_config +msgid "Discount & Loyalty" +msgstr "Descuento y lealtad" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Discount: %(desc)s%(tax_str)s" +msgstr "Descuento: %(desc)s%(tax_str)s" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__display_name +msgid "Display Name" +msgstr "Nombre en pantalla" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_coupon_wizard_action +msgid "Enter Promotion or Coupon Code" +msgstr "Introduzca el código de promoción o cupón" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Expired Date:" +msgstr "Fecha de expiración:" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Free Product - %(product)s" +msgstr "Producto gratis - %(product)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift #" +msgstr "Regalo #" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift Card Code" +msgstr "Código de la tarjeta de regalo" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_gift_ewallet_type_config +msgid "Gift cards & eWallet" +msgstr "Tarjetas de regalo y monedero electrónico" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__points_cost +msgid "How much point this reward costs on the loyalty card." +msgstr "Cuántos puntos cuesta esta recompensa en la tarjeta de lealtad." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__id +msgid "ID" +msgstr "ID" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Invalid product to claim." +msgstr "Invalidar producto para reclamar." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_coupon_wizard.py:0 +#, python-format +msgid "Invalid sales order." +msgstr "Invalidar órdenes de venta." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__is_reward_line +msgid "Is a program reward line" +msgstr "Es una línea de recompensa del programa" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_uid +msgid "Last Updated by" +msgstr "Última actualización por" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_date +msgid "Last Updated on" +msgstr "Última actualización el" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_card +msgid "Loyalty Coupon" +msgstr "Cupón de lealtad" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_program +msgid "Loyalty Program" +msgstr "Programa de lealtad" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_reward +msgid "Loyalty Reward" +msgstr "Recompensa de lealtad" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__applied_coupon_ids +msgid "Manually Applied Coupons" +msgstr "Cupones aplicados manualmente" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__code_enabled_rule_ids +msgid "Manually Triggered Rules" +msgstr "Reglas activadas manualmete" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__multi_product_reward +msgid "Multi Product" +msgstr "Productos múltiples" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"No card found for this loyalty program and no points will be given with this" +" order." +msgstr "" +"No se encontró tarjeta para este programa de lealtad y no se le darán puntos" +" para esta orden." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "No reward selected." +msgstr "No se ha seleccionado ninguna recompensa." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "No rewards available for this customer!" +msgstr "No hay recompensas disponibles para este cliente" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "One or more rewards on the sale order is invalid. Please check them." +msgstr "Una o más recompensas en esta orden de venta no es válida. Revíselas." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__order_id +msgid "Order" +msgstr "Orden" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__order_count +msgid "Order Count" +msgstr "Número de órdenes" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_card__order_id +msgid "Order Reference" +msgstr "Referencia de la orden" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__points +msgid "Points" +msgstr "Puntos" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__points_cost +msgid "Points Cost" +msgstr "Costo en puntos" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Promotions" +msgstr "Promociones" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_ids +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_id +msgid "Reward" +msgstr "Recompensa" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__reward_amount +msgid "Reward Amount" +msgstr "Valor de la recompensa" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "Reward Identifier Code" +msgstr "Código de identificación de la recompensa" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "Reward Products" +msgstr "Productos de recompensa" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_coupon_wizard +msgid "Sale Loyalty - Apply Coupon Wizard" +msgstr "Lealtad de venta - Asistente para aplicar cupón" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_reward_wizard +msgid "Sale Loyalty - Reward Selection Wizard" +msgstr "Lealtad de venta - Asistente de selección de recompensa" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_coupon_points +msgid "" +"Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon" +msgstr "" +"Puntos de cupón de la orden de venta - Rastrea cómo una orden de venta " +"impacta un cupón" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__sale_ok +msgid "Sales" +msgstr "Ventas" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order +msgid "Sales Order" +msgstr "Orden de venta" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_line +msgid "Sales Order Line" +msgstr "Línea de la orden de venta" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_product_id +msgid "Selected Product" +msgstr "Producto seleccionado" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_reward_id +msgid "Selected Reward" +msgstr "Recompensa seleccionada" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "TEMPORARY DISCOUNT LINE" +msgstr "LÍNEA DE DESCUENTO TEMPORAL" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "" +"Technical field used to link multiple reward lines from the same reward " +"together." +msgstr "" +"Campo técnico que se usa para vincular varias líneas de recompensa en una " +"sola recompensa" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon can only be claimed on future orders." +msgstr "El cupón solo se puede reclamar en órdenes futuras." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon does not have enough points for the selected reward." +msgstr "El cupón no tiene puntos suficientes para la recompensa seleccionada." + +#. module: sale_loyalty +#: model:ir.model.constraint,message:sale_loyalty.constraint_sale_order_coupon_points_order_coupon_unique +msgid "The coupon points entry already exists." +msgstr "La entrada de puntos de cupón ya existe." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The program is not available for this order." +msgstr "El programa no está disponible para esta orden." + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_loyalty_card__order_id +msgid "The sales order from which coupon is generated" +msgstr "La orden de venta a partir de la cual se genera el cupón" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "There is nothing to discount" +msgstr "No hay nada para descontar" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "These are the products that can be claimed with this rule." +msgstr "Estos son los productos que se pueden reclamar con esta regla." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is expired (%s)." +msgstr "Este código ya venció (%s)." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is invalid (%s)." +msgstr "Este código no es válido (%s)." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon has already been used." +msgstr "Este cupón ya se usó." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon is expired." +msgstr "Este cupón ya venció." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is already applied to this order." +msgstr "Este programa ya se aplicó a esta orden." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is not available for public users." +msgstr "Este programa no está disponible para usuarios públicos." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program requires a code to be applied." +msgstr "Se requiere de un código para aplicar este programa." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This promo code is already applied." +msgstr "Ya se aplicó el código de promoción." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Update current promotional lines and select new rewards if applicable." +msgstr "" +"Actualice las líneas de promoción actuales y seleccione nuevas recompensas " +"si aplica." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "You don't have the required product quantities on your sales order." +msgstr "No tiene las cantidades requeridas del producto en la orden de venta." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "" +"You will find below your gift cards code. An email has been sent with it. " +"You can use it starting right now." +msgstr "" +"A continuación encontrará su código de tarjeta de regalo. También se le " +"envió por correo electrónico. Ya lo puede usar." diff --git a/i18n/et.po b/i18n/et.po new file mode 100644 index 0000000..13509e7 --- /dev/null +++ b/i18n/et.po @@ -0,0 +1,522 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_loyalty +# +# Translators: +# Piia Paurson , 2023 +# Martin Trigaux, 2023 +# Maidu Targama , 2023 +# Patrick-Jordan Kiudorv, 2023 +# JanaAvalah, 2023 +# Triine Aavik , 2023 +# Rivo Zängov , 2023 +# Eneli Õigus , 2023 +# Algo Kärp , 2023 +# Leaanika Randmets, 2023 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-26 21:55+0000\n" +"PO-Revision-Date: 2023-10-26 23:09+0000\n" +"Last-Translator: Leaanika Randmets, 2023\n" +"Language-Team: Estonian (https://app.transifex.com/odoo/teams/41243/et/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: et\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid " - On product with the following taxes: %(taxes)s" +msgstr "- Tootel, millel on järgmised maksud: %(taxes)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid " Copy" +msgstr " Kopeeri" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "A better global discount is already applied." +msgstr "Parem globaalne allahindlus on juba rakendatud." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"A minimum of %(amount)s %(currency)s should be purchased to get the reward" +msgstr "" +"Ost peab olema minimaalselt summas %(amount)s %(currency)s soodustuse " +"saamiseks" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Apply" +msgstr "Kinnita" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_reward_wizard_action +msgid "Available Rewards" +msgstr "Saadaval preemiad" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose a product:" +msgstr "Vali toode:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose your reward:" +msgstr "Vali preemia:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Code:" +msgstr "Kood:" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__coupon_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__coupon_id +msgid "Coupon" +msgstr "Sooduskupong" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__coupon_code +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Coupon Code" +msgstr "Kupongikood" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__coupon_point_ids +msgid "Coupon Point" +msgstr "Kupongi punkt" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "Coupon not found while trying to add the following reward: %s" +msgstr "Järgmise preemia lisamise ajal ei leitud kupongi: %s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Coupons & Loyalty" +msgstr "Kupongid ja lojaalsusprogramm" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_uid +msgid "Created by" +msgstr "Loodud (kelle poolt?)" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_date +msgid "Created on" +msgstr "Loodud" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Discard" +msgstr "Loobu" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_discount_loyalty_type_config +msgid "Discount & Loyalty" +msgstr "Allahindlus ja lojaalsusprogramm" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Discount: %(desc)s%(tax_str)s" +msgstr "Allahindlus: %(desc)s%(tax_str)s" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__display_name +msgid "Display Name" +msgstr "Kuvatav nimi" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_coupon_wizard_action +msgid "Enter Promotion or Coupon Code" +msgstr "Sisesta kampaania või sooduskupongi kood" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Expired Date:" +msgstr "Aegumise kuupäev" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Free Product - %(product)s" +msgstr "Tasuta toode - %(product)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift #" +msgstr "Kingitus #" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift Card Code" +msgstr "Kinkekaardi kood" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_gift_ewallet_type_config +msgid "Gift cards & eWallet" +msgstr "Kinkekaardid ja eWallet" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__points_cost +msgid "How much point this reward costs on the loyalty card." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__id +msgid "ID" +msgstr "ID" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Invalid product to claim." +msgstr "Kehtetu tooode" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_coupon_wizard.py:0 +#, python-format +msgid "Invalid sales order." +msgstr "Kehtetu müügitellimus" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__is_reward_line +msgid "Is a program reward line" +msgstr "Programmi preemiarida" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_uid +msgid "Last Updated by" +msgstr "Viimati uuendatud" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_date +msgid "Last Updated on" +msgstr "Viimati uuendatud" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_card +msgid "Loyalty Coupon" +msgstr "Lojaalsuskupong" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_program +msgid "Loyalty Program" +msgstr "Lojaalsusprogramm" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_reward +msgid "Loyalty Reward" +msgstr "Lojaalsustasu" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__applied_coupon_ids +msgid "Manually Applied Coupons" +msgstr "Käsitsi rakenduvad kupongid" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__code_enabled_rule_ids +msgid "Manually Triggered Rules" +msgstr "Käsitsi käivitatavad reeglid" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__multi_product_reward +msgid "Multi Product" +msgstr "Multi Product" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"No card found for this loyalty program and no points will be given with this" +" order." +msgstr "" +"Selle lojaalsusprogrammi jaoks kaarti ei leitud ja selle tellimusega ei anta" +" punkte." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "No reward selected." +msgstr "Preemia valimata" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "No rewards available for this customer!" +msgstr "Sellele kliendile ei ole preemiaid saadaval!" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "One or more rewards on the sale order is invalid. Please check them." +msgstr "" +"Üks või mitu müügitellimusel olevat preemiat on kehtetu(d). Palun " +"kontrollige." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__order_id +msgid "Order" +msgstr "Ost" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__order_count +msgid "Order Count" +msgstr "Tellimuste arv" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_card__order_id +msgid "Order Reference" +msgstr "Tellimuse viide" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__points +msgid "Points" +msgstr "Punkti" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__points_cost +msgid "Points Cost" +msgstr "Punktide hind" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Promotions" +msgstr "Kampaaniate kontroll" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_ids +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_id +msgid "Reward" +msgstr "Preemia" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__reward_amount +msgid "Reward Amount" +msgstr "Preemia summa" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "Reward Identifier Code" +msgstr "Preemia tunnuskood" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "Reward Products" +msgstr "Preemiatooted" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_coupon_wizard +msgid "Sale Loyalty - Apply Coupon Wizard" +msgstr "Sale Loyalty - Apply Coupon Wizard" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_reward_wizard +msgid "Sale Loyalty - Reward Selection Wizard" +msgstr "Sale Loyalty - Reward Selection Wizard" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_coupon_points +msgid "" +"Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon" +msgstr "" +"Müügitellimuse kupongipunktid – jälgib, kuidas müügitellimus kupongi mõjutab" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__sale_ok +msgid "Sales" +msgstr "Müük" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order +msgid "Sales Order" +msgstr "Müügitellimus" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_line +msgid "Sales Order Line" +msgstr "Müügitellimuse rida" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_product_id +msgid "Selected Product" +msgstr "Valitud toode" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_reward_id +msgid "Selected Reward" +msgstr "Valitud preemia" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "TEMPORARY DISCOUNT LINE" +msgstr "AJUTINE ALLAHINDLUSE RIDA" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "" +"Technical field used to link multiple reward lines from the same reward " +"together." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon can only be claimed on future orders." +msgstr "Kupongi saate kasutada tulevastel tellimustel." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon does not have enough points for the selected reward." +msgstr "Kupongil ei ole valitud preemia jaoks piisavalt punkte." + +#. module: sale_loyalty +#: model:ir.model.constraint,message:sale_loyalty.constraint_sale_order_coupon_points_order_coupon_unique +msgid "The coupon points entry already exists." +msgstr "Kupongipunktide kirje on juba olemas." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The program is not available for this order." +msgstr "Programm ei ole saadaval selle tellimusega." + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_loyalty_card__order_id +msgid "The sales order from which coupon is generated" +msgstr "Müügitellimus, millest kupong luuakse" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "There is nothing to discount" +msgstr "Pole millelegi allahindlust teha" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "These are the products that can be claimed with this rule." +msgstr "Need on tooted, mille saate selle reegliga." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is expired (%s)." +msgstr "Kood on aegunud (%s)" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is invalid (%s)." +msgstr "Kood on kehtetu (%s)" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon has already been used." +msgstr "Kupongi on juba kasutatud." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon is expired." +msgstr "Kupong on aegunud." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is already applied to this order." +msgstr "See programm on sellele tellimusele juba rakendatud." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is not available for public users." +msgstr "See programm ei ole saadaval avalikele kasutajatele." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program requires a code to be applied." +msgstr "See programm nõuab koodi lisamist." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This promo code is already applied." +msgstr "See sooduskood on juba lisatud." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Update current promotional lines and select new rewards if applicable." +msgstr "" +"Värskendage praeguseid soodustuse ridu ja valige vajadusel uued preemiad." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "You don't have the required product quantities on your sales order." +msgstr "Müügitellimsel ei ole nõutud kogus toodet." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "" +"You will find below your gift cards code. An email has been sent with it. " +"You can use it starting right now." +msgstr "" +"Alt leiate oma kinkekaardi koodi. Koodiga e-kiri on saadetud. Koodi saate " +"kohe kasutada." diff --git a/i18n/fa.po b/i18n/fa.po new file mode 100644 index 0000000..2936e14 --- /dev/null +++ b/i18n/fa.po @@ -0,0 +1,509 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_loyalty +# +# Translators: +# Yousef Shadmanesh , 2023 +# Hanna Kheradroosta, 2023 +# Hamid Darabi, 2023 +# Hamed Mohammadi , 2023 +# Martin Trigaux, 2023 +# odooers ir, 2023 +# Abbas Ebadian, 2024 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-26 21:55+0000\n" +"PO-Revision-Date: 2023-10-26 23:09+0000\n" +"Last-Translator: Abbas Ebadian, 2024\n" +"Language-Team: Persian (https://app.transifex.com/odoo/teams/41243/fa/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: fa\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid " - On product with the following taxes: %(taxes)s" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid " Copy" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "A better global discount is already applied." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"A minimum of %(amount)s %(currency)s should be purchased to get the reward" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Apply" +msgstr "اعمال" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_reward_wizard_action +msgid "Available Rewards" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose a product:" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose your reward:" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Code:" +msgstr "کد:" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__coupon_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__coupon_id +msgid "Coupon" +msgstr "کوپن" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__coupon_code +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Coupon Code" +msgstr "کد کوپن" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__coupon_point_ids +msgid "Coupon Point" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "Coupon not found while trying to add the following reward: %s" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Coupons & Loyalty" +msgstr "کوپن ها و وفاداری" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_uid +msgid "Created by" +msgstr "ایجاد شده توسط" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_date +msgid "Created on" +msgstr "ایجادشده در" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Discard" +msgstr "رها کردن" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_discount_loyalty_type_config +msgid "Discount & Loyalty" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Discount: %(desc)s%(tax_str)s" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__display_name +msgid "Display Name" +msgstr "نام نمایش داده شده" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_coupon_wizard_action +msgid "Enter Promotion or Coupon Code" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Expired Date:" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Free Product - %(product)s" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift #" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift Card Code" +msgstr "" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_gift_ewallet_type_config +msgid "Gift cards & eWallet" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__points_cost +msgid "How much point this reward costs on the loyalty card." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__id +msgid "ID" +msgstr "شناسه" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Invalid product to claim." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_coupon_wizard.py:0 +#, python-format +msgid "Invalid sales order." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__is_reward_line +msgid "Is a program reward line" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_uid +msgid "Last Updated by" +msgstr "آخرین بروز رسانی توسط" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_date +msgid "Last Updated on" +msgstr "آخرین بروز رسانی در" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_card +msgid "Loyalty Coupon" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_program +msgid "Loyalty Program" +msgstr "برنامه وفاداری" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_reward +msgid "Loyalty Reward" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__applied_coupon_ids +msgid "Manually Applied Coupons" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__code_enabled_rule_ids +msgid "Manually Triggered Rules" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__multi_product_reward +msgid "Multi Product" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"No card found for this loyalty program and no points will be given with this" +" order." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "No reward selected." +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "No rewards available for this customer!" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "One or more rewards on the sale order is invalid. Please check them." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__order_id +msgid "Order" +msgstr "سفارش" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__order_count +msgid "Order Count" +msgstr "تعداد سفارش" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_card__order_id +msgid "Order Reference" +msgstr "مرجع سفارش" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__points +msgid "Points" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__points_cost +msgid "Points Cost" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Promotions" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_ids +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_id +msgid "Reward" +msgstr "پاداش" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__reward_amount +msgid "Reward Amount" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "Reward Identifier Code" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "Reward Products" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_coupon_wizard +msgid "Sale Loyalty - Apply Coupon Wizard" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_reward_wizard +msgid "Sale Loyalty - Reward Selection Wizard" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_coupon_points +msgid "" +"Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__sale_ok +msgid "Sales" +msgstr "فروش" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order +msgid "Sales Order" +msgstr "سفارش فروش" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_line +msgid "Sales Order Line" +msgstr "سطر سفارش‌فروش" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_product_id +msgid "Selected Product" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_reward_id +msgid "Selected Reward" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "TEMPORARY DISCOUNT LINE" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "" +"Technical field used to link multiple reward lines from the same reward " +"together." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon can only be claimed on future orders." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon does not have enough points for the selected reward." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.constraint,message:sale_loyalty.constraint_sale_order_coupon_points_order_coupon_unique +msgid "The coupon points entry already exists." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The program is not available for this order." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_loyalty_card__order_id +msgid "The sales order from which coupon is generated" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "There is nothing to discount" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "These are the products that can be claimed with this rule." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is expired (%s)." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is invalid (%s)." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon has already been used." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon is expired." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is already applied to this order." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is not available for public users." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program requires a code to be applied." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This promo code is already applied." +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Update current promotional lines and select new rewards if applicable." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "You don't have the required product quantities on your sales order." +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "" +"You will find below your gift cards code. An email has been sent with it. " +"You can use it starting right now." +msgstr "" diff --git a/i18n/fi.po b/i18n/fi.po new file mode 100644 index 0000000..97319ba --- /dev/null +++ b/i18n/fi.po @@ -0,0 +1,518 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_loyalty +# +# Translators: +# Jarmo Kortetjärvi , 2023 +# Mikko Salmela , 2023 +# Tuomas Lyyra , 2023 +# Martin Trigaux, 2023 +# Topi Aura , 2023 +# Kari Lindgren , 2023 +# Tuomo Aura , 2023 +# Kim Asplund , 2023 +# Ossi Mantylahti , 2023 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-26 21:55+0000\n" +"PO-Revision-Date: 2023-10-26 23:09+0000\n" +"Last-Translator: Ossi Mantylahti , 2023\n" +"Language-Team: Finnish (https://app.transifex.com/odoo/teams/41243/fi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: fi\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid " - On product with the following taxes: %(taxes)s" +msgstr " - Tuotteessa, jossa on seuraavat verot: %(taxes)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid " Copy" +msgstr " Kopioi" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "A better global discount is already applied." +msgstr "Parempaa yleistäalennusta on jo sovellettu." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"A minimum of %(amount)s %(currency)s should be purchased to get the reward" +msgstr "Vähintään %(amount)s %(currency)s on ostettava saadakseen palkkion" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Apply" +msgstr "Vahvista" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_reward_wizard_action +msgid "Available Rewards" +msgstr "Saatavilla olevat palkinnot" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose a product:" +msgstr "Valitse tuote:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose your reward:" +msgstr "Valitse palkintosi:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Code:" +msgstr "Koodi:" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__coupon_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__coupon_id +msgid "Coupon" +msgstr "Kuponki" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__coupon_code +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Coupon Code" +msgstr "Alennuskoodi" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__coupon_point_ids +msgid "Coupon Point" +msgstr "Kuponkipiste" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "Coupon not found while trying to add the following reward: %s" +msgstr "Kuponkia ei löydy, kun yrität lisätä seuraavan palkkion: %s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Coupons & Loyalty" +msgstr "Kupongit ja kanta-asiakasohjelmat" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_uid +msgid "Created by" +msgstr "Luonut" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_date +msgid "Created on" +msgstr "Luotu" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Discard" +msgstr "Hylkää" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_discount_loyalty_type_config +msgid "Discount & Loyalty" +msgstr "Alennus ja kanta-asiakkuus" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Discount: %(desc)s%(tax_str)s" +msgstr "Alennus: %(desc)s%(tax_str)s" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__display_name +msgid "Display Name" +msgstr "Näyttönimi" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_coupon_wizard_action +msgid "Enter Promotion or Coupon Code" +msgstr "Anna tarjous- tai kuponkikoodi" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Expired Date:" +msgstr "Vanhentunut päivämäärä:" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Free Product - %(product)s" +msgstr "Ilmainen tuote - %(product)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift #" +msgstr "Lahja #" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift Card Code" +msgstr "Lahjakortin Koodi" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_gift_ewallet_type_config +msgid "Gift cards & eWallet" +msgstr "Lahjakortit & eWallet" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__points_cost +msgid "How much point this reward costs on the loyalty card." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__id +msgid "ID" +msgstr "ID" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Invalid product to claim." +msgstr "Virheellinen tuote." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_coupon_wizard.py:0 +#, python-format +msgid "Invalid sales order." +msgstr "Virheellinen myyntitilaus." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__is_reward_line +msgid "Is a program reward line" +msgstr "Onko ohjelman palkkiorivi" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_uid +msgid "Last Updated by" +msgstr "Viimeksi päivittänyt" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_date +msgid "Last Updated on" +msgstr "Viimeksi päivitetty" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_card +msgid "Loyalty Coupon" +msgstr "Kanta-asiakkuuden kuponki" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_program +msgid "Loyalty Program" +msgstr "Kanta-asiakkuus" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_reward +msgid "Loyalty Reward" +msgstr "Kanta-asiakkaan palkkio" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__applied_coupon_ids +msgid "Manually Applied Coupons" +msgstr "Manuaalisesti sovelletut kupongit" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__code_enabled_rule_ids +msgid "Manually Triggered Rules" +msgstr "Manuaalisesti käynnistettävät säännöt" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__multi_product_reward +msgid "Multi Product" +msgstr "Monituote" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"No card found for this loyalty program and no points will be given with this" +" order." +msgstr "" +"Tämän kanta-asiakasohjelman korttia ei löytynyt, eikä tämän tilauksen " +"yhteydessä anneta pisteitä." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "No reward selected." +msgstr "Ei valittua palkkiota." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "No rewards available for this customer!" +msgstr "Tälle asiakkaalle ei ole saatavilla palkintoja!" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "One or more rewards on the sale order is invalid. Please check them." +msgstr "Yksi tai useampi myyntitilauksen palkinto on mitätön. Tarkista ne." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__order_id +msgid "Order" +msgstr "Tilaus" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__order_count +msgid "Order Count" +msgstr "Tilausmäärä" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_card__order_id +msgid "Order Reference" +msgstr "Tilauksen viite" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__points +msgid "Points" +msgstr "Pisteet" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__points_cost +msgid "Points Cost" +msgstr "Pisteen kustannukset" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Promotions" +msgstr "Kampanjat" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_ids +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_id +msgid "Reward" +msgstr "Palkinto" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__reward_amount +msgid "Reward Amount" +msgstr "Palkkion määrä" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "Reward Identifier Code" +msgstr "Palkkion tunnuskoodi" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "Reward Products" +msgstr "Palkintotuotteet" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_coupon_wizard +msgid "Sale Loyalty - Apply Coupon Wizard" +msgstr "Myynnin kanta-asiakkuus - Kupongin käyttämisen ohjattu toiminto" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_reward_wizard +msgid "Sale Loyalty - Reward Selection Wizard" +msgstr "Myynnin kanta-asiakkuus - Palkitsemisen valinnan ohjattu toiminto" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_coupon_points +msgid "" +"Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon" +msgstr "" +"Myyntitilauksen kuponkipisteet - Seuraa, miten myyntitilaus vaikuttaa " +"kuponkiin" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__sale_ok +msgid "Sales" +msgstr "Myynti" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order +msgid "Sales Order" +msgstr "Myyntitilaus" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_line +msgid "Sales Order Line" +msgstr "Myyntitilausrivi" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_product_id +msgid "Selected Product" +msgstr "Valittu tuote" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_reward_id +msgid "Selected Reward" +msgstr "Valittu palkinto" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "TEMPORARY DISCOUNT LINE" +msgstr "TILAPÄINEN ALENNUSRIVI" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "" +"Technical field used to link multiple reward lines from the same reward " +"together." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon can only be claimed on future orders." +msgstr "Kupongin voi lunastaa vain tulevista tilauksista." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon does not have enough points for the selected reward." +msgstr "Kupongilla ei ole tarpeeksi pisteitä valittua palkintoa varten." + +#. module: sale_loyalty +#: model:ir.model.constraint,message:sale_loyalty.constraint_sale_order_coupon_points_order_coupon_unique +msgid "The coupon points entry already exists." +msgstr "Kuponkipisteiden merkintä on jo olemassa." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The program is not available for this order." +msgstr "Ohjelma ei ole käytettävissä tässä tilauksessa." + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_loyalty_card__order_id +msgid "The sales order from which coupon is generated" +msgstr "Myyntitilaus, josta kuponki luodaan" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "There is nothing to discount" +msgstr "Ei ole alennettavaa" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "These are the products that can be claimed with this rule." +msgstr "Näitä tuotteita voidaan vaatia tämän säännön nojalla." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is expired (%s)." +msgstr "Tämä koodi on vanhentunut (%s)." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is invalid (%s)." +msgstr "Tämä koodi on virheellinen (%s)." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon has already been used." +msgstr "Tämä kuponki on jo käytetty." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon is expired." +msgstr "Tämä kuponki on vanhentunut." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is already applied to this order." +msgstr "Tätä ohjelmaa on jo sovellettu tähän tilaukseen." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is not available for public users." +msgstr "Tämä ohjelma ei ole julkisten käyttäjien käytettävissä." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program requires a code to be applied." +msgstr "Tämä ohjelma vaatii koodin, jotta sitä voidaan soveltaa." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This promo code is already applied." +msgstr "Tätä tarjouskoodia on jo sovellettu." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Update current promotional lines and select new rewards if applicable." +msgstr "" +"Päivitä nykyiset kampanjalinjat ja valitse tarvittaessa uusia palkkioita." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "You don't have the required product quantities on your sales order." +msgstr "Myyntitilauksessasi ei ole vaadittuja tuotemääriä." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "" +"You will find below your gift cards code. An email has been sent with it. " +"You can use it starting right now." +msgstr "" +"Alta löydät lahjakorttisi koodin. Sähköposti on lähetetty joka sisältää " +"koodin. Voit käyttää sitä heti." diff --git a/i18n/fr.po b/i18n/fr.po new file mode 100644 index 0000000..235522d --- /dev/null +++ b/i18n/fr.po @@ -0,0 +1,523 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_loyalty +# +# Translators: +# Wil Odoo, 2023 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-26 21:55+0000\n" +"PO-Revision-Date: 2023-10-26 23:09+0000\n" +"Last-Translator: Wil Odoo, 2023\n" +"Language-Team: French (https://app.transifex.com/odoo/teams/41243/fr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: fr\n" +"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid " - On product with the following taxes: %(taxes)s" +msgstr "- Sur un produit avec les taxes suivantes : %(taxes)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid " Copy" +msgstr " Copier" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "A better global discount is already applied." +msgstr "Une meilleure remise globale est déjà appliquée." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"A minimum of %(amount)s %(currency)s should be purchased to get the reward" +msgstr "" +"Un montant minimal de %(amount)s %(currency)s doit être commandé pour " +"bénéficier de la remise" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Apply" +msgstr "Appliquer" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_reward_wizard_action +msgid "Available Rewards" +msgstr "Récompenses disponibles" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose a product:" +msgstr "Choisir un produit :" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose your reward:" +msgstr "Choisir votre récompense :" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Code:" +msgstr "Code :" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__coupon_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__coupon_id +msgid "Coupon" +msgstr "Bon de réduction" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__coupon_code +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Coupon Code" +msgstr "Code promotionnel" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__coupon_point_ids +msgid "Coupon Point" +msgstr "Point de réduction" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "Coupon not found while trying to add the following reward: %s" +msgstr "" +"Bon de réduction non trouvé lors de la tentative d'ajout de la récompense " +"suivante : %s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Coupons & Loyalty" +msgstr "Bons de réduction & Fidélité" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_uid +msgid "Created by" +msgstr "Créé par" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_date +msgid "Created on" +msgstr "Créé le" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Discard" +msgstr "Ignorer" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_discount_loyalty_type_config +msgid "Discount & Loyalty" +msgstr "Remise & Fidélité" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Discount: %(desc)s%(tax_str)s" +msgstr "Remise : %(desc)s%(tax_str)s" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__display_name +msgid "Display Name" +msgstr "Nom d'affichage" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_coupon_wizard_action +msgid "Enter Promotion or Coupon Code" +msgstr "Saisir le code de promotion ou de réduction" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Expired Date:" +msgstr "Date d'expiration :" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Free Product - %(product)s" +msgstr "Produit gratuit - %(product)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift #" +msgstr "Cadeau #" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift Card Code" +msgstr "Code carte-cadeau" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_gift_ewallet_type_config +msgid "Gift cards & eWallet" +msgstr "Cartes-cadeaux & e-wallet" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__points_cost +msgid "How much point this reward costs on the loyalty card." +msgstr "Combien de points cette récompense coûte sur la carte de fidélité." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__id +msgid "ID" +msgstr "ID" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Invalid product to claim." +msgstr "Produit invalide à réclamer." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_coupon_wizard.py:0 +#, python-format +msgid "Invalid sales order." +msgstr "Bon de commande invalide." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__is_reward_line +msgid "Is a program reward line" +msgstr "Est une ligne de récompense de programme" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_uid +msgid "Last Updated by" +msgstr "Mis à jour par" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_date +msgid "Last Updated on" +msgstr "Mis à jour le" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_card +msgid "Loyalty Coupon" +msgstr "Bon de fidélité" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_program +msgid "Loyalty Program" +msgstr "Programme de fidelité" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_reward +msgid "Loyalty Reward" +msgstr "Récompense de fidélité" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__applied_coupon_ids +msgid "Manually Applied Coupons" +msgstr "Bons de réduction appliqués manuellement" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__code_enabled_rule_ids +msgid "Manually Triggered Rules" +msgstr "Règles déclenchées manuellement" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__multi_product_reward +msgid "Multi Product" +msgstr "Produits multiples" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"No card found for this loyalty program and no points will be given with this" +" order." +msgstr "" +"Aucune carte trouvée pour ce programme de fidélité et aucun point ne sera " +"attribué avec cette commande." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "No reward selected." +msgstr "Aucune récompense sélectionnée." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "No rewards available for this customer!" +msgstr "Aucune récompense disponible pour ce client !" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "One or more rewards on the sale order is invalid. Please check them." +msgstr "" +"Une ou plusieurs récompenses sur le bon de commande ne sont pas valides. " +"Veuillez les vérifier." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__order_id +msgid "Order" +msgstr "Ordre" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__order_count +msgid "Order Count" +msgstr "Nombre de commandes" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_card__order_id +msgid "Order Reference" +msgstr "Référence de commande" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__points +msgid "Points" +msgstr "Points" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__points_cost +msgid "Points Cost" +msgstr "Coût des points" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Promotions" +msgstr "Promotions" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_ids +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_id +msgid "Reward" +msgstr "Récompense" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__reward_amount +msgid "Reward Amount" +msgstr "Montant de la récompense" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "Reward Identifier Code" +msgstr "Code d'identification de la récompense" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "Reward Products" +msgstr "Produits de récompense" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_coupon_wizard +msgid "Sale Loyalty - Apply Coupon Wizard" +msgstr "Vente Fidélité - Assistant d'application des bons de réduction" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_reward_wizard +msgid "Sale Loyalty - Reward Selection Wizard" +msgstr "Vente Fidélité - Assistant de sélection des récompenses" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_coupon_points +msgid "" +"Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon" +msgstr "" +"Points de réduction des bons de commande - Garde une trace de l'impact d'un " +"bon de commande sur un bon de réduction" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__sale_ok +msgid "Sales" +msgstr "Ventes" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order +msgid "Sales Order" +msgstr "Bon de commande" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_line +msgid "Sales Order Line" +msgstr "Ligne de commande" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_product_id +msgid "Selected Product" +msgstr "Produit sélectionné" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_reward_id +msgid "Selected Reward" +msgstr "Récompense sélectionnée" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "TEMPORARY DISCOUNT LINE" +msgstr "LIGNE DE REMISE TEMPORAIRE" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "" +"Technical field used to link multiple reward lines from the same reward " +"together." +msgstr "" +"Champ technique utilisé pour relier plusieurs lignes de récompense d'une " +"même récompense entre elles." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon can only be claimed on future orders." +msgstr "" +"Le bon de réduction ne peut être réclamé que sur les commandes futures." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon does not have enough points for the selected reward." +msgstr "" +"Le bon de réduction ne contient pas assez de points pour la récompense " +"sélectionnée." + +#. module: sale_loyalty +#: model:ir.model.constraint,message:sale_loyalty.constraint_sale_order_coupon_points_order_coupon_unique +msgid "The coupon points entry already exists." +msgstr "L'enregistrement des points de réduction existe déjà." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The program is not available for this order." +msgstr "Le programme n'est pas disponible pour cette commande." + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_loyalty_card__order_id +msgid "The sales order from which coupon is generated" +msgstr "Le bon de commande à partir duquel le bon de réduction est généré" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "There is nothing to discount" +msgstr "Il n'y a aucune remise à appliquer" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "These are the products that can be claimed with this rule." +msgstr "Ce sont les produits qui peuvent être réclamés avec cette règle." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is expired (%s)." +msgstr "Ce code est expiré (%s)." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is invalid (%s)." +msgstr "Ce code n'est pas valide (%s)." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon has already been used." +msgstr "Ce bon de réduction a déjà été utilisé." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon is expired." +msgstr "Ce bon de réduction est expiré." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is already applied to this order." +msgstr "Ce programme est déjà appliqué à cette commande." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is not available for public users." +msgstr "Ce programme n'est pas disponible pour les utilisateurs publics." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program requires a code to be applied." +msgstr "Ce programme nécessite l'application d'un code." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This promo code is already applied." +msgstr "Ce code promo est déjà appliqué." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Update current promotional lines and select new rewards if applicable." +msgstr "" +"Mettez à jour les lignes promotionnelles actuelles et sélectionnez de " +"nouvelles récompenses, le cas échéant." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "You don't have the required product quantities on your sales order." +msgstr "" +"Vous n'avez pas les quantités de produit requises sur votre bon de commande." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "" +"You will find below your gift cards code. An email has been sent with it. " +"You can use it starting right now." +msgstr "" +"Vous trouverez ci-dessous votre code de carte-cadeau. Il vous a également " +"été envoyé par email. Vous pouvez l'utiliser dès maintenant." diff --git a/i18n/he.po b/i18n/he.po new file mode 100644 index 0000000..d29e344 --- /dev/null +++ b/i18n/he.po @@ -0,0 +1,513 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_loyalty +# +# Translators: +# Lilach Gilliam , 2023 +# Martin Trigaux, 2023 +# NoaFarkash, 2023 +# שהאב חוסיין , 2023 +# ExcaliberX , 2023 +# Yihya Hugirat , 2023 +# Roy Sayag, 2023 +# ZVI BLONDER , 2023 +# Ha Ketem , 2023 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-26 21:55+0000\n" +"PO-Revision-Date: 2023-10-26 23:09+0000\n" +"Last-Translator: Ha Ketem , 2023\n" +"Language-Team: Hebrew (https://app.transifex.com/odoo/teams/41243/he/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: he\n" +"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\n" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid " - On product with the following taxes: %(taxes)s" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid " Copy" +msgstr "עותק" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "A better global discount is already applied." +msgstr "הנחה גלובלית טובה יותר כבר הוחלה" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"A minimum of %(amount)s %(currency)s should be purchased to get the reward" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Apply" +msgstr "החל" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_reward_wizard_action +msgid "Available Rewards" +msgstr "הטבות זמניות" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose a product:" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose your reward:" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Code:" +msgstr "קוד:" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__coupon_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__coupon_id +msgid "Coupon" +msgstr "קופון" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__coupon_code +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Coupon Code" +msgstr "קוד קופון" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__coupon_point_ids +msgid "Coupon Point" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "Coupon not found while trying to add the following reward: %s" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Coupons & Loyalty" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_uid +msgid "Created by" +msgstr "נוצר על-ידי" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_date +msgid "Created on" +msgstr "נוצר ב-" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Discard" +msgstr "בטל" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_discount_loyalty_type_config +msgid "Discount & Loyalty" +msgstr "הנחות ותכניות" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Discount: %(desc)s%(tax_str)s" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__display_name +msgid "Display Name" +msgstr "שם לתצוגה" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_coupon_wizard_action +msgid "Enter Promotion or Coupon Code" +msgstr "הזן קוד קידום מכירות או קוד קופון" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Expired Date:" +msgstr "תאריך תפוגה:" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Free Product - %(product)s" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift #" +msgstr "מתנה מספר " + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift Card Code" +msgstr "קוד כרטיס מתנה" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_gift_ewallet_type_config +msgid "Gift cards & eWallet" +msgstr "כרטיסי מתנה & eWallet" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__points_cost +msgid "How much point this reward costs on the loyalty card." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__id +msgid "ID" +msgstr "מזהה" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Invalid product to claim." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_coupon_wizard.py:0 +#, python-format +msgid "Invalid sales order." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__is_reward_line +msgid "Is a program reward line" +msgstr "שורת הטבת תוכנית" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_uid +msgid "Last Updated by" +msgstr "עודכן לאחרונה על-ידי" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_date +msgid "Last Updated on" +msgstr "עדכון אחרון ב" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_card +msgid "Loyalty Coupon" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_program +msgid "Loyalty Program" +msgstr "מועדון לקוחות" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_reward +msgid "Loyalty Reward" +msgstr "הטבת חברת מועדון" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__applied_coupon_ids +msgid "Manually Applied Coupons" +msgstr "קופונים ליישום ידני" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__code_enabled_rule_ids +msgid "Manually Triggered Rules" +msgstr "כללים המופעלים באופן ידני" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__multi_product_reward +msgid "Multi Product" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"No card found for this loyalty program and no points will be given with this" +" order." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "No reward selected." +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "No rewards available for this customer!" +msgstr "אין הטבות זמינות עבור לקוח זה" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "One or more rewards on the sale order is invalid. Please check them." +msgstr "הטבה אחת או יותר בהזמנה אינה תקינה, אנא בדוק את ההטבות" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__order_id +msgid "Order" +msgstr "הזמנה" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__order_count +msgid "Order Count" +msgstr "כמות הזמנות" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_card__order_id +msgid "Order Reference" +msgstr "מזהה הזמנה" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__points +msgid "Points" +msgstr "נקודות" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__points_cost +msgid "Points Cost" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Promotions" +msgstr "קידומי מכירות" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_ids +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_id +msgid "Reward" +msgstr "תגמול" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__reward_amount +msgid "Reward Amount" +msgstr "סכום הטבה" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "Reward Identifier Code" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "Reward Products" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_coupon_wizard +msgid "Sale Loyalty - Apply Coupon Wizard" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_reward_wizard +msgid "Sale Loyalty - Reward Selection Wizard" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_coupon_points +msgid "" +"Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__sale_ok +msgid "Sales" +msgstr "מכירות" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order +msgid "Sales Order" +msgstr "הזמנת לקוח" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_line +msgid "Sales Order Line" +msgstr "שורת הזמנת לקוח" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_product_id +msgid "Selected Product" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_reward_id +msgid "Selected Reward" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "TEMPORARY DISCOUNT LINE" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "" +"Technical field used to link multiple reward lines from the same reward " +"together." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon can only be claimed on future orders." +msgstr "הקופון יכול להתממש על הזמנות עתידיות" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon does not have enough points for the selected reward." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.constraint,message:sale_loyalty.constraint_sale_order_coupon_points_order_coupon_unique +msgid "The coupon points entry already exists." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The program is not available for this order." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_loyalty_card__order_id +msgid "The sales order from which coupon is generated" +msgstr "הזמנת הלקוח ממנה נוצר הקופון" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "There is nothing to discount" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "These are the products that can be claimed with this rule." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is expired (%s)." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is invalid (%s)." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon has already been used." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon is expired." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is already applied to this order." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is not available for public users." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program requires a code to be applied." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This promo code is already applied." +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Update current promotional lines and select new rewards if applicable." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "You don't have the required product quantities on your sales order." +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "" +"You will find below your gift cards code. An email has been sent with it. " +"You can use it starting right now." +msgstr "" +"למטה אפשר למצוא את קוד כרטיס המתנה. גם נשלך מייל עם הפרטים. אפשר להתחיל " +"להשתמש בכרטיס המתנה מ... עכשיו!" diff --git a/i18n/hu.po b/i18n/hu.po new file mode 100644 index 0000000..8a21fbe --- /dev/null +++ b/i18n/hu.po @@ -0,0 +1,511 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_loyalty +# +# Translators: +# Tamás Dombos, 2023 +# Ákos Nagy , 2023 +# gezza , 2023 +# Kovács Tibor , 2023 +# krnkris, 2023 +# Tamás Németh , 2023 +# Gergő Kertész , 2023 +# Krisztián Juhász , 2023 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-26 21:55+0000\n" +"PO-Revision-Date: 2023-10-26 23:09+0000\n" +"Last-Translator: Krisztián Juhász , 2023\n" +"Language-Team: Hungarian (https://app.transifex.com/odoo/teams/41243/hu/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: hu\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid " - On product with the following taxes: %(taxes)s" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid " Copy" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "A better global discount is already applied." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"A minimum of %(amount)s %(currency)s should be purchased to get the reward" +msgstr "" +"Legalább %(amount)s %(currency)s kell rendelni, hogy megkapd a jutalmad" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Apply" +msgstr "Alkalmaz" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_reward_wizard_action +msgid "Available Rewards" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose a product:" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose your reward:" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Code:" +msgstr "Kód:" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__coupon_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__coupon_id +msgid "Coupon" +msgstr "Kupon" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__coupon_code +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Coupon Code" +msgstr "Kupon kód" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__coupon_point_ids +msgid "Coupon Point" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "Coupon not found while trying to add the following reward: %s" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Coupons & Loyalty" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_uid +msgid "Created by" +msgstr "Létrehozta" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_date +msgid "Created on" +msgstr "Létrehozva" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Discard" +msgstr "Elvetés" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_discount_loyalty_type_config +msgid "Discount & Loyalty" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Discount: %(desc)s%(tax_str)s" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__display_name +msgid "Display Name" +msgstr "Megjelenített név" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_coupon_wizard_action +msgid "Enter Promotion or Coupon Code" +msgstr "Add meg a promóciós vagy kuponkódot" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Expired Date:" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Free Product - %(product)s" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift #" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift Card Code" +msgstr "" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_gift_ewallet_type_config +msgid "Gift cards & eWallet" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__points_cost +msgid "How much point this reward costs on the loyalty card." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__id +msgid "ID" +msgstr "Azonosító" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Invalid product to claim." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_coupon_wizard.py:0 +#, python-format +msgid "Invalid sales order." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__is_reward_line +msgid "Is a program reward line" +msgstr "Ez egy program jutalom sor" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_uid +msgid "Last Updated by" +msgstr "Frissítette" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_date +msgid "Last Updated on" +msgstr "Frissítve" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_card +msgid "Loyalty Coupon" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_program +msgid "Loyalty Program" +msgstr "Hűség program" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_reward +msgid "Loyalty Reward" +msgstr "Hűség jutalom" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__applied_coupon_ids +msgid "Manually Applied Coupons" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__code_enabled_rule_ids +msgid "Manually Triggered Rules" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__multi_product_reward +msgid "Multi Product" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"No card found for this loyalty program and no points will be given with this" +" order." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "No reward selected." +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "No rewards available for this customer!" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "One or more rewards on the sale order is invalid. Please check them." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__order_id +msgid "Order" +msgstr "Rendelés" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__order_count +msgid "Order Count" +msgstr "Rendelés száma" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_card__order_id +msgid "Order Reference" +msgstr "Rendeléshivatkozás" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__points +msgid "Points" +msgstr "Pontok" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__points_cost +msgid "Points Cost" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Promotions" +msgstr "Promóciók" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_ids +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_id +msgid "Reward" +msgstr "Jutalom" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__reward_amount +msgid "Reward Amount" +msgstr "Jutalom összege" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "Reward Identifier Code" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "Reward Products" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_coupon_wizard +msgid "Sale Loyalty - Apply Coupon Wizard" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_reward_wizard +msgid "Sale Loyalty - Reward Selection Wizard" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_coupon_points +msgid "" +"Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__sale_ok +msgid "Sales" +msgstr "Értékesítések" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order +msgid "Sales Order" +msgstr "Megrendelések" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_line +msgid "Sales Order Line" +msgstr "Vevői megrendelés sor" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_product_id +msgid "Selected Product" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_reward_id +msgid "Selected Reward" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "TEMPORARY DISCOUNT LINE" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "" +"Technical field used to link multiple reward lines from the same reward " +"together." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon can only be claimed on future orders." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon does not have enough points for the selected reward." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.constraint,message:sale_loyalty.constraint_sale_order_coupon_points_order_coupon_unique +msgid "The coupon points entry already exists." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The program is not available for this order." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_loyalty_card__order_id +msgid "The sales order from which coupon is generated" +msgstr "Az értékesítési rendelés, amelyből a kupon generálodott" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "There is nothing to discount" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "These are the products that can be claimed with this rule." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is expired (%s)." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is invalid (%s)." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon has already been used." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon is expired." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is already applied to this order." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is not available for public users." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program requires a code to be applied." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This promo code is already applied." +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Update current promotional lines and select new rewards if applicable." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "You don't have the required product quantities on your sales order." +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "" +"You will find below your gift cards code. An email has been sent with it. " +"You can use it starting right now." +msgstr "" diff --git a/i18n/id.po b/i18n/id.po new file mode 100644 index 0000000..1e8e820 --- /dev/null +++ b/i18n/id.po @@ -0,0 +1,513 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_loyalty +# +# Translators: +# Wil Odoo, 2023 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-26 21:55+0000\n" +"PO-Revision-Date: 2023-10-26 23:09+0000\n" +"Last-Translator: Wil Odoo, 2023\n" +"Language-Team: Indonesian (https://app.transifex.com/odoo/teams/41243/id/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: id\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid " - On product with the following taxes: %(taxes)s" +msgstr "- Pada produk dengan pajak berikut: %(taxes)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid " Copy" +msgstr " Salin" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "A better global discount is already applied." +msgstr "Diskon global yang lebih baik sudah diterapkan." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"A minimum of %(amount)s %(currency)s should be purchased to get the reward" +msgstr "Minimal %(amount)s %(currency)s harus dibeli untuk mendapatkan hadiah" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Apply" +msgstr "Terapkan" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_reward_wizard_action +msgid "Available Rewards" +msgstr "Hadiah yang Tersedia" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose a product:" +msgstr "Pilih produk:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose your reward:" +msgstr "Pilih hadiah Anda:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Code:" +msgstr "Kode:" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__coupon_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__coupon_id +msgid "Coupon" +msgstr "Kupon" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__coupon_code +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Coupon Code" +msgstr "Kode kupon" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__coupon_point_ids +msgid "Coupon Point" +msgstr "Poin Kupon" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "Coupon not found while trying to add the following reward: %s" +msgstr "Kupon tidak ditemukan saat mencoba menambahkan reward berikut: %s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Coupons & Loyalty" +msgstr "Kupon & Loyalitas" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_uid +msgid "Created by" +msgstr "Dibuat oleh" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_date +msgid "Created on" +msgstr "Dibuat pada" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Discard" +msgstr "Buang" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_discount_loyalty_type_config +msgid "Discount & Loyalty" +msgstr "Diskon & Loyalitas" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Discount: %(desc)s%(tax_str)s" +msgstr "Diskon: %(desc)s%(tax_str)s" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__display_name +msgid "Display Name" +msgstr "Nama Tampilan" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_coupon_wizard_action +msgid "Enter Promotion or Coupon Code" +msgstr "Masukkan Kode Promosi atau Kupon" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Expired Date:" +msgstr "Tanggal Kadaluwarsa:" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Free Product - %(product)s" +msgstr "Produk Gratis - %(product)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift #" +msgstr "Hadiah #" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift Card Code" +msgstr "Kode Kartu Hadiah" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_gift_ewallet_type_config +msgid "Gift cards & eWallet" +msgstr "Gift card & eWallet" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__points_cost +msgid "How much point this reward costs on the loyalty card." +msgstr "Hadiah ini membutuhkan berapa banyak poin di kartu loyalitas." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__id +msgid "ID" +msgstr "ID" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Invalid product to claim." +msgstr "Produk tidak valid untuk diklaim." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_coupon_wizard.py:0 +#, python-format +msgid "Invalid sales order." +msgstr "Sales order tidak valid." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__is_reward_line +msgid "Is a program reward line" +msgstr "Adalah baris hadiah program" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_uid +msgid "Last Updated by" +msgstr "Terakhir Diperbarui oleh" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_date +msgid "Last Updated on" +msgstr "Terakhir Diperbarui pada" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_card +msgid "Loyalty Coupon" +msgstr "Kupon Loyalitas" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_program +msgid "Loyalty Program" +msgstr "Program Loyalitas" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_reward +msgid "Loyalty Reward" +msgstr "Hadiah Loyalitas" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__applied_coupon_ids +msgid "Manually Applied Coupons" +msgstr "Kupon Secara Manual DIterapkan" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__code_enabled_rule_ids +msgid "Manually Triggered Rules" +msgstr "Peraturan Dipicu Secara Manual" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__multi_product_reward +msgid "Multi Product" +msgstr "Produk Multi" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"No card found for this loyalty program and no points will be given with this" +" order." +msgstr "" +"Tidak ada kartu yang ditemukan untuk program loyalitas ini dan tidak ada " +"poin yang akan diberikan dengan order ini." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "No reward selected." +msgstr "Tidak ada hadiah yang dipilih." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "No rewards available for this customer!" +msgstr "Tidak ada hadiah yang tersedia untuk pelanggan ini!" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "One or more rewards on the sale order is invalid. Please check them." +msgstr "" +"Satu atau lebih hadiah pada sale order tidak valid. Mohon periksa mereka." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__order_id +msgid "Order" +msgstr "Order" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__order_count +msgid "Order Count" +msgstr "Jumlah Order" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_card__order_id +msgid "Order Reference" +msgstr "Referensi Order" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__points +msgid "Points" +msgstr "Poin-Poin" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__points_cost +msgid "Points Cost" +msgstr "Biaya Poin" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Promotions" +msgstr "Promosi" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_ids +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_id +msgid "Reward" +msgstr "Hadiah" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__reward_amount +msgid "Reward Amount" +msgstr "Jumlah Hadiah" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "Reward Identifier Code" +msgstr "Kode Hadiah Pengidentifikasi" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "Reward Products" +msgstr "Produk Hadiah" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_coupon_wizard +msgid "Sale Loyalty - Apply Coupon Wizard" +msgstr "Sale Loyalty - Wizard Penerapan Kupon" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_reward_wizard +msgid "Sale Loyalty - Reward Selection Wizard" +msgstr "Sale Loyalty - Wizard Pemilihan Hadiah" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_coupon_points +msgid "" +"Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon" +msgstr "" +"Poin Kupon Sale Order - Lacak bagaimana sale order memiliki dampak pada " +"kupon" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__sale_ok +msgid "Sales" +msgstr "Penjualan" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order +msgid "Sales Order" +msgstr "Order Penjualan" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_line +msgid "Sales Order Line" +msgstr "Baris Pesanan Penjualan" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_product_id +msgid "Selected Product" +msgstr "Produk yang Dipilih" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_reward_id +msgid "Selected Reward" +msgstr "Hadiah yang Dipilih" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "TEMPORARY DISCOUNT LINE" +msgstr "BARIS DISKON SEMENTARA" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "" +"Technical field used to link multiple reward lines from the same reward " +"together." +msgstr "" +"Field teknis yang digunakan untuk menghubungkan lebih dari satu baris hadiah" +" dari hadiah yang sama secara bersama-sama." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon can only be claimed on future orders." +msgstr "Kupon hanya dapat diklaim pada order masa depan." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon does not have enough points for the selected reward." +msgstr "Kupon tidak memiliki cukup poin untuk hadiah yang dipilih." + +#. module: sale_loyalty +#: model:ir.model.constraint,message:sale_loyalty.constraint_sale_order_coupon_points_order_coupon_unique +msgid "The coupon points entry already exists." +msgstr "Entri point kupon sudah tersedia." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The program is not available for this order." +msgstr "Program tidak tersedia untuk order ini." + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_loyalty_card__order_id +msgid "The sales order from which coupon is generated" +msgstr "Sales order dari mana kupon ini dibuat" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "There is nothing to discount" +msgstr "Tidak ada yang bisa didiskon" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "These are the products that can be claimed with this rule." +msgstr "Berikut adalah produk-produk yang dapat diklaim dengan peraturan ini." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is expired (%s)." +msgstr "Kode ini kadaluwarsa (%s)." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is invalid (%s)." +msgstr "Kode ini kadaluwarsa (%s)." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon has already been used." +msgstr "Kupon ini sudah digunakan" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon is expired." +msgstr "Kupon ini kadaluwarsa." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is already applied to this order." +msgstr "Program ini sudah diterapkan untuk order ini." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is not available for public users." +msgstr "Program ini tidak tersedia untuk user publik." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program requires a code to be applied." +msgstr "Program ini membutuhkan kode untuk diterapkan." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This promo code is already applied." +msgstr "Kode promo ini sudah diterapkan." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Update current promotional lines and select new rewards if applicable." +msgstr "Update baris promosi saat ini dan pilih hadiah baru bila bisa." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "You don't have the required product quantities on your sales order." +msgstr "" +"Anda tidak memiliki kuantitas produk yang diperlukan pada sales order Anda." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "" +"You will find below your gift cards code. An email has been sent with it. " +"You can use it starting right now." +msgstr "" +"Anda akan menemukan di bawah kode gift card. Email telah dikirim dengan kode" +" tersebut. Anda dapat menggunakan kode itu mulai dari sekarang." diff --git a/i18n/it.po b/i18n/it.po new file mode 100644 index 0000000..30a68e7 --- /dev/null +++ b/i18n/it.po @@ -0,0 +1,523 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_loyalty +# +# Translators: +# Wil Odoo, 2023 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-26 21:55+0000\n" +"PO-Revision-Date: 2023-10-26 23:09+0000\n" +"Last-Translator: Wil Odoo, 2023\n" +"Language-Team: Italian (https://app.transifex.com/odoo/teams/41243/it/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: it\n" +"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid " - On product with the following taxes: %(taxes)s" +msgstr "- Su prodotti con le seguenti imposte: %(taxes)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid " Copy" +msgstr " Copia" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "A better global discount is already applied." +msgstr "Viene già applicato uno sconto globale migliore." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"A minimum of %(amount)s %(currency)s should be purchased to get the reward" +msgstr "" +"Per ottenere il riconoscimento devono essere effettuati acquisti per un " +"minimo di %(amount)s %(currency)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Apply" +msgstr "Applica" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_reward_wizard_action +msgid "Available Rewards" +msgstr "Ricompense disponibili" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose a product:" +msgstr "Scegli un prodotto:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose your reward:" +msgstr "Scegli la tua ricompensa:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Code:" +msgstr "Codice:" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__coupon_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__coupon_id +msgid "Coupon" +msgstr "Buono sconto" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__coupon_code +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Coupon Code" +msgstr "Codice buono sconto" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__coupon_point_ids +msgid "Coupon Point" +msgstr "Punti buono sconto" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "Coupon not found while trying to add the following reward: %s" +msgstr "" +"Non è stato possibile trovare il buono sconto mentre si provava ad " +"aggiungere la seguente ricompensa: %s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Coupons & Loyalty" +msgstr "Buoni sconto & Fedeltà" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_uid +msgid "Created by" +msgstr "Creato da" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_date +msgid "Created on" +msgstr "Data creazione" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Discard" +msgstr "Abbandona" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_discount_loyalty_type_config +msgid "Discount & Loyalty" +msgstr "Sconti e fedeltà" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Discount: %(desc)s%(tax_str)s" +msgstr "Sconto: %(desc)s%(tax_str)s" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__display_name +msgid "Display Name" +msgstr "Nome visualizzato" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_coupon_wizard_action +msgid "Enter Promotion or Coupon Code" +msgstr "Inserire codice promozione o buono sconto" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Expired Date:" +msgstr "Data di scadenza:" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Free Product - %(product)s" +msgstr "Prodotto gratuito-%(product)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift #" +msgstr "Regalo #" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift Card Code" +msgstr "Codice carta regalo" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_gift_ewallet_type_config +msgid "Gift cards & eWallet" +msgstr "Carte regalo e portafoglio elettronico" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__points_cost +msgid "How much point this reward costs on the loyalty card." +msgstr "Valore in punti della ricompensa nella carta fedeltà." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__id +msgid "ID" +msgstr "ID" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Invalid product to claim." +msgstr "Prodotto non valido per la richiesta." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_coupon_wizard.py:0 +#, python-format +msgid "Invalid sales order." +msgstr "Ordine di vendita non valido." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__is_reward_line +msgid "Is a program reward line" +msgstr "È una riga riconoscimento del programma" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_uid +msgid "Last Updated by" +msgstr "Ultimo aggiornamento di" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_date +msgid "Last Updated on" +msgstr "Ultimo aggiornamento il" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_card +msgid "Loyalty Coupon" +msgstr "Buono sconto fedeltà" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_program +msgid "Loyalty Program" +msgstr "Programma fedeltà" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_reward +msgid "Loyalty Reward" +msgstr "Premio fedeltà" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__applied_coupon_ids +msgid "Manually Applied Coupons" +msgstr "Buoni sconto applicati manualmente" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__code_enabled_rule_ids +msgid "Manually Triggered Rules" +msgstr "Regole attivate manualmente" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__multi_product_reward +msgid "Multi Product" +msgstr "Multi-Prodotto" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"No card found for this loyalty program and no points will be given with this" +" order." +msgstr "" +"Non è stata trovata nessuna carta per il seguente programma fedeltà. Non " +"saranno attribuiti punti all'ordine." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "No reward selected." +msgstr "Nessuna ricompensa selezionata." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "No rewards available for this customer!" +msgstr "Nessuna ricompensa disponibile!" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "One or more rewards on the sale order is invalid. Please check them." +msgstr "" +"Una o più ricompense dell'ordine di vendita non sono valide. Per favore, " +"effettua una verifica." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__order_id +msgid "Order" +msgstr "Ordina" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__order_count +msgid "Order Count" +msgstr "Numero ordini" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_card__order_id +msgid "Order Reference" +msgstr "Riferimento ordine" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__points +msgid "Points" +msgstr "Punti" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__points_cost +msgid "Points Cost" +msgstr "Costo punti" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Promotions" +msgstr "Promozioni" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_ids +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_id +msgid "Reward" +msgstr "Premio" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__reward_amount +msgid "Reward Amount" +msgstr "Importo riconoscimento" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "Reward Identifier Code" +msgstr "Codice identificativo ricompensa" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "Reward Products" +msgstr "Prodotti premio" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_coupon_wizard +msgid "Sale Loyalty - Apply Coupon Wizard" +msgstr "Fedeltà vendita-procedura guidata utilizzo buono sconto" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_reward_wizard +msgid "Sale Loyalty - Reward Selection Wizard" +msgstr "Fedeltà vendita-procedura guidata selezione ricompensa" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_coupon_points +msgid "" +"Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon" +msgstr "" +"Punti buono sconto ordine di vendita-Tieni traccia dell'impatto di un ordine" +" di vendita su un buono sconto" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__sale_ok +msgid "Sales" +msgstr "Vendite" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order +msgid "Sales Order" +msgstr "Ordine di vendita" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_line +msgid "Sales Order Line" +msgstr "Riga ordine di vendita" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_product_id +msgid "Selected Product" +msgstr "Prodotto selezionata" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_reward_id +msgid "Selected Reward" +msgstr "Ricompensa selezionata" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "TEMPORARY DISCOUNT LINE" +msgstr "RIGA SCONTO TEMPORANEO" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "" +"Technical field used to link multiple reward lines from the same reward " +"together." +msgstr "" +"Campo tecnico utilizzato per collegare più righe ricompensa della stessa " +"insieme." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon can only be claimed on future orders." +msgstr "" +"Il buono sconto può essere utilizzato esclusivamente su ordini successivi." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon does not have enough points for the selected reward." +msgstr "" +"Il buono sconto non presenta punti a sufficenza per la ricompensa " +"selezionata." + +#. module: sale_loyalty +#: model:ir.model.constraint,message:sale_loyalty.constraint_sale_order_coupon_points_order_coupon_unique +msgid "The coupon points entry already exists." +msgstr "La voce relativa ai punti del buono sconto esiste già." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The program is not available for this order." +msgstr "Il programma non è disponibile per quest'ordine." + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_loyalty_card__order_id +msgid "The sales order from which coupon is generated" +msgstr "Ordine di vendita da cui viene generato il buono sconto" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "There is nothing to discount" +msgstr "Non c'è nulla da scontare" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "These are the products that can be claimed with this rule." +msgstr "" +"Questi sono i prodotti che possono essere richiesti con questa regola." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is expired (%s)." +msgstr "Il codice è scaduto (%s)." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is invalid (%s)." +msgstr "Il codice non è valido (%s)." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon has already been used." +msgstr "Il buono sconto è già stato utilizzato." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon is expired." +msgstr "Il buono sconto è scaduto." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is already applied to this order." +msgstr "Il programma è stato già applicato all'ordine." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is not available for public users." +msgstr "Il programma non è disponibile per utenti pubblici." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program requires a code to be applied." +msgstr "Il programma richiede un codice da applicare." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This promo code is already applied." +msgstr "Il codice promozionale è già stato applicato." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Update current promotional lines and select new rewards if applicable." +msgstr "" +"Aggiorna le promozioni attuali e seleziona nuovi premi se applicabile." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "You don't have the required product quantities on your sales order." +msgstr "" +"Nell'ordine di vendita non sono presenti le quantità di prodotto richieste." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "" +"You will find below your gift cards code. An email has been sent with it. " +"You can use it starting right now." +msgstr "" +"Troverai qui sotto il tuo codice di carta regalo. Un'e-mail è stata inviata " +"con esso. Puoi usarlo a partire da adesso." diff --git a/i18n/ja.po b/i18n/ja.po new file mode 100644 index 0000000..58ba16d --- /dev/null +++ b/i18n/ja.po @@ -0,0 +1,503 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_loyalty +# +# Translators: +# Wil Odoo, 2023 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-26 21:55+0000\n" +"PO-Revision-Date: 2023-10-26 23:09+0000\n" +"Last-Translator: Wil Odoo, 2023\n" +"Language-Team: Japanese (https://app.transifex.com/odoo/teams/41243/ja/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: ja\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid " - On product with the following taxes: %(taxes)s" +msgstr " - 以下の税のプロダクトにおいて:%(taxes)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid " Copy" +msgstr " コピー" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "A better global discount is already applied." +msgstr "よりお得な全体値引がすでに適用されています。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"A minimum of %(amount)s %(currency)s should be purchased to get the reward" +msgstr "特典を得るには、最低%(amount)s %(currency)sの購入が必要です。" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Apply" +msgstr "適用" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_reward_wizard_action +msgid "Available Rewards" +msgstr "利用可能な特典" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose a product:" +msgstr "プロダクトを選択する:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose your reward:" +msgstr "特典を選ぶ:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Code:" +msgstr "コード:" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__coupon_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__coupon_id +msgid "Coupon" +msgstr "クーポン" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__coupon_code +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Coupon Code" +msgstr "クーポンコード" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__coupon_point_ids +msgid "Coupon Point" +msgstr "クーポンポイント" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "Coupon not found while trying to add the following reward: %s" +msgstr "以下の特典を追加しようとしましたがクーポンが見つかりませんでした:%s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Coupons & Loyalty" +msgstr "クーポン&ロイヤルティ" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_uid +msgid "Created by" +msgstr "作成者" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_date +msgid "Created on" +msgstr "作成日" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Discard" +msgstr "破棄" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_discount_loyalty_type_config +msgid "Discount & Loyalty" +msgstr "値引 & ロイヤルティ" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Discount: %(desc)s%(tax_str)s" +msgstr "値引: %(desc)s%(tax_str)s" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__display_name +msgid "Display Name" +msgstr "表示名" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_coupon_wizard_action +msgid "Enter Promotion or Coupon Code" +msgstr "プロモーションまたはクーポンコードを入力" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Expired Date:" +msgstr "有効期限:" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Free Product - %(product)s" +msgstr "無料プロダクト-%(product)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift #" +msgstr "ギフト数" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift Card Code" +msgstr "ギフトカードコード" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_gift_ewallet_type_config +msgid "Gift cards & eWallet" +msgstr "ギフトカード & eウォレット" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__points_cost +msgid "How much point this reward costs on the loyalty card." +msgstr "ロイヤリティカードでこの特典はいくつのポイントが必要か" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__id +msgid "ID" +msgstr "ID" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Invalid product to claim." +msgstr "要求するプロダクトが無効です。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_coupon_wizard.py:0 +#, python-format +msgid "Invalid sales order." +msgstr "無効な販売オーダ" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__is_reward_line +msgid "Is a program reward line" +msgstr "プログラム特典明細ですか?" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_uid +msgid "Last Updated by" +msgstr "最終更新者" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_date +msgid "Last Updated on" +msgstr "最終更新日" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_card +msgid "Loyalty Coupon" +msgstr "ロイヤリティクーポン" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_program +msgid "Loyalty Program" +msgstr "ロイヤリティプログラム" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_reward +msgid "Loyalty Reward" +msgstr "ロイヤリティ特典" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__applied_coupon_ids +msgid "Manually Applied Coupons" +msgstr "手動で適用されたクーポン" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__code_enabled_rule_ids +msgid "Manually Triggered Rules" +msgstr "手動でトリガされた規則" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__multi_product_reward +msgid "Multi Product" +msgstr "複数プロダクト" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"No card found for this loyalty program and no points will be given with this" +" order." +msgstr "このロイヤリティプログラム用のカードが見つかりません。このオーダではポイントは付与されません。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "No reward selected." +msgstr "特典が選択されていません。" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "No rewards available for this customer!" +msgstr "この顧客について利用可能な報奨がありません。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "One or more rewards on the sale order is invalid. Please check them." +msgstr "1つまたは1つ以上の販売オーダが無効です。それらを確認して下さい。" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__order_id +msgid "Order" +msgstr "オーダ" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__order_count +msgid "Order Count" +msgstr "オーダ数" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_card__order_id +msgid "Order Reference" +msgstr "オーダ参照" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__points +msgid "Points" +msgstr "ポイント" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__points_cost +msgid "Points Cost" +msgstr "ポイントコスト" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Promotions" +msgstr "プロモーション" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_ids +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_id +msgid "Reward" +msgstr "報奨" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__reward_amount +msgid "Reward Amount" +msgstr "特典金額" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "Reward Identifier Code" +msgstr "特典識別コード" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "Reward Products" +msgstr "特典プロダクト" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_coupon_wizard +msgid "Sale Loyalty - Apply Coupon Wizard" +msgstr "販売ロイヤリティ - クーポンウィザードを適用" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_reward_wizard +msgid "Sale Loyalty - Reward Selection Wizard" +msgstr "販売ロイヤリティ - リワード選択ウィザード" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_coupon_points +msgid "" +"Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon" +msgstr "販売オーダのクーポンポイント - 販売オーダがクーポンにどのように影響するかを追跡します。" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__sale_ok +msgid "Sales" +msgstr "販売" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order +msgid "Sales Order" +msgstr "販売オーダ" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_line +msgid "Sales Order Line" +msgstr "販売オーダ明細" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_product_id +msgid "Selected Product" +msgstr "選択されたプロダクト" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_reward_id +msgid "Selected Reward" +msgstr "選択されたリワード" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "TEMPORARY DISCOUNT LINE" +msgstr "一時的な値引明細" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "" +"Technical field used to link multiple reward lines from the same reward " +"together." +msgstr "同じ特典の複数の特典明細を一緒にリンクするために使用される技術的なフィールド。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon can only be claimed on future orders." +msgstr "クーポンは次回以降のオーダのみに利用頂けます。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon does not have enough points for the selected reward." +msgstr "選択された特典を利用するにはクーポンのポイント数が足りません。" + +#. module: sale_loyalty +#: model:ir.model.constraint,message:sale_loyalty.constraint_sale_order_coupon_points_order_coupon_unique +msgid "The coupon points entry already exists." +msgstr "クーポンポイントエントリーがすでに存在します。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The program is not available for this order." +msgstr "プログラムはこのオーダでは利用できません。" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_loyalty_card__order_id +msgid "The sales order from which coupon is generated" +msgstr "クーポン生成元の販売オーダ" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "There is nothing to discount" +msgstr "値引対象はありません。" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "These are the products that can be claimed with this rule." +msgstr "これらはこの規則で要求できるプロダクトです。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is expired (%s)." +msgstr "このコードは有効期限が切れています(%s)" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is invalid (%s)." +msgstr "このコードは無効です(%s)" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon has already been used." +msgstr "このクーポンはすでに使用済みです。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon is expired." +msgstr "このクーポンは有効期限が切れています。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is already applied to this order." +msgstr "このプログラムはすでにこのオーダに適用されました。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is not available for public users." +msgstr "このプログラムは一般ユーザーは利用できません。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program requires a code to be applied." +msgstr "このプログラムは適用されるコードが必要です。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This promo code is already applied." +msgstr "このプロモコードはすでに適用されています。" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Update current promotional lines and select new rewards if applicable." +msgstr "現在のプロモーション明細を更新し、該当する場合は新しい特典を選択します。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "You don't have the required product quantities on your sales order." +msgstr "販売オーダに必要なプロダクトの数量がありません。" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "" +"You will find below your gift cards code. An email has been sent with it. " +"You can use it starting right now." +msgstr "お客様のギフトカードコードは以下になります。コードを掲載したEメールが送信されました。今すぐご利用いただけます。" diff --git a/i18n/ko.po b/i18n/ko.po new file mode 100644 index 0000000..85daa9a --- /dev/null +++ b/i18n/ko.po @@ -0,0 +1,503 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_loyalty +# +# Translators: +# Wil Odoo, 2023 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-26 21:55+0000\n" +"PO-Revision-Date: 2023-10-26 23:09+0000\n" +"Last-Translator: Wil Odoo, 2023\n" +"Language-Team: Korean (https://app.transifex.com/odoo/teams/41243/ko/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: ko\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid " - On product with the following taxes: %(taxes)s" +msgstr "- 다음 세금이 포함된 품목: %(taxes)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid " Copy" +msgstr " 복사" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "A better global discount is already applied." +msgstr "더 유리한 글로벌 할인 항목이 이미 적용되었습니다." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"A minimum of %(amount)s %(currency)s should be purchased to get the reward" +msgstr "혜택을 받으실 수 있는 최소 구매 금액은 %(amount)s%(currency)s 입니다." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Apply" +msgstr "적용" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_reward_wizard_action +msgid "Available Rewards" +msgstr "가능한 리워드" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose a product:" +msgstr "상품을 선택하세요:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose your reward:" +msgstr "리워드를 선택하세요:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Code:" +msgstr "코드 :" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__coupon_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__coupon_id +msgid "Coupon" +msgstr "쿠폰" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__coupon_code +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Coupon Code" +msgstr "쿠폰 코드" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__coupon_point_ids +msgid "Coupon Point" +msgstr "쿠폰 포인트" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "Coupon not found while trying to add the following reward: %s" +msgstr "다음 리워드를 추가할 쿠폰을 찾을 수 없습니다: %s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Coupons & Loyalty" +msgstr "쿠폰 및 적립" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_uid +msgid "Created by" +msgstr "작성자" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_date +msgid "Created on" +msgstr "작성일자" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Discard" +msgstr "취소" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_discount_loyalty_type_config +msgid "Discount & Loyalty" +msgstr "할인 및 적립" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Discount: %(desc)s%(tax_str)s" +msgstr "할인: %(desc)s%(tax_str)s" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__display_name +msgid "Display Name" +msgstr "표시명" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_coupon_wizard_action +msgid "Enter Promotion or Coupon Code" +msgstr "프로모션 또는 쿠폰 코드 입력" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Expired Date:" +msgstr "만료일:" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Free Product - %(product)s" +msgstr "무료 상품 - %(product)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift #" +msgstr "선물 #" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift Card Code" +msgstr "기프트 카드 코드" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_gift_ewallet_type_config +msgid "Gift cards & eWallet" +msgstr "기프트 카드 및 e월렛" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__points_cost +msgid "How much point this reward costs on the loyalty card." +msgstr "이 리워드를 받기 위해 적립 카드에서 차감되는 포인트 금액." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__id +msgid "ID" +msgstr "ID" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Invalid product to claim." +msgstr "잘못된 신청 상품입니다." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_coupon_wizard.py:0 +#, python-format +msgid "Invalid sales order." +msgstr "잘못된 판매주문서입니다." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__is_reward_line +msgid "Is a program reward line" +msgstr "프로그램 보상 내역 여부" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_uid +msgid "Last Updated by" +msgstr "최근 갱신한 사람" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_date +msgid "Last Updated on" +msgstr "최근 갱신 일자" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_card +msgid "Loyalty Coupon" +msgstr "적립 쿠폰" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_program +msgid "Loyalty Program" +msgstr "로열티 프로그램" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_reward +msgid "Loyalty Reward" +msgstr "로열티 보상" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__applied_coupon_ids +msgid "Manually Applied Coupons" +msgstr "수기로 적용된 쿠폰" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__code_enabled_rule_ids +msgid "Manually Triggered Rules" +msgstr "수기로 작동시킨 규칙" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__multi_product_reward +msgid "Multi Product" +msgstr "여러 개의 제품" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"No card found for this loyalty program and no points will be given with this" +" order." +msgstr "이 적립 프로그램용 카드가 없으므로 이 주문에 대해 포인트를 적립하실 수 없습니다." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "No reward selected." +msgstr "선택한 리워드가 없습니다." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "No rewards available for this customer!" +msgstr "이 고객에게 드릴 수 있는 리워드가 없습니다!" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "One or more rewards on the sale order is invalid. Please check them." +msgstr "판매 주문에서 유효하지 않은 리워드 항목이 있습니다. 확인하시기 바랍니다." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__order_id +msgid "Order" +msgstr "주문" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__order_count +msgid "Order Count" +msgstr "주문 수" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_card__order_id +msgid "Order Reference" +msgstr "주문 참조" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__points +msgid "Points" +msgstr "포인트" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__points_cost +msgid "Points Cost" +msgstr "포인트 비용" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Promotions" +msgstr "프로모션" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_ids +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_id +msgid "Reward" +msgstr "보상" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__reward_amount +msgid "Reward Amount" +msgstr "보상 금액" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "Reward Identifier Code" +msgstr "리워드 식별용 코드" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "Reward Products" +msgstr "리워드 품목" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_coupon_wizard +msgid "Sale Loyalty - Apply Coupon Wizard" +msgstr "판매 적립 - 쿠폰 적용 마법사" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_reward_wizard +msgid "Sale Loyalty - Reward Selection Wizard" +msgstr "판매 적립 - 리워드 선택 마법사" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_coupon_points +msgid "" +"Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon" +msgstr "판매 주문 쿠폰 포인트 - 판매 주문이 쿠폰에 미치는 영향을 추적합니다" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__sale_ok +msgid "Sales" +msgstr "판매" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order +msgid "Sales Order" +msgstr "판매 주문" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_line +msgid "Sales Order Line" +msgstr "판매 주문 내역" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_product_id +msgid "Selected Product" +msgstr "선택한 품목" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_reward_id +msgid "Selected Reward" +msgstr "선택한 리워드" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "TEMPORARY DISCOUNT LINE" +msgstr "임시 할인 내역" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "" +"Technical field used to link multiple reward lines from the same reward " +"together." +msgstr "여러 개의 리워드 내역을 동일한 리워드 항목에서 함께 연결하는데 사용하는 기술 필드입니다." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon can only be claimed on future orders." +msgstr "이후 주문 건에 대해서만 쿠폰을 사용할 수 있습니다." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon does not have enough points for the selected reward." +msgstr "쿠폰 포인트가 해당 리워드를 선택하기에 충분하지 않습니다." + +#. module: sale_loyalty +#: model:ir.model.constraint,message:sale_loyalty.constraint_sale_order_coupon_points_order_coupon_unique +msgid "The coupon points entry already exists." +msgstr "쿠폰 포인트 항목이 이미 존재합니다." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The program is not available for this order." +msgstr "이 주문에는 해당 프로그램이 적용되지 않습니다." + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_loyalty_card__order_id +msgid "The sales order from which coupon is generated" +msgstr "쿠폰이 생성되는 판매 주문" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "There is nothing to discount" +msgstr "할인을 적용받을 내용이 없습니다." + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "These are the products that can be claimed with this rule." +msgstr "이 규칙에서 신청할 수 있는 상품입니다." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is expired (%s)." +msgstr "만료된 코드입니다 (%s)." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is invalid (%s)." +msgstr "유효하지 않은 코드입니다 (%s)." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon has already been used." +msgstr "이미 사용된 쿠폰입니다." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon is expired." +msgstr "만료된 쿠폰입니다." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is already applied to this order." +msgstr "이 주문에 이미 적용되어 있는 프로그램입니다." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is not available for public users." +msgstr "일반 사용자들이 사용할 수 없는 프로그램입니다." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program requires a code to be applied." +msgstr "적용하려면 코드가 필요한 프로그램입니다." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This promo code is already applied." +msgstr "이미 적용된 프로모션 코드입니다." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Update current promotional lines and select new rewards if applicable." +msgstr "현재 프로모션 내용을 업데이트한 후 해당되는 경우 새로운 리워드를 선택하십시오." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "You don't have the required product quantities on your sales order." +msgstr "판매 주문에 필요한 품목 수량이 없습니다." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "" +"You will find below your gift cards code. An email has been sent with it. " +"You can use it starting right now." +msgstr "기프트 카드 코드 아래에서 확인하실 수 있습니다. 이메일에 함께 전송되었습니다. 지금부터 바로 사용하실 수 있습니다." diff --git a/i18n/lt.po b/i18n/lt.po new file mode 100644 index 0000000..ec9deca --- /dev/null +++ b/i18n/lt.po @@ -0,0 +1,513 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_loyalty +# +# Translators: +# digitouch UAB , 2023 +# Arunas V. , 2023 +# Jonas Zinkevicius , 2023 +# UAB "Draugiški sprendimai" , 2023 +# Naglis Jonaitis, 2023 +# Linas Versada , 2023 +# Martin Trigaux, 2023 +# Audrius Palenskis , 2023 +# Ramunė ViaLaurea , 2023 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-26 21:55+0000\n" +"PO-Revision-Date: 2023-10-26 23:09+0000\n" +"Last-Translator: Ramunė ViaLaurea , 2023\n" +"Language-Team: Lithuanian (https://app.transifex.com/odoo/teams/41243/lt/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: lt\n" +"Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\n" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid " - On product with the following taxes: %(taxes)s" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid " Copy" +msgstr "Kopijuoti" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "A better global discount is already applied." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"A minimum of %(amount)s %(currency)s should be purchased to get the reward" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Apply" +msgstr "Taikyti" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_reward_wizard_action +msgid "Available Rewards" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose a product:" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose your reward:" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Code:" +msgstr "Kodas:" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__coupon_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__coupon_id +msgid "Coupon" +msgstr "Kuponas" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__coupon_code +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Coupon Code" +msgstr "Kupono kodas" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__coupon_point_ids +msgid "Coupon Point" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "Coupon not found while trying to add the following reward: %s" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Coupons & Loyalty" +msgstr "Nuolaidų ir lojalumo programos" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_uid +msgid "Created by" +msgstr "Sukūrė" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_date +msgid "Created on" +msgstr "Sukurta" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Discard" +msgstr "Atmesti" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_discount_loyalty_type_config +msgid "Discount & Loyalty" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Discount: %(desc)s%(tax_str)s" +msgstr "Nuolaida: %(desc)s%(tax_str)s" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__display_name +msgid "Display Name" +msgstr "Rodomas pavadinimas" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_coupon_wizard_action +msgid "Enter Promotion or Coupon Code" +msgstr "Įveskite akcijos ar kupono kodą" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Expired Date:" +msgstr "Galiojimo data:" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Free Product - %(product)s" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift #" +msgstr "Dovana #" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift Card Code" +msgstr "Dovanų kortelės kodas" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_gift_ewallet_type_config +msgid "Gift cards & eWallet" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__points_cost +msgid "How much point this reward costs on the loyalty card." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__id +msgid "ID" +msgstr "ID" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Invalid product to claim." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_coupon_wizard.py:0 +#, python-format +msgid "Invalid sales order." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__is_reward_line +msgid "Is a program reward line" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_uid +msgid "Last Updated by" +msgstr "Paskutinį kartą atnaujino" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_date +msgid "Last Updated on" +msgstr "Paskutinį kartą atnaujinta" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_card +msgid "Loyalty Coupon" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_program +msgid "Loyalty Program" +msgstr "Lojalumo programa" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_reward +msgid "Loyalty Reward" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__applied_coupon_ids +msgid "Manually Applied Coupons" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__code_enabled_rule_ids +msgid "Manually Triggered Rules" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__multi_product_reward +msgid "Multi Product" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"No card found for this loyalty program and no points will be given with this" +" order." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "No reward selected." +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "No rewards available for this customer!" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "One or more rewards on the sale order is invalid. Please check them." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__order_id +msgid "Order" +msgstr "Užsakymas" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__order_count +msgid "Order Count" +msgstr "Užsakymų skaičius" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_card__order_id +msgid "Order Reference" +msgstr "Užsakymo numeris" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__points +msgid "Points" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__points_cost +msgid "Points Cost" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Promotions" +msgstr "Akcijos" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_ids +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_id +msgid "Reward" +msgstr "Apdovanojimas" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__reward_amount +msgid "Reward Amount" +msgstr "Atlygio suma" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "Reward Identifier Code" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "Reward Products" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_coupon_wizard +msgid "Sale Loyalty - Apply Coupon Wizard" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_reward_wizard +msgid "Sale Loyalty - Reward Selection Wizard" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_coupon_points +msgid "" +"Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__sale_ok +msgid "Sales" +msgstr "Pardavimai" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order +msgid "Sales Order" +msgstr "Pardavimo užsakymas" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_line +msgid "Sales Order Line" +msgstr "Pardavimo užsakymo eilutė" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_product_id +msgid "Selected Product" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_reward_id +msgid "Selected Reward" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "TEMPORARY DISCOUNT LINE" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "" +"Technical field used to link multiple reward lines from the same reward " +"together." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon can only be claimed on future orders." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon does not have enough points for the selected reward." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.constraint,message:sale_loyalty.constraint_sale_order_coupon_points_order_coupon_unique +msgid "The coupon points entry already exists." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The program is not available for this order." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_loyalty_card__order_id +msgid "The sales order from which coupon is generated" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "There is nothing to discount" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "These are the products that can be claimed with this rule." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is expired (%s)." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is invalid (%s)." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon has already been used." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon is expired." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is already applied to this order." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is not available for public users." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program requires a code to be applied." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This promo code is already applied." +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Update current promotional lines and select new rewards if applicable." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "You don't have the required product quantities on your sales order." +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "" +"You will find below your gift cards code. An email has been sent with it. " +"You can use it starting right now." +msgstr "" +"Žemiau Jūs rasite dovanų kortelės kodą. Kartu su juo buvo išsiųstas " +"el.laiškas. Pradėti naudoti galite jau dabar" diff --git a/i18n/lv.po b/i18n/lv.po new file mode 100644 index 0000000..d831532 --- /dev/null +++ b/i18n/lv.po @@ -0,0 +1,506 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_loyalty +# +# Translators: +# Armīns Jeltajevs , 2023 +# ievaputnina , 2023 +# Martin Trigaux, 2023 +# Will Sensors, 2024 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-26 21:55+0000\n" +"PO-Revision-Date: 2023-10-26 23:09+0000\n" +"Last-Translator: Will Sensors, 2024\n" +"Language-Team: Latvian (https://app.transifex.com/odoo/teams/41243/lv/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: lv\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid " - On product with the following taxes: %(taxes)s" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid " Copy" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "A better global discount is already applied." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"A minimum of %(amount)s %(currency)s should be purchased to get the reward" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Apply" +msgstr "Pielietot" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_reward_wizard_action +msgid "Available Rewards" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose a product:" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose your reward:" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Code:" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__coupon_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__coupon_id +msgid "Coupon" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__coupon_code +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Coupon Code" +msgstr "Kupona kods" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__coupon_point_ids +msgid "Coupon Point" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "Coupon not found while trying to add the following reward: %s" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Coupons & Loyalty" +msgstr "Kuponi un lojalitāte" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_uid +msgid "Created by" +msgstr "Izveidoja" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_date +msgid "Created on" +msgstr "Izveidots" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Discard" +msgstr "Atmest" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_discount_loyalty_type_config +msgid "Discount & Loyalty" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Discount: %(desc)s%(tax_str)s" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__display_name +msgid "Display Name" +msgstr "Attēlotais nosaukums" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_coupon_wizard_action +msgid "Enter Promotion or Coupon Code" +msgstr "Ievadiet akcijas vai kupona kodu" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Expired Date:" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Free Product - %(product)s" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift #" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift Card Code" +msgstr "" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_gift_ewallet_type_config +msgid "Gift cards & eWallet" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__points_cost +msgid "How much point this reward costs on the loyalty card." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__id +msgid "ID" +msgstr "ID" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Invalid product to claim." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_coupon_wizard.py:0 +#, python-format +msgid "Invalid sales order." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__is_reward_line +msgid "Is a program reward line" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_uid +msgid "Last Updated by" +msgstr "Pēdējoreiz atjaunināja" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_date +msgid "Last Updated on" +msgstr "Pēdējoreiz atjaunināts" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_card +msgid "Loyalty Coupon" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_program +msgid "Loyalty Program" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_reward +msgid "Loyalty Reward" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__applied_coupon_ids +msgid "Manually Applied Coupons" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__code_enabled_rule_ids +msgid "Manually Triggered Rules" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__multi_product_reward +msgid "Multi Product" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"No card found for this loyalty program and no points will be given with this" +" order." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "No reward selected." +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "No rewards available for this customer!" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "One or more rewards on the sale order is invalid. Please check them." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__order_id +msgid "Order" +msgstr "Pasūtījums" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__order_count +msgid "Order Count" +msgstr "Pasūtījuma skaits" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_card__order_id +msgid "Order Reference" +msgstr "Atsauce uz Pasūtījumu" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__points +msgid "Points" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__points_cost +msgid "Points Cost" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Promotions" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_ids +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_id +msgid "Reward" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__reward_amount +msgid "Reward Amount" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "Reward Identifier Code" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "Reward Products" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_coupon_wizard +msgid "Sale Loyalty - Apply Coupon Wizard" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_reward_wizard +msgid "Sale Loyalty - Reward Selection Wizard" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_coupon_points +msgid "" +"Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__sale_ok +msgid "Sales" +msgstr "Tirdzniecība" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order +msgid "Sales Order" +msgstr "Pasūtījums" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_line +msgid "Sales Order Line" +msgstr "Pārdošanas pasūtījuma rinda" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_product_id +msgid "Selected Product" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_reward_id +msgid "Selected Reward" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "TEMPORARY DISCOUNT LINE" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "" +"Technical field used to link multiple reward lines from the same reward " +"together." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon can only be claimed on future orders." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon does not have enough points for the selected reward." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.constraint,message:sale_loyalty.constraint_sale_order_coupon_points_order_coupon_unique +msgid "The coupon points entry already exists." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The program is not available for this order." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_loyalty_card__order_id +msgid "The sales order from which coupon is generated" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "There is nothing to discount" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "These are the products that can be claimed with this rule." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is expired (%s)." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is invalid (%s)." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon has already been used." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon is expired." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is already applied to this order." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is not available for public users." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program requires a code to be applied." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This promo code is already applied." +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Update current promotional lines and select new rewards if applicable." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "You don't have the required product quantities on your sales order." +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "" +"You will find below your gift cards code. An email has been sent with it. " +"You can use it starting right now." +msgstr "" diff --git a/i18n/nl.po b/i18n/nl.po new file mode 100644 index 0000000..e485c95 --- /dev/null +++ b/i18n/nl.po @@ -0,0 +1,521 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_loyalty +# +# Translators: +# Wil Odoo, 2023 +# Erwin van der Ploeg , 2023 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-26 21:55+0000\n" +"PO-Revision-Date: 2023-10-26 23:09+0000\n" +"Last-Translator: Erwin van der Ploeg , 2023\n" +"Language-Team: Dutch (https://app.transifex.com/odoo/teams/41243/nl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: nl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid " - On product with the following taxes: %(taxes)s" +msgstr " - Op product met de volgende BTW: %(taxes)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid " Copy" +msgstr " Kopiëren" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "A better global discount is already applied." +msgstr "Er wordt al een betere globale korting toegepast." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"A minimum of %(amount)s %(currency)s should be purchased to get the reward" +msgstr "" +"Een minimum van %(amount)s %(currency)s moet worden gekocht om de beloning " +"te krijgen" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Apply" +msgstr "Toepassen" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_reward_wizard_action +msgid "Available Rewards" +msgstr "Beschikbare beloningen" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose a product:" +msgstr "Kies een product:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose your reward:" +msgstr "Kies je beloning:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Code:" +msgstr "Code:" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__coupon_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__coupon_id +msgid "Coupon" +msgstr "Kortingsbon" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__coupon_code +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Coupon Code" +msgstr "Kortingscode" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__coupon_point_ids +msgid "Coupon Point" +msgstr "Punt kortingsbon" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "Coupon not found while trying to add the following reward: %s" +msgstr "" +"Kortingsbon niet gevonden tijdens het toevoegen van de volgende beloning: %s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Coupons & Loyalty" +msgstr "Kortingsbonnen & Loyaliteit" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_uid +msgid "Created by" +msgstr "Aangemaakt door" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_date +msgid "Created on" +msgstr "Aangemaakt op" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Discard" +msgstr "Negeren" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_discount_loyalty_type_config +msgid "Discount & Loyalty" +msgstr "Korting & Loyaliteit" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Discount: %(desc)s%(tax_str)s" +msgstr "Korting: %(desc)s%(tax_str)s" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__display_name +msgid "Display Name" +msgstr "Schermnaam" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_coupon_wizard_action +msgid "Enter Promotion or Coupon Code" +msgstr "Voer een promotie- of kortingscode in" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Expired Date:" +msgstr "Vervaldatum:" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Free Product - %(product)s" +msgstr "Gratis product - %(product)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift #" +msgstr "Geschenk #" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift Card Code" +msgstr "Cadeauboncode" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_gift_ewallet_type_config +msgid "Gift cards & eWallet" +msgstr "Cadeaubonnen & eWallet" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__points_cost +msgid "How much point this reward costs on the loyalty card." +msgstr "Hoeveel punten deze beloning kost op de klantenkaart." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__id +msgid "ID" +msgstr "ID" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Invalid product to claim." +msgstr "Ongeldig product om te claimen." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_coupon_wizard.py:0 +#, python-format +msgid "Invalid sales order." +msgstr "Ongeldige verkooporder." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__is_reward_line +msgid "Is a program reward line" +msgstr "Is een programmabeloningsregel" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_uid +msgid "Last Updated by" +msgstr "Laatst bijgewerkt door" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_date +msgid "Last Updated on" +msgstr "Laatst bijgewerkt op" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_card +msgid "Loyalty Coupon" +msgstr "Loyaliteitsbon" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_program +msgid "Loyalty Program" +msgstr "Loyaliteitsprogramma" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_reward +msgid "Loyalty Reward" +msgstr "Loyaliteitsbeloning" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__applied_coupon_ids +msgid "Manually Applied Coupons" +msgstr "Handmatig toegepaste kortingsbonnen" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__code_enabled_rule_ids +msgid "Manually Triggered Rules" +msgstr "Handmatig geactiveerde regels" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__multi_product_reward +msgid "Multi Product" +msgstr "Meerdere producten" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"No card found for this loyalty program and no points will be given with this" +" order." +msgstr "" +"Er is geen kaart gevonden voor dit loyaliteitsprogramma en er worden geen " +"punten gegeven bij deze bestelling." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "No reward selected." +msgstr "Geen beloning geselecteerd." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "No rewards available for this customer!" +msgstr "Geen beloningen beschikbaar voor deze klant!" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "One or more rewards on the sale order is invalid. Please check them." +msgstr "" +"Één of meer beloningen op de verkooporder zijn ongeldig. Controleer ze " +"alstublieft." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__order_id +msgid "Order" +msgstr "Order" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__order_count +msgid "Order Count" +msgstr "Aantal orders" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_card__order_id +msgid "Order Reference" +msgstr "Orderreferentie" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__points +msgid "Points" +msgstr "Punten" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__points_cost +msgid "Points Cost" +msgstr "Punten kosten" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Promotions" +msgstr "Promoties" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_ids +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_id +msgid "Reward" +msgstr "Beloning" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__reward_amount +msgid "Reward Amount" +msgstr "Beloningsbedrag" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "Reward Identifier Code" +msgstr "Identificatiecode beloning" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "Reward Products" +msgstr "Beloningsproducten" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_coupon_wizard +msgid "Sale Loyalty - Apply Coupon Wizard" +msgstr "Verkooployaliteit - Kortingsbonwizard toepassen" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_reward_wizard +msgid "Sale Loyalty - Reward Selection Wizard" +msgstr "Verkooployaliteit - Wizard voor het selecteren van beloningen" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_coupon_points +msgid "" +"Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon" +msgstr "" +"Kortingsbonpunten voor verkooporders - Houdt bij hoe een verkooporder een " +"kortingsbon beïnvloedt" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__sale_ok +msgid "Sales" +msgstr "Verkoop" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order +msgid "Sales Order" +msgstr "Verkooporder" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_line +msgid "Sales Order Line" +msgstr "Verkooporderregel" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_product_id +msgid "Selected Product" +msgstr "Geselecteerd product" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_reward_id +msgid "Selected Reward" +msgstr "Geselecteerde beloning" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "TEMPORARY DISCOUNT LINE" +msgstr "TIJDELIJKE KORTINGSREGEL" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "" +"Technical field used to link multiple reward lines from the same reward " +"together." +msgstr "" +"Technisch veld dat wordt gebruikt om meerdere beloningslijnen van dezelfde " +"beloning aan elkaar te koppelen." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon can only be claimed on future orders." +msgstr "" +"De kortingsbon kan alleen worden geclaimd bij toekomstige bestellingen." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon does not have enough points for the selected reward." +msgstr "" +"De kortingsbon heeft niet genoeg punten voor de geselecteerde beloning." + +#. module: sale_loyalty +#: model:ir.model.constraint,message:sale_loyalty.constraint_sale_order_coupon_points_order_coupon_unique +msgid "The coupon points entry already exists." +msgstr "De invoer van kortingsbonpunten bestaat al." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The program is not available for this order." +msgstr "Het programma is niet beschikbaar voor deze bestelling." + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_loyalty_card__order_id +msgid "The sales order from which coupon is generated" +msgstr "De verkooporder waaruit de kortingsbon wordt gegenereerd" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "There is nothing to discount" +msgstr "Er is niets om korting te geven" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "These are the products that can be claimed with this rule." +msgstr "Dit zijn de producten die met deze regel geclaimd kunnen worden." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is expired (%s)." +msgstr "Deze code is verlopen (%s)." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is invalid (%s)." +msgstr "Deze code is ongeldig (%s)." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon has already been used." +msgstr "Deze kortingsbon is al gebruikt." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon is expired." +msgstr "Deze bon is verlopen." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is already applied to this order." +msgstr "Dit programma is al toegepast op deze bestelling." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is not available for public users." +msgstr "Dit programma is niet beschikbaar voor openbare gebruikers." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program requires a code to be applied." +msgstr "Voor dit programma moet een code worden toegepast." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This promo code is already applied." +msgstr "Deze promotiecode is al toegepast." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Update current promotional lines and select new rewards if applicable." +msgstr "" +"Werk huidige promotieregels bij en selecteer indien van toepassing nieuwe " +"beloningen." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "You don't have the required product quantities on your sales order." +msgstr "Je hebt niet de vereiste producthoeveelheden op je verkooporder." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "" +"You will find below your gift cards code. An email has been sent with it. " +"You can use it starting right now." +msgstr "" +"Hieronder vind je de code van je cadeaubon. Er is een e-mail mee verzonden. " +"Je kunt het vanaf nu gebruiken." diff --git a/i18n/pl.po b/i18n/pl.po new file mode 100644 index 0000000..e78bc0f --- /dev/null +++ b/i18n/pl.po @@ -0,0 +1,512 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_loyalty +# +# Translators: +# Wil Odoo, 2023 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-26 21:55+0000\n" +"PO-Revision-Date: 2023-10-26 23:09+0000\n" +"Last-Translator: Wil Odoo, 2023\n" +"Language-Team: Polish (https://app.transifex.com/odoo/teams/41243/pl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: pl\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid " - On product with the following taxes: %(taxes)s" +msgstr "- Na produkt z następującymi podatkami: %(taxes)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid " Copy" +msgstr " Kopia" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "A better global discount is already applied." +msgstr "Lepsza globalna zniżka została już zastosowana." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"A minimum of %(amount)s %(currency)s should be purchased to get the reward" +msgstr "" +"Aby otrzymać nagrodę, należy zakupić co najmniej %(amount)s%(currency)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Apply" +msgstr "Zastosuj" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_reward_wizard_action +msgid "Available Rewards" +msgstr "Dostępne nagrody" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose a product:" +msgstr "Wybierz produkt:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose your reward:" +msgstr "Wybierz swoją nagrodę:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Code:" +msgstr "Kod:" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__coupon_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__coupon_id +msgid "Coupon" +msgstr "Kupon" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__coupon_code +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Coupon Code" +msgstr "Kod kuponu" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__coupon_point_ids +msgid "Coupon Point" +msgstr "Punkt kuponowy" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "Coupon not found while trying to add the following reward: %s" +msgstr "Nie znaleziono kuponu podczas próby dodania następującej nagrody: %s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Coupons & Loyalty" +msgstr "Kupony & Programy lojalnościowe" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_uid +msgid "Created by" +msgstr "Utworzył(a)" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_date +msgid "Created on" +msgstr "Data utworzenia" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Discard" +msgstr "Odrzuć" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_discount_loyalty_type_config +msgid "Discount & Loyalty" +msgstr "Upusty i programy lojalnościowe" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Discount: %(desc)s%(tax_str)s" +msgstr "Zniżka: %(desc)s%(tax_str)s" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__display_name +msgid "Display Name" +msgstr "Nazwa wyświetlana" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_coupon_wizard_action +msgid "Enter Promotion or Coupon Code" +msgstr "Wprowadź kod promocyjny lub kuponu" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Expired Date:" +msgstr "Data wygaśnięcia:" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Free Product - %(product)s" +msgstr "Darmowy produkt - %(product)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift #" +msgstr "Prezent #" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift Card Code" +msgstr "Kod karty podarunkowej" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_gift_ewallet_type_config +msgid "Gift cards & eWallet" +msgstr "Karty podarunkowe i e-portfel" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__points_cost +msgid "How much point this reward costs on the loyalty card." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__id +msgid "ID" +msgstr "ID" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Invalid product to claim." +msgstr "Nieprawidłowy produkt do reklamacji." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_coupon_wizard.py:0 +#, python-format +msgid "Invalid sales order." +msgstr "Nieprawidłowe zamówienie sprzedaży." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__is_reward_line +msgid "Is a program reward line" +msgstr "Czy linia nagrody programu" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_uid +msgid "Last Updated by" +msgstr "Ostatnio aktualizowane przez" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_date +msgid "Last Updated on" +msgstr "Data ostatniej aktualizacji" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_card +msgid "Loyalty Coupon" +msgstr "Kupon lojalnościowy" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_program +msgid "Loyalty Program" +msgstr "Program lojalnościowy" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_reward +msgid "Loyalty Reward" +msgstr "Nagroda lojalnościowa" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__applied_coupon_ids +msgid "Manually Applied Coupons" +msgstr "Kupony stosowane ręcznie" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__code_enabled_rule_ids +msgid "Manually Triggered Rules" +msgstr "Reguły wyzwalane ręcznie" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__multi_product_reward +msgid "Multi Product" +msgstr "Produkt uniwersalny" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"No card found for this loyalty program and no points will be given with this" +" order." +msgstr "" +"Nie znaleziono karty dla tego programu lojalnościowego i żadne punkty nie " +"zostaną przyznane przy tym zamówieniu." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "No reward selected." +msgstr "Nie wybrano nagrody." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "No rewards available for this customer!" +msgstr "Brak dostępnych nagród dla tego klienta!" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "One or more rewards on the sale order is invalid. Please check them." +msgstr "" +"Jedna lub więcej nagród w zamówieniu sprzedaży jest nieważna. Sprawdź je." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__order_id +msgid "Order" +msgstr "Zamówienie" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__order_count +msgid "Order Count" +msgstr "Liczba zamówień" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_card__order_id +msgid "Order Reference" +msgstr "Numer" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__points +msgid "Points" +msgstr "Punkty" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__points_cost +msgid "Points Cost" +msgstr "Koszt punktowy" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Promotions" +msgstr "Promocje" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_ids +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_id +msgid "Reward" +msgstr "Nagroda" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__reward_amount +msgid "Reward Amount" +msgstr "Kwota nagrody" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "Reward Identifier Code" +msgstr "Kod identyfikatora nagrody" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "Reward Products" +msgstr "Produkty premiowane" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_coupon_wizard +msgid "Sale Loyalty - Apply Coupon Wizard" +msgstr "Sprzedaż lojalnościowa - Zastosuj kreator kuponów" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_reward_wizard +msgid "Sale Loyalty - Reward Selection Wizard" +msgstr "Sprzedaż lojalnościowa - Kreator wyboru nagrody" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_coupon_points +msgid "" +"Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon" +msgstr "" +"Punkty kuponów zamówień sprzedaży - śledzi, w jaki sposób zlecenie sprzedaży" +" wpływa na kupon." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__sale_ok +msgid "Sales" +msgstr "Sprzedaż" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order +msgid "Sales Order" +msgstr "Zamówienie sprzedaży" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_line +msgid "Sales Order Line" +msgstr "Pozycja zamówienia sprzedaży" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_product_id +msgid "Selected Product" +msgstr "Wybrany produkt" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_reward_id +msgid "Selected Reward" +msgstr "Wybrana nagroda" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "TEMPORARY DISCOUNT LINE" +msgstr "TYMCZASOWA LINIA RABATOWA" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "" +"Technical field used to link multiple reward lines from the same reward " +"together." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon can only be claimed on future orders." +msgstr "Kupon można wykorzystać tylko w przypadku przyszłych zamówień." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon does not have enough points for the selected reward." +msgstr "Kupon nie zawiera wystarczającej liczby punktów dla wybranej nagrody." + +#. module: sale_loyalty +#: model:ir.model.constraint,message:sale_loyalty.constraint_sale_order_coupon_points_order_coupon_unique +msgid "The coupon points entry already exists." +msgstr "Wpis punktów kuponu już istnieje." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The program is not available for this order." +msgstr "Program nie jest dostępny dla tego zamówienia." + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_loyalty_card__order_id +msgid "The sales order from which coupon is generated" +msgstr "Zamówienie sprzedaży, z którego generowany jest kupon" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "There is nothing to discount" +msgstr "Nie ma nic do przecenienia" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "These are the products that can be claimed with this rule." +msgstr "Oto produkty, które mogą być objęte tą zasadą." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is expired (%s)." +msgstr "Ten kod wygasł (%s)." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is invalid (%s)." +msgstr "Ten kod jest nieprawidłowy (%s)." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon has already been used." +msgstr "Ten kupon został już wykorzystany." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon is expired." +msgstr "Ten kupon wygasł." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is already applied to this order." +msgstr "Ten program został już zastosowany do tego zamówienia." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is not available for public users." +msgstr "Ten program nie jest dostępny dla użytkowników publicznych." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program requires a code to be applied." +msgstr "Ten program wymaga podania kodu." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This promo code is already applied." +msgstr "Ten kod promocyjny został już zastosowany." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Update current promotional lines and select new rewards if applicable." +msgstr "" +"Zaktualizuj bieżące linie promocyjne i wybierz nowe nagrody, jeśli dotyczy." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "You don't have the required product quantities on your sales order." +msgstr "Na zamówieniu sprzedaży nie ma wymaganych ilości produktów." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "" +"You will find below your gift cards code. An email has been sent with it. " +"You can use it starting right now." +msgstr "" +"Poniżej znajdziesz kod karty podarunkowej. Został on wysłany w wiadomości " +"e-mail. Możesz go użyć już teraz." diff --git a/i18n/pt.po b/i18n/pt.po new file mode 100644 index 0000000..994e88f --- /dev/null +++ b/i18n/pt.po @@ -0,0 +1,504 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_loyalty +# +# Translators: +# Wil Odoo, 2023 +# Rita Bastos, 2024 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-26 21:55+0000\n" +"PO-Revision-Date: 2023-10-26 23:09+0000\n" +"Last-Translator: Rita Bastos, 2024\n" +"Language-Team: Portuguese (https://app.transifex.com/odoo/teams/41243/pt/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: pt\n" +"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid " - On product with the following taxes: %(taxes)s" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid " Copy" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "A better global discount is already applied." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"A minimum of %(amount)s %(currency)s should be purchased to get the reward" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Apply" +msgstr "Aplicar" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_reward_wizard_action +msgid "Available Rewards" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose a product:" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose your reward:" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Code:" +msgstr "Código:" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__coupon_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__coupon_id +msgid "Coupon" +msgstr "Cupão" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__coupon_code +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Coupon Code" +msgstr "Código do Coupon" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__coupon_point_ids +msgid "Coupon Point" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "Coupon not found while trying to add the following reward: %s" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Coupons & Loyalty" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_uid +msgid "Created by" +msgstr "Criado por" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_date +msgid "Created on" +msgstr "Criado em" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Discard" +msgstr "Descartar" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_discount_loyalty_type_config +msgid "Discount & Loyalty" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Discount: %(desc)s%(tax_str)s" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__display_name +msgid "Display Name" +msgstr "Nome" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_coupon_wizard_action +msgid "Enter Promotion or Coupon Code" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Expired Date:" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Free Product - %(product)s" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift #" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift Card Code" +msgstr "" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_gift_ewallet_type_config +msgid "Gift cards & eWallet" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__points_cost +msgid "How much point this reward costs on the loyalty card." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__id +msgid "ID" +msgstr "ID" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Invalid product to claim." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_coupon_wizard.py:0 +#, python-format +msgid "Invalid sales order." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__is_reward_line +msgid "Is a program reward line" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_uid +msgid "Last Updated by" +msgstr "Última Atualização por" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_date +msgid "Last Updated on" +msgstr "Última Atualização em" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_card +msgid "Loyalty Coupon" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_program +msgid "Loyalty Program" +msgstr "Programa de Fidelização" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_reward +msgid "Loyalty Reward" +msgstr "Prémio de Fidelização" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__applied_coupon_ids +msgid "Manually Applied Coupons" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__code_enabled_rule_ids +msgid "Manually Triggered Rules" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__multi_product_reward +msgid "Multi Product" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"No card found for this loyalty program and no points will be given with this" +" order." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "No reward selected." +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "No rewards available for this customer!" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "One or more rewards on the sale order is invalid. Please check them." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__order_id +msgid "Order" +msgstr "Ordem" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__order_count +msgid "Order Count" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_card__order_id +msgid "Order Reference" +msgstr "Referência da Encomenda" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__points +msgid "Points" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__points_cost +msgid "Points Cost" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Promotions" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_ids +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_id +msgid "Reward" +msgstr "Prémio" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__reward_amount +msgid "Reward Amount" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "Reward Identifier Code" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "Reward Products" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_coupon_wizard +msgid "Sale Loyalty - Apply Coupon Wizard" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_reward_wizard +msgid "Sale Loyalty - Reward Selection Wizard" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_coupon_points +msgid "" +"Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__sale_ok +msgid "Sales" +msgstr "Vendas" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order +msgid "Sales Order" +msgstr "Ordem de Vendas" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_line +msgid "Sales Order Line" +msgstr "Linhas da Ordem de Vendas" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_product_id +msgid "Selected Product" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_reward_id +msgid "Selected Reward" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "TEMPORARY DISCOUNT LINE" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "" +"Technical field used to link multiple reward lines from the same reward " +"together." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon can only be claimed on future orders." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon does not have enough points for the selected reward." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.constraint,message:sale_loyalty.constraint_sale_order_coupon_points_order_coupon_unique +msgid "The coupon points entry already exists." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The program is not available for this order." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_loyalty_card__order_id +msgid "The sales order from which coupon is generated" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "There is nothing to discount" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "These are the products that can be claimed with this rule." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is expired (%s)." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is invalid (%s)." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon has already been used." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon is expired." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is already applied to this order." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is not available for public users." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program requires a code to be applied." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This promo code is already applied." +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Update current promotional lines and select new rewards if applicable." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "You don't have the required product quantities on your sales order." +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "" +"You will find below your gift cards code. An email has been sent with it. " +"You can use it starting right now." +msgstr "" diff --git a/i18n/pt_BR.po b/i18n/pt_BR.po new file mode 100644 index 0000000..c5c8c7b --- /dev/null +++ b/i18n/pt_BR.po @@ -0,0 +1,518 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_loyalty +# +# Translators: +# Wil Odoo, 2023 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-26 21:55+0000\n" +"PO-Revision-Date: 2023-10-26 23:09+0000\n" +"Last-Translator: Wil Odoo, 2023\n" +"Language-Team: Portuguese (Brazil) (https://app.transifex.com/odoo/teams/41243/pt_BR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid " - On product with the following taxes: %(taxes)s" +msgstr " - No produto com os seguintes impostos: %(taxes)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid " Copy" +msgstr " Cópia" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "A better global discount is already applied." +msgstr "Já foi aplicado um desconto global melhor." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"A minimum of %(amount)s %(currency)s should be purchased to get the reward" +msgstr "" +"Um mínimo de %(amount)s %(currency)s deve ser comprado para obter a " +"recompensa" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Apply" +msgstr "Aplicar" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_reward_wizard_action +msgid "Available Rewards" +msgstr "Recompensas disponíveis" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose a product:" +msgstr "Escolha um produto:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose your reward:" +msgstr "Escolha a sua recompensa:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Code:" +msgstr "Código:" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__coupon_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__coupon_id +msgid "Coupon" +msgstr "Cupom" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__coupon_code +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Coupon Code" +msgstr "Código do cupom" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__coupon_point_ids +msgid "Coupon Point" +msgstr "Ponto de cupom" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "Coupon not found while trying to add the following reward: %s" +msgstr "Cupom não encontrado ao tentar adicionar a seguinte recompensa: %s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Coupons & Loyalty" +msgstr "Cupons e fidelidade" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_uid +msgid "Created by" +msgstr "Criado por" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_date +msgid "Created on" +msgstr "Criado em" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Discard" +msgstr "Cancelar" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_discount_loyalty_type_config +msgid "Discount & Loyalty" +msgstr "Desconto e fidelidade" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Discount: %(desc)s%(tax_str)s" +msgstr "Desconto: %(desc)s%(tax_str)s" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__display_name +msgid "Display Name" +msgstr "Nome exibido" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_coupon_wizard_action +msgid "Enter Promotion or Coupon Code" +msgstr "Insira a promoção ou o código do cupom" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Expired Date:" +msgstr "Data de expiração:" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Free Product - %(product)s" +msgstr " Produto grátis - %(product)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift #" +msgstr "Presente nº" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift Card Code" +msgstr "Código do vale-presente" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_gift_ewallet_type_config +msgid "Gift cards & eWallet" +msgstr "Cartões-presente e carteira digital" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__points_cost +msgid "How much point this reward costs on the loyalty card." +msgstr "Quantos pontos essa recompensa custa no cartão de fidelidade." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__id +msgid "ID" +msgstr "ID" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Invalid product to claim." +msgstr "Produto inválido para reivindicação." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_coupon_wizard.py:0 +#, python-format +msgid "Invalid sales order." +msgstr "Pedido de venda inválido." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__is_reward_line +msgid "Is a program reward line" +msgstr "É uma linha de recompensa do programa" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_uid +msgid "Last Updated by" +msgstr "Última atualização por" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_date +msgid "Last Updated on" +msgstr "Última atualização em" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_card +msgid "Loyalty Coupon" +msgstr "Cupom de fidelidade" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_program +msgid "Loyalty Program" +msgstr "Programa de fidelidade" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_reward +msgid "Loyalty Reward" +msgstr "Recompensa de fidelidade" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__applied_coupon_ids +msgid "Manually Applied Coupons" +msgstr "Cupons aplicados manualmente" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__code_enabled_rule_ids +msgid "Manually Triggered Rules" +msgstr "Regras acionadas manualmente" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__multi_product_reward +msgid "Multi Product" +msgstr "Multiproduto" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"No card found for this loyalty program and no points will be given with this" +" order." +msgstr "" +"Nenhum cartão foi encontrado para esse programa de fidelidade e nenhum ponto" +" será fornecido com esse pedido." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "No reward selected." +msgstr "Nenhuma recompensa selecionada." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "No rewards available for this customer!" +msgstr "Não há recompensas disponíveis para esse cliente." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "One or more rewards on the sale order is invalid. Please check them." +msgstr "" +"Uma ou mais recompensas no pedido de venda são inválidas. Por favor, " +"verifique-as." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__order_id +msgid "Order" +msgstr "Pedido" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__order_count +msgid "Order Count" +msgstr "Contagem de pedidos" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_card__order_id +msgid "Order Reference" +msgstr "Referência do pedido" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__points +msgid "Points" +msgstr "Pontos" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__points_cost +msgid "Points Cost" +msgstr "Custo de pontos" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Promotions" +msgstr "Promoções" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_ids +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_id +msgid "Reward" +msgstr "Recompensa" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__reward_amount +msgid "Reward Amount" +msgstr "Valor da recompensa" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "Reward Identifier Code" +msgstr "Código de identificação da recompensa" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "Reward Products" +msgstr "Produto de recompensa" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_coupon_wizard +msgid "Sale Loyalty - Apply Coupon Wizard" +msgstr "Assistente de fidelidade de vendas - aplicação de cupom" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_reward_wizard +msgid "Sale Loyalty - Reward Selection Wizard" +msgstr "Assistente de fidelidade de vendas - seleção de recompensa" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_coupon_points +msgid "" +"Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon" +msgstr "" +"Pontos de cupom de pedido de venda - Mantém o controle de como um pedido de " +"venda afeta um cupom" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__sale_ok +msgid "Sales" +msgstr "Vendas" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order +msgid "Sales Order" +msgstr "Pedido de venda" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_line +msgid "Sales Order Line" +msgstr "Linha do pedido de venda" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_product_id +msgid "Selected Product" +msgstr "Produto selecionado" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_reward_id +msgid "Selected Reward" +msgstr "Recompensa selecionada" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "TEMPORARY DISCOUNT LINE" +msgstr "LINHA DE DESCONTO TEMPORÁRIA" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "" +"Technical field used to link multiple reward lines from the same reward " +"together." +msgstr "" +"Campo técnico usado para vincular várias linhas de recompensa da mesma " +"recompensa." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon can only be claimed on future orders." +msgstr "O cupom só pode ser utilizado em pedidos futuros." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon does not have enough points for the selected reward." +msgstr "O cupom não tem pontos suficientes para a recompensa selecionada." + +#. module: sale_loyalty +#: model:ir.model.constraint,message:sale_loyalty.constraint_sale_order_coupon_points_order_coupon_unique +msgid "The coupon points entry already exists." +msgstr "A entrada de pontos de cupom já existe." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The program is not available for this order." +msgstr "O programa não está disponível para esse pedido." + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_loyalty_card__order_id +msgid "The sales order from which coupon is generated" +msgstr "O pedido de venda a partir do qual o cupom é gerado" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "There is nothing to discount" +msgstr "Não há nada para descontar" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "These are the products that can be claimed with this rule." +msgstr "Esses são os produtos que podem ser reivindicados com essa regra." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is expired (%s)." +msgstr "Esse código expirou (%s)." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is invalid (%s)." +msgstr "Este cupom é inválido (%s)." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon has already been used." +msgstr "Esse cupom já foi usado." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon is expired." +msgstr "Esse cupom expirou." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is already applied to this order." +msgstr "Esse programa já está aplicado a esse pedido." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is not available for public users." +msgstr "Esse programa não está disponível para usuários públicos." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program requires a code to be applied." +msgstr "Esse programa exige a aplicação de um código." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This promo code is already applied." +msgstr "Este código promocional já foi aplicado." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Update current promotional lines and select new rewards if applicable." +msgstr "" +"Atualize as linhas promocionais atuais e selecione novas recompensas, se " +"aplicável." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "You don't have the required product quantities on your sales order." +msgstr "" +"Você não tem as quantidades necessárias de produto em seu pedido de venda." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "" +"You will find below your gift cards code. An email has been sent with it. " +"You can use it starting right now." +msgstr "" +"Você encontrará abaixo o código do seu cartão-presente. Um e-mail foi " +"enviado com ele. Você pode usá-lo a partir de agora." diff --git a/i18n/ru.po b/i18n/ru.po new file mode 100644 index 0000000..35c37a4 --- /dev/null +++ b/i18n/ru.po @@ -0,0 +1,523 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_loyalty +# +# Translators: +# Vasiliy Korobatov , 2023 +# Alena Vlasova, 2023 +# ILMIR , 2023 +# Martin Trigaux, 2023 +# Константин Коровин , 2023 +# Сергей Шебанин , 2023 +# Wil Odoo, 2024 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-26 21:55+0000\n" +"PO-Revision-Date: 2023-10-26 23:09+0000\n" +"Last-Translator: Wil Odoo, 2024\n" +"Language-Team: Russian (https://app.transifex.com/odoo/teams/41243/ru/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: ru\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid " - On product with the following taxes: %(taxes)s" +msgstr " - На товар со следующими налогами: %(taxes)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid " Copy" +msgstr " Копировать" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "A better global discount is already applied." +msgstr "Лучшая глобальная скидка уже применена." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"A minimum of %(amount)s %(currency)s should be purchased to get the reward" +msgstr "" +"Для получения награды необходимо приобрести минимум %(amount)s %(currency)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Apply" +msgstr "Применить" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_reward_wizard_action +msgid "Available Rewards" +msgstr "Доступные награды" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose a product:" +msgstr "Выберите продукт:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose your reward:" +msgstr "Выберите награду:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Code:" +msgstr "Код:" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__coupon_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__coupon_id +msgid "Coupon" +msgstr "Купон" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__coupon_code +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Coupon Code" +msgstr "Код купона" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__coupon_point_ids +msgid "Coupon Point" +msgstr "Пункт выдачи купонов" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "Coupon not found while trying to add the following reward: %s" +msgstr "Купон не найден при попытке добавить следующее вознаграждение: %s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Coupons & Loyalty" +msgstr "Купоны и лояльность" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_uid +msgid "Created by" +msgstr "Создано" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_date +msgid "Created on" +msgstr "Создано" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Discard" +msgstr "Отменить" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_discount_loyalty_type_config +msgid "Discount & Loyalty" +msgstr "Скидки и лояльность" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Discount: %(desc)s%(tax_str)s" +msgstr "Скидка: %(desc)s%(tax_str)s" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__display_name +msgid "Display Name" +msgstr "Отображаемое имя" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_coupon_wizard_action +msgid "Enter Promotion or Coupon Code" +msgstr "Введите промокод или код купона" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Expired Date:" +msgstr "Дата истечения срока действия:" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Free Product - %(product)s" +msgstr "Бесплатный продукт - %(product)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift #" +msgstr "Подарок" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift Card Code" +msgstr "Код подарочной карты" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_gift_ewallet_type_config +msgid "Gift cards & eWallet" +msgstr "Подарочные карты и электронный кошелек" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__points_cost +msgid "How much point this reward costs on the loyalty card." +msgstr "Сколько баллов стоит это вознаграждение на карте лояльности." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__id +msgid "ID" +msgstr "ID" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Invalid product to claim." +msgstr "Недействительный продукт для заявления." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_coupon_wizard.py:0 +#, python-format +msgid "Invalid sales order." +msgstr "Недействительный заказ на продажу." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__is_reward_line +msgid "Is a program reward line" +msgstr "Является ли программа линией вознаграждения" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_uid +msgid "Last Updated by" +msgstr "Последнее обновление" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_date +msgid "Last Updated on" +msgstr "Последнее обновление" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_card +msgid "Loyalty Coupon" +msgstr "Купон лояльности" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_program +msgid "Loyalty Program" +msgstr "Программа лояльности" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_reward +msgid "Loyalty Reward" +msgstr "Вознаграждение за лояльность" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__applied_coupon_ids +msgid "Manually Applied Coupons" +msgstr "Купоны, применяемые вручную" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__code_enabled_rule_ids +msgid "Manually Triggered Rules" +msgstr "Правила, запускаемые вручную" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__multi_product_reward +msgid "Multi Product" +msgstr "Мультипродукт" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"No card found for this loyalty program and no points will be given with this" +" order." +msgstr "" +"Не найдено ни одной карты для этой программы лояльности, и баллы не будут " +"начислены за этот заказ." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "No reward selected." +msgstr "Награда не выбрана." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "No rewards available for this customer!" +msgstr "Для этого клиента не предусмотрено никаких вознаграждений!" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "One or more rewards on the sale order is invalid. Please check them." +msgstr "" +"Одно или несколько вознаграждений в заказе на продажу недействительны. " +"Пожалуйста, проверьте их." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__order_id +msgid "Order" +msgstr "Заказ" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__order_count +msgid "Order Count" +msgstr "Кол-во заказов" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_card__order_id +msgid "Order Reference" +msgstr "Ссылка на заказ" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__points +msgid "Points" +msgstr "Баллы" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__points_cost +msgid "Points Cost" +msgstr "Стоимость очков" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Promotions" +msgstr "Акции" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_ids +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_id +msgid "Reward" +msgstr "Награда" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__reward_amount +msgid "Reward Amount" +msgstr "Сумма вознаграждения" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "Reward Identifier Code" +msgstr "Код идентификатора вознаграждения" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "Reward Products" +msgstr "Наградная продукция" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_coupon_wizard +msgid "Sale Loyalty - Apply Coupon Wizard" +msgstr "Лояльность к продажам - Применить мастер купонов" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_reward_wizard +msgid "Sale Loyalty - Reward Selection Wizard" +msgstr "Лояльность продаж - мастер выбора вознаграждения" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_coupon_points +msgid "" +"Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon" +msgstr "" +"Пункты купонов заказов на продажу - отслеживает, как заказы на продажу " +"влияют на купоны" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__sale_ok +msgid "Sales" +msgstr "Продажи" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order +msgid "Sales Order" +msgstr "Заказ на продажу" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_line +msgid "Sales Order Line" +msgstr "Позиция заказа на продажу" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_product_id +msgid "Selected Product" +msgstr "Выбранный Продукт" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_reward_id +msgid "Selected Reward" +msgstr "Выбранный взнос" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "TEMPORARY DISCOUNT LINE" +msgstr "ВРЕМЕННАЯ ЛИНИЯ СКИДОК" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "" +"Technical field used to link multiple reward lines from the same reward " +"together." +msgstr "" +"Техническое поле, используемое для соединения нескольких линий " +"вознаграждения из одного вознаграждения." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon can only be claimed on future orders." +msgstr "Купон может быть использован только при последующих заказах." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon does not have enough points for the selected reward." +msgstr "В купоне недостаточно баллов для выбранного вознаграждения." + +#. module: sale_loyalty +#: model:ir.model.constraint,message:sale_loyalty.constraint_sale_order_coupon_points_order_coupon_unique +msgid "The coupon points entry already exists." +msgstr "Запись о купонных пунктах уже существует." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The program is not available for this order." +msgstr "Программа недоступна для этого заказа." + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_loyalty_card__order_id +msgid "The sales order from which coupon is generated" +msgstr "Заказ на продажу, на основании которого генерируется купон" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "There is nothing to discount" +msgstr "Нечего сбрасывать со счетов" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "These are the products that can be claimed with this rule." +msgstr "" +"Вот продукты, которые могут быть заявлены в соответствии с этим правилом." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is expired (%s)." +msgstr "Срок действия этого кода истек (%s)." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is invalid (%s)." +msgstr "Этот код недействителен (%s)." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon has already been used." +msgstr "Этот купон уже был использован." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon is expired." +msgstr "Срок действия этого купона истек." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is already applied to this order." +msgstr "Эта программа уже применена к данному заказу." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is not available for public users." +msgstr "Эта программа недоступна для публичных пользователей." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program requires a code to be applied." +msgstr "Для применения этой программы требуется код." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This promo code is already applied." +msgstr "Этот промокод уже применен." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Update current promotional lines and select new rewards if applicable." +msgstr "" +"Обновите текущие рекламные линии и выберите новые вознаграждения, если это " +"необходимо." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "You don't have the required product quantities on your sales order." +msgstr "В заказе на продажу не указано необходимое количество товара." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "" +"You will find below your gift cards code. An email has been sent with it. " +"You can use it starting right now." +msgstr "" +"Ниже вы найдете код вашей подарочной карты. Он был отправлен по электронной " +"почте. Вы можете использовать его прямо сейчас." diff --git a/i18n/sale_loyalty.pot b/i18n/sale_loyalty.pot new file mode 100644 index 0000000..84f77ef --- /dev/null +++ b/i18n/sale_loyalty.pot @@ -0,0 +1,499 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_loyalty +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-26 21:55+0000\n" +"PO-Revision-Date: 2023-10-26 21:55+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid " - On product with the following taxes: %(taxes)s" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid " Copy" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "A better global discount is already applied." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"A minimum of %(amount)s %(currency)s should be purchased to get the reward" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Apply" +msgstr "" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_reward_wizard_action +msgid "Available Rewards" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose a product:" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose your reward:" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Code:" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__coupon_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__coupon_id +msgid "Coupon" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__coupon_code +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Coupon Code" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__coupon_point_ids +msgid "Coupon Point" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "Coupon not found while trying to add the following reward: %s" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Coupons & Loyalty" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_uid +msgid "Created by" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_date +msgid "Created on" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Discard" +msgstr "" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_discount_loyalty_type_config +msgid "Discount & Loyalty" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Discount: %(desc)s%(tax_str)s" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__display_name +msgid "Display Name" +msgstr "" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_coupon_wizard_action +msgid "Enter Promotion or Coupon Code" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Expired Date:" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Free Product - %(product)s" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift #" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift Card Code" +msgstr "" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_gift_ewallet_type_config +msgid "Gift cards & eWallet" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__points_cost +msgid "How much point this reward costs on the loyalty card." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__id +msgid "ID" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Invalid product to claim." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_coupon_wizard.py:0 +#, python-format +msgid "Invalid sales order." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__is_reward_line +msgid "Is a program reward line" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_date +msgid "Last Updated on" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_card +msgid "Loyalty Coupon" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_program +msgid "Loyalty Program" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_reward +msgid "Loyalty Reward" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__applied_coupon_ids +msgid "Manually Applied Coupons" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__code_enabled_rule_ids +msgid "Manually Triggered Rules" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__multi_product_reward +msgid "Multi Product" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"No card found for this loyalty program and no points will be given with this" +" order." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "No reward selected." +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "No rewards available for this customer!" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "One or more rewards on the sale order is invalid. Please check them." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__order_id +msgid "Order" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__order_count +msgid "Order Count" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_card__order_id +msgid "Order Reference" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__points +msgid "Points" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__points_cost +msgid "Points Cost" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Promotions" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_ids +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_id +msgid "Reward" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__reward_amount +msgid "Reward Amount" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "Reward Identifier Code" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "Reward Products" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_coupon_wizard +msgid "Sale Loyalty - Apply Coupon Wizard" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_reward_wizard +msgid "Sale Loyalty - Reward Selection Wizard" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_coupon_points +msgid "" +"Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__sale_ok +msgid "Sales" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order +msgid "Sales Order" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_product_id +msgid "Selected Product" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_reward_id +msgid "Selected Reward" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "TEMPORARY DISCOUNT LINE" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "" +"Technical field used to link multiple reward lines from the same reward " +"together." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon can only be claimed on future orders." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon does not have enough points for the selected reward." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.constraint,message:sale_loyalty.constraint_sale_order_coupon_points_order_coupon_unique +msgid "The coupon points entry already exists." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The program is not available for this order." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_loyalty_card__order_id +msgid "The sales order from which coupon is generated" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "There is nothing to discount" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "These are the products that can be claimed with this rule." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is expired (%s)." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is invalid (%s)." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon has already been used." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon is expired." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is already applied to this order." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is not available for public users." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program requires a code to be applied." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This promo code is already applied." +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Update current promotional lines and select new rewards if applicable." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "You don't have the required product quantities on your sales order." +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "" +"You will find below your gift cards code. An email has been sent with it. " +"You can use it starting right now." +msgstr "" diff --git a/i18n/sk.po b/i18n/sk.po new file mode 100644 index 0000000..5cbb6e5 --- /dev/null +++ b/i18n/sk.po @@ -0,0 +1,503 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_loyalty +# +# Translators: +# Wil Odoo, 2023 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-26 21:55+0000\n" +"PO-Revision-Date: 2023-10-26 23:09+0000\n" +"Last-Translator: Wil Odoo, 2023\n" +"Language-Team: Slovak (https://app.transifex.com/odoo/teams/41243/sk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: sk\n" +"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\n" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid " - On product with the following taxes: %(taxes)s" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid " Copy" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "A better global discount is already applied." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"A minimum of %(amount)s %(currency)s should be purchased to get the reward" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Apply" +msgstr "Použiť" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_reward_wizard_action +msgid "Available Rewards" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose a product:" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose your reward:" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Code:" +msgstr "Kód:" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__coupon_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__coupon_id +msgid "Coupon" +msgstr "Kupón" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__coupon_code +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Coupon Code" +msgstr "Kód kupónu" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__coupon_point_ids +msgid "Coupon Point" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "Coupon not found while trying to add the following reward: %s" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Coupons & Loyalty" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_uid +msgid "Created by" +msgstr "Vytvoril" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_date +msgid "Created on" +msgstr "Vytvorené" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Discard" +msgstr "Zrušiť" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_discount_loyalty_type_config +msgid "Discount & Loyalty" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Discount: %(desc)s%(tax_str)s" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__display_name +msgid "Display Name" +msgstr "Zobrazovaný názov" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_coupon_wizard_action +msgid "Enter Promotion or Coupon Code" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Expired Date:" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Free Product - %(product)s" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift #" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift Card Code" +msgstr "" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_gift_ewallet_type_config +msgid "Gift cards & eWallet" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__points_cost +msgid "How much point this reward costs on the loyalty card." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__id +msgid "ID" +msgstr "ID" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Invalid product to claim." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_coupon_wizard.py:0 +#, python-format +msgid "Invalid sales order." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__is_reward_line +msgid "Is a program reward line" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_uid +msgid "Last Updated by" +msgstr "Naposledy upravoval" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_date +msgid "Last Updated on" +msgstr "Naposledy upravované" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_card +msgid "Loyalty Coupon" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_program +msgid "Loyalty Program" +msgstr "Vernostný program" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_reward +msgid "Loyalty Reward" +msgstr "Vernostná odmena" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__applied_coupon_ids +msgid "Manually Applied Coupons" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__code_enabled_rule_ids +msgid "Manually Triggered Rules" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__multi_product_reward +msgid "Multi Product" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"No card found for this loyalty program and no points will be given with this" +" order." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "No reward selected." +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "No rewards available for this customer!" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "One or more rewards on the sale order is invalid. Please check them." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__order_id +msgid "Order" +msgstr "Poradie" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__order_count +msgid "Order Count" +msgstr "Počet objednávok" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_card__order_id +msgid "Order Reference" +msgstr "Referencia objednávky" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__points +msgid "Points" +msgstr "Body" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__points_cost +msgid "Points Cost" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Promotions" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_ids +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_id +msgid "Reward" +msgstr "Odmena" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__reward_amount +msgid "Reward Amount" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "Reward Identifier Code" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "Reward Products" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_coupon_wizard +msgid "Sale Loyalty - Apply Coupon Wizard" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_reward_wizard +msgid "Sale Loyalty - Reward Selection Wizard" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_coupon_points +msgid "" +"Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__sale_ok +msgid "Sales" +msgstr "Predaj" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order +msgid "Sales Order" +msgstr "Objednávka " + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_line +msgid "Sales Order Line" +msgstr "Položka objednávok" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_product_id +msgid "Selected Product" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_reward_id +msgid "Selected Reward" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "TEMPORARY DISCOUNT LINE" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "" +"Technical field used to link multiple reward lines from the same reward " +"together." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon can only be claimed on future orders." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon does not have enough points for the selected reward." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.constraint,message:sale_loyalty.constraint_sale_order_coupon_points_order_coupon_unique +msgid "The coupon points entry already exists." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The program is not available for this order." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_loyalty_card__order_id +msgid "The sales order from which coupon is generated" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "There is nothing to discount" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "These are the products that can be claimed with this rule." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is expired (%s)." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is invalid (%s)." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon has already been used." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon is expired." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is already applied to this order." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is not available for public users." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program requires a code to be applied." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This promo code is already applied." +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Update current promotional lines and select new rewards if applicable." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "You don't have the required product quantities on your sales order." +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "" +"You will find below your gift cards code. An email has been sent with it. " +"You can use it starting right now." +msgstr "" diff --git a/i18n/sl.po b/i18n/sl.po new file mode 100644 index 0000000..64ce9d7 --- /dev/null +++ b/i18n/sl.po @@ -0,0 +1,511 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_loyalty +# +# Translators: +# matjaz k , 2023 +# laznikd , 2023 +# Tadej Lupšina , 2023 +# Matjaz Mozetic , 2023 +# Grega Vavtar , 2023 +# jl2035 , 2023 +# Martin Trigaux, 2023 +# Tomaž Jug , 2023 +# Katja Deržič, 2024 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-26 21:55+0000\n" +"PO-Revision-Date: 2023-10-26 23:09+0000\n" +"Last-Translator: Katja Deržič, 2024\n" +"Language-Team: Slovenian (https://app.transifex.com/odoo/teams/41243/sl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: sl\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid " - On product with the following taxes: %(taxes)s" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid " Copy" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "A better global discount is already applied." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"A minimum of %(amount)s %(currency)s should be purchased to get the reward" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Apply" +msgstr "Uporabi" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_reward_wizard_action +msgid "Available Rewards" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose a product:" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose your reward:" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Code:" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__coupon_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__coupon_id +msgid "Coupon" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__coupon_code +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Coupon Code" +msgstr "Koda kupona" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__coupon_point_ids +msgid "Coupon Point" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "Coupon not found while trying to add the following reward: %s" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Coupons & Loyalty" +msgstr "Kuponi in zvestoba" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_uid +msgid "Created by" +msgstr "Ustvaril" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_date +msgid "Created on" +msgstr "Ustvarjeno" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Discard" +msgstr "Opusti" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_discount_loyalty_type_config +msgid "Discount & Loyalty" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Discount: %(desc)s%(tax_str)s" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__display_name +msgid "Display Name" +msgstr "Prikazani naziv" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_coupon_wizard_action +msgid "Enter Promotion or Coupon Code" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Expired Date:" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Free Product - %(product)s" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift #" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift Card Code" +msgstr "" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_gift_ewallet_type_config +msgid "Gift cards & eWallet" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__points_cost +msgid "How much point this reward costs on the loyalty card." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__id +msgid "ID" +msgstr "ID" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Invalid product to claim." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_coupon_wizard.py:0 +#, python-format +msgid "Invalid sales order." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__is_reward_line +msgid "Is a program reward line" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_uid +msgid "Last Updated by" +msgstr "Zadnji posodobil" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_date +msgid "Last Updated on" +msgstr "Zadnjič posodobljeno" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_card +msgid "Loyalty Coupon" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_program +msgid "Loyalty Program" +msgstr "Program zvestobe" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_reward +msgid "Loyalty Reward" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__applied_coupon_ids +msgid "Manually Applied Coupons" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__code_enabled_rule_ids +msgid "Manually Triggered Rules" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__multi_product_reward +msgid "Multi Product" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"No card found for this loyalty program and no points will be given with this" +" order." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "No reward selected." +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "No rewards available for this customer!" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "One or more rewards on the sale order is invalid. Please check them." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__order_id +msgid "Order" +msgstr "Naroči" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__order_count +msgid "Order Count" +msgstr "Število naročil" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_card__order_id +msgid "Order Reference" +msgstr "Sklic naročila" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__points +msgid "Points" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__points_cost +msgid "Points Cost" +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Promotions" +msgstr "Promocije" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_ids +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_id +msgid "Reward" +msgstr "Nagrajevanje" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__reward_amount +msgid "Reward Amount" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "Reward Identifier Code" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "Reward Products" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_coupon_wizard +msgid "Sale Loyalty - Apply Coupon Wizard" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_reward_wizard +msgid "Sale Loyalty - Reward Selection Wizard" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_coupon_points +msgid "" +"Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__sale_ok +msgid "Sales" +msgstr "Prodaja" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order +msgid "Sales Order" +msgstr "Prodajni nalog" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_line +msgid "Sales Order Line" +msgstr "Postavka naročila" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_product_id +msgid "Selected Product" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_reward_id +msgid "Selected Reward" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "TEMPORARY DISCOUNT LINE" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "" +"Technical field used to link multiple reward lines from the same reward " +"together." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon can only be claimed on future orders." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon does not have enough points for the selected reward." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.constraint,message:sale_loyalty.constraint_sale_order_coupon_points_order_coupon_unique +msgid "The coupon points entry already exists." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The program is not available for this order." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_loyalty_card__order_id +msgid "The sales order from which coupon is generated" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "There is nothing to discount" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "These are the products that can be claimed with this rule." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is expired (%s)." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is invalid (%s)." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon has already been used." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon is expired." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is already applied to this order." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is not available for public users." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program requires a code to be applied." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This promo code is already applied." +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Update current promotional lines and select new rewards if applicable." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "You don't have the required product quantities on your sales order." +msgstr "" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "" +"You will find below your gift cards code. An email has been sent with it. " +"You can use it starting right now." +msgstr "" diff --git a/i18n/sr.po b/i18n/sr.po new file mode 100644 index 0000000..5bcaef2 --- /dev/null +++ b/i18n/sr.po @@ -0,0 +1,513 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_loyalty +# +# Translators: +# Dragan Vukosavljevic , 2023 +# Martin Trigaux, 2023 +# Milan Bojovic , 2023 +# コフスタジオ, 2024 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-26 21:55+0000\n" +"PO-Revision-Date: 2023-10-26 23:09+0000\n" +"Last-Translator: コフスタジオ, 2024\n" +"Language-Team: Serbian (https://app.transifex.com/odoo/teams/41243/sr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: sr\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: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid " - On product with the following taxes: %(taxes)s" +msgstr " - On product with the following taxes: %(taxes)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid " Copy" +msgstr " Copy" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "A better global discount is already applied." +msgstr "A better global discount is already applied." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"A minimum of %(amount)s %(currency)s should be purchased to get the reward" +msgstr "" +"A minimum of %(amount)s %(currency)s should be purchased to get the reward" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Apply" +msgstr "Primeni" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_reward_wizard_action +msgid "Available Rewards" +msgstr "Available Rewards" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose a product:" +msgstr "Choose a product:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose your reward:" +msgstr "Choose your reward:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Code:" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__coupon_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__coupon_id +msgid "Coupon" +msgstr "Kupon" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__coupon_code +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Coupon Code" +msgstr "Coupon Code" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__coupon_point_ids +msgid "Coupon Point" +msgstr "Coupon Point" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "Coupon not found while trying to add the following reward: %s" +msgstr "Coupon not found while trying to add the following reward: %s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Coupons & Loyalty" +msgstr "Coupons & Loyalty" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_uid +msgid "Created by" +msgstr "Kreirao" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_date +msgid "Created on" +msgstr "Kreirano" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Discard" +msgstr "Poništi" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_discount_loyalty_type_config +msgid "Discount & Loyalty" +msgstr "Discount & Loyalty" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Discount: %(desc)s%(tax_str)s" +msgstr "Discount: %(desc)s%(tax_str)s" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__display_name +msgid "Display Name" +msgstr "Naziv za prikaz" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_coupon_wizard_action +msgid "Enter Promotion or Coupon Code" +msgstr "Enter Promotion or Coupon Code" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Expired Date:" +msgstr "Expired Date:" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Free Product - %(product)s" +msgstr "Free Product - %(product)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift #" +msgstr "Gift #" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift Card Code" +msgstr "Gift Card Code" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_gift_ewallet_type_config +msgid "Gift cards & eWallet" +msgstr "Gift cards & eWallet" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__points_cost +msgid "How much point this reward costs on the loyalty card." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__id +msgid "ID" +msgstr "ID" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Invalid product to claim." +msgstr "Invalid product to claim." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_coupon_wizard.py:0 +#, python-format +msgid "Invalid sales order." +msgstr "Invalid sales order." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__is_reward_line +msgid "Is a program reward line" +msgstr "Is a program reward line" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_uid +msgid "Last Updated by" +msgstr "Poslednji put ažurirao" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_date +msgid "Last Updated on" +msgstr "Poslednji put ažurirano" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_card +msgid "Loyalty Coupon" +msgstr "Loyalty Coupon" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_program +msgid "Loyalty Program" +msgstr "Loyalty Program" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_reward +msgid "Loyalty Reward" +msgstr "Loyalty Reward" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__applied_coupon_ids +msgid "Manually Applied Coupons" +msgstr "Manually Applied Coupons" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__code_enabled_rule_ids +msgid "Manually Triggered Rules" +msgstr "Manually Triggered Rules" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__multi_product_reward +msgid "Multi Product" +msgstr "Multi Product" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"No card found for this loyalty program and no points will be given with this" +" order." +msgstr "" +"No card found for this loyalty program and no points will be given with this" +" order." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "No reward selected." +msgstr "No reward selected." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "No rewards available for this customer!" +msgstr "No rewards available for this customer!" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "One or more rewards on the sale order is invalid. Please check them." +msgstr "One or more rewards on the sale order is invalid. Please check them." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__order_id +msgid "Order" +msgstr "Nalog" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__order_count +msgid "Order Count" +msgstr "Order Count" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_card__order_id +msgid "Order Reference" +msgstr "Reference Naloga" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__points +msgid "Points" +msgstr "Bodovi" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__points_cost +msgid "Points Cost" +msgstr "Points Cost" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Promotions" +msgstr "Promocije" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_ids +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_id +msgid "Reward" +msgstr "Nagrada" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__reward_amount +msgid "Reward Amount" +msgstr "Iznos nagrade" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "Reward Identifier Code" +msgstr "Reward Identifier Code" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "Reward Products" +msgstr "Reward Products" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_coupon_wizard +msgid "Sale Loyalty - Apply Coupon Wizard" +msgstr "Sale Loyalty - Apply Coupon Wizard" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_reward_wizard +msgid "Sale Loyalty - Reward Selection Wizard" +msgstr "Sale Loyalty - Reward Selection Wizard" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_coupon_points +msgid "" +"Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon" +msgstr "" +"Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__sale_ok +msgid "Sales" +msgstr "Prodaja" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order +msgid "Sales Order" +msgstr "Porudžbenica" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_line +msgid "Sales Order Line" +msgstr "Linija porudžbenice" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_product_id +msgid "Selected Product" +msgstr "Selected Product" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_reward_id +msgid "Selected Reward" +msgstr "Selected Reward" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "TEMPORARY DISCOUNT LINE" +msgstr "TEMPORARY DISCOUNT LINE" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "" +"Technical field used to link multiple reward lines from the same reward " +"together." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon can only be claimed on future orders." +msgstr "The coupon can only be claimed on future orders." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon does not have enough points for the selected reward." +msgstr "The coupon does not have enough points for the selected reward." + +#. module: sale_loyalty +#: model:ir.model.constraint,message:sale_loyalty.constraint_sale_order_coupon_points_order_coupon_unique +msgid "The coupon points entry already exists." +msgstr "The coupon points entry already exists." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The program is not available for this order." +msgstr "The program is not available for this order." + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_loyalty_card__order_id +msgid "The sales order from which coupon is generated" +msgstr "The sales order from which coupon is generated" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "There is nothing to discount" +msgstr "There is nothing to discount" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "These are the products that can be claimed with this rule." +msgstr "These are the products that can be claimed with this rule." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is expired (%s)." +msgstr "This code is expired (%s)." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is invalid (%s)." +msgstr "This code is invalid (%s)." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon has already been used." +msgstr "This coupon has already been used." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon is expired." +msgstr "This coupon is expired." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is already applied to this order." +msgstr "This program is already applied to this order." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is not available for public users." +msgstr "This program is not available for public users." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program requires a code to be applied." +msgstr "This program requires a code to be applied." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This promo code is already applied." +msgstr "This promo code is already applied." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Update current promotional lines and select new rewards if applicable." +msgstr "" +"Update current promotional lines and select new rewards if applicable." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "You don't have the required product quantities on your sales order." +msgstr "You don't have the required product quantities on your sales order." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "" +"You will find below your gift cards code. An email has been sent with it. " +"You can use it starting right now." +msgstr "" +"You will find below your gift cards code. An email has been sent with it. " +"You can use it starting right now." diff --git a/i18n/sv.po b/i18n/sv.po new file mode 100644 index 0000000..6fdea04 --- /dev/null +++ b/i18n/sv.po @@ -0,0 +1,522 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_loyalty +# +# Translators: +# Simon S, 2023 +# Robin Calvin, 2023 +# Anders Wallenquist , 2023 +# Jakob Krabbe , 2023 +# Robert Frykelius , 2023 +# Martin Wilderoth , 2023 +# Chrille Hedberg , 2023 +# Martin Trigaux, 2023 +# Lasse L, 2023 +# Kim Asplund , 2023 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-26 21:55+0000\n" +"PO-Revision-Date: 2023-10-26 23:09+0000\n" +"Last-Translator: Kim Asplund , 2023\n" +"Language-Team: Swedish (https://app.transifex.com/odoo/teams/41243/sv/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: sv\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid " - On product with the following taxes: %(taxes)s" +msgstr " - På produkt med följande skatter: %(taxes)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid " Copy" +msgstr " Kopiera" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "A better global discount is already applied." +msgstr "En bättre global rabatt är redan tillämpad." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"A minimum of %(amount)s %(currency)s should be purchased to get the reward" +msgstr "" +"Ett minimum av %(amount)s %(currency)s bör köpas för att få belöningen" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Apply" +msgstr "Verkställ" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_reward_wizard_action +msgid "Available Rewards" +msgstr "Tillgängliga belöningar" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose a product:" +msgstr "Välj en produkt:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose your reward:" +msgstr "Välj din belöning:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Code:" +msgstr "Kod:" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__coupon_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__coupon_id +msgid "Coupon" +msgstr "Kupong" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__coupon_code +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Coupon Code" +msgstr "Kupongkod" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__coupon_point_ids +msgid "Coupon Point" +msgstr "Kupongpunkt" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "Coupon not found while trying to add the following reward: %s" +msgstr "Kupong hittades inte när du försökte lägga till följande belöning: %s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Coupons & Loyalty" +msgstr "Kuponger och lojalitet" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_uid +msgid "Created by" +msgstr "Skapad av" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_date +msgid "Created on" +msgstr "Skapad den" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Discard" +msgstr "Förkasta" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_discount_loyalty_type_config +msgid "Discount & Loyalty" +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Discount: %(desc)s%(tax_str)s" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__display_name +msgid "Display Name" +msgstr "Visningsnamn" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_coupon_wizard_action +msgid "Enter Promotion or Coupon Code" +msgstr "Ge Erbjudande eller Kupong Kod" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Expired Date:" +msgstr "Förfallo Datum:" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Free Product - %(product)s" +msgstr "Gratis Produkt - %(product)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift #" +msgstr "Present #" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift Card Code" +msgstr "Presentkorts Kod" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_gift_ewallet_type_config +msgid "Gift cards & eWallet" +msgstr "Presentkort & eWallet" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__points_cost +msgid "How much point this reward costs on the loyalty card." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__id +msgid "ID" +msgstr "ID" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Invalid product to claim." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_coupon_wizard.py:0 +#, python-format +msgid "Invalid sales order." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__is_reward_line +msgid "Is a program reward line" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_uid +msgid "Last Updated by" +msgstr "Senast uppdaterad av" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_date +msgid "Last Updated on" +msgstr "Senast uppdaterad den" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_card +msgid "Loyalty Coupon" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_program +msgid "Loyalty Program" +msgstr "Lojalitetsprogram" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_reward +msgid "Loyalty Reward" +msgstr "Lojalitetsbelöning" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__applied_coupon_ids +msgid "Manually Applied Coupons" +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__code_enabled_rule_ids +msgid "Manually Triggered Rules" +msgstr "Manuellt utlösta regler" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__multi_product_reward +msgid "Multi Product" +msgstr "Flera produkter" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"No card found for this loyalty program and no points will be given with this" +" order." +msgstr "" +"Inget kort hittades för detta lojalitetsprogram och inga poäng kommer att " +"ges med denna order." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "No reward selected." +msgstr "Ingen belöning vald." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "No rewards available for this customer!" +msgstr "Inga belöningar tillgängliga för denna kund!" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "One or more rewards on the sale order is invalid. Please check them." +msgstr "" +"En eller flera belöningar på försäljningsordern är ogiltiga. Kontrollera " +"dem." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__order_id +msgid "Order" +msgstr "Order" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__order_count +msgid "Order Count" +msgstr "Order Antal" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_card__order_id +msgid "Order Reference" +msgstr "Orderreferens" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__points +msgid "Points" +msgstr "Poäng" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__points_cost +msgid "Points Cost" +msgstr "Poängkostnad" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Promotions" +msgstr "Kampanjer" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_ids +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_id +msgid "Reward" +msgstr "Belöning" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__reward_amount +msgid "Reward Amount" +msgstr "Belöningsbelopp" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "Reward Identifier Code" +msgstr "Belöningsidentifieringskod" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "Reward Products" +msgstr "Belöningsprodukter" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_coupon_wizard +msgid "Sale Loyalty - Apply Coupon Wizard" +msgstr "Försäljningslojalitet - Använd kupongguide" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_reward_wizard +msgid "Sale Loyalty - Reward Selection Wizard" +msgstr "Försäljningslojalitet - Guide för belöningsval" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_coupon_points +msgid "" +"Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon" +msgstr "" +"Poäng för beställningskupong - Håller reda på hur en försäljningsorder " +"påverkar en kupong" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__sale_ok +msgid "Sales" +msgstr "Försäljning" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order +msgid "Sales Order" +msgstr "Order" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_line +msgid "Sales Order Line" +msgstr "Orderrad" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_product_id +msgid "Selected Product" +msgstr "Vald produkt" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_reward_id +msgid "Selected Reward" +msgstr "Vald belöning" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "TEMPORARY DISCOUNT LINE" +msgstr "TEMPORÄR RABATTLINJE" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "" +"Technical field used to link multiple reward lines from the same reward " +"together." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon can only be claimed on future orders." +msgstr "Kupongen kan bara hämtas på framtida ordrar." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon does not have enough points for the selected reward." +msgstr "Kupongen har inte tillräckligt med poäng för den valda belöningen." + +#. module: sale_loyalty +#: model:ir.model.constraint,message:sale_loyalty.constraint_sale_order_coupon_points_order_coupon_unique +msgid "The coupon points entry already exists." +msgstr "Posten för kupongpoäng finns redan." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The program is not available for this order." +msgstr "Programmet är inte tillgängligt för denna order." + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_loyalty_card__order_id +msgid "The sales order from which coupon is generated" +msgstr "Försäljningsordern från vilken kupongen genereras" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "There is nothing to discount" +msgstr "Det finns inget att ge rabatt på" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "These are the products that can be claimed with this rule." +msgstr "Dessa är produkterna som kan hämtas med denna regel." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is expired (%s)." +msgstr "Denna kod är utgången (%s)." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is invalid (%s)." +msgstr "Denna kod är ogiltig (%s)." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon has already been used." +msgstr "Denna kupong har redan använts." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon is expired." +msgstr "Denna kupong har gått ut." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is already applied to this order." +msgstr "Detta program är redan tillämpat på denna order." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is not available for public users." +msgstr "Detta program är inte tillgängligt för offentliga användare." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program requires a code to be applied." +msgstr "Detta program kräver att en kod ska tillämpas." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This promo code is already applied." +msgstr "Denna kampanjkod är redan tillämpad." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Update current promotional lines and select new rewards if applicable." +msgstr "" +"Uppdatera nuvarande kampanjrader och välj nya belöningar om tillämpligt." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "You don't have the required product quantities on your sales order." +msgstr "Du har inte den nödvändiga produktmängden på din försäljningsorder." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "" +"You will find below your gift cards code. An email has been sent with it. " +"You can use it starting right now." +msgstr "" +"Nedan hittar du din presentkortskod. Ett mejl har skickats med det. Du kan " +"använda den genast." diff --git a/i18n/th.po b/i18n/th.po new file mode 100644 index 0000000..8897ff1 --- /dev/null +++ b/i18n/th.po @@ -0,0 +1,508 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_loyalty +# +# Translators: +# Wil Odoo, 2023 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-26 21:55+0000\n" +"PO-Revision-Date: 2023-10-26 23:09+0000\n" +"Last-Translator: Wil Odoo, 2023\n" +"Language-Team: Thai (https://app.transifex.com/odoo/teams/41243/th/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: th\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid " - On product with the following taxes: %(taxes)s" +msgstr "- สำหรับสินค้าที่มีภาษีดังต่อไปนี้: %(taxes)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid " Copy" +msgstr " คัดลอก" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "A better global discount is already applied." +msgstr "มีการใช้ส่วนลดสากลที่ดีกว่าอยู่แล้ว" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"A minimum of %(amount)s %(currency)s should be purchased to get the reward" +msgstr "ขั้นต่ำของ %(amount)s %(currency)s ที่ควรซื้อเพื่อรับรางวัล" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Apply" +msgstr "นำไปใช้" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_reward_wizard_action +msgid "Available Rewards" +msgstr "รางวัลที่มีอยู่" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose a product:" +msgstr "เลือกสินค้า:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose your reward:" +msgstr "เลือกรางวัลของคุณ:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Code:" +msgstr "โค้ด:" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__coupon_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__coupon_id +msgid "Coupon" +msgstr "คูปอง" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__coupon_code +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Coupon Code" +msgstr "โค้ดคูปอง" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__coupon_point_ids +msgid "Coupon Point" +msgstr "คะแนนคูปอง" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "Coupon not found while trying to add the following reward: %s" +msgstr "ไม่พบคูปองขณะพยายามเพิ่มรางวัลต่อไปนี้: %s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Coupons & Loyalty" +msgstr "คูปองและสมาชิก" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_uid +msgid "Created by" +msgstr "สร้างโดย" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_date +msgid "Created on" +msgstr "สร้างเมื่อ" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Discard" +msgstr "ละทิ้ง" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_discount_loyalty_type_config +msgid "Discount & Loyalty" +msgstr "คูปอง & สมาชิก" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Discount: %(desc)s%(tax_str)s" +msgstr "ส่วนลด: %(desc)s%(tax_str)s" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__display_name +msgid "Display Name" +msgstr "แสดงชื่อ" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_coupon_wizard_action +msgid "Enter Promotion or Coupon Code" +msgstr "ใส่โปรโมชั่นหรือโค้ดคูปอง" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Expired Date:" +msgstr "วันหมดอายุ:" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Free Product - %(product)s" +msgstr "สินค้าฟรี - %(product)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift #" +msgstr "ของขวัญ #" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift Card Code" +msgstr "โค้ดบัตรของขวัญ" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_gift_ewallet_type_config +msgid "Gift cards & eWallet" +msgstr "บัตรของขวัญ & eWallet" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__points_cost +msgid "How much point this reward costs on the loyalty card." +msgstr "รางวัลนี้มีค่าใช้จ่ายเท่าไหร่ในบัตรสะสมคะแนน" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__id +msgid "ID" +msgstr "ไอดี" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Invalid product to claim." +msgstr "สินค้าไม่ถูกต้องในการอ้างสิทธิ์" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_coupon_wizard.py:0 +#, python-format +msgid "Invalid sales order." +msgstr "ใบสั่งขายไม่ถูกต้อง" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__is_reward_line +msgid "Is a program reward line" +msgstr "เป็นโปรแกรมรายการรางวัล" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_uid +msgid "Last Updated by" +msgstr "อัปเดตครั้งล่าสุดโดย" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_date +msgid "Last Updated on" +msgstr "อัปเดตครั้งล่าสุดเมื่อ" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_card +msgid "Loyalty Coupon" +msgstr "คูปองสะสมคะแนน" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_program +msgid "Loyalty Program" +msgstr "โปรแกรมลูกค้าสมาชิก" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_reward +msgid "Loyalty Reward" +msgstr "รางวัลลูกค้าสมาชิก" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__applied_coupon_ids +msgid "Manually Applied Coupons" +msgstr "คูปองที่ใช้ด้วยตนเอง" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__code_enabled_rule_ids +msgid "Manually Triggered Rules" +msgstr "กฎที่เรียกใช้ด้วยตนเอง" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__multi_product_reward +msgid "Multi Product" +msgstr "สินค้าหลายรายการ" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"No card found for this loyalty program and no points will be given with this" +" order." +msgstr "" +"ไม่พบบัตรสำหรับโปรแกรมสะสมคะแนนนี้ และจะไม่มีการให้คะแนนในคำสั่งซื้อนี้" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "No reward selected." +msgstr "ไม่ได้เลือกรางวัล" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "No rewards available for this customer!" +msgstr "ไม่มีรางวัลสำหรับลูกค้ารายนี้!" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "One or more rewards on the sale order is invalid. Please check them." +msgstr "" +"รางวัลอย่างน้อยหนึ่งรายการในคำสั่งซื้อขายไม่ถูกต้อง โปรดตรวจสอบความถูกต้อง" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__order_id +msgid "Order" +msgstr "คำสั่ง" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__order_count +msgid "Order Count" +msgstr "จำนวนคำสั่ง" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_card__order_id +msgid "Order Reference" +msgstr "อ้างอิงคำสั่ง" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__points +msgid "Points" +msgstr "คะแนน" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__points_cost +msgid "Points Cost" +msgstr "ค่าใช้จ่ายคะแนน" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Promotions" +msgstr "โปรโมชั่น" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_ids +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_id +msgid "Reward" +msgstr "รางวัล" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__reward_amount +msgid "Reward Amount" +msgstr "จำนวนรางวัล" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "Reward Identifier Code" +msgstr "รหัสระบุรางวัล" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "Reward Products" +msgstr "รางวัลสินค้า" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_coupon_wizard +msgid "Sale Loyalty - Apply Coupon Wizard" +msgstr "โปรแกรมสมาชิกในการขาย - ใช้โปรแกรมสร้างคูปอง" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_reward_wizard +msgid "Sale Loyalty - Reward Selection Wizard" +msgstr "โปรแกรมสมาชิกในการขาย - ใช้โปรแกรมสร้างรางวัล" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_coupon_points +msgid "" +"Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon" +msgstr "คะแนนคูปองคำสั่งขาย - ติดตามว่าคำสั่งขายส่งผลต่อคูปองอย่างไร" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__sale_ok +msgid "Sales" +msgstr "การขาย" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order +msgid "Sales Order" +msgstr "คำสั่งขาย" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_line +msgid "Sales Order Line" +msgstr "รายการคำสั่งขาย" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_product_id +msgid "Selected Product" +msgstr "สินค้าที่เลือก" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_reward_id +msgid "Selected Reward" +msgstr "รางวัลที่เลือก" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "TEMPORARY DISCOUNT LINE" +msgstr "รายการส่วนลดชั่วคราว" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "" +"Technical field used to link multiple reward lines from the same reward " +"together." +msgstr "" +"ฟิลด์เทคนิคใช้เพื่อเชื่อมโยงรางวัลหลายรายการจากรางวัลเดียวกันเข้าด้วยกัน" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon can only be claimed on future orders." +msgstr "คูปองสามารถรับได้เฉพาะกับคำสั่งซื้อในอนาคตเท่านั้น" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon does not have enough points for the selected reward." +msgstr "คูปองมีคะแนนไม่เพียงพอสำหรับรางวัลที่เลือก" + +#. module: sale_loyalty +#: model:ir.model.constraint,message:sale_loyalty.constraint_sale_order_coupon_points_order_coupon_unique +msgid "The coupon points entry already exists." +msgstr "รายการคะแนนคูปองมีอยู่แล้ว" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The program is not available for this order." +msgstr "โปรแกรมไม่พร้อมใช้งานสำหรับคำสั่งซื้อนี้" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_loyalty_card__order_id +msgid "The sales order from which coupon is generated" +msgstr "คำสั่งขายที่สร้างคูปอง" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "There is nothing to discount" +msgstr "ไม่มีอะไรจะลดราคา" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "These are the products that can be claimed with this rule." +msgstr "สินค้าเหล่านี้เป็นสินค้าที่สามารถเคลมได้ตามกฎนี้" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is expired (%s)." +msgstr "รหัสนี้หมดอายุแล้ว (%s)" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is invalid (%s)." +msgstr "รหัสนี้ไม่ถูกต้อง (%s)" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon has already been used." +msgstr "คูปองนี้ถูกใช้ไปแล้ว" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon is expired." +msgstr "คูปองนี้หมดอายุแล้ว" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is already applied to this order." +msgstr "โปรแกรมนี้ใช้กับคำสั่งซื้อนี้แล้ว" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is not available for public users." +msgstr "โปรแกรมนี้ไม่สามารถใช้ได้กับผู้ใช้สาธารณะ" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program requires a code to be applied." +msgstr "โปรแกรมนี้ต้องใช้รหัสเพื่อนำไปใช้" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This promo code is already applied." +msgstr "รหัสโปรโมชั่นนี้ถูกนำไปใช้แล้ว" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Update current promotional lines and select new rewards if applicable." +msgstr "อัปเดตรายการส่งเสริมการขายปัจจุบันและเลือกรางวัลใหม่ ถ้าหากมี" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "You don't have the required product quantities on your sales order." +msgstr "คุณไม่มีปริมาณสินค้าที่จำเป็นในใบสั่งขายของคุณ" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "" +"You will find below your gift cards code. An email has been sent with it. " +"You can use it starting right now." +msgstr "" +"คุณจะพบโค้ดบัตรของขวัญด้านล่าง และอีเมลจะถูกส่งไปพร้อมกัน " +"คุณสามารถใช้มันได้ตั้งแต่ตอนนี้" diff --git a/i18n/tr.po b/i18n/tr.po new file mode 100644 index 0000000..d451bee --- /dev/null +++ b/i18n/tr.po @@ -0,0 +1,517 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_loyalty +# +# Translators: +# Saban Yildiz , 2023 +# Levent Karakaş , 2023 +# Murat Kaplan , 2023 +# Martin Trigaux, 2023 +# Ediz Duman , 2023 +# Umur Akın , 2023 +# Halil, 2023 +# Tugay Hatıl , 2023 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-26 21:55+0000\n" +"PO-Revision-Date: 2023-10-26 23:09+0000\n" +"Last-Translator: Tugay Hatıl , 2023\n" +"Language-Team: Turkish (https://app.transifex.com/odoo/teams/41243/tr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: tr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid " - On product with the following taxes: %(taxes)s" +msgstr " - Aşağıdaki vergilere sahip ürünlerde: %(taxes)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid " Copy" +msgstr " Kopya" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "A better global discount is already applied." +msgstr "Daha iyi bir küresel indirim zaten uygulanmaktadır." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"A minimum of %(amount)s %(currency)s should be purchased to get the reward" +msgstr "Ödülü almak için en az %(amount)s %(currency)s satın alınmalıdır" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Apply" +msgstr "Uygula" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_reward_wizard_action +msgid "Available Rewards" +msgstr "Mevcut Ödüller" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose a product:" +msgstr "Bir ürün seçin:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose your reward:" +msgstr "Ödülünüzü seçin:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Code:" +msgstr "Kod:" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__coupon_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__coupon_id +msgid "Coupon" +msgstr "Kupon" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__coupon_code +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Coupon Code" +msgstr "Kupon Kodu" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__coupon_point_ids +msgid "Coupon Point" +msgstr "Kupon noktası" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "Coupon not found while trying to add the following reward: %s" +msgstr "Bu ödülü eklemeye çalışırken kupon bulunamadı: %s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Coupons & Loyalty" +msgstr "Kupon & Sadakat" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_uid +msgid "Created by" +msgstr "Oluşturan" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_date +msgid "Created on" +msgstr "Oluşturulma" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Discard" +msgstr "Vazgeç" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_discount_loyalty_type_config +msgid "Discount & Loyalty" +msgstr "İndirim ve Sadakat" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Discount: %(desc)s%(tax_str)s" +msgstr "İndirim: %(desc)s%(tax_str)s" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__display_name +msgid "Display Name" +msgstr "Görünüm Adı" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_coupon_wizard_action +msgid "Enter Promotion or Coupon Code" +msgstr "Promosyon veya Kupon Kodu Girin" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Expired Date:" +msgstr "Geçerlilik Tarihi:" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Free Product - %(product)s" +msgstr "Ücretsiz Ürün - %(product)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift #" +msgstr "Hediye #" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift Card Code" +msgstr "Hediye Kart Kodu" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_gift_ewallet_type_config +msgid "Gift cards & eWallet" +msgstr "Hediye kartları & e-Cüzdan" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__points_cost +msgid "How much point this reward costs on the loyalty card." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__id +msgid "ID" +msgstr "ID" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Invalid product to claim." +msgstr "Talep edilecek geçersiz ürün." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_coupon_wizard.py:0 +#, python-format +msgid "Invalid sales order." +msgstr "Geçersiz satış siparişi." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__is_reward_line +msgid "Is a program reward line" +msgstr "Bir program ödül satırı" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_uid +msgid "Last Updated by" +msgstr "Son Güncelleyen" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_date +msgid "Last Updated on" +msgstr "Son Güncelleme" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_card +msgid "Loyalty Coupon" +msgstr "Sadakat Kuponu" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_program +msgid "Loyalty Program" +msgstr "Sadakat Programı" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_reward +msgid "Loyalty Reward" +msgstr "Sadakat Ödülü" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__applied_coupon_ids +msgid "Manually Applied Coupons" +msgstr "Manuel Uygulanan Kuponlar" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__code_enabled_rule_ids +msgid "Manually Triggered Rules" +msgstr "El ile Tetiklenen Kurallar" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__multi_product_reward +msgid "Multi Product" +msgstr "Çoklu Ürün" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"No card found for this loyalty program and no points will be given with this" +" order." +msgstr "" +"Bu sadakat programı için kart bulunamadı ve bu siparişle puan verilmeyecek." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "No reward selected." +msgstr "Ödül seçilmedi." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "No rewards available for this customer!" +msgstr "Bu müşteri için ödül yok!" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "One or more rewards on the sale order is invalid. Please check them." +msgstr "" +"Satış siparişindeki bir veya daha fazla ödül geçersiz. Lütfen bunları " +"kontrol edin." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__order_id +msgid "Order" +msgstr "Sipariş" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__order_count +msgid "Order Count" +msgstr "Sipariş Sayımı" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_card__order_id +msgid "Order Reference" +msgstr "Sipariş Referansı" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__points +msgid "Points" +msgstr "Puanlar" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__points_cost +msgid "Points Cost" +msgstr "Puan Maliyeti" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Promotions" +msgstr "Promosyonlar" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_ids +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_id +msgid "Reward" +msgstr "Ödül" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__reward_amount +msgid "Reward Amount" +msgstr "Ödül Miktarı" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "Reward Identifier Code" +msgstr "Ödül Tanımlayıcı Kodu" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "Reward Products" +msgstr "Ödül Ürünler" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_coupon_wizard +msgid "Sale Loyalty - Apply Coupon Wizard" +msgstr "Satış Sadakati - Kupon Sihirbazı Uygula" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_reward_wizard +msgid "Sale Loyalty - Reward Selection Wizard" +msgstr "Satış Sadakati - Ödül Seçim Sihirbazı" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_coupon_points +msgid "" +"Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon" +msgstr "" +"Satış Siparişi Kupon Puanları - Bir satış siparişinin kuponu nasıl " +"etkilediğini takip eder" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__sale_ok +msgid "Sales" +msgstr "Satış" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order +msgid "Sales Order" +msgstr "Satış Siparişi" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_line +msgid "Sales Order Line" +msgstr "Satış Sipariş Satırı" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_product_id +msgid "Selected Product" +msgstr "Seçilen Ürün" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_reward_id +msgid "Selected Reward" +msgstr "Seçilen Ödül" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "TEMPORARY DISCOUNT LINE" +msgstr "GEÇİCİ İNDİRİM HATTI" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "" +"Technical field used to link multiple reward lines from the same reward " +"together." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon can only be claimed on future orders." +msgstr "Kupon yalnızca gelecekteki siparişlerde talep edilebilir." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon does not have enough points for the selected reward." +msgstr "Kuponun seçilen ödül için yeterli puanı yok." + +#. module: sale_loyalty +#: model:ir.model.constraint,message:sale_loyalty.constraint_sale_order_coupon_points_order_coupon_unique +msgid "The coupon points entry already exists." +msgstr "Kupon puanları girişi zaten mevcut." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The program is not available for this order." +msgstr "Program bu sipariş için mevcut değildir." + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_loyalty_card__order_id +msgid "The sales order from which coupon is generated" +msgstr "Kuponun oluşturulduğu satış siparişi" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "There is nothing to discount" +msgstr "İndirim yapacak bir şey yok" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "These are the products that can be claimed with this rule." +msgstr "Bunlar bu kural ile talep edilebilecek ürünlerdir." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is expired (%s)." +msgstr "Bu kodun süresi doldu (%s)." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is invalid (%s)." +msgstr "Bu kod geçersiz (%s)." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon has already been used." +msgstr "Bu kupon zaten kullanıldı." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon is expired." +msgstr "Bu kuponun süresi doldu." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is already applied to this order." +msgstr "Bu program zaten bu siparişe uygulanmaktadır." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is not available for public users." +msgstr "Bu program genel kullanıcılar tarafından kullanılamaz." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program requires a code to be applied." +msgstr "Bu program uygulanacak bir kod gerektirir." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This promo code is already applied." +msgstr "Bu promosyon kodu zaten uygulanmıştır." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Update current promotional lines and select new rewards if applicable." +msgstr "Mevcut promosyon satırlarını güncelleyin ve varsa yeni ödüller seçin." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "You don't have the required product quantities on your sales order." +msgstr "Satış siparişinizde gerekli ürün miktarlarına sahip değilsiniz." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "" +"You will find below your gift cards code. An email has been sent with it. " +"You can use it starting right now." +msgstr "" +"Hediye kartı kodunuzu aşağıda bulabilirsiniz. Onunla birlikte bir e-posta " +"gönderildi. Şu andan itibaren kullanabilirsiniz." diff --git a/i18n/uk.po b/i18n/uk.po new file mode 100644 index 0000000..1790ce0 --- /dev/null +++ b/i18n/uk.po @@ -0,0 +1,514 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_loyalty +# +# Translators: +# Alina Lisnenko , 2023 +# Wil Odoo, 2023 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-26 21:55+0000\n" +"PO-Revision-Date: 2023-10-26 23:09+0000\n" +"Last-Translator: Wil Odoo, 2023\n" +"Language-Team: Ukrainian (https://app.transifex.com/odoo/teams/41243/uk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: uk\n" +"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid " - On product with the following taxes: %(taxes)s" +msgstr " - На товарі з наступними податками: %(taxes)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid " Copy" +msgstr " Копіювати" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "A better global discount is already applied." +msgstr "Краща загальна знижка вже застосована." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"A minimum of %(amount)s %(currency)s should be purchased to get the reward" +msgstr "" +"Щоб отримати винагороду потрібно придбати мінімум %(amount)s %(currency)s " + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Apply" +msgstr "Застосувати" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_reward_wizard_action +msgid "Available Rewards" +msgstr "Доступні винагороди" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose a product:" +msgstr "Оберіть товар:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose your reward:" +msgstr "Оберіть вашу винагороду:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Code:" +msgstr "Код:" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__coupon_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__coupon_id +msgid "Coupon" +msgstr "Купони" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__coupon_code +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Coupon Code" +msgstr "Код купона" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__coupon_point_ids +msgid "Coupon Point" +msgstr "Бал купону" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "Coupon not found while trying to add the following reward: %s" +msgstr "Купон не знайдено під час спроби додати наступну винагороду: %s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Coupons & Loyalty" +msgstr "Купони і Програма лояльності" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_uid +msgid "Created by" +msgstr "Створив" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_date +msgid "Created on" +msgstr "Створено" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Discard" +msgstr "Відмінити" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_discount_loyalty_type_config +msgid "Discount & Loyalty" +msgstr "Знижка та програма лояльності" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Discount: %(desc)s%(tax_str)s" +msgstr "Знижка: %(desc)s%(tax_str)s" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__display_name +msgid "Display Name" +msgstr "Назва для відображення" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_coupon_wizard_action +msgid "Enter Promotion or Coupon Code" +msgstr "Введіть акційний чи купонний код" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Expired Date:" +msgstr "Дата кінця терміну дії:" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Free Product - %(product)s" +msgstr "Безкоштовний товар - %(product)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift #" +msgstr "Подарунковий #" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift Card Code" +msgstr "Код подарункової картки" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_gift_ewallet_type_config +msgid "Gift cards & eWallet" +msgstr "Подарункові картки та електронний гаманець" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__points_cost +msgid "How much point this reward costs on the loyalty card." +msgstr "" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__id +msgid "ID" +msgstr "ID" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Invalid product to claim." +msgstr "Недійсний товар для заявки." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_coupon_wizard.py:0 +#, python-format +msgid "Invalid sales order." +msgstr "Недійсне замовлення на продаж." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__is_reward_line +msgid "Is a program reward line" +msgstr "Чи є рядок програми винагороди" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_uid +msgid "Last Updated by" +msgstr "Востаннє оновив" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_date +msgid "Last Updated on" +msgstr "Останнє оновлення" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_card +msgid "Loyalty Coupon" +msgstr "Купон на знижку" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_program +msgid "Loyalty Program" +msgstr "Програма лояльності" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_reward +msgid "Loyalty Reward" +msgstr "Винагорода лояльності" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__applied_coupon_ids +msgid "Manually Applied Coupons" +msgstr "Купони, що застосовуються вручну" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__code_enabled_rule_ids +msgid "Manually Triggered Rules" +msgstr "Правила, запущені вручну" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__multi_product_reward +msgid "Multi Product" +msgstr "Мульти-товар" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"No card found for this loyalty program and no points will be given with this" +" order." +msgstr "" +"Не знайдено жодної картки для цієї програми лояльності, і за це замовлення " +"не буде нараховано бали." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "No reward selected." +msgstr "Не вибрано винагороди." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "No rewards available for this customer!" +msgstr "Немає доступних винагород для цього клієнта!" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "One or more rewards on the sale order is invalid. Please check them." +msgstr "" +"Одна або кілька винагород у замовленні на продаж недійсні. Будь ласка, " +"перевірте їх." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__order_id +msgid "Order" +msgstr "Замовлення" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__order_count +msgid "Order Count" +msgstr "Підрахунок замовлень" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_card__order_id +msgid "Order Reference" +msgstr "Посилання на замовлення" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__points +msgid "Points" +msgstr "Бали" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__points_cost +msgid "Points Cost" +msgstr "Вартість балів" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Promotions" +msgstr "Акції" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_ids +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_id +msgid "Reward" +msgstr "Нагорода" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__reward_amount +msgid "Reward Amount" +msgstr "Сума винагороди" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "Reward Identifier Code" +msgstr "Ідентифікаційний код винагороди" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "Reward Products" +msgstr "Товари нагороди" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_coupon_wizard +msgid "Sale Loyalty - Apply Coupon Wizard" +msgstr "Програма лояльності продажу - Помічник застосування купону" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_reward_wizard +msgid "Sale Loyalty - Reward Selection Wizard" +msgstr "Програма лояльності продажу - Помічник вибору винагороди" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_coupon_points +msgid "" +"Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon" +msgstr "" +"Бали купону замовлення на продаж - Відстежує, як замовлення на продаж " +"впливає на купон" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__sale_ok +msgid "Sales" +msgstr "Продажі" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order +msgid "Sales Order" +msgstr "Замовлення на продаж" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_line +msgid "Sales Order Line" +msgstr "Рядок замовлення" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_product_id +msgid "Selected Product" +msgstr "Вибраний товар" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_reward_id +msgid "Selected Reward" +msgstr "Вибрана винагорода" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "TEMPORARY DISCOUNT LINE" +msgstr "ТИМЧАСОВИЙ РЯДОК ЗНИЖКИ" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "" +"Technical field used to link multiple reward lines from the same reward " +"together." +msgstr "" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon can only be claimed on future orders." +msgstr "Купон можна використовувати лише для майбутніх замовлень." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon does not have enough points for the selected reward." +msgstr "Купон не має достатньо балів для обраної нагороди." + +#. module: sale_loyalty +#: model:ir.model.constraint,message:sale_loyalty.constraint_sale_order_coupon_points_order_coupon_unique +msgid "The coupon points entry already exists." +msgstr "Запис балів купону вже існує." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The program is not available for this order." +msgstr "Програма недоступна для цього замовлення." + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_loyalty_card__order_id +msgid "The sales order from which coupon is generated" +msgstr "Замовлення на продаж, з якого формується купон" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "There is nothing to discount" +msgstr "Немає нічого для знижки." + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "These are the products that can be claimed with this rule." +msgstr "Це товари, на які можна претендувати за цим правилом." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is expired (%s)." +msgstr "Цей код протерміновано (%s)." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is invalid (%s)." +msgstr "Цей код недійсний (%s)." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon has already been used." +msgstr "Цей купон вже використовується." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon is expired." +msgstr "Цей купон протерміновано." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is already applied to this order." +msgstr "Цю програму вже застосовано на це замовлення." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is not available for public users." +msgstr "Ця програма недоступна для публічних користувачів." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program requires a code to be applied." +msgstr "Ця програма вимагає код для застосування." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This promo code is already applied." +msgstr "Цей промокод вже застосовано." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Update current promotional lines and select new rewards if applicable." +msgstr "" +"Оновіть поточні рекламні рядки та виберіть нові винагороди, якщо це можливо." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "You don't have the required product quantities on your sales order." +msgstr "У вашому замовленні на продаж немає необхідної кількості товару." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "" +"You will find below your gift cards code. An email has been sent with it. " +"You can use it starting right now." +msgstr "" +"Нижче ви знайдете код подарункової картки. З ним надіслано електронний лист." +" Ви можете використовувати його, починаючи прямо зараз." diff --git a/i18n/vi.po b/i18n/vi.po new file mode 100644 index 0000000..2a310e7 --- /dev/null +++ b/i18n/vi.po @@ -0,0 +1,515 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_loyalty +# +# Translators: +# Wil Odoo, 2023 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-26 21:55+0000\n" +"PO-Revision-Date: 2023-10-26 23:09+0000\n" +"Last-Translator: Wil Odoo, 2023\n" +"Language-Team: Vietnamese (https://app.transifex.com/odoo/teams/41243/vi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: vi\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid " - On product with the following taxes: %(taxes)s" +msgstr " - Trên sản phẩm có các loại thuế sau: %(taxes)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid " Copy" +msgstr " Sao chép" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "A better global discount is already applied." +msgstr "Chiết khấu hấp dẫn hơn đã được áp dụng." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"A minimum of %(amount)s %(currency)s should be purchased to get the reward" +msgstr "Giá trị tối thiểu %(amount)s %(currency)s nên mua để nhận phần thưởng" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Apply" +msgstr "Áp dụng" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_reward_wizard_action +msgid "Available Rewards" +msgstr "Phần thưởng có sẵn" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose a product:" +msgstr "Chọn một sản phẩm:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose your reward:" +msgstr "Chọn phần thưởng của bạn:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Code:" +msgstr "Mã:" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__coupon_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__coupon_id +msgid "Coupon" +msgstr "Phiếu giảm giá" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__coupon_code +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Coupon Code" +msgstr "Mã phiếu giảm giá" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__coupon_point_ids +msgid "Coupon Point" +msgstr "Điểm phiếu giảm giá" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "Coupon not found while trying to add the following reward: %s" +msgstr "Không tìm thấy phiếu giảm giá khi cố gắng thêm phần thưởng sau: %s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Coupons & Loyalty" +msgstr "Phiếu giảm giá & khách hàng thân thiết" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_uid +msgid "Created by" +msgstr "Được tạo bởi" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_date +msgid "Created on" +msgstr "Được tạo vào" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Discard" +msgstr "Huỷ bỏ" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_discount_loyalty_type_config +msgid "Discount & Loyalty" +msgstr "Chiết khấu & khách hàng thân thiết" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Discount: %(desc)s%(tax_str)s" +msgstr "Chiết khấu: %(desc)s%(tax_str)s" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__display_name +msgid "Display Name" +msgstr "Tên hiển thị" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_coupon_wizard_action +msgid "Enter Promotion or Coupon Code" +msgstr "Nhập mã phiếu giảm giá hoặc mã khuyến mãi" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Expired Date:" +msgstr "Ngày hết hạn: " + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Free Product - %(product)s" +msgstr "Sản phẩm miễn phí - %(product)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift #" +msgstr "Quà tặng #" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift Card Code" +msgstr "Mã thẻ quà tặng" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_gift_ewallet_type_config +msgid "Gift cards & eWallet" +msgstr "Thẻ quà tặng & ví điện tử" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__points_cost +msgid "How much point this reward costs on the loyalty card." +msgstr "" +"Cần bao nhiêu điểm trên thẻ khách hàng thân thiết để đổi phần thưởng này." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__id +msgid "ID" +msgstr "ID" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Invalid product to claim." +msgstr "Sản phẩm không hợp lệ để đổi." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_coupon_wizard.py:0 +#, python-format +msgid "Invalid sales order." +msgstr "Đơn bán hàng không hợp lệ." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__is_reward_line +msgid "Is a program reward line" +msgstr "Là một phần thưởng chương trình" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_uid +msgid "Last Updated by" +msgstr "Cập nhật lần cuối bởi" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_date +msgid "Last Updated on" +msgstr "Cập nhật lần cuối vào" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_card +msgid "Loyalty Coupon" +msgstr "Phiếu giảm giá khách hàng thân thiết" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_program +msgid "Loyalty Program" +msgstr "Chương trình khách hàng thân thiết" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_reward +msgid "Loyalty Reward" +msgstr "Phần thưởng khách hàng thân thiết" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__applied_coupon_ids +msgid "Manually Applied Coupons" +msgstr "Áp dụng phiếu giảm giá thủ công " + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__code_enabled_rule_ids +msgid "Manually Triggered Rules" +msgstr "Khởi chạy quy tắc thủ công" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__multi_product_reward +msgid "Multi Product" +msgstr "Đa sản phẩm" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"No card found for this loyalty program and no points will be given with this" +" order." +msgstr "" +"Không tìm thấy thẻ nào cho chương trình khách hàng thân thiết này, nên sẽ " +"không có điểm nào được tặng cho đơn hàng này." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "No reward selected." +msgstr "Không có phần thưởng nào được chọn." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "No rewards available for this customer!" +msgstr "Không có phần thưởng nào cho khách hàng này!" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "One or more rewards on the sale order is invalid. Please check them." +msgstr "" +"Một hoặc nhiều phần thưởng trên đơn bán hàng không hợp lệ. Vui lòng kiểm tra" +" lại." + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__order_id +msgid "Order" +msgstr "Đơn hàng" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__order_count +msgid "Order Count" +msgstr "Số lượng đơn hàng" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_card__order_id +msgid "Order Reference" +msgstr "Mã đơn hàng" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__points +msgid "Points" +msgstr "Điểm" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__points_cost +msgid "Points Cost" +msgstr "Giá trị điểm" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Promotions" +msgstr "Khuyến mãi" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_ids +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_id +msgid "Reward" +msgstr "Phần thưởng" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__reward_amount +msgid "Reward Amount" +msgstr "Số tiền thưởng" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "Reward Identifier Code" +msgstr "Mã phần thưởng" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "Reward Products" +msgstr "Sản phẩm thưởng" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_coupon_wizard +msgid "Sale Loyalty - Apply Coupon Wizard" +msgstr "Khách hàng thân thiết bán hàng - Công cụ áp dụng phiếu giảm giá" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_reward_wizard +msgid "Sale Loyalty - Reward Selection Wizard" +msgstr "Khách hàng thân thiết bán hàng - Công cụ chọn phần thưởng" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_coupon_points +msgid "" +"Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon" +msgstr "" +"Điểm phiếu giảm giá đơn bán hàng - Theo dõi cách đơn bán hàng tác động đến " +"phiếu giảm giá" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__sale_ok +msgid "Sales" +msgstr "Bán hàng" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order +msgid "Sales Order" +msgstr "Đơn bán hàng" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_line +msgid "Sales Order Line" +msgstr "Dòng đơn bán hàng" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_product_id +msgid "Selected Product" +msgstr "Sản phẩm đã chọn" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_reward_id +msgid "Selected Reward" +msgstr "Phần thưởng đã chọn" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "TEMPORARY DISCOUNT LINE" +msgstr "MỤC CHIẾT KHẤU TẠM THỜI" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "" +"Technical field used to link multiple reward lines from the same reward " +"together." +msgstr "" +"Trường kỹ thuật dùng để liên kết nhiều dòng phần thưởng từ cùng một phần " +"thưởng với nhau." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon can only be claimed on future orders." +msgstr "" +"Chỉ có thể áp dụng phiếu giảm giá cho các đơn đặt hàng trong tương lai." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon does not have enough points for the selected reward." +msgstr "Phiếu giảm giá không đủ điểm cho phần thưởng đã chọn." + +#. module: sale_loyalty +#: model:ir.model.constraint,message:sale_loyalty.constraint_sale_order_coupon_points_order_coupon_unique +msgid "The coupon points entry already exists." +msgstr "Mục nhập điểm phiếu giảm giá đã tồn tại." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The program is not available for this order." +msgstr "Chương trình không khả dụng cho đơn hàng này." + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_loyalty_card__order_id +msgid "The sales order from which coupon is generated" +msgstr "Đơn bán hàng tạo ra phiếu giảm giá này" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "There is nothing to discount" +msgstr "Không có gì để chiết khấu" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "These are the products that can be claimed with this rule." +msgstr "Theo quy tắc này, đây là những sản phẩm có thể đổi." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is expired (%s)." +msgstr "Mã này đã hết hạn (%s)." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is invalid (%s)." +msgstr "Mã này không hợp lệ (%s)." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon has already been used." +msgstr "Phiếu giảm giá này đã được sử dụng." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon is expired." +msgstr "Phiếu giảm giá này đã hết hạn." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is already applied to this order." +msgstr "Chương trình này đã được áp dụng cho đơn hàng này." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is not available for public users." +msgstr "Chương trình này không khả dụng cho người dùng công cộng." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program requires a code to be applied." +msgstr "Bạn phải áp dụng một mã cho chương trình này." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This promo code is already applied." +msgstr "Mã khuyến mãi này đã được áp dụng." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Update current promotional lines and select new rewards if applicable." +msgstr "Cập nhật khuyến mãi hiện tại và chọn phần thưởng mới nếu có." + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "You don't have the required product quantities on your sales order." +msgstr "Đơn bán hàng của bạn không có đủ số lượng sản phẩm quy định." + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "" +"You will find below your gift cards code. An email has been sent with it. " +"You can use it starting right now." +msgstr "" +"Phía dưới là mã thẻ quà tặng của bạn. Email chứa mã thẻ đã được gửi tới bạn " +"và bạn có thể sử dụng ngay bây giờ. " diff --git a/i18n/zh_CN.po b/i18n/zh_CN.po new file mode 100644 index 0000000..fbec96f --- /dev/null +++ b/i18n/zh_CN.po @@ -0,0 +1,505 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_loyalty +# +# Translators: +# Wil Odoo, 2023 +# 山西清水欧度(QQ:54773801) <54773801@qq.com>, 2023 +# Jeffery CHEN , 2023 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-26 21:55+0000\n" +"PO-Revision-Date: 2023-10-26 23:09+0000\n" +"Last-Translator: Jeffery CHEN , 2023\n" +"Language-Team: Chinese (China) (https://app.transifex.com/odoo/teams/41243/zh_CN/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: zh_CN\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid " - On product with the following taxes: %(taxes)s" +msgstr "- 产品上含有以下税:%(taxes)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid " Copy" +msgstr " 拷贝" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "A better global discount is already applied." +msgstr "更好的全局折扣已经应用" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"A minimum of %(amount)s %(currency)s should be purchased to get the reward" +msgstr "应至少采购 %(amount)s %(currency)s 以获得奖励" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Apply" +msgstr "应用" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_reward_wizard_action +msgid "Available Rewards" +msgstr "可用的奖励" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose a product:" +msgstr "选择产品:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose your reward:" +msgstr "选择您的奖励:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Code:" +msgstr "代码:" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__coupon_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__coupon_id +msgid "Coupon" +msgstr "优惠券" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__coupon_code +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Coupon Code" +msgstr "优惠码" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__coupon_point_ids +msgid "Coupon Point" +msgstr "优惠券积分" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "Coupon not found while trying to add the following reward: %s" +msgstr "尝试添加以下奖励时未找到优惠券:%s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Coupons & Loyalty" +msgstr "优惠券 & 会员" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_uid +msgid "Created by" +msgstr "创建人" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_date +msgid "Created on" +msgstr "创建日期" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Discard" +msgstr "丢弃" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_discount_loyalty_type_config +msgid "Discount & Loyalty" +msgstr "折扣 & 会员" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Discount: %(desc)s%(tax_str)s" +msgstr "折扣:%(desc)s%(tax_str)s" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__display_name +msgid "Display Name" +msgstr "显示名称" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_coupon_wizard_action +msgid "Enter Promotion or Coupon Code" +msgstr "输入促销或优惠券代码" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Expired Date:" +msgstr "过期日期:" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Free Product - %(product)s" +msgstr "免费产品 - %(product)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift #" +msgstr "礼品 #" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift Card Code" +msgstr "礼品卡代码" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_gift_ewallet_type_config +msgid "Gift cards & eWallet" +msgstr "礼品卡和电子钱包" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__points_cost +msgid "How much point this reward costs on the loyalty card." +msgstr "此奖励会花费会员卡多少积分。" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__id +msgid "ID" +msgstr "ID" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Invalid product to claim." +msgstr "索赔产品无效。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_coupon_wizard.py:0 +#, python-format +msgid "Invalid sales order." +msgstr "销售订单无效。" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__is_reward_line +msgid "Is a program reward line" +msgstr "是一个方案奖励行" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_uid +msgid "Last Updated by" +msgstr "最后更新人" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_date +msgid "Last Updated on" +msgstr "上次更新日期" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_card +msgid "Loyalty Coupon" +msgstr "会员优惠" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_program +msgid "Loyalty Program" +msgstr "会员方案" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_reward +msgid "Loyalty Reward" +msgstr "会员奖励" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__applied_coupon_ids +msgid "Manually Applied Coupons" +msgstr "手动申请的优惠券" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__code_enabled_rule_ids +msgid "Manually Triggered Rules" +msgstr "手动触发的规则" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__multi_product_reward +msgid "Multi Product" +msgstr "多种产品" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"No card found for this loyalty program and no points will be given with this" +" order." +msgstr "此会员方案没有找到任何卡,此订单也不会给予积分。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "No reward selected." +msgstr "未选择奖励。" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "No rewards available for this customer!" +msgstr "该客户无法获得奖励!" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "One or more rewards on the sale order is invalid. Please check them." +msgstr "销售订单上的一个或多个奖励无效。请检查它们。" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__order_id +msgid "Order" +msgstr "订单" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__order_count +msgid "Order Count" +msgstr "订购计数" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_card__order_id +msgid "Order Reference" +msgstr "订单关联" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__points +msgid "Points" +msgstr "分数" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__points_cost +msgid "Points Cost" +msgstr "积分成本" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Promotions" +msgstr "促销" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_ids +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_id +msgid "Reward" +msgstr "优惠类型" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__reward_amount +msgid "Reward Amount" +msgstr "奖励金额" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "Reward Identifier Code" +msgstr "奖励识别代码" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "Reward Products" +msgstr "奖励产品" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_coupon_wizard +msgid "Sale Loyalty - Apply Coupon Wizard" +msgstr "销售会员 - 应用优惠券向导" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_reward_wizard +msgid "Sale Loyalty - Reward Selection Wizard" +msgstr "销售会员 - 奖励选择向导" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_coupon_points +msgid "" +"Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon" +msgstr "销售订单优惠券积分-追踪销售订单如何影响优惠券的情况" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__sale_ok +msgid "Sales" +msgstr "销售" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order +msgid "Sales Order" +msgstr "销售订单" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_line +msgid "Sales Order Line" +msgstr "销售订单行" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_product_id +msgid "Selected Product" +msgstr "选择的产品" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_reward_id +msgid "Selected Reward" +msgstr "选择的奖励" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "TEMPORARY DISCOUNT LINE" +msgstr "临时折扣行" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "" +"Technical field used to link multiple reward lines from the same reward " +"together." +msgstr "技术栏位,用于连结使用相同奖赏的多个奖赏资料行。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon can only be claimed on future orders." +msgstr "优惠券只能在以后的订单中使用。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon does not have enough points for the selected reward." +msgstr "优惠券没有足够的积分来兑换所选奖励。" + +#. module: sale_loyalty +#: model:ir.model.constraint,message:sale_loyalty.constraint_sale_order_coupon_points_order_coupon_unique +msgid "The coupon points entry already exists." +msgstr "优惠券积分条目已经存在。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The program is not available for this order." +msgstr "此方案不可用于这个订单" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_loyalty_card__order_id +msgid "The sales order from which coupon is generated" +msgstr "销售订单,生成优惠券" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "There is nothing to discount" +msgstr "没有什么可打折扣" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "These are the products that can be claimed with this rule." +msgstr "这些是可以根据本规则进行索赔的产品。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is expired (%s)." +msgstr "这代码已过期 (%s)" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is invalid (%s)." +msgstr "这代码无效 (%s)" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon has already been used." +msgstr "此优惠券已被使用。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon is expired." +msgstr "此优惠券已过期。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is already applied to this order." +msgstr "此方案已应用在此订单" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is not available for public users." +msgstr "此方案对公共用户是不可用的" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program requires a code to be applied." +msgstr "该方案需要一个代码才能是哦那个。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This promo code is already applied." +msgstr "该促销代码已使用。" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Update current promotional lines and select new rewards if applicable." +msgstr "更新当前的促销项目,并选择新的奖励(如适用)。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "You don't have the required product quantities on your sales order." +msgstr "您的销售订单上没有所需的产品数量。" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "" +"You will find below your gift cards code. An email has been sent with it. " +"You can use it starting right now." +msgstr "您将在下方找到您的礼品卡代码。已经发送了一封电子邮件。您可以从现在开始使用它。" diff --git a/i18n/zh_TW.po b/i18n/zh_TW.po new file mode 100644 index 0000000..6404413 --- /dev/null +++ b/i18n/zh_TW.po @@ -0,0 +1,503 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_loyalty +# +# Translators: +# Wil Odoo, 2023 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-10-26 21:55+0000\n" +"PO-Revision-Date: 2023-10-26 23:09+0000\n" +"Last-Translator: Wil Odoo, 2023\n" +"Language-Team: Chinese (Taiwan) (https://app.transifex.com/odoo/teams/41243/zh_TW/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: zh_TW\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid " - On product with the following taxes: %(taxes)s" +msgstr " - 對於具有以下稅項產品: %(taxes)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid " Copy" +msgstr " 複製" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "A better global discount is already applied." +msgstr "已套用更好的全單折扣。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"A minimum of %(amount)s %(currency)s should be purchased to get the reward" +msgstr "至少需要購買 %(amount)s %(currency)s 才能獲得獎勵" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Apply" +msgstr "套用" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_reward_wizard_action +msgid "Available Rewards" +msgstr "可用獎勵" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose a product:" +msgstr "選擇產品:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Choose your reward:" +msgstr "選擇你的獎勵:" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Code:" +msgstr "代碼:" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__coupon_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__coupon_id +msgid "Coupon" +msgstr "優惠券" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__coupon_code +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Coupon Code" +msgstr "優惠碼" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__coupon_point_ids +msgid "Coupon Point" +msgstr "優惠積分" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "Coupon not found while trying to add the following reward: %s" +msgstr "嘗試加入以下獎勵時找不到優惠券: %s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Coupons & Loyalty" +msgstr "優惠券及會員計劃" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_uid +msgid "Created by" +msgstr "建立人員" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__create_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__create_date +msgid "Created on" +msgstr "建立於" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_coupon_wizard_view_form +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "Discard" +msgstr "捨棄" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_discount_loyalty_type_config +msgid "Discount & Loyalty" +msgstr "折扣及會員計劃" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Discount: %(desc)s%(tax_str)s" +msgstr "折扣: %(desc)s %(tax_str)s" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__display_name +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__display_name +msgid "Display Name" +msgstr "顯示名稱" + +#. module: sale_loyalty +#: model:ir.actions.act_window,name:sale_loyalty.sale_loyalty_coupon_wizard_action +msgid "Enter Promotion or Coupon Code" +msgstr "輸入促銷或優惠券代碼" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.used_gift_card +msgid "Expired Date:" +msgstr "使用期限:" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Free Product - %(product)s" +msgstr "免費產品 - %(product)s" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift #" +msgstr "禮物卡號碼" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "Gift Card Code" +msgstr "禮物卡代碼" + +#. module: sale_loyalty +#: model:ir.ui.menu,name:sale_loyalty.menu_gift_ewallet_type_config +msgid "Gift cards & eWallet" +msgstr "禮品卡及電子錢包" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__points_cost +msgid "How much point this reward costs on the loyalty card." +msgstr "此獎勵會花費會員卡多少積分。" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__id +msgid "ID" +msgstr "識別號" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "Invalid product to claim." +msgstr "申領的產品無效。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_coupon_wizard.py:0 +#, python-format +msgid "Invalid sales order." +msgstr "銷售訂單無效。" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__is_reward_line +msgid "Is a program reward line" +msgstr "是優惠計劃獎勵資料行" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_uid +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_uid +msgid "Last Updated by" +msgstr "最後更新者" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__write_date +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__write_date +msgid "Last Updated on" +msgstr "最後更新於" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_card +msgid "Loyalty Coupon" +msgstr "會員優惠券" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_program +msgid "Loyalty Program" +msgstr "會員計劃" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_loyalty_reward +msgid "Loyalty Reward" +msgstr "會員獎賞" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__applied_coupon_ids +msgid "Manually Applied Coupons" +msgstr "手動套用優惠券" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__code_enabled_rule_ids +msgid "Manually Triggered Rules" +msgstr "手動觸發規則" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__multi_product_reward +msgid "Multi Product" +msgstr "多項產品" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "" +"No card found for this loyalty program and no points will be given with this" +" order." +msgstr "找不到此忠誠度計劃的卡,此訂單不會獲得任何積分。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/wizard/sale_loyalty_reward_wizard.py:0 +#, python-format +msgid "No reward selected." +msgstr "未選擇獎勵。" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_loyalty_reward_wizard_view_form +msgid "No rewards available for this customer!" +msgstr "此客戶沒有可用獎勵。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "One or more rewards on the sale order is invalid. Please check them." +msgstr "銷售訂單的一項或多項獎勵無效。請檢查它們。" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_coupon_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__order_id +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__order_id +msgid "Order" +msgstr "訂單" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__order_count +msgid "Order Count" +msgstr "銷售訂單數量" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_card__order_id +msgid "Order Reference" +msgstr "訂單參考" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_coupon_points__points +msgid "Points" +msgstr "分" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__points_cost +msgid "Points Cost" +msgstr "花費積分" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Promotions" +msgstr "促銷" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_ids +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_id +msgid "Reward" +msgstr "獎勵" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order__reward_amount +msgid "Reward Amount" +msgstr "獎勵金額" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "Reward Identifier Code" +msgstr "獎賞識別代碼" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "Reward Products" +msgstr "獎賞產品" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_coupon_wizard +msgid "Sale Loyalty - Apply Coupon Wizard" +msgstr "銷售忠誠度 - 優惠券套用精靈" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_loyalty_reward_wizard +msgid "Sale Loyalty - Reward Selection Wizard" +msgstr "銷售忠誠度 - 獎賞選擇精靈" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_coupon_points +msgid "" +"Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon" +msgstr "銷售訂單優惠積分 - 追蹤銷售訂單如何影響優惠券" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_loyalty_program__sale_ok +msgid "Sales" +msgstr "銷售" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order +msgid "Sales Order" +msgstr "銷售訂單" + +#. module: sale_loyalty +#: model:ir.model,name:sale_loyalty.model_sale_order_line +msgid "Sales Order Line" +msgstr "銷售訂單資料行" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_product_id +msgid "Selected Product" +msgstr "已選產品" + +#. module: sale_loyalty +#: model:ir.model.fields,field_description:sale_loyalty.field_sale_loyalty_reward_wizard__selected_reward_id +msgid "Selected Reward" +msgstr "已選獎賞" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "TEMPORARY DISCOUNT LINE" +msgstr "【臨時折扣】" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_order_line__reward_identifier_code +msgid "" +"Technical field used to link multiple reward lines from the same reward " +"together." +msgstr "技術欄位,用於連結使用相同獎賞的多個獎賞資料行。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon can only be claimed on future orders." +msgstr "此優惠券只能在以後的訂單領取。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The coupon does not have enough points for the selected reward." +msgstr "優惠券沒有足夠積分兌換所選獎賞。" + +#. module: sale_loyalty +#: model:ir.model.constraint,message:sale_loyalty.constraint_sale_order_coupon_points_order_coupon_unique +msgid "The coupon points entry already exists." +msgstr "優惠券積分記項已存在。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "The program is not available for this order." +msgstr "優惠計劃不適用於此訂單。" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_loyalty_card__order_id +msgid "The sales order from which coupon is generated" +msgstr "銷售訂單,生成優惠券" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "There is nothing to discount" +msgstr "沒有項目可套用折扣" + +#. module: sale_loyalty +#: model:ir.model.fields,help:sale_loyalty.field_sale_loyalty_reward_wizard__reward_product_ids +msgid "These are the products that can be claimed with this rule." +msgstr "可按此規則領取優惠的產品如下。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is expired (%s)." +msgstr "此代碼已過期 (%s)。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This code is invalid (%s)." +msgstr "此代碼無效 (%s)。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon has already been used." +msgstr "此優惠券已被使用。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This coupon is expired." +msgstr "此優惠券已過期。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is already applied to this order." +msgstr "優惠計劃已套用至訂單。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program is not available for public users." +msgstr "此優惠計劃不適用於公眾用戶。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This program requires a code to be applied." +msgstr "此優惠計劃須填寫優惠碼,才可套用。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "This promo code is already applied." +msgstr "此促銷代碼已被套用。" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_order_view_form_inherit_sale_loyalty +msgid "Update current promotional lines and select new rewards if applicable." +msgstr "更新目前的促銷活動資料行,並選擇新的獎賞(如適用)。" + +#. module: sale_loyalty +#. odoo-python +#: code:addons/sale_loyalty/models/sale_order.py:0 +#, python-format +msgid "You don't have the required product quantities on your sales order." +msgstr "你的銷售訂單未達所需產品數量。" + +#. module: sale_loyalty +#: model_terms:ir.ui.view,arch_db:sale_loyalty.sale_purchased_gift_card +msgid "" +"You will find below your gift cards code. An email has been sent with it. " +"You can use it starting right now." +msgstr "您會在禮物卡代碼下方找到。已發送一封電子郵件。您可以立即開始使用它。" diff --git a/models/__init__.py b/models/__init__.py new file mode 100644 index 0000000..f909a66 --- /dev/null +++ b/models/__init__.py @@ -0,0 +1,9 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from . import loyalty_card +from . import loyalty_program +from . import loyalty_reward +from . import sale_order_coupon_points +from . import sale_order_line +from . import sale_order diff --git a/models/loyalty_card.py b/models/loyalty_card.py new file mode 100644 index 0000000..9112167 --- /dev/null +++ b/models/loyalty_card.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import fields, models + + +class LoyaltyCard(models.Model): + _inherit = 'loyalty.card' + + order_id = fields.Many2one( + comodel_name='sale.order', + string="Order Reference", + readonly=True, + help="The sales order from which coupon is generated") + + def _get_default_template(self): + default_template = super()._get_default_template() + if not default_template: + default_template = self.env.ref('loyalty.mail_template_loyalty_card', raise_if_not_found=False) + return default_template + + def _get_mail_partner(self): + return super()._get_mail_partner() or self.order_id.partner_id + + def _get_signature(self): + return self.order_id.user_id.signature or super()._get_signature() + + def _compute_use_count(self): + super()._compute_use_count() + read_group_res = self.env['sale.order.line']._read_group( + [('coupon_id', 'in', self.ids)], ['coupon_id'], ['__count']) + count_per_coupon = {coupon.id: count for coupon, count in read_group_res} + for card in self: + card.use_count += count_per_coupon.get(card.id, 0) + + def _has_source_order(self): + return super()._has_source_order() or bool(self.order_id) diff --git a/models/loyalty_program.py b/models/loyalty_program.py new file mode 100644 index 0000000..356443b --- /dev/null +++ b/models/loyalty_program.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import fields, models + + +class LoyaltyProgram(models.Model): + _inherit = 'loyalty.program' + + order_count = fields.Integer(compute='_compute_order_count') + sale_ok = fields.Boolean(string="Sales", default=True) + + def _compute_order_count(self): + # An order should count only once PER program but may appear in multiple programs + read_group_res = self.env['sale.order.line']._read_group( + [('reward_id', 'in', self.reward_ids.ids)], ['order_id'], ['reward_id:array_agg']) + for program in self: + program_reward_ids = program.reward_ids.ids + program.order_count = sum( + any(id_ in reward_ids for id_ in program_reward_ids) + for __, reward_ids in read_group_res + ) + + def _compute_total_order_count(self): + super()._compute_total_order_count() + for program in self: + program.total_order_count += program.order_count diff --git a/models/loyalty_reward.py b/models/loyalty_reward.py new file mode 100644 index 0000000..08fe0d2 --- /dev/null +++ b/models/loyalty_reward.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import models + + +class LoyaltyReward(models.Model): + _inherit = 'loyalty.reward' + + def _get_discount_product_values(self): + res = super()._get_discount_product_values() + for vals in res: + vals.update({ + 'taxes_id': False, + 'supplier_taxes_id': False, + 'invoice_policy': 'order', + }) + return res diff --git a/models/sale_order.py b/models/sale_order.py new file mode 100644 index 0000000..f6345c4 --- /dev/null +++ b/models/sale_order.py @@ -0,0 +1,1045 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from collections import defaultdict + +import itertools + +import random + +from odoo import api, fields, models, _ +from odoo.exceptions import UserError, ValidationError +from odoo.fields import Command +from odoo.tools.float_utils import float_is_zero, float_round +from odoo.osv import expression + +def _generate_random_reward_code(): + return str(random.getrandbits(32)) + + +class SaleOrder(models.Model): + _inherit = 'sale.order' + + # Contains how much points should be given to a coupon upon validating the order + applied_coupon_ids = fields.Many2many( + comodel_name='loyalty.card', string="Manually Applied Coupons", copy=False) + code_enabled_rule_ids = fields.Many2many( + comodel_name='loyalty.rule', string="Manually Triggered Rules", copy=False) + coupon_point_ids = fields.One2many( + comodel_name='sale.order.coupon.points', inverse_name='order_id', copy=False) + reward_amount = fields.Float(compute='_compute_reward_total') + + @api.depends('order_line') + def _compute_reward_total(self): + for order in self: + reward_amount = 0 + for line in order.order_line: + if not line.reward_id: + continue + if line.reward_id.reward_type != 'product': + reward_amount += line.price_subtotal + else: + # Free product are 'regular' product lines with a price_unit of 0 + reward_amount -= line.product_id.lst_price * line.product_uom_qty + order.reward_amount = reward_amount + + def _get_no_effect_on_threshold_lines(self): + """ + Returns the lines that have no effect on the minimum amount to reach + """ + self.ensure_one() + return self.env['sale.order.line'] + + @api.returns('self', lambda value: value.id) + def copy(self, default=None): + order = super(SaleOrder, self).copy(default) + reward_lines = order.order_line.filtered('is_reward_line') + if reward_lines: + reward_lines.unlink() + return order + + def action_confirm(self): + for order in self: + all_coupons = order.applied_coupon_ids | order.coupon_point_ids.coupon_id | order.order_line.coupon_id + if any(order._get_real_points_for_coupon(coupon) < 0 for coupon in all_coupons): + raise ValidationError(_('One or more rewards on the sale order is invalid. Please check them.')) + order._update_programs_and_rewards() + + # Remove any coupon from 'current' program that don't claim any reward. + # This is to avoid ghost coupons that are lost forever. + # Claiming a reward for that program will require either an automated check or a manual input again. + reward_coupons = self.order_line.coupon_id + self.coupon_point_ids.filtered( + lambda pe: pe.coupon_id.program_id.applies_on == 'current' and pe.coupon_id not in reward_coupons + ).coupon_id.sudo().unlink() + # Add/remove the points to our coupons + for coupon, change in self.filtered(lambda s: s.state != 'sale')._get_point_changes().items(): + coupon.points += change + res = super().action_confirm() + self._send_reward_coupon_mail() + return res + + def _action_cancel(self): + previously_confirmed = self.filtered(lambda s: s.state == 'sale') + res = super()._action_cancel() + # Add/remove the points to our coupons + for coupon, changes in previously_confirmed.filtered( + lambda s: s.state != 'sale' + )._get_point_changes().items(): + coupon.points -= changes + # Remove any rewards + self.order_line.filtered(lambda l: l.is_reward_line).unlink() + self.coupon_point_ids.coupon_id.sudo().filtered( + lambda c: not c.program_id.is_nominative and c.order_id in self and not c.use_count)\ + .unlink() + self.coupon_point_ids.unlink() + return res + + def action_open_reward_wizard(self): + self.ensure_one() + self._update_programs_and_rewards() + claimable_rewards = self._get_claimable_rewards() + if len(claimable_rewards) == 1: + coupon = next(iter(claimable_rewards)) + if len(claimable_rewards[coupon]) == 1: + self._apply_program_reward(claimable_rewards[coupon], coupon) + return True + elif not claimable_rewards: + return True + return self.env['ir.actions.actions']._for_xml_id('sale_loyalty.sale_loyalty_reward_wizard_action') + + def _send_reward_coupon_mail(self): + coupons = self.env['loyalty.card'] + for order in self: + coupons |= order._get_reward_coupons() + if coupons: + coupons._send_creation_communication(force_send=True) + + def _get_applied_global_discount_lines(self): + """ + Returns the first line of the currently applied global discount or False + """ + self.ensure_one() + return self.order_line.filtered(lambda l: l.reward_id.is_global_discount) + + def _get_applied_global_discount(self): + """ + Returns the currently applied global discount reward or False + """ + return self._get_applied_global_discount_lines().reward_id + + def _get_reward_values_product(self, reward, coupon, product=None, **kwargs): + """ + Returns an array of dict containing the values required for the reward lines + """ + self.ensure_one() + assert reward.reward_type == 'product' + + reward_products = reward.reward_product_ids + product = product or reward_products[:1] + if not product or not product in reward_products: + raise UserError(_('Invalid product to claim.')) + taxes = self.fiscal_position_id.map_tax(product.taxes_id.filtered(lambda t: t.company_id == self.company_id)) + points = self._get_real_points_for_coupon(coupon) + claimable_count = float_round(points / reward.required_points, precision_rounding=1, rounding_method='DOWN') if not reward.clear_wallet else 1 + cost = points if reward.clear_wallet else claimable_count * reward.required_points + return [{ + 'name': _("Free Product - %(product)s", product=product.with_context(display_default_code=False).display_name), + 'product_id': product.id, + 'discount': 100, + 'product_uom_qty': reward.reward_product_qty * claimable_count, + 'reward_id': reward.id, + 'coupon_id': coupon.id, + 'points_cost': cost, + 'reward_identifier_code': _generate_random_reward_code(), + 'product_uom': product.uom_id.id, + 'sequence': max(self.order_line.filtered(lambda x: not x.is_reward_line).mapped('sequence'), default=10) + 1, + 'tax_id': [(Command.CLEAR, 0, 0)] + [(Command.LINK, tax.id, False) for tax in taxes] + }] + + def _discountable_order(self, reward): + """ + Returns the discountable and discountable_per_tax for a discount that applies to the whole order + """ + self.ensure_one() + assert reward.discount_applicability == 'order' + + discountable = 0 + discountable_per_tax = defaultdict(int) + lines = self.order_line if reward.program_id.is_payment_program else (self.order_line - self._get_no_effect_on_threshold_lines()) + for line in lines: + # Ignore lines from this reward + if not line.product_uom_qty or not line.price_unit: + continue + tax_data = line._convert_to_tax_base_line_dict() + # To compute the discountable amount we get the fixed tax amount and + # subtract it from the order total. This way fixed taxes will not be discounted + tax_data['taxes'] = tax_data['taxes'].filtered(lambda t: t.amount_type == 'fixed') + tax_results = self.env['account.tax']._compute_taxes([tax_data]) + totals = list(tax_results['totals'].values())[0] + discountable += line.price_total - totals['amount_tax'] + taxes = line.tax_id.filtered(lambda t: t.amount_type != 'fixed') + discountable_per_tax[taxes] += totals['amount_untaxed'] + return discountable, discountable_per_tax + + def _cheapest_line(self): + self.ensure_one() + cheapest_line = False + for line in (self.order_line - self._get_no_effect_on_threshold_lines()): + if line.reward_id or not line.product_uom_qty or not line.price_unit: + continue + if not cheapest_line or cheapest_line.price_unit > line.price_unit: + cheapest_line = line + return cheapest_line + + def _discountable_cheapest(self, reward): + """ + Returns the discountable and discountable_per_tax for a discount that applies to the cheapest line + """ + self.ensure_one() + assert reward.discount_applicability == 'cheapest' + + cheapest_line = self._cheapest_line() + discountable = cheapest_line.price_unit * (1 - (cheapest_line.discount or 0) / 100) + taxes = cheapest_line.tax_id.filtered(lambda t: t.amount_type != 'fixed') + return discountable, {taxes: discountable} + + def _get_specific_discountable_lines(self, reward): + """ + Returns all lines to which `reward` can apply + """ + self.ensure_one() + assert reward.discount_applicability == 'specific' + + discountable_lines = self.env['sale.order.line'] + for line in (self.order_line - self._get_no_effect_on_threshold_lines()): + domain = reward._get_discount_product_domain() + if not line.reward_id and line.product_id.filtered_domain(domain): + discountable_lines |= line + return discountable_lines + + def _discountable_specific(self, reward): + """ + Special function to compute the discountable for 'specific' types of discount. + The goal of this function is to make sure that applying a 5$ discount on an order with a + 5$ product and a 5% discount does not make the order go below 0. + + Returns the discountable and discountable_per_tax for a discount that only applies to specific products. + """ + self.ensure_one() + assert reward.discount_applicability == 'specific' + + lines_to_discount = self.env['sale.order.line'] + discount_lines = defaultdict(lambda: self.env['sale.order.line']) + order_lines = self.order_line - self._get_no_effect_on_threshold_lines() + remaining_amount_per_line = defaultdict(int) + for line in order_lines: + if not line.product_uom_qty or not line.price_total: + continue + remaining_amount_per_line[line] = line.price_total + domain = reward._get_discount_product_domain() + if not line.reward_id and line.product_id.filtered_domain(domain): + lines_to_discount |= line + elif line.reward_id.reward_type == 'discount': + discount_lines[line.reward_identifier_code] |= line + + order_lines -= self.order_line.filtered("reward_id") + cheapest_line = False + for lines in discount_lines.values(): + line_reward = lines.reward_id + discounted_lines = order_lines + if line_reward.discount_applicability == 'cheapest': + cheapest_line = cheapest_line or self._cheapest_line() + discounted_lines = cheapest_line + elif line_reward.discount_applicability == 'specific': + discounted_lines = self._get_specific_discountable_lines(line_reward) + if not discounted_lines: + continue + common_lines = discounted_lines & lines_to_discount + if line_reward.discount_mode == 'percent': + for line in discounted_lines: + if line_reward.discount_applicability == 'cheapest': + remaining_amount_per_line[line] *= (1 - line_reward.discount / 100 / line.product_uom_qty) + else: + remaining_amount_per_line[line] *= (1 - line_reward.discount / 100) + else: + non_common_lines = discounted_lines - lines_to_discount + # Fixed prices are per tax + discounted_amounts = {line.tax_id.filtered(lambda t: t.amount_type != 'fixed'): abs(line.price_total) for line in lines} + for line in itertools.chain(non_common_lines, common_lines): + # For gift card and eWallet programs we have no tax but we can consume the amount completely + if lines.reward_id.program_id.is_payment_program: + discounted_amount = discounted_amounts[lines.tax_id.filtered(lambda t: t.amount_type != 'fixed')] + else: + discounted_amount = discounted_amounts[line.tax_id.filtered(lambda t: t.amount_type != 'fixed')] + if discounted_amount == 0: + continue + remaining = remaining_amount_per_line[line] + consumed = min(remaining, discounted_amount) + if lines.reward_id.program_id.is_payment_program: + discounted_amounts[lines.tax_id.filtered(lambda t: t.amount_type != 'fixed')] -= consumed + else: + discounted_amounts[line.tax_id.filtered(lambda t: t.amount_type != 'fixed')] -= consumed + remaining_amount_per_line[line] -= consumed + + discountable = 0 + discountable_per_tax = defaultdict(int) + for line in lines_to_discount: + discountable += remaining_amount_per_line[line] + line_discountable = line.price_unit * line.product_uom_qty * (1 - (line.discount or 0.0) / 100.0) + # line_discountable is the same as in a 'order' discount + # but first multiplied by a factor for the taxes to apply + # and then multiplied by another factor coming from the discountable + taxes = line.tax_id.filtered(lambda t: t.amount_type != 'fixed') + discountable_per_tax[taxes] += line_discountable *\ + (remaining_amount_per_line[line] / line.price_total) + return discountable, discountable_per_tax + + def _get_reward_values_discount(self, reward, coupon, **kwargs): + self.ensure_one() + assert reward.reward_type == 'discount' + + # Figure out which lines are concerned by the discount + # cheapest_line = self.env['sale.order.line'] + discountable = 0 + discountable_per_tax = defaultdict(int) + reward_applies_on = reward.discount_applicability + sequence = max(self.order_line.filtered(lambda x: not x.is_reward_line).mapped('sequence'), default=10) + 1 + if reward_applies_on == 'order': + discountable, discountable_per_tax = self._discountable_order(reward) + elif reward_applies_on == 'specific': + discountable, discountable_per_tax = self._discountable_specific(reward) + elif reward_applies_on == 'cheapest': + discountable, discountable_per_tax = self._discountable_cheapest(reward) + if not discountable: + if not reward.program_id.is_payment_program and any(line.reward_id.program_id.is_payment_program for line in self.order_line): + return [{ + 'name': _("TEMPORARY DISCOUNT LINE"), + 'product_id': reward.discount_line_product_id.id, + 'price_unit': 0, + 'product_uom_qty': 0, + 'product_uom': reward.discount_line_product_id.uom_id.id, + 'reward_id': reward.id, + 'coupon_id': coupon.id, + 'points_cost': 0, + 'reward_identifier_code': _generate_random_reward_code(), + 'sequence': sequence, + 'tax_id': [(Command.CLEAR, 0, 0)] + }] + raise UserError(_('There is nothing to discount')) + max_discount = reward.currency_id._convert(reward.discount_max_amount, self.currency_id, self.company_id, fields.Date.today()) or float('inf') + # discount should never surpass the order's current total amount + max_discount = min(self.amount_total, max_discount) + if reward.discount_mode == 'per_point': + points = self._get_real_points_for_coupon(coupon) + if not reward.program_id.is_payment_program: + # Rewards cannot be partially offered to customers + points = points // reward.required_points * reward.required_points + max_discount = min(max_discount, + reward.currency_id._convert(reward.discount * points, + self.currency_id, self.company_id, fields.Date.today())) + elif reward.discount_mode == 'per_order': + max_discount = min(max_discount, + reward.currency_id._convert(reward.discount, self.currency_id, self.company_id, fields.Date.today())) + elif reward.discount_mode == 'percent': + max_discount = min(max_discount, discountable * (reward.discount / 100)) + # Discount per taxes + reward_code = _generate_random_reward_code() + point_cost = reward.required_points if not reward.clear_wallet else self._get_real_points_for_coupon(coupon) + if reward.discount_mode == 'per_point' and not reward.clear_wallet: + # Calculate the actual point cost if the cost is per point + converted_discount = self.currency_id._convert(min(max_discount, discountable), reward.currency_id, self.company_id, fields.Date.today()) + point_cost = converted_discount / reward.discount + # Gift cards and eWallets are considered gift cards and should not have any taxes + if reward.program_id.is_payment_program: + return [{ + 'name': reward.description, + 'product_id': reward.discount_line_product_id.id, + 'price_unit': -min(max_discount, discountable), + 'product_uom_qty': 1.0, + 'product_uom': reward.discount_line_product_id.uom_id.id, + 'reward_id': reward.id, + 'coupon_id': coupon.id, + 'points_cost': point_cost, + 'reward_identifier_code': reward_code, + 'sequence': sequence, + 'tax_id': [(Command.CLEAR, 0, 0)], + }] + discount_factor = min(1, (max_discount / discountable)) if discountable else 1 + mapped_taxes = {tax: self.fiscal_position_id.map_tax(tax) for tax in discountable_per_tax} + reward_dict = {tax: { + 'name': _( + 'Discount: %(desc)s%(tax_str)s', + desc=reward.description, + tax_str=len(discountable_per_tax) and any(t.name for t in mapped_taxes[tax]) and _(' - On product with the following taxes: %(taxes)s', taxes=", ".join(mapped_taxes[tax].mapped('name'))) or '', + ), + 'product_id': reward.discount_line_product_id.id, + 'price_unit': -(price * discount_factor), + 'product_uom_qty': 1.0, + 'product_uom': reward.discount_line_product_id.uom_id.id, + 'reward_id': reward.id, + 'coupon_id': coupon.id, + 'points_cost': 0, + 'reward_identifier_code': reward_code, + 'sequence': sequence, + 'tax_id': [(Command.CLEAR, 0, 0)] + [(Command.LINK, tax.id, False) for tax in mapped_taxes[tax]] + } for tax, price in discountable_per_tax.items() if price} + # We only assign the point cost to one line to avoid counting the cost multiple times + if reward_dict: + reward_dict[next(iter(reward_dict))]['points_cost'] = point_cost + # Returning .values() directly does not return a subscribable list + return list(reward_dict.values()) + + def _get_program_domain(self): + """ + Returns the base domain that all programs have to comply to. + """ + self.ensure_one() + today = fields.Date.context_today(self) + return [('active', '=', True), ('sale_ok', '=', True), + ('company_id', 'in', (self.company_id.id, False)), + '|', ('pricelist_ids', '=', False), ('pricelist_ids', 'in', [self.pricelist_id.id]), + '|', ('date_from', '=', False), ('date_from', '<=', today), + '|', ('date_to', '=', False), ('date_to', '>=', today)] + + def _get_trigger_domain(self): + """ + Returns the base domain that all triggers have to comply to. + """ + self.ensure_one() + today = fields.Date.context_today(self) + return [('active', '=', True), ('program_id.sale_ok', '=', True), + ('company_id', 'in', (self.company_id.id, False)), + '|', ('program_id.pricelist_ids', '=', False), + ('program_id.pricelist_ids', 'in', [self.pricelist_id.id]), + '|', ('program_id.date_from', '=', False), ('program_id.date_from', '<=', today), + '|', ('program_id.date_to', '=', False), ('program_id.date_to', '>=', today)] + + def _get_applicable_program_points(self, domain=None): + """ + Returns a dict with the points per program for each (automatic) program that is applicable + """ + self.ensure_one() + if not domain: + domain = [('trigger', '=', 'auto')] + # Make sure domain always complies with the order's domain rules + domain = expression.AND([self._get_program_domain(), domain]) + # No other way than to test all programs to the order + programs = self.env['loyalty.program'].search(domain) + all_status = self._program_check_compute_points(programs) + program_points = {p: status['points'][0] for p, status in all_status.items() if 'points' in status} + return program_points + + def _get_points_programs(self): + """ + Returns all programs that give points on the current order. + """ + self.ensure_one() + return self.coupon_point_ids.coupon_id.program_id + + def _get_reward_programs(self): + """ + Returns all programs that are being used for rewards. + """ + self.ensure_one() + return self.order_line.reward_id.program_id + + def _get_reward_coupons(self): + """ + Returns all coupons that are a reward. + """ + self.ensure_one() + return self.coupon_point_ids.coupon_id.filtered(lambda c: c.program_id.applies_on == 'future') + + def _get_applied_programs(self): + """ + Returns all applied programs on current order. + + Applied programs is the combination of both new points for your order and the programs linked to rewards. + """ + self.ensure_one() + return self._get_points_programs() | self._get_reward_programs() + + def _compute_invoice_status(self): + # Handling of a specific situation: an order contains + # a product invoiced on delivery and a promo line invoiced + # on order. We would avoid having the invoice status 'to_invoice' + # if the created invoice will only contain the promotion line + super()._compute_invoice_status() + for order in self: + if order.invoice_status != 'to invoice': + continue + if not any(not line.is_reward_line and line.invoice_status == 'to invoice' for line in order.order_line): + order.invoice_status = 'no' + + def _get_invoiceable_lines(self, final=False): + """ Ensures we cannot invoice only reward lines. + + Since promotion lines are specified with service products, + those lines are directly invoiceable when the order is confirmed + which can result in invoices containing only promotion lines. + + To avoid those cases, we allow the invoicing of promotion lines + if at least another 'basic' lines is also invoiceable. + """ + invoiceable_lines = super()._get_invoiceable_lines(final) + for line in invoiceable_lines: + if not line.is_reward_line: + return invoiceable_lines + return self.env['sale.order.line'] + + def _recompute_prices(self): + """Recompute coupons/promotions after pricelist prices reset.""" + super()._recompute_prices() + if any(line.is_reward_line for line in self.order_line): + self._update_programs_and_rewards() + + def _get_point_changes(self): + """ + Returns the changes in points per coupon as a dict. + + Used when validating/cancelling an order + """ + points_per_coupon = defaultdict(lambda: 0) + for coupon_point in self.coupon_point_ids: + points_per_coupon[coupon_point.coupon_id] += coupon_point.points + for line in self.order_line: + if not line.reward_id or not line.coupon_id: + continue + points_per_coupon[line.coupon_id] -= line.points_cost + return points_per_coupon + + def _get_real_points_for_coupon(self, coupon, post_confirm=False): + """ + Returns the actual points usable for this coupon for this order. Set pos_confirm to True to include points for future orders. + + This is calculated by taking the points on the coupon, the points the order will give to the coupon (if applicable) and removing the points taken by already applied rewards. + """ + self.ensure_one() + points = coupon.points + if coupon.program_id.applies_on != 'future' and self.state not in ('sale', 'done'): + # Points that will be given by the order upon confirming the order + points += self.coupon_point_ids.filtered(lambda p: p.coupon_id == coupon).points + # Points already used by rewards + points -= sum(self.order_line.filtered(lambda l: l.coupon_id == coupon).mapped('points_cost')) + points = coupon.currency_id.round(points) + return points + + def _add_points_for_coupon(self, coupon_points): + """ + Updates (or creates) an entry in coupon_point_ids for the given coupons. + """ + self.ensure_one() + if self.state == 'sale': + for coupon, points in coupon_points.items(): + coupon.sudo().points += points + for pe in self.coupon_point_ids.sudo(): + if pe.coupon_id in coupon_points: + pe.points = coupon_points.pop(pe.coupon_id) + if coupon_points: + self.sudo().with_context(tracking_disable=True).write({ + 'coupon_point_ids': [(0, 0, { + 'coupon_id': coupon.id, + 'points': points, + }) for coupon, points in coupon_points.items()] + }) + + def _remove_program_from_points(self, programs): + self.coupon_point_ids.filtered(lambda p: p.coupon_id.program_id in programs).sudo().unlink() + + def _get_reward_line_values(self, reward, coupon, **kwargs): + self.ensure_one() + self = self.with_context(lang=self._get_lang()) + reward = reward.with_context(lang=self._get_lang()) + if reward.reward_type == 'discount': + return self._get_reward_values_discount(reward, coupon, **kwargs) + elif reward.reward_type == 'product': + return self._get_reward_values_product(reward, coupon, **kwargs) + + def _write_vals_from_reward_vals(self, reward_vals, old_lines, delete=True): + """ + Update, create new reward line and delete old lines in one write on `order_line` + + Returns the untouched old lines. + """ + self.ensure_one() + command_list = [] + for vals, line in zip(reward_vals, old_lines): + command_list.append((Command.UPDATE, line.id, vals)) + if len(reward_vals) > len(old_lines): + command_list.extend((Command.CREATE, 0, vals) for vals in reward_vals[len(old_lines):]) + elif len(reward_vals) < len(old_lines) and delete: + command_list.extend((Command.DELETE, line.id) for line in old_lines[len(reward_vals):]) + self.write({'order_line': command_list}) + return self.env['sale.order.line'] if delete else old_lines[len(reward_vals):] + + def _apply_program_reward(self, reward, coupon, **kwargs): + """ + Applies the reward to the order provided the given coupon has enough points. + This method does not check for program rules. + + This method also assumes the points added by the program triggers have already been computed. + The temporary points are used if the program is applicable to the current order. + + Returns a dict containing the error message or empty if everything went correctly. + NOTE: A call to `_update_programs_and_rewards` is expected to reorder the discounts. + """ + self.ensure_one() + # Use the old lines before creating new ones. These should already be in a 'reset' state. + old_reward_lines = kwargs.get('old_lines', self.env['sale.order.line']) + if reward.is_global_discount: + global_discount_reward_lines = self._get_applied_global_discount_lines() + global_discount_reward = global_discount_reward_lines.reward_id + if global_discount_reward and global_discount_reward != reward and global_discount_reward.discount >= reward.discount: + return {'error': _('A better global discount is already applied.')} + elif global_discount_reward and global_discount_reward != reward: + # Invalidate the old global discount as it may impact the new discount to apply + global_discount_reward_lines._reset_loyalty(True) + old_reward_lines |= global_discount_reward_lines + if not reward.program_id.is_nominative and reward.program_id.applies_on == 'future' and coupon in self.coupon_point_ids.coupon_id: + return {'error': _('The coupon can only be claimed on future orders.')} + elif self._get_real_points_for_coupon(coupon) < reward.required_points: + return {'error': _('The coupon does not have enough points for the selected reward.')} + reward_vals = self._get_reward_line_values(reward, coupon, **kwargs) + self._write_vals_from_reward_vals(reward_vals, old_reward_lines) + return {} + + def _get_claimable_rewards(self, forced_coupons=None): + """ + Fetch all rewards that are currently claimable from all concerned coupons, + meaning coupons from applied programs and applied rewards or the coupons given as parameter. + + Returns a dict containing the all the claimable rewards grouped by coupon. + Coupons that can not claim any reward are not contained in the result. + """ + self.ensure_one() + all_coupons = forced_coupons or (self.coupon_point_ids.coupon_id | self.order_line.coupon_id | self.applied_coupon_ids) + has_payment_reward = any(line.reward_id.program_id.is_payment_program for line in self.order_line) + total_is_zero = float_is_zero(self.amount_total, precision_digits=2) + result = defaultdict(lambda: self.env['loyalty.reward']) + global_discount_reward = self._get_applied_global_discount() + for coupon in all_coupons: + points = self._get_real_points_for_coupon(coupon) + for reward in coupon.program_id.reward_ids: + if reward.is_global_discount and global_discount_reward and global_discount_reward.discount >= reward.discount: + continue + # Discounts are not allowed if the total is zero unless there is a payment reward, in which case we allow discounts. + # If the total is 0 again without the payment reward it will be removed. + if reward.reward_type == 'discount' and total_is_zero and (not has_payment_reward or reward.program_id.is_payment_program): + continue + if points >= reward.required_points: + result[coupon] |= reward + return result + + def _allow_nominative_programs(self): + """ + Whether or not this order may use nominative programs. + """ + self.ensure_one() + return True + + def _update_programs_and_rewards(self): + """ + Updates applied programs's given points with the current state of the order. + Checks automatic programs for applicability. + Updates applied rewards using the new points and the current state of the order (for example with % discounts). + """ + self.ensure_one() + + # +===================================================+ + # | STEP 1: Retrieve all applicable programs | + # +===================================================+ + + # Automatically load in eWallet coupons + if self._allow_nominative_programs(): + ewallet_coupons = self.env['loyalty.card'].search( + [('id', 'not in', self.applied_coupon_ids.ids), ('partner_id', '=', self.partner_id.id), + ('points', '>', 0), ('program_id.program_type', '=', 'ewallet')]) + if ewallet_coupons: + self.applied_coupon_ids += ewallet_coupons + # Programs that are applied to the order and count points + points_programs = self._get_points_programs() + # Coupon programs that require the program's rules to match but do not count for points + coupon_programs = self.applied_coupon_ids.program_id + # Programs that are automatic and not yet applied + program_domain = self._get_program_domain() + domain = expression.AND([program_domain, [('id', 'not in', points_programs.ids), ('trigger', '=', 'auto'), ('rule_ids.mode', '=', 'auto')]]) + automatic_programs = self.env['loyalty.program'].search(domain).filtered(lambda p: + not p.limit_usage or p.total_order_count < p.max_usage) + + all_programs_to_check = points_programs | coupon_programs | automatic_programs + all_coupons = self.coupon_point_ids.coupon_id | self.applied_coupon_ids + # First basic check using the program_domain -> for example if a program gets archived mid quotation + domain_matching_programs = all_programs_to_check.filtered_domain(program_domain) + all_programs_status = {p: {'error': 'error'} for p in all_programs_to_check - domain_matching_programs} + # Compute applicability and points given for all programs that passed the domain check + # Note that points are computed with reward lines present + all_programs_status.update(self._program_check_compute_points(domain_matching_programs)) + # Delay any unlink to the end of the function since they cause a full cache invalidation + lines_to_unlink = self.env['sale.order.line'] + coupons_to_unlink = self.env['loyalty.card'] + point_entries_to_unlink = self.env['sale.order.coupon.points'] + # Remove any coupons that are expired + self.applied_coupon_ids = self.applied_coupon_ids.filtered(lambda c: + (not c.expiration_date or c.expiration_date >= fields.Date.today()) + ) + point_ids_per_program = defaultdict(lambda: self.env['sale.order.coupon.points']) + for pe in self.coupon_point_ids: + # Remove any point entry for a coupon that does not belong to the customer + if pe.coupon_id.partner_id and pe.coupon_id.partner_id != self.partner_id: + pe.points = 0 + point_entries_to_unlink |= pe + else: + point_ids_per_program[pe.coupon_id.program_id] |= pe + + # +==========================================+ + # | STEP 2: Update applied programs | + # +==========================================+ + + # Programs that were not applied via a coupon + for program in points_programs: + status = all_programs_status[program] + program_point_entries = point_ids_per_program[program] + if 'error' in status: + # Program is not applicable anymore + coupons_from_order = program_point_entries.coupon_id.filtered(lambda c: c.order_id == self) + all_coupons -= coupons_from_order + # Invalidate those lines so that they don't impact anything further down the line + program_reward_lines = self.order_line.filtered(lambda l: l.coupon_id in coupons_from_order) + program_reward_lines._reset_loyalty(True) + lines_to_unlink |= program_reward_lines + # Delete coupon created by this order for this program if it is not nominative + if not program.is_nominative: + coupons_to_unlink |= coupons_from_order + else: + # Only remove the coupon_point_id + point_entries_to_unlink |= program_point_entries + point_entries_to_unlink.points = 0 + # Remove the code activated rules + self.code_enabled_rule_ids -= program.rule_ids + else: + # Program stays applicable, update our points + all_point_changes = [p for p in status['points'] if p] + if not all_point_changes and program.is_nominative: + all_point_changes = [0] + for pe, points in zip(program_point_entries.sudo(), all_point_changes): + pe.points = points + if len(program_point_entries) < len(all_point_changes): + new_coupon_points = all_point_changes[len(program_point_entries):] + # NOTE: Maybe we could batch the creation of coupons across multiple programs but this really only applies to gift cards + new_coupons = self.env['loyalty.card'].with_context(loyalty_no_mail=True, tracking_disable=True).create([{ + 'program_id': program.id, + 'partner_id': False, + 'points': 0, + 'order_id': self.id, + } for _ in new_coupon_points]) + self._add_points_for_coupon({coupon: x for coupon, x in zip(new_coupons, new_coupon_points)}) + elif len(program_point_entries) > len(all_point_changes): + point_ids_to_unlink = program_point_entries[len(all_point_changes):] + all_coupons -= point_ids_to_unlink.coupon_id + coupons_to_unlink |= point_ids_to_unlink.coupon_id + point_ids_to_unlink.points = 0 + + # Programs applied using a coupon + applied_coupon_per_program = defaultdict(lambda: self.env['loyalty.card']) + for coupon in self.applied_coupon_ids: + applied_coupon_per_program[coupon.program_id] |= coupon + for program in coupon_programs: + if program not in domain_matching_programs or\ + (program.applies_on == 'current' and 'error' in all_programs_status[program]): + program_reward_lines = self.order_line.filtered(lambda l: l.coupon_id in applied_coupon_per_program[program]) + program_reward_lines._reset_loyalty(True) + lines_to_unlink |= program_reward_lines + self.applied_coupon_ids -= applied_coupon_per_program[program] + all_coupons -= applied_coupon_per_program[program] + + # +==========================================+ + # | STEP 3: Update reward lines | + # +==========================================+ + + # We will reuse these lines as much as possible, this resets the order in a reward-less state + reward_line_pool = self.order_line.filtered(lambda l: l.reward_id and l.coupon_id)._reset_loyalty() + seen_rewards = set() + line_rewards = [] + payment_rewards = [] # gift_card and ewallet are considered as payments and should always be applied last + for line in self.order_line: + if line.reward_identifier_code in seen_rewards or not line.reward_id or\ + not line.coupon_id: + continue + seen_rewards.add(line.reward_identifier_code) + if line.reward_id.program_id.is_payment_program: + payment_rewards.append((line.reward_id, line.coupon_id, line.reward_identifier_code, line.product_id)) + else: + line_rewards.append((line.reward_id, line.coupon_id, line.reward_identifier_code, line.product_id)) + + for reward_key in itertools.chain(line_rewards, payment_rewards): + coupon = reward_key[1] + reward = reward_key[0] + program = reward.program_id + points = self._get_real_points_for_coupon(coupon) + if coupon not in all_coupons or points < reward.required_points or program not in domain_matching_programs: + # Reward is not applicable anymore, the reward lines will simply be removed at the end of this function + continue + try: + values_list = self._get_reward_line_values(reward, coupon, product=reward_key[3]) + except UserError: + # It could happen that we have nothing to discount after changing the order. + values_list = [] + reward_line_pool = self._write_vals_from_reward_vals(values_list, reward_line_pool, delete=False) + + lines_to_unlink |= reward_line_pool + + # +==========================================+ + # | STEP 4: Apply new programs | + # +==========================================+ + + for program in automatic_programs: + program_status = all_programs_status[program] + if 'error' in program_status: + continue + self.__try_apply_program(program, False, program_status) + + # +==========================================+ + # | STEP 5: Cleanup | + # +==========================================+ + + order_line_update = [(Command.DELETE, line.id) for line in lines_to_unlink] + if order_line_update: + self.write({'order_line': order_line_update}) + if coupons_to_unlink: + coupons_to_unlink.sudo().unlink() + if point_entries_to_unlink: + point_entries_to_unlink.sudo().unlink() + + def _get_not_rewarded_order_lines(self): + return self.order_line.filtered(lambda line: line.product_id and not line.reward_id) + + def _program_check_compute_points(self, programs): + """ + Checks the program validity from the order lines aswell as computing the number of points to add. + + Returns a dict containing the error message or the points that will be given with the keys 'points'. + """ + self.ensure_one() + + # Prepare quantities + order_lines = self._get_not_rewarded_order_lines() + products = order_lines.product_id + products_qties = dict.fromkeys(products, 0) + for line in order_lines: + products_qties[line.product_id] += line.product_uom_qty + # Contains the products that can be applied per rule + products_per_rule = programs._get_valid_products(products) + + # Prepare amounts + no_effect_lines = self._get_no_effect_on_threshold_lines() + base_untaxed_amount = self.amount_untaxed - sum(line.price_subtotal for line in no_effect_lines) + base_tax_amount = self.amount_tax - sum(line.price_tax for line in no_effect_lines) + amounts_per_program = {p: {'untaxed': base_untaxed_amount, 'tax': base_tax_amount} for p in programs} + for line in self.order_line: + if not line.reward_id or line.reward_id.reward_type != 'discount': + continue + for program in programs: + # Do not consider the program's discount + automatic discount lines for the amount to check. + if line.reward_id.program_id.trigger == 'auto' or line.reward_id.program_id == program: + amounts_per_program[program]['untaxed'] -= line.price_subtotal + amounts_per_program[program]['tax'] -= line.price_tax + + result = {} + for program in programs: + untaxed_amount = amounts_per_program[program]['untaxed'] + tax_amount = amounts_per_program[program]['tax'] + + # Used for error messages + # By default False, but True if no rules and applies_on current -> misconfigured coupons program + code_matched = not bool(program.rule_ids) and program.applies_on == 'current' # Stays false if all triggers have code and none have been activated + minimum_amount_matched = code_matched + product_qty_matched = code_matched + points = 0 + # Some rules may split their points per unit / money spent + # (i.e. gift cards 2x50$ must result in two 50$ codes) + rule_points = [] + program_result = result.setdefault(program, dict()) + for rule in program.rule_ids: + if rule.mode == 'with_code' and rule not in self.code_enabled_rule_ids: + continue + code_matched = True + rule_amount = rule._compute_amount(self.currency_id) + if rule_amount > (rule.minimum_amount_tax_mode == 'incl' and (untaxed_amount + tax_amount) or untaxed_amount): + continue + minimum_amount_matched = True + if not products_per_rule.get(rule): + continue + rule_products = products_per_rule[rule] + ordered_rule_products_qty = sum(products_qties[product] for product in rule_products) + if ordered_rule_products_qty < rule.minimum_qty or not rule_products: + continue + product_qty_matched = True + if not rule.reward_point_amount: + continue + # Count all points separately if the order is for the future and the split option is enabled + if program.applies_on == 'future' and rule.reward_point_split and rule.reward_point_mode != 'order': + if rule.reward_point_mode == 'unit': + rule_points.extend(rule.reward_point_amount for _ in range(int(ordered_rule_products_qty))) + elif rule.reward_point_mode == 'money': + for line in self.order_line: + if line.is_reward_line or line.product_id not in rule_products or line.product_uom_qty <= 0: + continue + points_per_unit = float_round( + (rule.reward_point_amount * line.price_total / line.product_uom_qty), + precision_digits=2, rounding_method='DOWN') + if not points_per_unit: + continue + rule_points.extend([points_per_unit] * int(line.product_uom_qty)) + else: + # All checks have been passed we can now compute the points to give + if rule.reward_point_mode == 'order': + points += rule.reward_point_amount + elif rule.reward_point_mode == 'money': + # Compute amount paid for rule + # NOTE: this does not account for discounts -> 1 point per $ * (100$ - 30%) will result in 100 points + amount_paid = sum(max(0, line.price_total) for line in order_lines if line.product_id in rule_products) + points += float_round(rule.reward_point_amount * amount_paid, precision_digits=2, rounding_method='DOWN') + elif rule.reward_point_mode == 'unit': + points += rule.reward_point_amount * ordered_rule_products_qty + # NOTE: for programs that are nominative we always allow the program to be 'applied' on the order + # with 0 points so that `_get_claimable_rewards` returns the rewards associated with those programs + if not program.is_nominative: + if not code_matched: + program_result['error'] = _("This program requires a code to be applied.") + elif not minimum_amount_matched: + program_result['error'] = _( + 'A minimum of %(amount)s %(currency)s should be purchased to get the reward', + amount=min(program.rule_ids.mapped('minimum_amount')), + currency=program.currency_id.name, + ) + elif not product_qty_matched: + program_result['error'] = _("You don't have the required product quantities on your sales order.") + elif not self._allow_nominative_programs(): + program_result['error'] = _("This program is not available for public users.") + if 'error' not in program_result: + points_result = [points] + rule_points + program_result['points'] = points_result + return result + + def __try_apply_program(self, program, coupon, status): + self.ensure_one() + all_points = status['points'] + points = all_points[0] + coupons = coupon or self.env['loyalty.card'] + if coupon: + if program.is_nominative: + self._add_points_for_coupon({coupon: points}) + elif not coupon: + # If the program only applies on the current order it does not make sense to fetch already existing coupons + if program.is_nominative: + coupon = self.env['loyalty.card'].search( + [('partner_id', '=', self.partner_id.id), ('program_id', '=', program.id)], limit=1) + # Do not apply 'nominative' programs if no point is given and no coupon exists + if not points and not coupon: + return {'error': _('No card found for this loyalty program and no points will be given with this order.')} + elif coupon: + self._add_points_for_coupon({coupon: points}) + coupons = coupon + if not coupon: + all_points = [p for p in all_points if p] + partner = False + # Loyalty programs and ewallets are nominative + if program.is_nominative: + partner = self.partner_id.id + coupons = self.env['loyalty.card'].sudo().with_context(loyalty_no_mail=True, tracking_disable=True).create([{ + 'program_id': program.id, + 'partner_id': partner, + 'points': 0, + 'order_id': self.id, + } for _ in all_points]) + self._add_points_for_coupon({coupon: x for coupon, x in zip(coupons, all_points)}) + return {'coupon': coupons} + + def _try_apply_program(self, program, coupon=None): + """ + Tries to apply a program using the coupon if provided. + + This function provides the full routine to apply a program, it will check for applicability + aswell as creating the necessary coupons and co-models to give the points to the customer. + + This function does not apply any reward to the order, rewards have to be given manually. + + Returns a dict containing the error message or containing the associated coupon(s). + """ + self.ensure_one() + # Basic checks + if not program.filtered_domain(self._get_program_domain()): + return {'error': _('The program is not available for this order.')} + elif program in self._get_applied_programs(): + return {'error': _('This program is already applied to this order.')} + # Check for applicability from the program's triggers/rules. + # This step should also compute the amount of points to give for that program on that order. + status = self._program_check_compute_points(program)[program] + if 'error' in status: + return status + return self.__try_apply_program(program, coupon, status) + + def _try_apply_code(self, code): + """ + Tries to apply a promotional code to the sales order. + It can be either from a coupon or a program rule. + + Returns a dict with the following possible keys: + - 'not_found': Populated with True if the code did not yield any result. + - 'error': Any error message that could occur. + OR The result of `_get_claimable_rewards` with the found or newly created coupon, it will be empty if the coupon was consumed completely. + """ + self.ensure_one() + + base_domain = self._get_trigger_domain() + domain = expression.AND([base_domain, [('mode', '=', 'with_code'), ('code', '=', code)]]) + rule = self.env['loyalty.rule'].search(domain) + program = rule.program_id + coupon = False + + if rule in self.code_enabled_rule_ids: + return {'error': _('This promo code is already applied.')} + + # No trigger was found from the code, try to find a coupon + if not program: + coupon = self.env['loyalty.card'].search([('code', '=', code)]) + if not coupon or\ + not coupon.program_id.active or\ + not coupon.program_id.reward_ids or\ + not coupon.program_id.filtered_domain(self._get_program_domain()): + return {'error': _('This code is invalid (%s).', code), 'not_found': True} + elif coupon.expiration_date and coupon.expiration_date < fields.Date.today(): + return {'error': _('This coupon is expired.')} + elif coupon.points < min(coupon.program_id.reward_ids.mapped('required_points')): + return {'error': _('This coupon has already been used.')} + program = coupon.program_id + + if not program or not program.active: + return {'error': _('This code is invalid (%s).', code), 'not_found': True} + elif (program.limit_usage and program.total_order_count >= program.max_usage): + return {'error': _('This code is expired (%s).', code)} + + # Rule will count the next time the points are updated + if rule: + self.code_enabled_rule_ids |= rule + program_is_applied = program in self._get_points_programs() + # Condition that need to apply program (if not applied yet): + # current -> always + # future -> if no coupon + # nominative -> non blocking if card exists with points + if coupon: + self.applied_coupon_ids += coupon + if program_is_applied: + # Update the points for our programs, this will take the new trigger in account + self._update_programs_and_rewards() + elif program.applies_on != 'future' or not coupon: + apply_result = self._try_apply_program(program, coupon) + if 'error' in apply_result and (not program.is_nominative or (program.is_nominative and not coupon)): + if rule: + self.code_enabled_rule_ids -= rule + if coupon: + self.applied_coupon_ids -= coupon + return apply_result + coupon = apply_result.get('coupon', self.env['loyalty.card']) + return self._get_claimable_rewards(forced_coupons=coupon) diff --git a/models/sale_order_coupon_points.py b/models/sale_order_coupon_points.py new file mode 100644 index 0000000..904cdbc --- /dev/null +++ b/models/sale_order_coupon_points.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import fields, models + + +class SaleOrderCouponPoints(models.Model): + _name = 'sale.order.coupon.points' + _description = 'Sale Order Coupon Points - Keeps track of how a sale order impacts a coupon' + + order_id = fields.Many2one(comodel_name='sale.order', required=True, ondelete='cascade') + coupon_id = fields.Many2one(comodel_name='loyalty.card', required=True, ondelete='cascade') + points = fields.Float(required=True) + + _sql_constraints = [ + ('order_coupon_unique', 'UNIQUE (order_id, coupon_id)', + 'The coupon points entry already exists.') + ] diff --git a/models/sale_order_line.py b/models/sale_order_line.py new file mode 100644 index 0000000..dea63aa --- /dev/null +++ b/models/sale_order_line.py @@ -0,0 +1,119 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import api, fields, models + + +class SaleOrderLine(models.Model): + _inherit = 'sale.order.line' + + is_reward_line = fields.Boolean( + string="Is a program reward line", compute='_compute_is_reward_line') + reward_id = fields.Many2one( + comodel_name='loyalty.reward', ondelete='restrict', readonly=True) + coupon_id = fields.Many2one( + comodel_name='loyalty.card', ondelete='restrict', readonly=True) + reward_identifier_code = fields.Char( + help="Technical field used to link multiple reward lines from the same reward together.") + points_cost = fields.Float(help="How much point this reward costs on the loyalty card.") + + def _compute_name(self): + # Avoid computing the name for reward lines + reward = self.filtered('reward_id') + super(SaleOrderLine, self - reward)._compute_name() + + @api.depends('reward_id') + def _compute_is_reward_line(self): + for line in self: + line.is_reward_line = bool(line.reward_id) + + def _compute_tax_id(self): + reward_lines = self.filtered('is_reward_line') + super(SaleOrderLine, self - reward_lines)._compute_tax_id() + # Discount reward line is split per tax, the discount is set on the line but not on the product + # as the product is the generic discount line. + # In case of a free product, retrieving the tax on the line instead of the product won't affect the behavior. + for line in reward_lines: + line = line.with_company(line.company_id) + fpos = line.order_id.fiscal_position_id or line.order_id.fiscal_position_id._get_fiscal_position(line.order_partner_id) + # If company_id is set, always filter taxes by the company + taxes = line.tax_id.filtered(lambda r: not line.company_id or r.company_id == line.company_id) + line.tax_id = fpos.map_tax(taxes) + + def _get_display_price(self): + # A product created from a promotion does not have a list_price. + # The price_unit of a reward order line is computed by the promotion, so it can be used directly + if self.is_reward_line and self.reward_id.reward_type != 'product': + return self.price_unit + return super()._get_display_price() + + def _is_not_sellable_line(self): + return self.is_reward_line or super()._is_not_sellable_line() + + def _reset_loyalty(self, complete=False): + """ + Reset the line(s) to a state which does not impact reward computation. + If complete is set to True we also remove the coupon and reward from the line(s). + This option should be used when the line will be unlinked. + + Returns self + """ + vals = { + 'points_cost': 0, + 'price_unit': 0, + } + if complete: + vals.update({ + 'coupon_id': False, + 'reward_id': False, + }) + self.write(vals) + return self + + @api.model_create_multi + def create(self, vals_list): + res = super().create(vals_list) + # Update our coupon points if the order is in a confirmed state + for line in res: + if line.coupon_id and line.points_cost and line.state == 'sale': + line.coupon_id.points -= line.points_cost + return res + + def write(self, vals): + cost_in_vals = 'points_cost' in vals + if cost_in_vals: + previous_cost = {l: l.points_cost for l in self} + res = super().write(vals) + if cost_in_vals: + # Update our coupon points if the order is in a confirmed state + for line in self: + if previous_cost[line] != line.points_cost and line.state == 'sale': + line.coupon_id.points += (previous_cost[line] - line.points_cost) + return res + + def unlink(self): + # Remove related reward lines + reward_coupon_set = {(l.reward_id, l.coupon_id, l.reward_identifier_code) for l in self if l.reward_id} + related_lines = self.env['sale.order.line'] + related_lines |= self.order_id.order_line.filtered(lambda l: (l.reward_id, l.coupon_id, l.reward_identifier_code) in reward_coupon_set) + # Remove the line's coupon from order if it is the last line using that coupon + coupons_to_unlink = self.env['loyalty.card'] + for line in self: + if line.coupon_id: + # 2 cases: + # case 1: coupon has been applied directly + # case 2: coupon was created from a program + if line.coupon_id in line.order_id.applied_coupon_ids: + line.order_id.applied_coupon_ids -= line.coupon_id + elif line.coupon_id.order_id == line.order_id and line.coupon_id.program_id.applies_on == 'current' and\ + not any(oLine.coupon_id == line.coupon_id and oLine not in related_lines for oLine in line.order_id.order_line): + # ondelete='restrict' would prevent deletion of the coupon unlink after unlinking lines + coupons_to_unlink |= line.coupon_id + line.order_id.code_enabled_rule_ids = line.order_id.code_enabled_rule_ids.filtered(lambda r: r.program_id != line.coupon_id.program_id) + # Give back the points if the order is confirmed, points are given back if the order is cancelled but in this case we need to do it directly + for line in related_lines: + if line.state == 'sale': + line.coupon_id.points += line.points_cost + res = super(SaleOrderLine, self | related_lines).unlink() + coupons_to_unlink.sudo().unlink() + return res diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv new file mode 100644 index 0000000..fef3562 --- /dev/null +++ b/security/ir.model.access.csv @@ -0,0 +1,16 @@ +id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink +access_program_salesman,Loyalty Program (Salesperson),loyalty.model_loyalty_program,sales_team.group_sale_salesman,1,0,0,0 +access_program_manager,Loyalty Program (Manager),loyalty.model_loyalty_program,sales_team.group_sale_manager,1,1,1,1 +access_applicability_salesman,Loyalty Rule (Salesperson),loyalty.model_loyalty_rule,sales_team.group_sale_salesman,1,0,0,0 +access_applicability_manager,Loyalty Rule (Manager),loyalty.model_loyalty_rule,sales_team.group_sale_manager,1,1,1,1 +access_coupon_salesman,Loyalty (Salesperson),loyalty.model_loyalty_card,sales_team.group_sale_salesman,1,1,0,0 +access_coupon_manager,Loyalty (Manager),loyalty.model_loyalty_card,sales_team.group_sale_manager,1,1,1,0 +access_reward_salesman,Loyalty Reward (Salesperson),loyalty.model_loyalty_reward,sales_team.group_sale_salesman,1,0,0,0 +access_reward_manager,Loyalty Reward (Manager),loyalty.model_loyalty_reward,sales_team.group_sale_manager,1,1,1,1 +access_communication_salesman,Loyalty Communication (Salesperson),loyalty.model_loyalty_mail,sales_team.group_sale_salesman,1,0,0,0 +access_communication_manager,Loyalty Communication (Manager),loyalty.model_loyalty_mail,sales_team.group_sale_manager,1,1,1,1 +access_sale_coupon_apply_code,Loyalty Coupon Wizard,model_sale_loyalty_coupon_wizard,sales_team.group_sale_salesman,1,1,1,0 +access_sale_coupon_apply_code_line,Loyalty Reward Wizard,model_sale_loyalty_reward_wizard,sales_team.group_sale_salesman,1,1,1,0 +access_sale_coupon_generate,Coupon Generation,loyalty.model_loyalty_generate_wizard,sales_team.group_sale_salesman,1,1,1,0 +access_sale_order_coupon_points_manager,Coupon Points (Manager),model_sale_order_coupon_points,sales_team.group_sale_manager,1,1,1,1 +access_sale_order_coupon_points_salesman,Coupon Points (Salesperson),model_sale_order_coupon_points,sales_team.group_sale_salesman,1,0,0,0 diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..a86c253 --- /dev/null +++ b/tests/__init__.py @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from . import test_buy_gift_card +from . import test_loyalty +from . import test_pay_with_gift_card +from . import test_program_multi_company +from . import test_program_numbers +from . import test_program_rules +from . import test_program_with_code_operations +from . import test_program_without_code_operations +from . import test_sale_invoicing diff --git a/tests/common.py b/tests/common.py new file mode 100644 index 0000000..67dca08 --- /dev/null +++ b/tests/common.py @@ -0,0 +1,328 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from collections import defaultdict +from odoo.addons.sale.tests.test_sale_product_attribute_value_config import TestSaleProductAttributeValueCommon +from odoo.exceptions import ValidationError + + +class TestSaleCouponCommon(TestSaleProductAttributeValueCommon): + + @classmethod + def setUpClass(cls): + super(TestSaleCouponCommon, cls).setUpClass() + # set currency to not rely on demo data and avoid possible race condition + cls.currency_ratio = 1.0 + + # Set all the existing programs to active=False to avoid interference + cls.env['loyalty.program'].search([]).sudo().write({'active': False}) + + # create partner for sale order. + cls.steve = cls.env['res.partner'].create({ + 'name': 'Steve Bucknor', + 'email': 'steve.bucknor@example.com', + }) + + cls.empty_order = cls.env['sale.order'].create({ + 'partner_id': cls.steve.id + }) + + cls.uom_unit = cls.env.ref('uom.product_uom_unit') + + # Taxes + cls.tax_15pc_excl = cls.env['account.tax'].create({ + 'name': "Tax 15%", + 'amount_type': 'percent', + 'amount': 15, + 'type_tax_use': 'sale', + }) + + cls.tax_10pc_incl = cls.env['account.tax'].create({ + 'name': "10% Tax incl", + 'amount_type': 'percent', + 'amount': 10, + 'price_include': True, + }) + + cls.tax_10pc_base_incl = cls.env['account.tax'].create({ + 'name': "10% Tax incl base amount", + 'amount_type': 'percent', + 'amount': 10, + 'price_include': True, + 'include_base_amount': True, + }) + + cls.tax_10pc_excl = cls.env['account.tax'].create({ + 'name': "10% Tax excl", + 'amount_type': 'percent', + 'amount': 10, + 'price_include': False, + }) + + cls.tax_20pc_excl = cls.env['account.tax'].create({ + 'name': "20% Tax excl", + 'amount_type': 'percent', + 'amount': 20, + 'price_include': False, + }) + + #products + cls.product_A = cls.env['product.product'].create({ + 'name': 'Product A', + 'list_price': 100, + 'sale_ok': True, + 'taxes_id': [(6, 0, [cls.tax_15pc_excl.id])], + }) + + cls.product_B = cls.env['product.product'].create({ + 'name': 'Product B', + 'list_price': 5, + 'sale_ok': True, + 'taxes_id': [(6, 0, [cls.tax_15pc_excl.id])], + }) + + cls.product_C = cls.env['product.product'].create({ + 'name': 'Product C', + 'list_price': 100, + 'sale_ok': True, + 'taxes_id': [(6, 0, [])], + }) + + cls.product_gift_card = cls.env['product.product'].create({ + 'name': 'Gift Card 50', + 'detailed_type': 'service', + 'list_price': 50, + 'sale_ok': True, + 'taxes_id': False, + }) + + # Immediate Program By A + B: get B free + # No Conditions + cls.program_gift_card = cls.env['loyalty.program'].create({ + 'name': 'Gift Cards', + 'applies_on': 'future', + 'program_type': 'gift_card', + 'trigger': 'auto', + 'rule_ids': [(0, 0, { + 'product_ids': cls.product_gift_card, + 'reward_point_amount': 1, + 'reward_point_mode': 'money', + 'reward_point_split': True, + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount': 1, + 'discount_mode': 'per_point', + 'discount_applicability': 'order', + })] + }) + cls.immediate_promotion_program = cls.env['loyalty.program'].create({ + 'name': 'Buy A + 1 B, 1 B are free', + 'program_type': 'promotion', + 'applies_on': 'current', + 'company_id': cls.env.company.id, + 'trigger': 'auto', + 'rule_ids': [(0, 0, { + 'product_ids': cls.product_A, + 'reward_point_amount': 1, + 'reward_point_mode': 'order', + 'minimum_qty': 1, + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'product', + 'reward_product_id': cls.product_B.id, + 'reward_product_qty': 1, + 'required_points': 1, + })], + }) + cls.code_promotion_program = cls.env['loyalty.program'].create({ + 'name': 'Buy 1 A + Enter code, 1 A is free', + 'program_type': 'coupons', + 'trigger': 'with_code', + 'applies_on': 'current', + 'company_id': cls.env.company.id, + 'rule_ids': [(0, 0, { + 'product_ids': cls.product_A, + 'reward_point_amount': 1, + 'reward_point_mode': 'order', + 'minimum_qty': 1, + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'product', + 'reward_product_id': cls.product_A.id, + 'reward_product_qty': 1, + 'required_points': 1, + })], + }) + cls.code_promotion_program_with_discount = cls.env['loyalty.program'].create({ + 'name': 'Buy 1 C + Enter code, 10 percent discount on C', + 'program_type': 'coupons', + 'trigger': 'with_code', + 'applies_on': 'current', + 'company_id': cls.env.company.id, + 'rule_ids': [(0, 0, { + 'mode': 'with_code', + 'code': 'promotion_code_disc', + 'product_ids': cls.product_C, + 'reward_point_amount': 1, + 'reward_point_mode': 'order', + 'minimum_qty': 1, + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount_mode': 'percent', + 'discount': 10, + 'discount_applicability': 'order', + 'required_points': 1, + })], + }) + + def _extract_rewards_from_claimable(self, status): + rewards = self.env['loyalty.reward'] + for info in status.values(): + for reward_count in info['rewards']: + rewards |= reward_count[0] + + def _apply_promo_code(self, order, code, no_reward_fail=True): + status = order._try_apply_code(code) + if 'error' in status: + raise ValidationError(status['error']) + if not status and no_reward_fail: + # Can happen if global discount got filtered out in `_get_claimable_rewards` + raise ValidationError('No reward to claim with this coupon') + coupons = self.env['loyalty.card'] + rewards = self.env['loyalty.reward'] + for coupon, coupon_rewards in status.items(): + coupons |= coupon + rewards |= coupon_rewards + if len(coupons) == 1 and len(rewards) == 1: + status = order._apply_program_reward(rewards, coupons) + if 'error' in status: + raise ValidationError(status['error']) + + def _claim_reward(self, order, program, coupon=False): + if len(program.reward_ids) != 1: + return False + coupon = coupon or order.coupon_point_ids.coupon_id.filtered(lambda c: c.program_id == program) + if len(coupon) != 1: + return False + status = order._apply_program_reward(program.reward_ids, coupon) + return 'error' not in status + + def _auto_rewards(self, order, programs): + order._update_programs_and_rewards() + coupons_per_program = defaultdict(lambda: self.env['loyalty.card']) + for coupon in order.coupon_point_ids.coupon_id: + coupons_per_program[coupon.program_id] |= coupon + for program in programs: + if len(program.reward_ids) > 1 or len(coupons_per_program[program]) != 1 or not program.active: + continue + self._claim_reward(order, program, coupons_per_program[program]) + +class TestSaleCouponNumbersCommon(TestSaleCouponCommon): + @classmethod + def setUpClass(cls): + super().setUpClass() + + cls.largeCabinet = cls.env['product.product'].create({ + 'name': 'Large Cabinet', + 'list_price': 320.0, + 'taxes_id': False, + }) + cls.conferenceChair = cls.env['product.product'].create({ + 'name': 'Conference Chair', + 'list_price': 16.5, + 'taxes_id': False, + }) + cls.pedalBin = cls.env['product.product'].create({ + 'name': 'Pedal Bin', + 'list_price': 47.0, + 'taxes_id': False, + }) + cls.drawerBlack = cls.env['product.product'].create({ + 'name': 'Drawer Black', + 'list_price': 25.0, + 'taxes_id': False, + }) + cls.largeMeetingTable = cls.env['product.product'].create({ + 'name': 'Large Meeting Table', + 'list_price': 40000.0, + 'taxes_id': False, + }) + + cls.steve = cls.env['res.partner'].create({ + 'name': 'Steve Bucknor', + 'email': 'steve.bucknor@example.com', + }) + cls.empty_order = cls.env['sale.order'].create({ + 'partner_id': cls.steve.id + }) + + cls.p1 = cls.env['loyalty.program'].create({ + 'name': 'Code for 10% on orders', + 'trigger': 'with_code', + 'program_type': 'promotion', + 'applies_on': 'current', + 'rule_ids': [(0, 0, { + 'mode': 'with_code', + 'code': 'test_10pc', + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount_mode': 'percent', + 'discount': 10, + 'discount_applicability': 'order', + 'required_points': 1, + })], + }) + cls.p2 = cls.env['loyalty.program'].create({ + 'name': 'Buy 3 cabinets, get one for free', + 'trigger': 'auto', + 'program_type': 'promotion', + 'applies_on': 'current', + 'rule_ids': [(0, 0, { + 'product_ids': cls.largeCabinet, + 'reward_point_mode': 'unit', + 'minimum_qty': 3, + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'product', + 'reward_product_id': cls.largeCabinet.id, + 'reward_product_qty': 1, + 'required_points': 3, + })], + }) + cls.p3 = cls.env['loyalty.program'].create({ + 'name': 'Buy 1 drawer black, get a free Large Meeting Table', + 'trigger': 'auto', + 'program_type': 'promotion', + 'applies_on': 'current', + 'rule_ids': [(0, 0, { + 'product_ids': cls.drawerBlack, + 'reward_point_mode': 'order', + 'minimum_qty': 1, + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'product', + 'reward_product_id': cls.largeMeetingTable.id, + 'reward_product_qty': 1, + 'required_points': 1, + })], + }) + cls.discount_coupon_program = cls.env['loyalty.program'].create({ + 'name': '$100 coupon', + 'program_type': 'coupons', + 'trigger': 'with_code', + 'applies_on': 'current', + 'rule_ids': [(0, 0, { + 'minimum_amount': 100, + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount_mode': 'per_point', + 'discount': 100, + 'discount_applicability': 'order', + 'required_points': 1, + })], + }) + cls.all_programs = cls.env['loyalty.program'].search([]) diff --git a/tests/test_buy_gift_card.py b/tests/test_buy_gift_card.py new file mode 100644 index 0000000..5739ee4 --- /dev/null +++ b/tests/test_buy_gift_card.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo.addons.sale_loyalty.tests.common import TestSaleCouponCommon +from odoo.tests.common import tagged + +@tagged('-at_install', 'post_install') +class TestBuyGiftCard(TestSaleCouponCommon): + + def test_buying_gift_card(self): + order = self.empty_order + self.immediate_promotion_program.active = False + order.write({'order_line': [ + (0, False, { + 'product_id': self.product_A.id, + 'name': 'Ordinary Product A', + 'product_uom': self.uom_unit.id, + 'product_uom_qty': 1.0, + }), + (0, False, { + 'product_id': self.product_gift_card.id, + 'name': 'Gift Card Product', + 'product_uom': self.uom_unit.id, + 'product_uom_qty': 1.0, + }) + ]}) + self.assertEqual(len(order.order_line.ids), 2) + self.assertEqual(len(order._get_reward_coupons()), 0) + order._update_programs_and_rewards() + self.assertEqual(len(order._get_reward_coupons()), 1) + order.order_line[1].product_uom_qty = 2 + order._update_programs_and_rewards() + self.assertEqual(len(order._get_reward_coupons()), 2) + order.order_line[1].product_uom_qty = 1 + order._update_programs_and_rewards() + self.assertEqual(len(order._get_reward_coupons()), 1) diff --git a/tests/test_loyalty.py b/tests/test_loyalty.py new file mode 100644 index 0000000..b626f02 --- /dev/null +++ b/tests/test_loyalty.py @@ -0,0 +1,565 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import Command +from odoo.exceptions import ValidationError +from odoo.tests import tagged, new_test_user +from odoo.tools.float_utils import float_compare + +from odoo.addons.sale_loyalty.tests.common import TestSaleCouponCommon + + +@tagged('post_install', '-at_install') +class TestLoyalty(TestSaleCouponCommon): + + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.env['loyalty.program'].search([]).write({'active': False}) + + cls.partner_a = cls.env['res.partner'].create({'name': 'Jean Jacques'}) + + cls.product_a = cls.env['product.product'].create({ + 'name': 'Product C', + 'list_price': 100, + 'sale_ok': True, + 'taxes_id': [(6, 0, [])], + }) + + cls.user_salemanager = new_test_user(cls.env, login='user_salemanager', groups='sales_team.group_sale_manager') + + def test_nominative_programs(self): + loyalty_program, ewallet_program = self.env['loyalty.program'].create([ + { + 'name': 'Loyalty Program', + 'program_type': 'loyalty', + 'trigger': 'auto', + 'applies_on': 'both', + 'rule_ids': [(0, 0, { + 'reward_point_mode': 'unit', + 'reward_point_amount': 1, + 'product_ids': [self.product_a.id], + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount': 1.5, + 'discount_mode': 'per_point', + 'discount_applicability': 'order', + 'required_points': 3, + })], + }, + { + 'name': 'eWallet Program', + 'program_type': 'ewallet', + 'applies_on': 'future', + 'trigger': 'auto', + 'rule_ids': [(0, 0, { + 'reward_point_mode': 'money', + 'reward_point_amount': 10, + })], + 'reward_ids': [(0, 0, {})], + } + ]) + + order = self.env['sale.order'].create({ + 'partner_id': self.partner_a.id, + }) + order._update_programs_and_rewards() + claimable_rewards = order._get_claimable_rewards() + # Should be empty since we do not have any coupon created yet + self.assertFalse(claimable_rewards, "No program should be applicable") + loyalty_card, ewallet_coupon = self.env['loyalty.card'].create([ + { + 'program_id': loyalty_program.id, + 'partner_id': self.partner_a.id, + 'points': 10, + }, + { + 'program_id': ewallet_program.id, + 'partner_id': self.partner_a.id, + 'points': 0, + }, + ]) + order.write({ + 'order_line': [(0, 0, { + 'product_id': self.product_a.id, + 'product_uom_qty': 1, + })] + }) + order._update_programs_and_rewards() + claimable_rewards = order._get_claimable_rewards() + self.assertEqual(len(claimable_rewards), 1, "The ewallet program should not be applicable since the card has no points.") + vals = order._get_reward_values_discount(loyalty_program.reward_ids[0], loyalty_card) + self.assertEqual( + vals[0]['points_cost'] % loyalty_program.reward_ids.required_points, + 0, + "Can only use a whole number of required points", + ) + self.assertEqual(vals[0]['points_cost'], 9, "Use maximum available points for the reward") + ewallet_coupon.points = 50 + order._update_programs_and_rewards() + claimable_rewards = order._get_claimable_rewards() + self.assertEqual(len(claimable_rewards), 2, "Now that the ewallet has some points they should both be applicable.") + + def test_cancel_order_with_coupons(self): + """This test ensure that creating an order with coupons will not + raise an access error on POS line modele when canceling the order.""" + + self.env['loyalty.program'].create({ + 'name': '10% Discount', + 'program_type': 'coupons', + 'applies_on': 'current', + 'trigger': 'auto', + 'rule_ids': [(0, 0, {})], + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount': 10, + 'discount_mode': 'percent', + 'discount_applicability': 'order', + })] + }) + + order = self.env['sale.order'].with_user(self.user_salemanager).create({ + 'partner_id': self.partner_a.id, + 'order_line': [ + (0, 0, { + 'product_id': self.product_a.id, + }) + ] + }) + + order._update_programs_and_rewards() + self.assertTrue(order.coupon_point_ids) + + # Canceling the order should not raise an access error: + # During the cancel process, we are trying to get `use_count` of the coupon, + # and we call the `_compute_use_count` that is also in pos_loyalty. + # This last one will try to find related POS lines while user have not access to POS. + order._action_cancel() + self.assertFalse(order.coupon_point_ids) + + def test_distribution_amount_payment_programs(self): + """ + Check how the amount of a payment reward is distributed. + An ewallet should not be used to refund taxes. + Its amount must be distributed between the products. + """ + + # Create two products + product_a, product_b = self.env['product.product'].create([ + { + 'name': 'Product A', + 'list_price': 100, + 'sale_ok': True, + 'taxes_id': [Command.set(self.tax_15pc_excl.ids)], + }, + { + 'name': 'Product B', + 'list_price': 100, + 'sale_ok': True, + 'taxes_id': [Command.set(self.tax_15pc_excl.ids)], + }, + ]) + + # Create a coupon and a ewallet + coupon_program, ewallet_program = self.env['loyalty.program'].create([ + { + 'name': 'Coupon Program', + 'program_type': 'coupons', + 'trigger': 'with_code', + 'applies_on': 'both', + 'reward_ids': [Command.create({ + 'reward_type': 'discount', + 'discount': 100.0, + 'discount_applicability': 'specific', + 'discount_product_domain': '[("name", "=", "Product A")]', + })], + }, + { + 'name': 'eWallet Program', + 'program_type': 'ewallet', + 'applies_on': 'future', + 'trigger': 'auto', + 'rule_ids': [Command.create({ + 'reward_point_mode': 'money', + })], + 'reward_ids': [Command.create({ + 'discount_mode': 'per_point', + 'discount': 1, + 'discount_applicability': 'order', + })], + } + ]) + + coupon_partner, _ = self.env['loyalty.card'].create([ + { + 'program_id': coupon_program.id, + 'partner_id': self.partner_a.id, + 'points': 1, + 'code': '5555', + }, + { + 'program_id': ewallet_program.id, + 'partner_id': self.partner_a.id, + 'points': 115, + }, + ]) + + # Create the order + order = self.env['sale.order'].with_user(self.user_salemanager).create({ + 'partner_id': self.partner_a.id, + 'order_line': [ + Command.create({ + 'product_id': product_a.id, + }), + Command.create({ + 'product_id': product_b.id, + }), + ] + }) + + self.assertEqual(order.amount_total, 230.0) + self.assertEqual(order.amount_untaxed, 200.0) + self.assertEqual(order.amount_tax, 30.0) + + # Apply the eWallet + order._update_programs_and_rewards() + self._claim_reward(order, ewallet_program) + + self.assertEqual(order.amount_total, 115.0) + self.assertEqual(order.amount_untaxed, 85.0) + self.assertEqual(order.amount_tax, 30.0) + self.assertEqual(order.reward_amount, -115.0) + + # Apply the coupon + self._apply_promo_code(order, coupon_partner.code) + + self.assertEqual(order.amount_total, 0.0) + self.assertEqual(order.amount_untaxed, -15.0) + self.assertEqual(order.amount_tax, 15.0) + self.assertEqual(order.reward_amount, -215.0) + + def test_discount_max_amount_on_specific_product(self): + product_a = self.product_A + product_b = self.product_B + product_a.write({'taxes_id': [Command.set(self.tax_20pc_excl.ids)]}) + product_b.write({'list_price': -20, 'taxes_id': [Command.set(self.tax_20pc_excl.ids)]}) + + self.env['loyalty.program'].search([]).write({'active': False}) + promotion = self.env['loyalty.program'].create({ + 'name': '10% Discount', + 'program_type': 'promotion', + 'trigger': 'auto', + 'rule_ids': [Command.create({'reward_point_amount': 1, 'reward_point_mode': 'unit'})], + 'reward_ids': [Command.create({ + 'discount': 10.0, + 'discount_max_amount': 9, + 'discount_applicability': 'specific', + 'discount_product_ids': [product_a.id], + })], + }) + + order = self.env['sale.order'].create({ + 'partner_id': self.partner_a.id, + 'order_line': [Command.create({'product_id': product_a.id})], + }) + self.assertEqual(order.reward_amount, 0) + + self._auto_rewards(order, promotion) + reward_amount_tax_included = sum(l.price_total for l in order.order_line if l.reward_id) + msg = "Max discount amount reached, the reward amount should be the max amount value." + self.assertEqual(reward_amount_tax_included, -9, msg) + + order.order_line = [Command.clear(), Command.create({'product_id': product_b.id})] + self._auto_rewards(order, promotion) + reward_amount_tax_included = sum(l.price_total for l in order.order_line if l.reward_id) + msg = "This product is not eligible to the discount." + self.assertEqual(reward_amount_tax_included, 0, msg=msg) + + order.order_line = [ + Command.clear(), + Command.create({'product_id': product_a.id}), # price_total = 120 + Command.create({'product_id': product_b.id}), # price_total = -20 + ] + self._auto_rewards(order, promotion) + reward_amount_tax_included = sum(l.price_total for l in order.order_line if l.reward_id) + msg = "Reward amount above the max amount, the reward should be the max amount value." + self.assertEqual(reward_amount_tax_included, -9, msg) + + order.order_line = [ + Command.clear(), + Command.create({'product_id': product_a.id}), # price_total = 120 + Command.create({'product_id': product_b.id, 'price_unit': -95}), # price_total = -114 + ] + self._auto_rewards(order, promotion) + reward_amount_tax_included = sum(l.price_total for l in order.order_line if l.reward_id) + msg = "Reward amount should never surpass the order's current total amount." + self.assertEqual(reward_amount_tax_included, -6, msg) + + order.order_line = [ + Command.clear(), + Command.create({'product_id': product_a.id, 'price_unit': 50}), # price_total = 60 + Command.create({'product_id': product_b.id, 'price_unit': -5}), # price_total = -6 + ] + self._auto_rewards(order, promotion) + reward_amount_tax_included = sum(l.price_total for l in order.order_line if l.reward_id) + msg = "Reward amount should be the percentage one if under the max amount discount." + self.assertEqual(reward_amount_tax_included, -6, msg) + + def test_multiple_discount_specific(self): + """ + Check the discount calculation if it is based on the remaining amount + """ + + product_A = self.env['product.product'].create({ + 'name': 'Product A', + 'list_price': 100, + 'sale_ok': True, + 'taxes_id': [], + }) + + coupon_program = self.env['loyalty.program'].create([{ + 'name': 'Coupon Program', + 'program_type': 'promotion', + 'trigger': 'auto', + 'applies_on': 'current', + 'rule_ids': [Command.create({ + 'reward_point_amount': 1, + 'reward_point_mode': 'unit', + })], + 'reward_ids': [Command.create({ + 'reward_type': 'discount', + 'discount': 10.0, + 'discount_applicability': 'specific', + 'required_points': 1, + })], + }]) + + order = self.env['sale.order'].with_user(self.user_salemanager).create({ + 'partner_id': self.partner_a.id, + 'order_line': [Command.create({ + 'product_id': product_A.id, + 'product_uom_qty': 3, + })] + }) + + self.assertEqual(float_compare(order.amount_total, 300, precision_rounding=3), 0) + + order._update_programs_and_rewards() + self._claim_reward(order, coupon_program) + self.assertEqual(float_compare(order.amount_total, 270, precision_rounding=3), 0, "300 * 0.9 = 270") + + order._update_programs_and_rewards() + self._claim_reward(order, coupon_program) + self.assertEqual(float_compare(order.amount_total, 243, precision_rounding=3), 0, "300 * 0.9 * 0.9 = 243") + + order._update_programs_and_rewards() + self._claim_reward(order, coupon_program) + self.assertEqual(float_compare(order.amount_total, 218.7, precision_rounding=3), 0, "300 * 0.9 * 0.9 * 0.9 = 218.7") + + def test_promotion_program_restricted_to_pricelists(self): + self.env['product.pricelist'].search([]).action_archive() + company_currency = self.env.company.currency_id + pricelist_1, pricelist_2 = self.env['product.pricelist'].create([ + {'name': 'Basic company_currency pricelist', 'currency_id': company_currency.id}, + {'name': 'Other company_currency pricelist', 'currency_id': company_currency.id}, + ]) + self.immediate_promotion_program.active = True + order = self.empty_order.copy() + order.write({'order_line': [ + (0, False, { + 'product_id': self.product_A.id, + 'name': '1 Product A', + 'product_uom': self.uom_unit.id, + 'product_uom_qty': 1.0, + }), + (0, False, { + 'product_id': self.product_B.id, + 'name': '2 Product B', + 'product_uom': self.uom_unit.id, + 'product_uom_qty': 1.0, + }), + ]}) + + applied_message = "The promo offer should have been applied." + not_applied_message = "The promo offer should not have been applied because the order's " \ + "pricelist is not eligible to this promotion." + + order.pricelist_id = self.env['product.pricelist'] + order._update_programs_and_rewards() + self._claim_reward(order, self.immediate_promotion_program) + self.assertEqual(len(order.order_line.ids), 3, applied_message) + + order.pricelist_id = pricelist_1 + order._update_programs_and_rewards() + self._claim_reward(order, self.immediate_promotion_program) + self.assertEqual(len(order.order_line.ids), 3, applied_message) + + self.immediate_promotion_program.pricelist_ids = [pricelist_1.id] + order.pricelist_id = self.env['product.pricelist'] + order._update_programs_and_rewards() + self._claim_reward(order, self.immediate_promotion_program) + self.assertEqual(len(order.order_line.ids), 2, not_applied_message) + + order.pricelist_id = pricelist_1 + order._update_programs_and_rewards() + self._claim_reward(order, self.immediate_promotion_program) + self.assertEqual(len(order.order_line.ids), 3, applied_message) + + order.pricelist_id = pricelist_2 + order._update_programs_and_rewards() + self._claim_reward(order, self.immediate_promotion_program) + self.assertEqual(len(order.order_line.ids), 2, not_applied_message) + + self.immediate_promotion_program.pricelist_ids = [pricelist_1.id, pricelist_2.id] + order.pricelist_id = self.env['product.pricelist'] + order._update_programs_and_rewards() + self._claim_reward(order, self.immediate_promotion_program) + self.assertEqual(len(order.order_line.ids), 2, not_applied_message) + + order.pricelist_id = pricelist_1 + order._update_programs_and_rewards() + self._claim_reward(order, self.immediate_promotion_program) + self.assertEqual(len(order.order_line.ids), 3, applied_message) + + def test_coupon_program_restricted_to_pricelists(self): + self.env['product.pricelist'].search([]).action_archive() + company_currency = self.env.company.currency_id + pricelist_1, pricelist_2 = self.env['product.pricelist'].create([ + {'name': 'Basic company_currency pricelist', 'currency_id': company_currency.id}, + {'name': 'Other company_currency pricelist', 'currency_id': company_currency.id}, + ]) + + self.code_promotion_program.active = True + self.env['loyalty.generate.wizard'].with_context( + active_id=self.code_promotion_program.id + ).create({'coupon_qty': 7, 'points_granted': 1}).generate_coupons() + coupons = self.code_promotion_program.coupon_ids + + order_no_pricelist = self.empty_order.copy() + order_no_pricelist.write({'pricelist_id': None, 'order_line': [ + (0, False, { + 'product_id': self.product_A.id, + 'name': '1 Product A', + 'product_uom': self.uom_unit.id, + 'product_uom_qty': 1.0, + }), + ]}) + order_pricelist_1 = order_no_pricelist.copy() + order_pricelist_1.pricelist_id = pricelist_1 + order_pricelist_2 = order_no_pricelist.copy() + order_pricelist_2.pricelist_id = pricelist_2 + + applied_message = "The coupon code should have been applied." + not_applied_message = "The coupon code should not have been applied because the order's " \ + "pricelist is not eligible to this promotion." + + order_0 = order_no_pricelist.copy() + self._apply_promo_code(order_0, coupons[0].code) + self.assertEqual(len(order_0.order_line.ids), 2, applied_message) + + order_1 = order_pricelist_1.copy() + self._apply_promo_code(order_1, coupons[1].code) + self.assertEqual(len(order_1.order_line.ids), 2, applied_message) + + self.code_promotion_program.pricelist_ids = [pricelist_1.id] + order_2 = order_no_pricelist.copy() + with self.assertRaises(ValidationError): + self._apply_promo_code(order_2, coupons[2].code) + self.assertEqual(len(order_2.order_line.ids), 1, not_applied_message) + + order_3 = order_pricelist_1.copy() + self._apply_promo_code(order_3, coupons[3].code) + self.assertEqual(len(order_3.order_line.ids), 2, applied_message) + + order_4 = order_pricelist_2.copy() + with self.assertRaises(ValidationError): + self._apply_promo_code(order_4, coupons[4].code) + self.assertEqual(len(order_4.order_line.ids), 1, not_applied_message) + + self.code_promotion_program.pricelist_ids = [pricelist_1.id, pricelist_2.id] + order_5 = order_no_pricelist.copy() + with self.assertRaises(ValidationError): + self._apply_promo_code(order_5, coupons[5].code) + self.assertEqual(len(order_5.order_line.ids), 1, not_applied_message) + + order_6 = order_pricelist_1.copy() + self._apply_promo_code(order_6, coupons[6].code) + self.assertEqual(len(order_6.order_line.ids), 2, applied_message) + + def test_specific_promotion_on_free_product(self): + + product_A = self.env['product.product'].create({ + 'name': 'Product A', + 'list_price': 100, + 'sale_ok': True, + 'taxes_id': [], + }) + + promotion_program = self.env['loyalty.program'].create([{ + 'name': 'Promotion Program', + 'program_type': 'promotion', + 'trigger': 'auto', + 'applies_on': 'current', + 'rule_ids': [Command.create({ + 'reward_point_amount': 1, + 'reward_point_mode': 'unit', + })], + 'reward_ids': [Command.create({ + 'reward_type': 'discount', + 'discount': 10.0, + 'discount_applicability': 'specific', + 'discount_product_ids': [product_A.id], + 'required_points': 1, + })], + }]) + + order = self.env['sale.order'].with_user(self.user_salemanager).create({ + 'partner_id': self.partner_a.id, + 'order_line': [ + Command.create({ + 'product_id': product_A.id, + }), + Command.create({ + 'product_id': product_A.id, + 'discount': 100, + }), + ] + }) + + order._update_programs_and_rewards() + self._claim_reward(order, promotion_program) + self.assertEqual(order.amount_total, 90) + + def test_gift_card_program_without_product(self): + product_A = self.env['product.product'].create({ + 'name': 'Product A', + 'list_price': 100, + 'sale_ok': True, + 'taxes_id': [], + }) + + giftcard_program = self.env['loyalty.program'].create([{ + 'name': 'Gift Card Program', + 'program_type': 'gift_card', + 'trigger': 'auto', + 'applies_on': 'current', + 'rule_ids': [Command.create({ + 'reward_point_amount': 1, + 'reward_point_mode': 'unit', + })], + }]) + + order = self.env['sale.order'].with_user(self.user_salemanager).create({ + 'partner_id': self.partner_a.id, + 'order_line': [ + Command.create({ + 'product_id': product_A.id, + }), + ] + }) + + order._update_programs_and_rewards() + self._claim_reward(order, giftcard_program) + + self.assertEqual(giftcard_program.coupon_count, 0) diff --git a/tests/test_pay_with_gift_card.py b/tests/test_pay_with_gift_card.py new file mode 100644 index 0000000..f55a039 --- /dev/null +++ b/tests/test_pay_with_gift_card.py @@ -0,0 +1,153 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import Command +from odoo.addons.sale_loyalty.tests.common import TestSaleCouponCommon +from odoo.tests.common import tagged + +@tagged('-at_install', 'post_install') +class TestPayWithGiftCard(TestSaleCouponCommon): + + def test_paying_with_single_gift_card_over(self): + self.env['loyalty.generate.wizard'].with_context(active_id=self.program_gift_card.id).create({ + 'coupon_qty': 1, + 'points_granted': 100, + }).generate_coupons() + gift_card = self.program_gift_card.coupon_ids[0] + order = self.empty_order + order.write({'order_line': [ + Command.create({ + 'product_id': self.product_A.id, + 'name': 'Ordinary Product A', + 'product_uom': self.uom_unit.id, + 'product_uom_qty': 1.0, + }) + ]}) + before_gift_card_payment = order.amount_total + self.assertNotEqual(before_gift_card_payment, 0) + self._apply_promo_code(order, gift_card.code) + order.action_confirm() + self.assertEqual(before_gift_card_payment - order.amount_total, 100 - gift_card.points) + + def test_paying_with_single_gift_card_under(self): + self.env['loyalty.generate.wizard'].with_context(active_id=self.program_gift_card.id).create({ + 'coupon_qty': 1, + 'points_granted': 100, + }).generate_coupons() + gift_card = self.program_gift_card.coupon_ids[0] + order = self.empty_order + order.write({'order_line': [ + Command.create({ + 'product_id': self.product_B.id, + 'name': 'Ordinary Product b', + 'product_uom': self.uom_unit.id, + 'product_uom_qty': 1.0, + }) + ]}) + before_gift_card_payment = order.amount_total + self.assertNotEqual(before_gift_card_payment, 0) + self._apply_promo_code(order, gift_card.code) + order.action_confirm() + self.assertEqual(before_gift_card_payment - order.amount_total, 100 - gift_card.points) + + def test_paying_with_multiple_gift_card(self): + self.env['loyalty.generate.wizard'].with_context(active_id=self.program_gift_card.id).create({ + 'coupon_qty': 2, + 'points_granted': 100, + }).generate_coupons() + gift_card_1, gift_card_2 = self.program_gift_card.coupon_ids + order = self.empty_order + order.write({'order_line': [ + Command.create({ + 'product_id': self.product_A.id, + 'name': 'Ordinary Product A', + 'product_uom': self.uom_unit.id, + 'product_uom_qty': 20.0, + }) + ]}) + before_gift_card_payment = order.amount_total + self._apply_promo_code(order, gift_card_1.code) + self._apply_promo_code(order, gift_card_2.code) + self.assertEqual(order.amount_total, before_gift_card_payment - 200) + + def test_paying_with_gift_card_and_discount(self): + # Test that discounts take precedence on payment rewards + self.env['loyalty.generate.wizard'].with_context(active_id=self.program_gift_card.id).create({ + 'coupon_qty': 1, + 'points_granted': 50, + }).generate_coupons() + gift_card_1 = self.program_gift_card.coupon_ids + order = self.empty_order + order.write({'order_line': [ + Command.create({ + 'product_id': self.product_C.id, + 'name': 'Ordinary Product C', + 'product_uom': self.uom_unit.id, + 'product_uom_qty': 1.0, + }) + ]}) + self.env['loyalty.program'].create({ + 'name': 'Code for 10% on orders', + 'trigger': 'with_code', + 'program_type': 'promotion', + 'applies_on': 'current', + 'rule_ids': [(0, 0, { + 'mode': 'with_code', + 'code': 'test_10pc', + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount_mode': 'percent', + 'discount': 10, + 'discount_applicability': 'order', + 'required_points': 1, + })], + }) + self.assertEqual(order.amount_total, 100) + self._apply_promo_code(order, gift_card_1.code) + self.assertEqual(order.amount_total, 50) + self._apply_promo_code(order, "test_10pc") + # real flows also have to update the programs and rewards + order._update_programs_and_rewards() + self.assertEqual(order.amount_total, 40) # 100 - 10% - 50 + + def test_paying_with_gift_card_blocking_discount(self): + # Test that a payment program making the order total 0 still allows the user to claim discounts + self.env['loyalty.generate.wizard'].with_context(active_id=self.program_gift_card.id).create({ + 'coupon_qty': 1, + 'points_granted': 100, + }).generate_coupons() + gift_card_1 = self.program_gift_card.coupon_ids + order = self.empty_order + order.write({'order_line': [ + Command.create({ + 'product_id': self.product_C.id, + 'name': 'Ordinary Product C', + 'product_uom': self.uom_unit.id, + 'product_uom_qty': 1.0, + }) + ]}) + self.env['loyalty.program'].create({ + 'name': 'Code for 10% on orders', + 'trigger': 'with_code', + 'program_type': 'promotion', + 'applies_on': 'current', + 'rule_ids': [(0, 0, { + 'mode': 'with_code', + 'code': 'test_10pc', + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount_mode': 'percent', + 'discount': 10, + 'discount_applicability': 'order', + 'required_points': 1, + })], + }) + self.assertEqual(order.amount_total, 100) + self._apply_promo_code(order, gift_card_1.code) + self.assertEqual(order.amount_total, 0) + self._apply_promo_code(order, "test_10pc") + # real flows also have to update the programs and rewards + order._update_programs_and_rewards() + self.assertEqual(order.amount_total, 0) # 100 - 10% - 90 diff --git a/tests/test_program_multi_company.py b/tests/test_program_multi_company.py new file mode 100644 index 0000000..1a5d79e --- /dev/null +++ b/tests/test_program_multi_company.py @@ -0,0 +1,83 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo.addons.sale_loyalty.tests.common import TestSaleCouponCommon +from odoo.exceptions import UserError +from odoo.tests import tagged + + +@tagged('post_install', '-at_install') +class TestSaleCouponMultiCompany(TestSaleCouponCommon): + + def setUp(self): + super(TestSaleCouponMultiCompany, self).setUp() + + self.company_a = self.env.company + self.company_b = self.env['res.company'].create(dict(name="TEST")) + + self.immediate_promotion_program_c2 = self.env['loyalty.program'].create({ + 'name': 'Buy A + 1 B, 1 B are free', + 'trigger': 'auto', + 'program_type': 'promotion', + 'applies_on': 'current', + 'company_id': self.company_b.id, + 'rule_ids': [(0, 0, { + 'product_ids': self.product_A, + 'reward_point_amount': 1, + 'reward_point_mode': 'order', + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'product', + 'reward_product_id': self.product_B.id, + 'reward_product_qty': 1, + 'required_points': 1, + })], + }) + + def _get_applicable_programs(self, order): + return self.env['loyalty.program'].browse(p.id for p in order._get_applicable_program_points()) + + def test_applicable_programs(self): + + order = self.empty_order + order.write({'order_line': [ + (0, False, { + 'product_id': self.product_A.id, + 'name': '1 Product A', + 'product_uom': self.uom_unit.id, + 'product_uom_qty': 1.0, + }), + (0, False, { + 'product_id': self.product_B.id, + 'name': '2 Product B', + 'product_uom': self.uom_unit.id, + 'product_uom_qty': 1.0, + }) + ]}) + order._update_programs_and_rewards() + + self.assertNotIn(self.immediate_promotion_program_c2, self._get_applicable_programs(order)) + self.assertNotIn(self.immediate_promotion_program_c2, order._get_applied_programs()) + + order_b = self.env["sale.order"].create({ + 'company_id': self.company_b.id, + 'partner_id': order.partner_id.id, + }) + order_b.write({'order_line': [ + (0, False, { + 'product_id': self.product_A.id, + 'name': '1 Product A', + 'product_uom': self.uom_unit.id, + 'product_uom_qty': 1.0, + }), + (0, False, { + 'product_id': self.product_B.id, + 'name': '2 Product B', + 'product_uom': self.uom_unit.id, + 'product_uom_qty': 1.0, + }) + ]}) + self.assertNotIn(self.immediate_promotion_program, self._get_applicable_programs(order_b)) + order_b._update_programs_and_rewards() + self.assertIn(self.immediate_promotion_program_c2, order_b._get_applied_programs()) + self.assertNotIn(self.immediate_promotion_program, order_b._get_applied_programs()) diff --git a/tests/test_program_numbers.py b/tests/test_program_numbers.py new file mode 100644 index 0000000..1fbbc7e --- /dev/null +++ b/tests/test_program_numbers.py @@ -0,0 +1,1754 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo.addons.sale_loyalty.tests.common import TestSaleCouponNumbersCommon +from odoo.exceptions import ValidationError +from odoo.tests import tagged +from odoo.tools.float_utils import float_compare + + +@tagged('post_install', '-at_install') +class TestSaleCouponProgramNumbers(TestSaleCouponNumbersCommon): + + def test_program_numbers_free_and_paid_product_qty(self): + # These tests will focus on numbers (free product qty, SO total, reduction total..) + order = self.empty_order + sol1 = self.env['sale.order.line'].create({ + 'product_id': self.largeCabinet.id, + 'name': 'Large Cabinet', + 'product_uom_qty': 3.0, + 'order_id': order.id, + }) + + # Check we correctly get a free product + self._auto_rewards(order, self.all_programs) + self.assertEqual(len(order.order_line.ids), 2, "We should have 2 lines as we now have one 'Free Large Cabinet' line as we bought 3 of them") + + # Check free product's price is not added to total when applying reduction (Or the discount will also be applied on the free product's price) + self._apply_promo_code(order, 'test_10pc') + self.assertEqual(len(order.order_line.ids), 3, "We should have 3 lines as we should have a new line for promo code reduction") + self.assertEqual(order.amount_total, 864, "Only paid product should have their price discounted") + order.order_line.filtered(lambda x: 'Discount' in x.name).unlink() # Remove Discount + order._remove_program_from_points(self.p1) + + # Check free product is removed since we are below minimum required quantity + sol1.product_uom_qty = 2 + self._auto_rewards(order, self.all_programs) + self.assertEqual(len(order.order_line.ids), 1, "Free Large Cabinet should have been removed") + + # Free product in cart will be considered as paid product when changing quantity of paid product, so the free product quantity computation will be wrong. + # 75 Large Cabinet in cart, 25 free, set quantity to 6 Large Cabinet, you should have 2 free Large Cabinet but you get 8 because it add the 25 initial free Large Cabinet to the total paid Large Cabinet when computing (25+10 > 35 > /4 = 8 free Large Cabinet) + sol1.product_uom_qty = 75 + self._auto_rewards(order, self.all_programs) + self.assertEqual(sum(order.order_line.filtered(lambda x: x.is_reward_line).mapped('product_uom_qty')), 25, "We should have 25 Free Large Cabinet") + sol1.product_uom_qty = 6 + self._auto_rewards(order, self.all_programs) + self.assertEqual(sum(order.order_line.filtered(lambda x: x.is_reward_line).mapped('product_uom_qty')), 2, "We should have 2 Free Large Cabinet") + + def test_program_numbers_check_eligibility(self): + # These tests will focus on numbers (free product qty, SO total, reduction total..) + + # Check if we have enough paid product to receive free product in case of a free product that is different from the paid product required + # Buy A, get free b. (remember we need a paid B in cart to receive free b). If your cart is 4A 1B then you should receive 1b (you are eligible to receive 4 because you have 4A but since you dont have enought B in your cart, you are limited to the B quantity) + order = self.empty_order + sol1 = self.env['sale.order.line'].create({ + 'product_id': self.drawerBlack.id, + 'name': 'drawer black', + 'product_uom_qty': 3.0, + 'order_id': order.id, + }) + sol2 = self.env['sale.order.line'].create({ + 'product_id': self.largeMeetingTable.id, + 'name': 'Large Meeting Table', + 'product_uom_qty': 1.0, + 'order_id': order.id, + }) + self._auto_rewards(order, self.all_programs) + self.assertEqual(len(order.order_line.ids), 3, "We should have a 'Free Large Meeting Table' promotion line") + self.assertEqual(sum(order.order_line.filtered(lambda x: x.is_reward_line).mapped('product_uom_qty')), 1, "We should receive one and only one free Large Meeting Table") + + # Check the required value amount to be eligible for the program is correctly computed (eg: it does not add negative value (from free product) to total) + # A = free b | Have your cart with A 2B b | cart value should be A + 1B but in code it is only A (free b value is subsstract 2 times) + # This is because _amount_all() is summing all SO lines (so + (-b.value)) and again in _check_promo_code() order.amount_untaxed + order.reward_amount | amount_untaxed has already free product value substracted (_amount_all) + sol1.product_uom_qty = 1 + sol2.product_uom_qty = 2 + self.p1.rule_ids.minimum_amount = 5000 + self._auto_rewards(order, self.all_programs) + self._apply_promo_code(order, 'test_10pc') + self.assertEqual(len(order.order_line.ids), 4, "We should have 4 lines as we should have a new line for promo code reduction") + + # Check you can still have auto applied promotion if you have a promo code set to the order + self.env['sale.order.line'].create({ + 'product_id': self.largeCabinet.id, + 'name': 'Large Cabinet', + 'product_uom_qty': 4.0, + 'order_id': order.id, + }) + self._auto_rewards(order, self.all_programs) + self.assertEqual(len(order.order_line.ids), 6, "We should have 2 more lines as we now have one 'Free Large Cabinet' line since we bought 4 of them") + + def test_program_numbers_taxes_and_rules(self): + percent_tax = self.env['account.tax'].create({ + 'name': "15% Tax", + 'amount_type': 'percent', + 'amount': 15, + 'price_include': True, + }) + p_specific_product = self.env['loyalty.program'].create({ + 'name': '20% reduction on Large Cabinet in cart', + 'trigger': 'auto', + 'program_type': 'promotion', + 'applies_on': 'current', + 'rule_ids': [(0, 0, { + 'reward_point_mode': 'order', + 'minimum_amount_tax_mode': 'excl', + 'minimum_amount': 320.00, + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount': 20, + 'discount_mode': 'percent', + 'discount_applicability': 'specific', + 'discount_product_ids': self.largeCabinet, + 'required_points': 1, + })], + }) + self.all_programs |= p_specific_product + order = self.empty_order + self.largeCabinet.taxes_id = percent_tax + sol1 = self.env['sale.order.line'].create({ + 'product_id': self.largeCabinet.id, + 'name': 'Large Cabinet', + 'product_uom_qty': 1.0, + 'order_id': order.id, + }) + + self._auto_rewards(order, self.all_programs) + self.assertEqual(len(order.order_line.ids), 1, "We should not get the reduction line since we dont have 320$ tax excluded (cabinet is 320$ tax included)") + sol1.tax_id.price_include = False + sol1._compute_tax_id() + self.env.flush_all() + self.env['account.tax'].invalidate_model(['price_include']) + self._auto_rewards(order, self.all_programs) + self.assertEqual(len(order.order_line.ids), 2, "We should now get the reduction line since we have 320$ tax included (cabinet is 320$ tax included)") + # Name | Qty | price_unit | Tax | HTVA | TVAC | TVA | + # -------------------------------------------------------------------------------- + # Conference Chair | 1 | 320.00 | 15% excl | 320.00 | 368.00 | 48.00 + # 20% discount on | 1 | -64.00 | 15% excl | -64.00 | -73.60 | -9.60 + # large cabinet | + # -------------------------------------------------------------------------------- + # TOTAL | 256.00 | 294.40 | 38.40 + self.assertAlmostEqual(order.amount_total, 294.4, 2, "Check discount has been applied correctly (eg: on taxes aswell)") + + # test coupon with code works the same as auto applied_programs + p_specific_product.write({'trigger': 'with_code'}) + p_specific_product.rule_ids.write({'mode': 'with_code', 'code': '20pc'}) + order.order_line.filtered(lambda l: l.is_reward_line).unlink() + order._remove_program_from_points(p_specific_product) + self._auto_rewards(order, self.all_programs) + self.assertEqual(len(order.order_line.ids), 1, "Reduction should be removed since we deleted it and it is now a promo code usage, it shouldn't be automatically reapplied") + + self._apply_promo_code(order, '20pc') + self._auto_rewards(order, self.all_programs) + self.assertEqual(len(order.order_line.ids), 2, "We should now get the reduction line since we have 320$ tax included (cabinet is 320$ tax included)") + + # check discount applied only on Large Cabinet + self.env['sale.order.line'].create({ + 'product_id': self.drawerBlack.id, + 'name': 'Drawer Black', + 'product_uom_qty': 10.0, + 'order_id': order.id, + }) + self._auto_rewards(order, self.all_programs) + # Name | Qty | price_unit | Tax | HTVA | TVAC | TVA | + # -------------------------------------------------------------------------------- + # Drawer Black | 10 | 25.00 | / | 250.00 | 250.00 | / + # Large Cabinet | 1 | 320.00 | 15% excl | 320.00 | 368.00 | 48.00 + # 20% discount on | 1 | -64.00 | 15% excl | -64.00 | -73.60 | -9.60 + # large cabinet | + # -------------------------------------------------------------------------------- + # TOTAL | 506.00 | 544.40 | 38.40 + self.assertEqual(order.amount_total, 544.4, "We should only get reduction on cabinet") + sol1.product_uom_qty = 8 + self._auto_rewards(order, self.all_programs) + # Note: Since we now have 2 free Large Cabinet, we should discount only 8 of the 10 Large Cabinet in carts since we don't want to discount free Large Cabinet + # Name | Qty | price_unit | Tax | HTVA | TVAC | TVA | + # -------------------------------------------------------------------------------- + # Drawer Black | 10 | 25.00 | / | 250.00 | 250.00 | / + # Large Cabinet | 8 | 320.00 | 15% excl | 2560.00 | 2944.00 | 384.00 + # Free Large Cabinet | 2 | 0.00 | 15% excl | 0.00 | 0.00 | 0.00 + # 20% discount on | 1 | -512.00 | 15% excl | -512.00 | -588.80 | -78.80 + # large cabinet | + # -------------------------------------------------------------------------------- + # TOTAL | 2298.00 | 2605.20 | 305.20 + self.assertAlmostEqual(order.amount_total, 2605.20, 2, "Changing cabinet quantity should change discount amount correctly") + + p_specific_product.reward_ids.discount_max_amount = 200 + self._auto_rewards(order, self.all_programs) + # Name | Qty | price_unit | Tax | HTVA | TVAC | TVA | + # -------------------------------------------------------------------------------- + # Drawer Black | 10 | 25.00 | / | 250.00 | 250.00 | / + # Large Cabinet | 8 | 320.00 | 15% excl | 2560.00 | 2944.00 | 384.00 + # Free Large Cabinet | 2 | 0.00 | 15% excl | 0.00 | 0.00 | 0.00 + # 20% discount on | 1 | -173.91 | 15% excl | -173.91 | -200.00 | -26.09 + # large cabinet | + # limited to 200 HTVA + # -------------------------------------------------------------------------------- + # TOTAL | 2636.09 | 2994.00 | 357.91 + self.assertEqual(order.amount_total, 2994.0, "The discount should be limited to $200 tax included") + self.assertEqual(order.amount_untaxed, 2636.09, "The discount should be limited to $200 tax included (2)") + + def test_program_numbers_one_discount_line_per_tax(self): + order = self.empty_order + self.env['ir.config_parameter'].set_param('loyalty.compute_all_discount_product_ids', 'enabled') + # Create taxes + self.tax_15pc_excl = self.env['account.tax'].create({ + 'name': "15% Tax excl", + 'amount_type': 'percent', + 'amount': 15, + }) + self.tax_50pc_excl = self.env['account.tax'].create({ + 'name': "50% Tax excl", + 'amount_type': 'percent', + 'amount': 50, + }) + self.tax_35pc_incl = self.env['account.tax'].create({ + 'name': "35% Tax incl", + 'amount_type': 'percent', + 'amount': 35, + 'price_include': True, + }) + + # Set tax and prices on products as neeed for the test + (self.product_A + self.largeCabinet + self.conferenceChair + self.pedalBin + self.drawerBlack).write({'list_price': 100}) + (self.largeCabinet + self.drawerBlack).write({'taxes_id': [(4, self.tax_15pc_excl.id, False)]}) + self.conferenceChair.taxes_id = self.tax_10pc_incl + self.pedalBin.taxes_id = None + self.product_A.taxes_id = (self.tax_35pc_incl + self.tax_50pc_excl) + + # Add products in order + self.env['sale.order.line'].create({ + 'product_id': self.largeCabinet.id, + 'name': 'Large Cabinet', + 'product_uom_qty': 4.0, + 'order_id': order.id, + }) + sol2 = self.env['sale.order.line'].create({ + 'product_id': self.conferenceChair.id, + 'name': 'Conference Chair', + 'product_uom_qty': 3.0, + 'order_id': order.id, + }) + self.env['sale.order.line'].create({ + 'product_id': self.pedalBin.id, + 'name': 'Pedal Bin', + 'product_uom_qty': 5.0, + 'order_id': order.id, + }) + self.env['sale.order.line'].create({ + 'product_id': self.product_A.id, + 'name': 'product A with multiple taxes', + 'product_uom_qty': 3.0, + 'order_id': order.id, + }) + self.env['sale.order.line'].create({ + 'product_id': self.drawerBlack.id, + 'name': 'Drawer Black', + 'product_uom_qty': 2.0, + 'order_id': order.id, + }) + + # Create needed programs + self.immediate_promotion_program.active = False + self.p2.active = False + self.p3.active = False + + # NOTE: programs may not make much sense but they have been modified in order to validate the result since the change from coupon to loyalty. + self.p_large_cabinet = self.env['loyalty.program'].create({ + 'name': 'Buy 1 large cabinet, get 3/4 for free', + 'trigger': 'auto', + 'program_type': 'promotion', + 'applies_on': 'current', + 'rule_ids': [(0, 0, { + 'product_ids': self.largeCabinet, + 'reward_point_mode': 'unit', + 'minimum_qty': 1, + 'reward_point_amount': 0.752, + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'product', + 'reward_product_id': self.largeCabinet.id, + 'reward_product_qty': 1, + 'required_points': 1, + })], + }) + self.p_conference_chair = self.env['loyalty.program'].create({ + 'name': 'Buy 1 chair, get one for free', + 'trigger': 'auto', + 'program_type': 'promotion', + 'applies_on': 'current', + 'rule_ids': [(0, 0, { + 'product_ids': self.conferenceChair, + 'reward_point_mode': 'unit', + 'minimum_qty': 1, + 'reward_point_amount': 0.4, + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'product', + 'reward_product_id': self.conferenceChair.id, + 'reward_product_qty': 1, + 'required_points': 1, + })], + }) + self.p_pedal_bin = self.env['loyalty.program'].create({ + 'name': 'Buy 1 bin, get one for free', + 'trigger': 'auto', + 'program_type': 'promotion', + 'applies_on': 'current', + 'rule_ids': [(0, 0, { + 'product_ids': self.pedalBin, + 'reward_point_mode': 'unit', + 'minimum_qty': 1, + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'product', + 'reward_product_id': self.pedalBin.id, + 'reward_product_qty': 1, + 'required_points': 1, + })], + }) + self.all_programs |= (self.p_large_cabinet | self.p_conference_chair | self.p_pedal_bin) + # Name | Qty | price_unit | Tax | HTVA | TVAC | TVA | + # -------------------------------------------------------------------------------- + # Conference Chair | 5 | 100.00 | 10% incl | 454.55 | 500.00 | 45.45 + # Pedal bin | 10 | 100.00 | / | 1000.00 | 1000.00 | / + # Large Cabinet | 7 | 100.00 | 15% excl | 700.00 | 805.00 | 105.00 + # Drawer Black | 2 | 100.00 | 15% excl | 200.00 | 230.00 | 30.00 + # Product A | 3 | 100.00 | 35% incl | 222.22 | 411.11 | 188.89 + # 50% excl + # -------------------------------------------------------------------------------- + # TOTAL | 2576.77 | 2946.11 | 369.34 + + self.assertAlmostEqual(order.amount_total, 1901.11, 2, "The order total with programs should be 1901.11") + self.assertEqual(order.amount_untaxed, 1594.95, "The order untaxed total without any programs should be 2576.77") + self.assertEqual(len(order.order_line.ids), 5, "The order without any programs should have 5 lines") + + # Apply all the programs + self._auto_rewards(order, self.all_programs) + + # Name | Qty | price_unit | Tax | HTVA | TVAC | TVA | + # -------------------------------------------------------------------------------- + # Free ConferenceChair | 2 | -100.00 | 10% incl | -181.82 | -200.00 | -18.18 + # Free Pedal Bin | 5 | -100.00 | / | -500.00 | -500.00 | / + # Free Large Cabinet | 3 | -100.00 | 15% excl | -300.00 | -345.00 | -45.00 + # -------------------------------------------------------------------------------- + # TOTAL AFTER APPLYING FREE PRODUCT PROGRAMS | 1594.95 | 1901.11 | 306.16 + + self.assertAlmostEqual(order.amount_total, 1901.11, 2, "The order total with programs should be 1901.11") + self.assertEqual(order.amount_untaxed, 1594.95, "The order untaxed total with programs should be 1594.95") + self.assertEqual(len(order.order_line.ids), 8, "Order should contains 5 regular product lines and 3 free product lines") + + # Apply 10% on top of everything + self._apply_promo_code(order, 'test_10pc') + + # Name | Qty | price_unit | Tax | HTVA | TVAC | TVA | + # -------------------------------------------------------------------------------- + # 10% on tax 10% incl | 1 | -30.00 | 10% incl | -27.27 | -30.00 | -2.73 + # 10% on no tax | 1 | -50.00 | / | -50.00 | -50.00 | / + # 10% on tax 15% excl | 1 | -60.00 | 15% excl | -60.00 | -69.00 | -9.00 + # 10% on tax 35%+50% | 1 | -30.00 | 35% incl | -22.22 | -41.11 | -18.89 + # 50% excl + # -------------------------------------------------------------------------------- + # TOTAL AFTER APPLYING 10% GLOBAL PROGRAM | 1435.46 | 1711.00 | 275.54 + + self.assertEqual(order.amount_total, 1711, "The order total with programs should be 1711") + self.assertEqual(order.amount_untaxed, 1435.46, "The order untaxed total with programs should be 1435.46") + self.assertEqual(len(order.order_line.ids), 12, "Order should contains 5 regular product lines, 3 free product lines and 4 discount lines (one for every tax)") + + # -- This is a test inside the test + order.order_line._compute_tax_id() + self.assertEqual(order.amount_total, 1711, "Recomputing tax on sale order lines should not change total amount") + self.assertEqual(order.amount_untaxed, 1435.46, "Recomputing tax on sale order lines should not change untaxed amount") + self.assertEqual(len(order.order_line.ids), 12, "Recomputing tax on sale order lines should not change number of order line") + self._auto_rewards(order, self.all_programs) + self.assertEqual(order.amount_total, 1711, "Recomputing tax on sale order lines should not change total amount") + self.assertEqual(order.amount_untaxed, 1435.46, "Recomputing tax on sale order lines should not change untaxed amount") + self.assertEqual(len(order.order_line.ids), 12, "Recomputing tax on sale order lines should not change number of order line") + # -- End test inside the test + + # Now we want to apply a 20% discount only on Large Cabinet + self.all_programs |= self.env['loyalty.program'].create({ + 'name': '20% reduction on Large Cabinet in cart', + 'trigger': 'auto', + 'program_type': 'promotion', + 'applies_on': 'current', + 'rule_ids': [(0, 0, {})], + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount': 20, + 'discount_applicability': 'specific', + 'discount_product_ids': self.largeCabinet, + 'required_points': 1, + 'clear_wallet': 1, + })], + }) + self._auto_rewards(order, self.all_programs) + + # 20% on large cabinet which are already discounted by 10% + # Name | Qty | price_unit | Tax | HTVA | TVAC | TVA | + # -------------------------------------------------------------------------------- + # 20% on Large Cabinet | 1 | -72.00 | 15% excl | -72.00 | -82.8 | -10.80 + # -------------------------------------------------------------------------------- + # TOTAL AFTER APPLYING 20% ON LARGE CABINET | 1363.46 | 1628.2 | 264.74 + + self.assertEqual(order.amount_total, 1628.2, "The order total with programs should be 1628.2") + self.assertEqual(order.amount_untaxed, 1363.46, "The order untaxed total with programs should be 1363.45") + self.assertEqual(len(order.order_line.ids), 13, "Order should have a new discount line for 20% on Large Cabinet") + + # Check that if you delete one of the discount tax line, the others tax lines from the same promotion got deleted as well. + order.order_line.filtered(lambda l: '10%' in l.name)[0].unlink() + order._remove_program_from_points(self.p1) + self.assertEqual(len(order.order_line.ids), 9, "All of the 10% discount line per tax should be removed") + # At this point, removing the Conference Chair's discount line (split per tax) removed also the others discount lines + # linked to the same program (eg: other taxes lines). So the coupon got removed from the SO since there were no discount lines left + + # Add back the coupon to continue the test flow + self._apply_promo_code(order, 'test_10pc') + self._auto_rewards(order, self.all_programs) + self.assertEqual(len(order.order_line.ids), 13, "The 10% discount line should be back") + + # Check that if you change a product qty, his discount tax line got updated + self.p_conference_chair.rule_ids.reward_point_amount = 0.752 + sol2.product_uom_qty = 4 + self._auto_rewards(order, self.all_programs) + # Name | Qty | price_unit | Tax | HTVA | TVAC | TVA | + # -------------------------------------------------------------------------------- + # Large Cabinet | 4 | 100.00 | 15% excl | 400.00 | 460.00 | 60.00 + # Conference Chair | 4 | 100.00 | 10% incl | 363.64 | 400.00 | 36.36 + # Pedal Bins | 5 | 100.00 | / | 500.00 | 500.00 | / + # Drawer Black | 2 | 100.00 | 15% excl | 200.00 | 230.00 | 30.00 + # Product A | 3 | 100.00 | 35% incl | 222.22 | 411.11 | 188.89 + # 50% excl + # Free - Large Cabinet | 3 | 0.00 | 15% excl | 0.00 | 0.00 | 0.00 + # Free - Conference Ch | 3 | 0.00 | 10% incl | 0.00 | 0.00 | 0.00 + # Free - Pedal Bins | 5 | 0.00 | / | 0.00 | 0.00 | / + # 20% on Large Cabinet | 1 | -80.00 | 15% excl | -80.00 | -92.00 | -12.00 + # 10% on tax 15% excl | 1 | -52.00 | 15% excl | -52.00 | -59.80 | -7.80 + # 10% on tax 10% excl | 1 | -40.00 | 15% excl | -36.36 | -40.00 | -3.64 + # 10% on no tax | 1 | -50.00 | / | -50.00 | -50.00 | / + # 10% on tax 35+50% | 1 | -30.00 | 35% incl | -22.22 | -41.11 | -18.89 + # 50% excl + # -------------------------------------------------------------------------------- + # TOTAL | 1445.28 | 1718.20 | 272.92 + + self.assertEqual(order.amount_untaxed, 1445.28, "The order should have one more paid Conference Chair with 10% incl tax and discounted by 10%") + + # Check that if you remove a product, his reward lines got removed, especially the discount per tax one + sol2.unlink() + self._auto_rewards(order, self.all_programs) + # Name | Qty | price_unit | Tax | HTVA | TVAC | TVA | + # -------------------------------------------------------------------------------- + # Pedal Bins | 5 | 100.00 | / | 500.00 | 500.00 | / + # Large Cabinet | 4 | 100.00 | 15% excl | 400.00 | 460.00 | 60.00 + # Drawer Black | 2 | 100.00 | 15% excl | 200.00 | 230.00 | 30.00 + # Product A | 3 | 100.00 | 35% incl | 222.22 | 411.11 | 188.89 + # 50% excl + # Pedal Bins | 5 | 0.00 | / | 0.00 | 0.00 | / + # Large Cabinet | 3 | 0.00 | 15% excl | 0.00 | 0.00 | 0.00 + # 20% on Large Cabinet | 1 | -80.00 | 15% excl | -80.00 | -92.00 | -12.00 + # 10% on tax 15% excl | 1 | -52.00 | 15% excl | -52.00 | -59.80 | -7.80 + # 10% on no tax | 1 | -50.00 | / | -50.00 | -50.00 | / + # 10% on tax 35+50% | 1 | -30.00 | 35% incl | -22.22 | -41.11 | -18.89 + # 50% excl + # -------------------------------------------------------------------------------- + # TOTAL | 1118.00 | 1349.00 | 240.20 + + self.assertAlmostEqual(order.amount_total, 1358.2, 2, "The order total with programs should be 1358.20") + self.assertEqual(order.amount_untaxed, 1118, "The order untaxed total with programs should be 1118.00") + self.assertEqual(len(order.order_line.ids), 10, "Order should contains 10 lines: 4 products lines, 2 free products lines and 4 discount lines") + + def test_program_numbers_extras(self): + # Check that you can't apply a global discount promo code if there is already an auto applied global discount + p1_copy = self.p1.copy({'trigger': 'auto', 'name': 'Auto applied 10% global discount', 'rule_ids': [(0, 0, {})]}) + self.all_programs |= p1_copy + order = self.empty_order + self.env['sale.order.line'].create({ + 'product_id': self.largeCabinet.id, + 'name': 'Large Cabinet', + 'product_uom_qty': 1.0, + 'order_id': order.id, + }) + self._auto_rewards(order, self.all_programs) + self.assertEqual(len(order.order_line.ids), 2, "We should get 1 Large Cabinet line and 1 10% auto applied global discount line") + self.assertEqual(order.amount_total, 288, "320$ - 10%") + with self.assertRaises(ValidationError): + # Can't apply a second global discount + self._apply_promo_code(order, 'test_10pc') + + def test_program_fixed_price(self): + # Check fixed amount discount + order = self.empty_order + self.p3.active = False + fixed_amount_program = self.env['loyalty.program'].create({ + 'name': '$249 discount', + 'trigger': 'auto', + 'program_type': 'promotion', + 'applies_on': 'current', + 'rule_ids': [(0, 0, { + 'reward_point_mode': 'order', + 'reward_point_amount': 1, + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount': 249, + 'discount_mode': 'per_point', + 'discount_applicability': 'order', + 'required_points': 1, + })], + }) + self.all_programs |= fixed_amount_program + self.tax_0pc_excl = self.env['account.tax'].create({ + 'name': "0% Tax excl", + 'amount_type': 'percent', + 'amount': 0, + }) + fixed_amount_program.reward_ids.discount_line_product_id.write({'taxes_id': [(4, self.tax_0pc_excl.id, False)]}) + sol1 = self.env['sale.order.line'].create({ + 'product_id': self.drawerBlack.id, + 'name': 'Drawer Black', + 'product_uom_qty': 1.0, + 'order_id': order.id, + 'tax_id': [(4, self.tax_0pc_excl.id)] + }) + self._auto_rewards(order, self.all_programs) + self.assertEqual(order.amount_total, 0, "Total should be null. The fixed amount discount is higher than the SO total, it should be reduced to the SO total") + self.assertEqual(len(order.order_line.ids), 2, "There should be the product line and the reward line") + sol1.product_uom_qty = 17 + self._auto_rewards(order, self.all_programs) + self.assertEqual(order.amount_total, 176, "Fixed amount discount should be totally deduced") + self.assertEqual(len(order.order_line.ids), 2, "Number of lines should be unchanged as we just recompute the reward line") + fixed_amount_program.write({'active': False}) # Check archived product will remove discount lines on recompute + self._auto_rewards(order, self.all_programs) + self.assertEqual(len(order.order_line.ids), 1, "Archiving the program should remove the program reward line") + + def test_program_next_order(self): + order = self.empty_order + self.all_programs |= self.env['loyalty.program'].create({ + 'name': 'Free Pedal Bin if at least 1 article', + 'trigger': 'auto', + 'applies_on': 'future', + 'program_type': 'promotion', + 'rule_ids': [(0, 0, { + 'minimum_qty': 2, + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'product', + 'reward_product_id': self.pedalBin.id, + 'reward_product_qty': 1, + 'required_points': 1, + })], + }) + sol1 = self.env['sale.order.line'].create({ + 'product_id': self.largeCabinet.id, + 'name': 'Large Cabinet', + 'product_uom_qty': 1.0, + 'order_id': order.id, + }) + self._auto_rewards(order, self.all_programs) + self.assertEqual(len(order.order_line.ids), 1, "Nothing should be added to the cart") + self.assertEqual(len(order._get_reward_coupons()), 0, "No coupon should have been generated yet") + + sol1.product_uom_qty = 2 + self._auto_rewards(order, self.all_programs) + generated_coupon = order._get_reward_coupons() + self.assertEqual(len(order.order_line.ids), 1, "Nothing should be added to the cart (2)") + self.assertEqual(len(generated_coupon), 1, "A coupon should have been generated") + self.assertEqual(generated_coupon.points, 0, "The coupon should not have it's points already.") + + sol1.product_uom_qty = 1 + self._auto_rewards(order, self.all_programs) + generated_coupon = order._get_reward_coupons() + self.assertEqual(len(order.order_line.ids), 1, "Nothing should be added to the cart (3)") + self.assertEqual(len(generated_coupon), 0, "No more coupon should have been generated and the existing one should not have been deleted") + + sol1.product_uom_qty = 2 + self._auto_rewards(order, self.all_programs) + generated_coupon = order._get_reward_coupons() + self.assertEqual(len(generated_coupon), 1, "We should still have only 1 coupon as we now benefit again from the program but no need to create a new one (see next assert)") + self.assertEqual(generated_coupon.points, 0, "The coupon should not have it's points already.") + + def test_coupon_rule_minimum_amount(self): + """ Ensure coupon with minimum amount rule are correctly + applied on orders + """ + order = self.empty_order + self.env['sale.order.line'].create({ + 'product_id': self.conferenceChair.id, + 'name': 'Conference Chair', + 'product_uom_qty': 10.0, + 'order_id': order.id, + }) + self.assertEqual(order.amount_total, 165.0, "The order amount is not correct") + self.env['loyalty.generate.wizard'].with_context(active_id=self.discount_coupon_program.id).create({ + 'coupon_qty': 1, + 'points_granted': 1, + }).generate_coupons() + coupon = self.discount_coupon_program.coupon_ids[0] + self._apply_promo_code(order, coupon.code) + self.assertEqual(order.amount_total, 65.0, "The coupon should be correctly applied") + self._auto_rewards(order, self.all_programs) + self.assertEqual(order.amount_total, 65.0, "The coupon should not be removed from the order") + + def test_coupon_and_program_discount_fixed_amount(self): + """ Ensure coupon and program discount both with + minimum amount rule can cohexists without making + the order go below 0 + """ + order = self.empty_order + orderline = self.env['sale.order.line'].create({ + 'product_id': self.conferenceChair.id, + 'name': 'Conference Chair', + 'product_uom_qty': 10.0, + 'order_id': order.id, + }) + self.assertEqual(order.amount_total, 165.0, "The order amount is not correct") + + self.env['loyalty.program'].create({ + 'name': '$100 promotion program', + 'program_type': 'promotion', + 'trigger': 'with_code', + 'rule_ids': [(0, 0, { + 'mode': 'with_code', + 'code': 'testpromo', + 'minimum_amount': 100, + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount': 100, + 'discount_mode': 'per_point', + 'discount_applicability': 'order', + })], + }) + + self._apply_promo_code(order, 'testpromo') + self.assertEqual(order.amount_total, 65.0, "The promotion program should be correctly applied") + self._auto_rewards(order, self.all_programs) + self.assertEqual(order.amount_total, 65.0, "The promotion program should not be removed after recomputation") + + self.env['loyalty.generate.wizard'].with_context(active_id=self.discount_coupon_program.id).create({ + 'coupon_qty': 1, + 'points_granted': 1, + }).generate_coupons() + coupon = self.discount_coupon_program.coupon_ids[0] + with self.assertRaises(ValidationError): + self._apply_promo_code(order, coupon.code) + orderline.write({'product_uom_qty': 15}) + self._apply_promo_code(order, coupon.code) + self.assertEqual(order.amount_total, 47.5, "The promotion program should now be correctly applied") + + orderline.write({'product_uom_qty': 5}) + self._auto_rewards(order, self.all_programs) + self.assertEqual(order.amount_total, 82.5, "The promotion programs should have been removed from the order to avoid negative amount") + + def test_coupon_and_coupon_discount_fixed_amount_tax_excl(self): + """ Ensure multiple coupon can cohexists without making + the order go below 0 + * Have an order of 300 (3 lines: 1 tax excl 15%, 2 notax) + * Apply a coupon A of 10% discount, unconditioned + * Apply a coupon B of 288.5 discount, unconditioned + * Order should not go below 0 + * Even applying the coupon in reverse order should yield same result + """ + + self.immediate_promotion_program.active = False + coupon_program = self.env['loyalty.program'].create({ + 'name': '$288.5 coupon', + 'program_type': 'coupons', + 'trigger': 'with_code', + 'applies_on': 'current', + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount_mode': 'per_point', + 'discount': 288.5, + 'discount_applicability': 'order', + 'required_points': 1, + })], + }) + + order = self.empty_order + self.env['sale.order.line'].create([ + { + 'product_id': self.conferenceChair.id, + 'name': 'Conference Chair', + 'product_uom_qty': 1.0, + 'price_unit': 100.0, + 'order_id': order.id, + 'tax_id': [(6, 0, (self.tax_15pc_excl.id,))], + }, + { + 'product_id': self.pedalBin.id, + 'name': 'Computer Case', + 'product_uom_qty': 1.0, + 'price_unit': 100.0, + 'order_id': order.id, + 'tax_id': [(6, 0, [])], + }, + { + 'product_id': self.product_A.id, + 'name': 'Computer Case', + 'product_uom_qty': 1.0, + 'price_unit': 100.0, + 'order_id': order.id, + 'tax_id': [(6, 0, [])], + }, + ]) + + self._apply_promo_code(order, 'test_10pc') + self.assertEqual(order.amount_total, 283.5, "The promotion program should be correctly applied") + + self.env['loyalty.generate.wizard'].with_context(active_id=coupon_program.id).create({ + 'coupon_qty': 1, + 'points_granted': 1, + }).generate_coupons() + coupon = coupon_program.coupon_ids + self._apply_promo_code(order, coupon.code) + self._auto_rewards(order, self.all_programs) + self.assertEqual(order.amount_tax, 0.0) + self.assertEqual(order.amount_untaxed, 0.0, "The untaxed amount should not go below 0") + self.assertEqual(order.amount_total, 0.0, "The promotion program should not make the order total go below 0") + + order.order_line[3:].unlink() #remove all coupon + order._remove_program_from_points(coupon_program) + order._remove_program_from_points(self.p1) + + self._auto_rewards(order, self.all_programs) + self.assertEqual(len(order.order_line), 3, "The promotion program should be removed") + self._apply_promo_code(order, coupon.code) + self.assertEqual(order.amount_total, 26.5, "The promotion program should be correctly applied") + self._auto_rewards(order, self.all_programs) + self._apply_promo_code(order, 'test_10pc') + self._auto_rewards(order, self.all_programs) + self.assertAlmostEqual(order.amount_tax, 1.13, 2) + self.assertEqual(order.amount_untaxed, 22.72) + self.assertEqual(order.amount_total, 23.85, "The promotion program should not make the order total go below 0be altered after recomputation") + # It should stay the same after a recompute, order matters + self._auto_rewards(order, self.all_programs) + self.assertAlmostEqual(order.amount_tax, 1.13, 2) + self.assertEqual(order.amount_untaxed, 22.72) + self.assertEqual(order.amount_total, 23.85, "The promotion program should not make the order total go below 0be altered after recomputation") + + def test_coupon_and_coupon_discount_fixed_amount_tax_incl(self): + """ Ensure multiple coupon can cohexists without making + the order go below 0 + * Have an order of 300 (3 lines: 1 tax incl 10%, 2 notax) + * Apply a coupon A of 10% discount, unconditioned + * Apply a coupon B of 290 discount, unconditioned + * Order should not go below 0 + * Even applying the coupon in reverse order should yield same result + """ + + self.immediate_promotion_program.active = False + coupon_program = self.env['loyalty.program'].create({ + 'name': '$290 coupon', + 'program_type': 'coupons', + 'trigger': 'with_code', + 'applies_on': 'current', + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount_mode': 'per_point', + 'discount': 290, + 'discount_applicability': 'order', + 'required_points': 1, + })], + }) + + order = self.empty_order + self.env['sale.order.line'].create([ + { + 'product_id': self.conferenceChair.id, + 'name': 'Conference Chair', + 'product_uom_qty': 1.0, + 'price_unit': 100.0, + 'order_id': order.id, + 'tax_id': [(6, 0, (self.tax_10pc_incl.id,))], + }, + { + 'product_id': self.pedalBin.id, + 'name': 'Computer Case', + 'product_uom_qty': 1.0, + 'price_unit': 100.0, + 'order_id': order.id, + 'tax_id': [(6, 0, [])], + }, + { + 'product_id': self.product_A.id, + 'name': 'Computer Case', + 'product_uom_qty': 1.0, + 'price_unit': 100.0, + 'order_id': order.id, + 'tax_id': [(6, 0, [])], + }, + ]) + + self._apply_promo_code(order, 'test_10pc') + self.assertEqual(order.amount_total, 270.0, "The promotion program should be correctly applied") + + self.env['loyalty.generate.wizard'].with_context(active_id=coupon_program.id).create({ + 'coupon_qty': 1, + 'points_granted': 1, + }).generate_coupons() + coupon = coupon_program.coupon_ids + self._apply_promo_code(order, coupon.code) + self.assertEqual(order.amount_total, 0.0, "The promotion program should not make the order total go below 0") + self.assertEqual(order.amount_tax, 0) + self._auto_rewards(order, self.all_programs) + self.assertEqual(order.amount_total, 0.0, "The promotion program should not be altered after recomputation") + self.assertEqual(order.amount_tax, 0) + + order.order_line[3:].unlink() #remove all coupon + order._remove_program_from_points(coupon_program) + order._remove_program_from_points(self.p1) + + self._auto_rewards(order, self.all_programs) + self.assertEqual(len(order.order_line), 3, "The promotion program should be removed") + self._apply_promo_code(order, coupon.code) + self.assertEqual(order.amount_total, 10.0, "The promotion program should be correctly applied") + self._apply_promo_code(order, 'test_10pc') + self._auto_rewards(order, self.all_programs) + self.assertEqual(order.amount_total, 9.0, "The promotion program should not make the order total go below 0") + self.assertEqual(order.amount_tax, 0.27) + self.assertEqual(order.amount_untaxed, 8.73) + # It should stay the same after a recompute, order matters + self._auto_rewards(order, self.all_programs) + self.assertEqual(order.amount_total, 9.0, "The promotion program should not make the order total go below 0") + self.assertEqual(order.amount_tax, 0.27) + self.assertEqual(order.amount_untaxed, 8.73) + + def test_program_discount_on_multiple_specific_products(self): + """ Ensure a discount on multiple specific products is correctly computed. + - Simple: Discount must be applied on all the products set on the promotion + - Advanced: This discount must be split by different taxes + """ + order = self.empty_order + self.p3.active = False + p_specific_products = self.env['loyalty.program'].create({ + 'name': '20% reduction on Conference Chair and Drawer Black in cart', + 'program_type': 'promotion', + 'trigger': 'auto', + 'applies_on': 'current', + 'rule_ids': [(0, 0, {})], + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount_mode': 'percent', + 'discount': 25, + 'discount_applicability': 'specific', + 'discount_product_ids': [(6, 0, [self.conferenceChair.id, self.drawerBlack.id])], + 'required_points': 1, + })], + }) + self.all_programs |= p_specific_products + + self.env['sale.order.line'].create({ + 'product_id': self.conferenceChair.id, + 'name': 'Conference Chair', + 'product_uom_qty': 4.0, + 'order_id': order.id, + }) + sol2 = self.env['sale.order.line'].create({ + 'product_id': self.drawerBlack.id, + 'name': 'Drawer Black', + 'product_uom_qty': 2.0, + 'order_id': order.id, + }) + + self._auto_rewards(order, self.all_programs) + self.assertEqual(len(order.order_line.ids), 3, "Conference Chair + Drawer Black + 20% discount line") + # Name | Qty | price_unit | Tax | HTVA | TVAC | TVA | + # -------------------------------------------------------------------------------- + # Conference Chair | 4 | 16.50 | / | 66.00 | 66.00 | 0.00 + # Drawer Black | 2 | 25.00 | / | 50.00 | 50.00 | 0.00 + # 25% discount | 1 | -29.00 | / | -29.00 | -29.00 | 0.00 + # -------------------------------------------------------------------------------- + # TOTAL | 87.00 | 87.00 | 0.00 + self.assertEqual(order.amount_total, 87.00, "Total should be 87.00, see above comment") + + # remove Drawer Black case from promotion + p_specific_products.reward_ids.discount_product_ids = [(6, 0, [self.conferenceChair.id])] + self._auto_rewards(order, self.all_programs) + self.assertEqual(len(order.order_line.ids), 3, "Should still be Conference Chair + Drawer Black + 20% discount line") + # Name | Qty | price_unit | Tax | HTVA | TVAC | TVA | + # -------------------------------------------------------------------------------- + # Conference Chair | 4 | 16.50 | / | 66.00 | 66.00 | 0.00 + # Drawer Black | 2 | 25.00 | / | 50.00 | 50.00 | 0.00 + # 25% discount | 1 | -16.50 | / | -16.50 | -16.50 | 0.00 + # -------------------------------------------------------------------------------- + # TOTAL | 99.50 | 99.50 | 0.00 + self.assertEqual(order.amount_total, 99.50, "The 12.50 discount from the drawer black should be gone") + + # ========================================================================= + # PART 2: Same flow but with different taxes on products to ensure discount is split per VAT + # Add back Drawer Black in promotion + p_specific_products.reward_ids.discount_product_ids = [(6, 0, [self.conferenceChair.id, self.drawerBlack.id])] + + percent_tax = self.env['account.tax'].create({ + 'name': "30% Tax", + 'amount_type': 'percent', + 'amount': 30, + 'price_include': True, + }) + sol2.tax_id = percent_tax + + self._auto_rewards(order, self.all_programs) + self.assertEqual(len(order.order_line.ids), 4, "Conference Chair + Drawer Black + 20% on no TVA product (Conference Chair) + 20% on 15% tva product (Drawer Black)") + # Name | Qty | price_unit | Tax | HTVA | TVAC | TVA | + # -------------------------------------------------------------------------------- + # Conference Chair | 4 | 16.50 | / | 66.00 | 66.00 | 0.00 + # Drawer Black | 2 | 25.00 | 30% incl | 38.46 | 50.00 | 11.54 + # 25% discount | 1 | -16.50 | / | -16.50 | -16.50 | 0.00 + # 25% discount | 1 | -12.50 | 30% incl | -9.62 | -12.50 | -2.88 + # -------------------------------------------------------------------------------- + # TOTAL | 78.34 | 87.00 | 8.66 + self.assertEqual(order.amount_total, 87.00, "Total untaxed should be as per above comment") + self.assertEqual(order.amount_untaxed, 78.34, "Total with taxes should be as per above comment") + + def test_program_numbers_free_prod_with_min_amount_and_qty_on_same_prod(self): + # This test focus on giving a free product based on both + # minimum amount and quantity condition on an + # auto applied promotion program + + order = self.empty_order + self.p3.active = False + self.all_programs |= self.env['loyalty.program'].create({ + 'name': 'Buy 2 Chairs, get 1 free', + 'trigger': 'auto', + 'program_type': 'promotion', + 'applies_on': 'current', + 'rule_ids': [(0, 0, { + 'product_ids': self.conferenceChair, + 'reward_point_mode': 'order', + 'minimum_qty': 2, + 'minimum_amount': self.conferenceChair.lst_price * 2, + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'product', + 'reward_product_id': self.conferenceChair.id, + 'reward_product_qty': 1, + 'required_points': 1, + })], + }) + sol1 = self.env['sale.order.line'].create({ + 'product_id': self.conferenceChair.id, + 'name': 'Conf Chair', + 'product_uom_qty': 1.0, + 'order_id': order.id, + }) + sol2 = self.env['sale.order.line'].create({ + 'product_id': self.drawerBlack.id, + 'name': 'Drawer', + 'product_uom_qty': 1.0, + 'order_id': order.id, + }) # dummy line + + self._auto_rewards(order, self.all_programs) + self.assertEqual(len(order.order_line.ids), 2, "The promotion lines should not be applied") + sol1.write({'product_uom_qty': 2.0}) + self._auto_rewards(order, self.all_programs) + self.assertEqual(len(order.order_line.ids), 3, "The promotion lines should have been added") + self.assertEqual(order.amount_total, self.conferenceChair.lst_price * (sol1.product_uom_qty) + self.drawerBlack.lst_price * sol2.product_uom_qty, "The promotion line was not applied to the amount total") + sol2.unlink() + self._auto_rewards(order, self.all_programs) + self.assertEqual(len(order.order_line.ids), 2, "The other product should not affect the promotion") + self.assertEqual(order.amount_total, self.conferenceChair.lst_price * (sol1.product_uom_qty), "The promotion line was not applied to the amount total") + sol1.write({'product_uom_qty': 1.0}) + self._auto_rewards(order, self.all_programs) + self.assertEqual(len(order.order_line.ids), 1, "The promotion lines should have been removed") + + def test_program_step_percentages(self): + # test step-like percentages increase over amount + testprod = self.env['product.product'].create({ + 'name': 'testprod', + 'lst_price': 118.0, + }) + + self.all_programs |= self.env['loyalty.program'].create({ + 'name': '10% discount', + 'trigger': 'auto', + 'program_type': 'promotion', + 'applies_on': 'current', + 'rule_ids': [(0, 0, { + 'reward_point_mode': 'order', + 'minimum_amount': 1500.00, + 'minimum_amount_tax_mode': 'incl', + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount': 10, + 'discount_mode': 'percent', + 'discount_applicability': 'order', + 'required_points': 1, + })], + }) + self.all_programs |= self.env['loyalty.program'].create({ + 'name': '15% discount', + 'trigger': 'auto', + 'program_type': 'promotion', + 'applies_on': 'current', + 'rule_ids': [(0, 0, { + 'reward_point_mode': 'order', + 'minimum_amount': 1750.00, + 'minimum_amount_tax_mode': 'incl', + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount': 15, + 'discount_mode': 'percent', + 'discount_applicability': 'order', + 'required_points': 1, + })], + }) + self.all_programs |= self.env['loyalty.program'].create({ + 'name': '20% discount', + 'trigger': 'auto', + 'program_type': 'promotion', + 'applies_on': 'current', + 'rule_ids': [(0, 0, { + 'reward_point_mode': 'order', + 'minimum_amount': 2000.00, + 'minimum_amount_tax_mode': 'incl', + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount': 20, + 'discount_mode': 'percent', + 'discount_applicability': 'order', + 'required_points': 1, + })], + }) + self.all_programs |= self.env['loyalty.program'].create({ + 'name': '25% discount', + 'trigger': 'auto', + 'program_type': 'promotion', + 'applies_on': 'current', + 'rule_ids': [(0, 0, { + 'reward_point_mode': 'order', + 'minimum_amount': 2500.00, + 'minimum_amount_tax_mode': 'incl', + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount': 25, + 'discount_mode': 'percent', + 'discount_applicability': 'order', + 'required_points': 1, + })], + }) + + #apply 10% + order = self.empty_order + order_line = self.env['sale.order.line'].create({ + 'product_id': testprod.id, + 'name': 'testprod', + 'product_uom_qty': 14.0, + 'price_unit': 118.0, + 'order_id': order.id, + 'tax_id': False, + }) + self._auto_rewards(order, self.all_programs) + self.assertEqual(order.amount_total, 1486.80, "10% discount should be applied") + self.assertEqual(len(order.order_line.ids), 2, "discount should be applied") + + #switch to 15% + order_line.write({'product_uom_qty': 15}) + self.assertEqual(order.amount_total, 1604.8, "Discount improperly applied") + self.assertEqual(len(order.order_line.ids), 2, "No discount applied while it should") + + #switch to 20% + order_line.write({'product_uom_qty': 17}) + self._auto_rewards(order, self.all_programs) + self.assertEqual(order.amount_total, 1604.8, "Discount improperly applied") + self.assertEqual(len(order.order_line.ids), 2, "No discount applied while it should") + + #still 20% + order_line.write({'product_uom_qty': 20}) + self._auto_rewards(order, self.all_programs) + self.assertEqual(order.amount_total, 1888.0, "Discount improperly applied") + self.assertEqual(len(order.order_line.ids), 2, "No discount applied while it should") + + #back to 10% + order_line.write({'product_uom_qty': 14}) + self._auto_rewards(order, self.all_programs) + self.assertEqual(order.amount_total, 1486.80, "Discount improperly applied") + self.assertEqual(len(order.order_line.ids), 2, "No discount applied while it should") + + def test_program_free_prods_with_min_qty_and_reward_qty_and_rule(self): + order = self.empty_order + coupon_program = self.env['loyalty.program'].create({ + 'name': '2 free conference chair if at least 1 large cabinet', + 'trigger': 'with_code', + 'program_type': 'coupons', + 'applies_on': 'current', + 'rule_ids': [(0, 0, { + 'product_ids': self.largeCabinet, + 'reward_point_mode': 'order', + 'minimum_qty': 1, + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount': 100, + 'discount_mode': 'percent', + 'discount_applicability': 'specific', + 'discount_product_ids': self.conferenceChair, + 'discount_max_amount': 200, + 'required_points': 1, + })], + }) + # set large cabinet and conference chair prices + self.largeCabinet.write({'list_price': 500, 'sale_ok': True,}) + self.conferenceChair.write({'list_price': 100, 'sale_ok': True}) + + # create SOL + self.env['sale.order.line'].create({ + 'product_id': self.largeCabinet.id, + 'name': 'Large Cabinet', + 'product_uom_qty': 1.0, + 'order_id': order.id, + }) + sol2 = self.env['sale.order.line'].create({ + 'product_id': self.conferenceChair.id, + 'name': 'Conference chair', + 'product_uom_qty': 2.0, + 'order_id': order.id, + }) + + self.assertEqual(len(order.order_line), 2, 'The order must contain 2 order lines since the coupon is not yet applied') + self.assertEqual(order.amount_total, 700.0, 'The price must be 500.0 since the coupon is not yet applied') + + # generate and apply coupon + self.env['loyalty.generate.wizard'].with_context(active_id=coupon_program.id).create({ + 'coupon_qty': 1, + 'points_granted': 1, + }).generate_coupons() + coupon = coupon_program.coupon_ids + self._apply_promo_code(order, coupon.code) + + # Name | Qty | price_unit | Tax | HTVA | TVAC | TVA | + # -------------------------------------------------------------------------------- + # Conference Chair | 2 | 100.00 | / | 200.00 | 200.00 | / + # Large Cabinet | 1 | 500.00 | / | 500.00 | 500.00 | / + # + # Free Conference Chair | 2 | -100.00 | / | -200.00 | -200.00 | / + # -------------------------------------------------------------------------------- + # TOTAL | 500.00 | 500.00 | / + + self.assertEqual(len(order.order_line), 3, 'The order must contain 3 order lines including one for free conference chair') + self.assertEqual(order.amount_total, 500.0, 'The price must be 500.0 since two conference chairs are free') + self.assertEqual(order.order_line[2].price_total, -200.0, 'The last order line should apply a reduction of 200.0 since there are two conference chairs that cost 100.0 each') + + # prevent user to get illicite discount by decreasing the to 1 the reward product qty after applying the coupon + sol2.product_uom_qty = 1.0 + self._auto_rewards(order, self.all_programs) + + # in this case user should not have -200.0 + # Name | Qty | price_unit | Tax | HTVA | TVAC | TVA | + # -------------------------------------------------------------------------------- + # Conference Chair | 1 | 100.00 | / | 100.00 | 100.00 | / + # Large Cabine | 1 | 500.00 | / | 500.00 | 500.00 | / + # + # Free Conference Chair | 2 | -100.00 | / | -200.00 | -200.00 | / + # -------------------------------------------------------------------------------- + # TOTAL | 400.00 | 400.00 | / + + + # he should rather have this one + # Name | Qty | price_unit | Tax | HTVA | TVAC | TVA | + # -------------------------------------------------------------------------------- + # Conference Chair | 1 | 100.00 | / | 100.00 | 100.00 | / + # Large Cabinet | 1 | 500.00 | / | 500.00 | 500.00 | / + # + # Free Conference Chair | 1 | -100.00 | / | -100.00 | -100.00 | / + # -------------------------------------------------------------------------------- + # TOTAL | 500.00 | 500.00 | / + + self.assertEqual(order.amount_total, 500.0, 'The price must be 500.0 since two conference chairs are free and the user only bought one') + self.assertEqual(order.order_line[2].price_total, -100.0, 'The last order line should apply a reduction of 100.0 since there is one conference chair that cost 100.0') + + def test_program_free_product_different_than_rule_product_with_multiple_application(self): + order = self.empty_order + + self.p3.active = False + self.all_programs |= self.env['loyalty.program'].create({ + 'name': 'Buy 1 drawer black, get a free Large Meeting Table', + 'trigger': 'auto', + 'program_type': 'promotion', + 'applies_on': 'current', + 'rule_ids': [(0, 0, { + 'product_ids': self.drawerBlack, + 'reward_point_mode': 'order', + 'minimum_qty': 1, + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount': 100, + 'discount_mode': 'percent', + 'discount_applicability': 'specific', + 'discount_product_ids': self.largeMeetingTable, + 'required_points': 1, + })], + }) + + self.env['sale.order.line'].create({ + 'product_id': self.drawerBlack.id, + 'product_uom_qty': 2.0, + 'order_id': order.id, + }) + sol_B = self.env['sale.order.line'].create({ + 'product_id': self.largeMeetingTable.id, + 'product_uom_qty': 1.0, + 'order_id': order.id, + }) + + self._auto_rewards(order, self.all_programs) + + self.assertEqual(len(order.order_line), 3, 'The order must contain 3 order lines: 1x for Black Drawer, 1x for Large Meeting Table and 1x for free Large Meeting Table') + self.assertEqual(order.amount_total, self.drawerBlack.list_price * 2, 'The price must be 50.0 since the Large Meeting Table is free: 2*25.00 (Black Drawer) + 1*40000.00 (Large Meeting Table) - 1*40000.00 (free Large Meeting Table)') + + sol_B.product_uom_qty = 2 + + self._auto_rewards(order, self.all_programs) + + self.assertEqual(len(order.order_line), 3, 'The order must contain 3 order lines: 1x for Black Drawer, 1x for Large Meeting Table and 1x for free Large Meeting Table') + self.assertEqual(order.amount_total, self.drawerBlack.list_price * 2, 'The price must be 50.0 since the 2 Large Meeting Table are free: 2*25.00 (Black Drawer) + 2*40000.00 (Large Meeting Table) - 2*40000.00 (free Large Meeting Table)') + + def test_program_modify_reward_line_qty(self): + order = self.empty_order + product_F = self.env['product.product'].create({ + 'name': 'Product F', + 'list_price': 100, + 'sale_ok': True, + 'taxes_id': [(6, 0, [])], + }) + self.all_programs |= self.env['loyalty.program'].create({ + 'name': '1 Product F = 5$ discount', + 'trigger': 'auto', + 'program_type': 'promotion', + 'applies_on': 'current', + 'rule_ids': [(0, 0, { + 'product_ids': product_F, + 'reward_point_mode': 'order', + 'minimum_qty': 1, + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount': 5, + 'discount_mode': 'per_point', + 'required_points': 1, + })], + }) + + self.env['sale.order.line'].create({ + 'product_id': product_F.id, + 'product_uom_qty': 2.0, + 'order_id': order.id, + }) + + self._auto_rewards(order, self.all_programs) + + self.assertEqual(len(order.order_line), 2, 'The order must contain 2 order lines: 1x Product F and 1x 5$ discount') + self.assertEqual(order.amount_total, 195.0, 'The price must be 195.0 since there is a 5$ discount and 2x Product F') + self.assertEqual(sum(order.order_line.filtered(lambda x: x.is_reward_line).mapped('product_uom_qty')), 1, 'The reward line should have a quantity of 1 since Fixed Amount discounts apply only once per Sale Order') + + order.order_line[1].product_uom_qty = 2 + + self.assertEqual(len(order.order_line), 2, 'The order must contain 2 order lines: 1x Product F and 1x 5$ discount') + self.assertEqual(order.amount_total, 190.0, 'The price must be 190.0 since there is now 2x 5$ discount and 2x Product F') + self.assertEqual(order.order_line.filtered(lambda x: x.is_reward_line).price_unit, -5, 'The discount unit price should still be -5 after the quantity was manually changed') + + def test_specific_discount_product_group(self): + # Tests the following: + # 1 program: -5$ on [A, B] + # 1 program: -10$ on A + # Order with A (6$) B (4$) C (10$) + # Apply both coupons -> order total should be 10$ + # Apply a 10% discount -> order total should be 9$ + # Redo the same process but discount first + product_a, product_b, product_c = self.env['product.product'].create([ + { + 'name': 'Product A', + 'list_price': 6, + 'sale_ok': True, + 'taxes_id': [(6, 0, [])], + }, + { + 'name': 'Product B', + 'list_price': 4, + 'sale_ok': True, + 'taxes_id': [(6, 0, [])], + }, + { + 'name': 'Product C', + 'list_price': 10, + 'sale_ok': True, + 'taxes_id': [(6, 0, [])], + }, + ]) + programs = self.env['loyalty.program'].create([ + { + 'name': '-5 USD on [A, B]', + 'trigger': 'auto', + 'program_type': 'promotion', + 'applies_on': 'current', + 'rule_ids': [(0, 0, { + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount': 5, + 'discount_mode': 'per_point', + 'discount_applicability': 'specific', + 'discount_product_ids': product_a | product_b, + 'required_points': 1, + })], + }, + { + 'name': '-10 USD on A', + 'trigger': 'auto', + 'program_type': 'promotion', + 'applies_on': 'current', + 'rule_ids': [(0, 0, { + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount': 10, + 'discount_mode': 'per_point', + 'discount_applicability': 'specific', + 'discount_product_ids': product_a, + 'required_points': 1, + })], + }, + ]) + order = self.empty_order + self.env['sale.order.line'].create([ + { + 'product_id': product_a.id, + 'name': 'Product A', + 'product_uom_qty': 1, + 'order_id': order.id, + }, + { + 'product_id': product_b.id, + 'name': 'Product B', + 'product_uom_qty': 1, + 'order_id': order.id, + }, + { + 'product_id': product_c.id, + 'name': 'Product C', + 'product_uom_qty': 1, + 'order_id': order.id, + }, + ]) + self._auto_rewards(order, programs) + self.assertEqual(order.amount_total, 10, "The total should be 10$.") + # Try to apply another 10% + self._apply_promo_code(order, 'test_10pc') + self.assertEqual(order.amount_total, 9, "The total should be 9$.") + # Now the order way around + order.order_line.filtered('reward_id').unlink() + self._apply_promo_code(order, 'test_10pc') + self.assertEqual(order.amount_total, 18, "The total should be 9$.") + self._auto_rewards(order, programs) + self.assertEqual(order.amount_total, 9, "The total should be 9$.") + + def test_specific_discount_multiple_taxes(self): + # Check the following setup + # Product A 10$ 10% tva excl + # Product B 10$ 20% tva excl + # Program A -100% on product A + # Program B -5$ fixed on both products + # Applying both programs in a different order should result in a different + # outcome since discountable amounts are computed per tax + # Applying program A before B should yield a better final price + product_a, product_b = self.env['product.product'].create([ + { + 'name': 'Product A', + 'list_price': 10, + 'sale_ok': True, + 'taxes_id': [(6, 0, [self.tax_10pc_excl.id])], + }, + { + 'name': 'Product B', + 'list_price': 10, + 'sale_ok': True, + 'taxes_id': [(6, 0, [self.tax_20pc_excl.id])], + }, + ]) + program_a, program_b = self.env['loyalty.program'].create([ + { + 'name': '-100% on A', + 'trigger': 'auto', + 'program_type': 'promotion', + 'applies_on': 'current', + 'rule_ids': [(0, 0, { + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount': 100, + 'discount_mode': 'percent', + 'discount_applicability': 'specific', + 'discount_product_ids': product_a, + 'required_points': 1, + })], + }, + { + 'name': '-5 USD on [A, B]', + 'trigger': 'auto', + 'program_type': 'promotion', + 'applies_on': 'current', + 'rule_ids': [(0, 0, { + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount': 5, + 'discount_mode': 'per_point', + 'discount_applicability': 'specific', + 'discount_product_ids': product_a | product_b, + 'required_points': 1, + })], + }, + ]) + + order = self.empty_order + self.env['sale.order.line'].create([ + { + 'product_id': product_a.id, + 'name': 'Product A', + 'product_uom_qty': 1, + 'order_id': order.id, + }, + { + 'product_id': product_b.id, + 'name': 'Product B', + 'product_uom_qty': 1, + 'order_id': order.id, + }, + ]) + self._auto_rewards(order, program_a) + self.assertEqual(order.amount_total, 12, 'Total should be 12$') + self._auto_rewards(order, program_b) + self.assertAlmostEqual(order.amount_total, 7, 0, 'Total should be 7$') + # Now the order way around + order.order_line.filtered('reward_id').unlink() + self._auto_rewards(order, program_b) + self.assertAlmostEqual(order.amount_total, 18, 0, 'Total should be 18$') + self._auto_rewards(order, program_a) + # We essentially create a discount of -100% off of an already discounted product + # (11 - 2.4) = 8.6$ discount ~ + self.assertAlmostEqual(order.amount_total, 9.4, 1, 'Total should be 9.4$') + + def test_fixed_amount_taxes_attribution(self): + program = self.env['loyalty.program'].create({ + 'name': '-5 USD', + 'trigger': 'auto', + 'program_type': 'promotion', + 'applies_on': 'current', + 'rule_ids': [(0, 0, { + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount': 5, + 'discount_mode': 'per_point', + 'discount_applicability': 'order', + 'required_points': 1, + })], + }) + + order = self.empty_order + sol = self.env['sale.order.line'].create({ + 'product_id': self.drawerBlack.id, + 'price_unit': 10, + 'product_uom_qty': 1.0, + 'order_id': order.id, + }) + + self._auto_rewards(order, program) + + self.assertEqual(order.amount_total, 5, 'Price should be 10$ - 5$(discount) = 5$') + self.assertEqual(order.amount_tax, 0, 'No taxes are applied yet') + + sol.tax_id = self.tax_10pc_base_incl + self._auto_rewards(order, program) + + self.assertEqual(order.amount_total, 5, 'Price should be 10$ - 5$(discount) = 5$') + self.assertEqual(float_compare(order.amount_tax, 5 / 11, precision_rounding=3), 0, '10% Tax included in 5$') + + sol.tax_id = self.tax_10pc_excl + self._auto_rewards(order, program) + + # Value is 5.99 instead of 6 because you cannot have 6 with 10% tax excluded and a precision rounding of 2 + self.assertAlmostEqual(order.amount_total, 6, 1, msg='Price should be 11$ - 5$(discount) = 6$') + self.assertEqual(float_compare(order.amount_tax, 6 / 11, precision_rounding=3), 0, '10% Tax included in 6$') + + sol.tax_id = self.tax_20pc_excl + self._auto_rewards(order, program) + + self.assertEqual(order.amount_total, 7, 'Price should be 12$ - 5$(discount) = 7$') + self.assertEqual(float_compare(order.amount_tax, 7 / 12, precision_rounding=3), 0, '20% Tax included on 7$') + + sol.tax_id = self.tax_10pc_base_incl + self.tax_10pc_excl + self._auto_rewards(order, program) + + self.assertAlmostEqual(order.amount_total, 6, 1, msg='Price should be 11$ - 5$(discount) = 6$') + self.assertEqual(float_compare(order.amount_tax, 6 / 12, precision_rounding=3), 0, '20% Tax included on 6$') + + def test_fixed_amount_taxes_attribution_multiline(self): + + program = self.env['loyalty.program'].create({ + 'name': '-5 USD', + 'trigger': 'auto', + 'program_type': 'promotion', + 'applies_on': 'current', + 'rule_ids': [(0, 0, { + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount': 5, + 'discount_mode': 'per_point', + 'discount_applicability': 'order', + 'required_points': 1, + })], + }) + + order = self.empty_order + sol1 = self.env['sale.order.line'].create({ + 'product_id': self.drawerBlack.id, + 'price_unit': 10, + 'product_uom_qty': 1.0, + 'order_id': order.id, + }) + sol2 = self.env['sale.order.line'].create({ + 'product_id': self.drawerBlack.id, + 'price_unit': 10, + 'product_uom_qty': 1.0, + 'order_id': order.id, + }) + + self._auto_rewards(order, program) + + self.assertAlmostEqual(order.amount_total, 15, 1, msg='Price should be 20$ - 5$(discount) = 15$') + self.assertEqual(order.amount_tax, 0, 'No taxes are applied yet') + + sol1.tax_id = self.tax_10pc_base_incl + self._auto_rewards(order, program) + + self.assertAlmostEqual(order.amount_total, 15, 1, msg='Price should be 20$ - 5$(discount) = 15$') + self.assertEqual(float_compare(order.amount_tax, 5 / 11 + 0, precision_rounding=3), 0, + '10% Tax included in 5$ in sol1 (highest cost) and 0 in sol2') + + sol2.tax_id = self.tax_10pc_excl + self._auto_rewards(order, program) + + self.assertAlmostEqual(order.amount_total, 16, 1, msg='Price should be 21$ - 5$(discount) = 16$') + # Tax amount = 10% in 10$ + 10% in 11$ - 10% in 5$ (apply on excluded) + self.assertEqual(float_compare(order.amount_tax, 5 / 11, precision_rounding=3), 0) + + sol2.tax_id = self.tax_10pc_base_incl + self.tax_10pc_excl + self._auto_rewards(order, program) + + self.assertAlmostEqual(order.amount_total, 16, 1, msg='Price should be 21$ - 5$(discount) = 16$') + # Promo apply on line 2 (10% inc + 10% exc) + # Tax amount = 10% in 10$ + 10% in 10$ + 10% in 11 - 10% in 5$ - 10% in 4.55$ (100/110*5) + # = 10/11 + 10/11 + 11/11 - 5/11 - 4.55/11 + # = 21.45/11 + self.assertEqual(float_compare(order.amount_tax, 21.45 / 11, precision_rounding=3), 0) + + sol3 = self.env['sale.order.line'].create({ + 'product_id': self.drawerBlack.id, + 'price_unit': 10, + 'product_uom_qty': 1.0, + 'order_id': order.id, + }) + sol3.tax_id = self.tax_10pc_excl + self._auto_rewards(order, program) + + self.assertAlmostEqual(order.amount_total, 27, 1, msg='Price should be 32$ - 5$(discount) = 27$') + # Promo apply on line 2 (10% inc + 10% exc) + # Tax amount = 10% in 10$ + 10% in 10$ + 10% in 11$ + 10% in 11$ - 10% in 5$ - 10% in 4.55$ (100/110*5) + # = 10/11 + 10/11 + 11/11 + 11/11 - 5/11 - 4.55/11 + # = 32.45/11 + self.assertEqual(float_compare(order.amount_tax, 32.45 / 11, precision_rounding=3), 0) + + def test_fixed_amount_with_negative_cost(self): + program = self.env['loyalty.program'].create({ + 'name': '-10 USD', + 'trigger': 'auto', + 'program_type': 'promotion', + 'applies_on': 'current', + 'rule_ids': [(0, 0, { + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount': 10, + 'discount_mode': 'per_point', + 'discount_applicability': 'order', + 'required_points': 1, + })], + }) + + order = self.empty_order + + sol1 = self.env['sale.order.line'].create({ + 'product_id': self.drawerBlack.id, + 'price_unit': 10, + 'product_uom_qty': 1.0, + 'order_id': order.id, + }) + + self.env['sale.order.line'].create({ + 'product_id': self.drawerBlack.id, + 'name': 'hand discount', + 'price_unit': -5, + 'product_uom_qty': 1.0, + 'order_id': order.id, + }) + + self._auto_rewards(order, program) + + self.assertEqual(len(order.order_line), 3, 'Promotion should add 1 line') + self.assertEqual(order.amount_total, 0, '10$ discount should cover the whole price') + + sol1.price_unit = 20 + self._auto_rewards(order, program) + + self.assertEqual(len(order.order_line), 3, 'Promotion should add 1 line') + self.assertEqual(order.amount_total, 5, '10$ discount should be applied on top of the 15$ original price') + + def test_fixed_amount_change_promo_amount(self): + program = self.env['loyalty.program'].create({ + 'name': '-10 USD', + 'trigger': 'auto', + 'program_type': 'promotion', + 'applies_on': 'current', + 'rule_ids': [(0, 0, { + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount': 10, + 'discount_mode': 'per_point', + 'discount_applicability': 'order', + 'required_points': 1, + })], + }) + + order = self.empty_order + + self.env['sale.order.line'].create({ + 'product_id': self.drawerBlack.id, + 'price_unit': 10, + 'product_uom_qty': 1.0, + 'order_id': order.id, + }) + + self._auto_rewards(order, program) + + self.assertEqual(len(order.order_line), 2, 'Promotion should add 1 line') + self.assertEqual(order.amount_total, 0, '10$ - 10$(discount) = 0$(total) ') + + program.reward_ids.discount = 5 + self._auto_rewards(order, program) + + self.assertEqual(len(order.order_line), 2, 'Promotion should add 1 line') + self.assertEqual(order.amount_total, 5, '10$ - 5$(discount) = 5$(total) ') + + def test_fixed_tax_not_affected(self): + program = self.env['loyalty.program'].create({ + 'name': '50% discount', + 'program_type': 'promotion', + 'trigger': 'auto', + 'applies_on': 'current', + 'rule_ids': [(0, 0, { + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount_mode': 'percent', + 'discount': 50, + 'discount_applicability': 'order', + 'required_points': 1, + })], + }) + + order = self.empty_order + # Create taxes + self.tax_15pc_excl = self.env['account.tax'].create({ + 'name': "15% Tax excl", + 'amount_type': 'percent', + 'amount': 15, + }) + self.tax_10_fixed = self.env['account.tax'].create({ + 'name': "10$ Fixed tax", + 'amount_type': 'fixed', + 'amount': 10, + }) + + # Set tax and prices on products as neeed for the test + self.product_A.write({'list_price': 100}) + self.product_A.taxes_id = (self.tax_15pc_excl + self.tax_10_fixed) + + # Add products in order + self.env['sale.order.line'].create({ + 'product_id': self.product_A.id, + 'name': 'product A', + 'product_uom_qty': 1.0, + 'order_id': order.id, + }) + + self._auto_rewards(order, program) + + self.assertEqual(len(order.order_line), 2, 'Promotion should add 1 line') + self.assertEqual(order.amount_total, 67.5, '100$ + 15% tax + 10$ tax - 50%(discount) = 67.5$(total) ') + self.assertEqual(order.amount_tax, 17.5, '15% tax + 10$ tax$ - 50%$(discount) = 17.5$(total) ') + + def test_fixed_tax_not_affected_2(self): + program = self.env['loyalty.program'].create({ + 'name': '50$ discount', + 'program_type': 'promotion', + 'trigger': 'auto', + 'applies_on': 'current', + 'rule_ids': [(0, 0, { + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount_mode': 'per_order', + 'discount': 50, + 'discount_applicability': 'order', + 'required_points': 1, + })], + }) + + order = self.empty_order + # Create taxes + self.tax_15pc_excl = self.env['account.tax'].create({ + 'name': "15% Tax excl", + 'amount_type': 'percent', + 'amount': 15, + }) + self.tax_10_fixed = self.env['account.tax'].create({ + 'name': "10$ Fixed tax", + 'amount_type': 'fixed', + 'amount': 10, + }) + + # Set tax and prices on products as neeed for the test + self.product_A.write({'list_price': 100}) + self.product_A.taxes_id = (self.tax_15pc_excl + self.tax_10_fixed) + + # Add products in order + self.env['sale.order.line'].create({ + 'product_id': self.product_A.id, + 'name': 'product A', + 'product_uom_qty': 1.0, + 'order_id': order.id, + }) + + self._auto_rewards(order, program) + + self.assertEqual(len(order.order_line), 2, 'Promotion should add 1 line') + self.assertEqual(order.amount_total, 75, '100$ + 15% tax + 10$ tax - 50$(discount) = 75$(total) ') diff --git a/tests/test_program_rules.py b/tests/test_program_rules.py new file mode 100644 index 0000000..72de181 --- /dev/null +++ b/tests/test_program_rules.py @@ -0,0 +1,316 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from datetime import date, timedelta +from freezegun import freeze_time + +from odoo import Command +from odoo.addons.sale_loyalty.tests.common import TestSaleCouponCommon +from odoo.exceptions import ValidationError + +class TestProgramRules(TestSaleCouponCommon): + # Test all the validity rules to allow a customer to have a reward. + # The check based on the products is already done in the basic operations test + + def test_program_rules_minimum_purchased_amount(self): + # Test case: Based on the minimum purchased + + self.immediate_promotion_program.rule_ids.write({ + 'minimum_amount': 1006, + 'minimum_amount_tax_mode': 'excl' + }) + + order = self.empty_order + order.write({'order_line': [ + (0, False, { + 'product_id': self.product_A.id, + 'name': '1 Product A', + 'product_uom': self.uom_unit.id, + 'product_uom_qty': 1.0, + }), + (0, False, { + 'product_id': self.product_B.id, + 'name': '2 Product B', + 'product_uom': self.uom_unit.id, + 'product_uom_qty': 1.0, + }) + ]}) + order._update_programs_and_rewards() + self._claim_reward(order, self.immediate_promotion_program) + self.assertEqual(len(order.order_line.ids), 2, "The promo offer shouldn't have been applied as the purchased amount is not enough") + + order = self.env['sale.order'].create({'partner_id': self.steve.id}) + order.write({'order_line': [ + (0, False, { + 'product_id': self.product_A.id, + 'name': '10 Product A', + 'product_uom': self.uom_unit.id, + 'product_uom_qty': 10.0, + }), + (0, False, { + 'product_id': self.product_B.id, + 'name': '2 Product B', + 'product_uom': self.uom_unit.id, + 'product_uom_qty': 1.0, + }) + ]}) + order._update_programs_and_rewards() + self._claim_reward(order, self.immediate_promotion_program) + # 10*100 + 5 = 1005 + self.assertEqual(len(order.order_line.ids), 2, "The promo offer should not be applied as the purchased amount is not enough") + + self.immediate_promotion_program.rule_ids.minimum_amount = 1005 + order._update_programs_and_rewards() + self._claim_reward(order, self.immediate_promotion_program) + self.assertEqual(len(order.order_line.ids), 3, "The promo offer should be applied as the purchased amount is now enough") + + # 10*(100*1.15) + (5*1.15) = 10*115 + 5.75 = 1155.75 + self.immediate_promotion_program.rule_ids.minimum_amount = 1006 + self.immediate_promotion_program.rule_ids.minimum_amount_tax_mode = 'incl' + order._update_programs_and_rewards() + self._claim_reward(order, self.immediate_promotion_program) + self.assertEqual(len(order.order_line.ids), 3, "The promo offer should be applied as the initial amount required is now tax included") + + def test_program_rules_coupon_qty_and_amount_remove_not_eligible(self): + ''' This test will: + * Check quantity and amount requirements works as expected (since it's slightly different from a promotion_program) + * Ensure that if a reward from a coupon_program was allowed and the conditions are not met anymore, + the reward will be removed on recompute. + ''' + self.immediate_promotion_program.active = False # Avoid having this program to add rewards on this test + order = self.empty_order + + program = self.env['loyalty.program'].create({ + 'name': 'Get 10% discount if buy at least 4 Product A and $320', + 'program_type': 'coupons', + 'applies_on': 'current', + 'trigger': 'with_code', + 'rule_ids': [(0, 0, { + 'product_ids': self.product_A, + 'minimum_qty': 3, + 'minimum_amount': 320, + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount_mode': 'percent', + 'discount': 10, + 'discount_applicability': 'order', + })], + }) + + sol1 = self.env['sale.order.line'].create({ + 'product_id': self.product_A.id, + 'name': 'Product A', + 'product_uom_qty': 2.0, + 'order_id': order.id, + }) + + sol2 = self.env['sale.order.line'].create({ + 'product_id': self.product_B.id, + 'name': 'Product B', + 'product_uom_qty': 4.0, + 'order_id': order.id, + }) + + # Default value for coupon generate wizard is generate by quantity and generate only one coupon + self.env['loyalty.generate.wizard'].with_context(active_id=program.id).create({'coupon_qty': 1, 'points_granted': 1}).generate_coupons() + coupon = program.coupon_ids[0] + + # Not enough amount since we only have 220 (100*2 + 5*4) + with self.assertRaises(ValidationError): + self._apply_promo_code(order, coupon.code) + + sol2.product_uom_qty = 24 + + # Not enough qty since we only have 3 Product A (Amount is ok: 100*2 + 5*24 = 320) + with self.assertRaises(ValidationError): + self._apply_promo_code(order, coupon.code) + + sol1.product_uom_qty = 3 + + self._apply_promo_code(order, coupon.code) + self._claim_reward(order, program, coupon) + + self.assertEqual(len(order.order_line.ids), 3, "The order should contain the Product A line, the Product B line and the discount line") + + sol1.product_uom_qty = 2 + order._update_programs_and_rewards() + + self.assertEqual(len(order.order_line.ids), 2, "The discount line should have been removed as we don't meet the program requirements") + + def test_program_rules_promotion_use_best(self): + ''' This test verifies that only the best global discount is applied. + ''' + self.immediate_promotion_program.active = False # Avoid having this program to add rewards on this test + order = self.empty_order + + p1 = self.env['loyalty.program'].create({ + 'name': 'Get 5% discount if buy at least 2 Product', + 'trigger': 'auto', + 'program_type': 'promotion', + 'applies_on': 'current', + 'rule_ids': [(0, 0, { + 'reward_point_mode': 'order', + 'minimum_qty': 2, + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount': 5, + 'discount_mode': 'percent', + 'discount_applicability': 'order', + 'required_points': 1, + })], + }) + p2 = self.env['loyalty.program'].create({ + 'name': 'Get 10% discount if buy at least 4 Product', + 'trigger': 'auto', + 'program_type': 'promotion', + 'applies_on': 'current', + 'rule_ids': [(0, 0, { + 'reward_point_mode': 'order', + 'minimum_qty': 4, + })], + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount': 10, + 'discount_mode': 'percent', + 'discount_applicability': 'order', + 'required_points': 1, + })], + }) + sol = self.env['sale.order.line'].create({ + 'product_id': self.product_A.id, + 'name': 'Product A', + 'product_uom_qty': 1.0, + 'order_id': order.id, + }) + + order._update_programs_and_rewards() + self._claim_reward(order, p1) + self._claim_reward(order, p2) + self.assertEqual(len(order.order_line.ids), 1, "The order should only contains the Product A line") + + sol.product_uom_qty = 3 + order._update_programs_and_rewards() + self._claim_reward(order, p1) + self._claim_reward(order, p2) + discounts = set(order.order_line.mapped('name')) - {'Product A'} + self.assertEqual(len(discounts), 1, "The order should contains the Product A line and a discount") + # The name of the discount is dynamically changed to smth looking like: + # "Discount: Get 5% discount if buy at least 2 Product - On product with following tax: Tax 15.00%" + self.assertTrue('Discount: 5% on your order' in discounts.pop(), "The discount should be a 5% discount") + + sol.product_uom_qty = 5 + order._update_programs_and_rewards() + self._claim_reward(order, p1) + self._claim_reward(order, p2) + discounts = set(order.order_line.mapped('name')) - {'Product A'} + self.assertEqual(len(discounts), 1, "The order should contains the Product A line and a discount") + self.assertTrue('Discount: 10% on your order' in discounts.pop(), "The discount should be a 10% discount") + + @freeze_time('2011-11-02 09:00:21') + def test_program_rules_validity_dates(self): + # Test date_to (no date_from) + today = date.today() + past_day = today - timedelta(days=2) + future_day = today + timedelta(days=2) + self.immediate_promotion_program.write({'date_to': past_day}) + order = self.empty_order + order.write({'order_line': [ + Command.create({ + 'product_id': self.product_A.id, + 'name': '1 Product A', + 'product_uom': self.uom_unit.id, + 'product_uom_qty': 1.0, + }), + Command.create({ + 'product_id': self.product_B.id, + 'name': '2 Product B', + 'product_uom': self.uom_unit.id, + 'product_uom_qty': 1.0, + }) + ]}) + self._auto_rewards(order, self.immediate_promotion_program) + msg = "The promo shouldn't have been applied as it is expired." + self.assertEqual(len(order.order_line.ids), 2, msg) + + self.immediate_promotion_program.write({'date_to': future_day}) + self._auto_rewards(order, self.immediate_promotion_program) + msg = "The promo should have been applied we're between the validity dates." + self.assertEqual(len(order.order_line.ids), 3, msg) + + # Test date_from (no date_to) + self.immediate_promotion_program.write({ + 'date_from': future_day, 'date_to': False, + }) + self._auto_rewards(order, self.immediate_promotion_program) + msg = "The promo shouldn't have been applied as it is not active yet." + self.assertEqual(len(order.order_line.ids), 2, msg) + + self.immediate_promotion_program.write({'date_from': past_day}) + self._auto_rewards(order, self.immediate_promotion_program) + msg = "The promo should have been applied we're between the validity dates." + self.assertEqual(len(order.order_line.ids), 3, msg) + + # Test date_from and date_to + self.immediate_promotion_program.write({'date_from': past_day, 'date_to': future_day}) + self._auto_rewards(order, self.immediate_promotion_program) + msg = "The promo should have been applied as we're between the validity dates" + self.assertEqual(len(order.order_line.ids), 3, msg) + + self.immediate_promotion_program.write({ + 'date_from': today + timedelta(days=1), + 'date_to': future_day, + }) + self._auto_rewards(order, self.immediate_promotion_program) + msg = "The promo offer shouldn't have been applied as it is not active yet." + self.assertEqual(len(order.order_line.ids), 2, msg) + + self.immediate_promotion_program.write({ + 'date_from': past_day, + 'date_to': today - timedelta(days=1), + }) + self._auto_rewards(order, self.immediate_promotion_program) + msg = "The promo offer shouldn't have been applied as it is expired." + self.assertEqual(len(order.order_line.ids), 2, msg) + + self.immediate_promotion_program.write({'date_from': today, 'date_to': today}) + self._auto_rewards(order, self.immediate_promotion_program) + msg = "The promo should have been applied as today is a valid starting and ending date." + self.assertEqual(len(order.order_line.ids), 3, msg) + + def test_program_rules_number_of_uses(self): + # Test case: Based on the number of allowed uses + self.immediate_promotion_program.write({ + 'limit_usage': True, + 'max_usage': 1, + }) + order = self.empty_order + order.write({'order_line': [ + Command.create({ + 'product_id': self.product_A.id, + 'name': '1 Product A', + 'product_uom': self.uom_unit.id, + 'product_uom_qty': 1.0, + }) + ]}) + self._auto_rewards(order, self.immediate_promotion_program) + self.assertEqual(len(order.order_line.ids), 2, "The promo offer should have been applied") + + order = self.env['sale.order'].create({ + 'partner_id': self.env['res.partner'].create({'name': 'My Partner'}).id + }) + + order.write({'order_line': [ + Command.create({ + 'product_id': self.product_B.id, + 'name': '2 Product B', + 'product_uom': self.uom_unit.id, + 'product_uom_qty': 1.0, + }) + ]}) + # Invalidate total_order_count + self.immediate_promotion_program.invalidate_recordset(['order_count', 'total_order_count']) + self._auto_rewards(order, self.immediate_promotion_program) + msg = "The promo offer shouldn't have been applied as the number of uses is exceeded" + self.assertEqual(len(order.order_line.ids), 1, msg) diff --git a/tests/test_program_with_code_operations.py b/tests/test_program_with_code_operations.py new file mode 100644 index 0000000..2f52377 --- /dev/null +++ b/tests/test_program_with_code_operations.py @@ -0,0 +1,333 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo.addons.sale_loyalty.tests.common import TestSaleCouponCommon +from odoo.exceptions import ValidationError + + +class TestProgramWithCodeOperations(TestSaleCouponCommon): + # Test the basic operation (apply_coupon) on an coupon program on which we should + # apply the reward when the code is correct or remove the reward automatically when the reward is + # not valid anymore. + + def test_program_usability(self): + # After clicking "Generate coupons", there is no domain so it shows "Match all records". + # But when you click, domain is false (default field value; empty string) so it won't generate anything. + # This is even more weird because if you add something in the domain and then delete it, + # you visually come back to the initial state except the domain became '[]' instead of ''. + # In this case, it will generate the coupon for every partner. + # Thus, we should ensure that if you leave the domain untouched, it generates a coupon for each partner + # as hinted on the screen ('Match all records (X records)') + self.env['loyalty.generate.wizard'].with_context(active_id=self.code_promotion_program.id).create({ + 'mode': 'selected', + }).generate_coupons() + self.assertEqual(len(self.code_promotion_program.coupon_ids), len(self.env['res.partner'].search([])), "It should have generated a coupon for every partner") + + def test_program_basic_operation_coupon_code(self): + # Test case: Generate a coupon for my customer, and add a reward then remove it automatically + + self.immediate_promotion_program.active = False + self.code_promotion_program.reward_ids.reward_type = 'discount' + self.code_promotion_program.reward_ids.discount = 10 + + self.env['loyalty.generate.wizard'].with_context(active_id=self.code_promotion_program.id).create({ + 'mode': 'selected', + 'customer_ids': self.steve, + 'points_granted': 1, + }).generate_coupons() + coupon = self.code_promotion_program.coupon_ids + + # Test the valid code on a wrong sales order + wrong_partner_order = self.env['sale.order'].create({ + 'partner_id': self.env['res.partner'].create({'name': 'My Partner'}).id, + }) + with self.assertRaises(ValidationError): + self._apply_promo_code(wrong_partner_order, coupon.code) + + # Test now on a valid sales order + order = self.empty_order + order.write({'order_line': [ + (0, False, { + 'product_id': self.product_A.id, + 'name': '1 Product A', + 'product_uom': self.uom_unit.id, + 'product_uom_qty': 1.0, + }) + ]}) + self._apply_promo_code(order, coupon.code) + self.assertEqual(len(order.order_line.ids), 2) + + # Remove the product A from the sale order + order.write({'order_line': [(2, order.order_line[0].id, False)]}) + order._update_programs_and_rewards() + self.assertEqual(len(order.order_line.ids), 0) + + def test_program_coupon_double_consuming(self): + # Test case: + # - Generate a coupon + # - add to a sale order A, cancel the sale order + # - add to a sale order B, confirm the order + # - go back to A, reset to draft and confirm + + self.immediate_promotion_program.active = False + self.code_promotion_program.applies_on = 'future' + self.code_promotion_program.reward_ids.reward_type = 'discount' + self.code_promotion_program.reward_ids.discount = 10 + + self.env['loyalty.generate.wizard'].with_context(active_id=self.code_promotion_program.id).create({ + 'coupon_qty': 1, + 'points_granted': 1, + }).generate_coupons() + coupon = self.code_promotion_program.coupon_ids + + sale_order_a = self.empty_order.copy() + sale_order_b = self.empty_order.copy() + + sale_order_a.write({'order_line': [ + (0, False, { + 'product_id': self.product_A.id, + 'name': '1 Product A', + 'product_uom': self.uom_unit.id, + 'product_uom_qty': 1.0, + }) + ]}) + self._apply_promo_code(sale_order_a, coupon.code) + self.assertEqual(len(sale_order_a.order_line.ids), 2) + + sale_order_a._action_cancel() + + sale_order_b.write({'order_line': [ + (0, False, { + 'product_id': self.product_A.id, + 'name': '1 Product A', + 'product_uom': self.uom_unit.id, + 'product_uom_qty': 1.0, + }) + ]}) + self._apply_promo_code(sale_order_b, coupon.code) + self.assertEqual(len(sale_order_b.order_line.ids), 2) + + sale_order_b.action_confirm() + + sale_order_a.action_draft() + sale_order_a.action_confirm() + # reward line removed automatically + self.assertEqual(len(sale_order_a.order_line.ids), 1) + + def test_coupon_code_with_pricelist(self): + # Test case: Generate a coupon (10% discount) and apply it on an order with a specific pricelist (10% discount) + + self.code_promotion_program_with_discount.applies_on = 'future' + self.env['loyalty.generate.wizard'].with_context(active_id=self.code_promotion_program_with_discount.id).create({ + 'coupon_qty': 1, + 'points_granted': 1, + }).generate_coupons() + coupon = self.code_promotion_program_with_discount.coupon_ids + + first_pricelist = self.env['product.pricelist'].create({ + 'name': 'First pricelist', + 'discount_policy': 'with_discount', + 'item_ids': [(0, 0, { + 'compute_price': 'percentage', + 'base': 'list_price', + 'percent_price': 10, + 'applied_on': '3_global', + 'name': 'First discount' + })] + }) + + order = self.empty_order + order.pricelist_id = first_pricelist + order.write({'order_line': [ + (0, False, { + 'product_id': self.product_C.id, + 'name': '1 Product C', + 'product_uom': self.uom_unit.id, + 'product_uom_qty': 1.0, + }) + ]}) + self._apply_promo_code(order, coupon.code) + self.assertEqual(len(order.order_line.ids), 2) + self.assertEqual(order.amount_total, 81, "SO total should be 81: (10% of 100 with pricelist) + 10% of 90 with coupon code") + + def test_on_next_order_reward_promotion_program(self): + # The flow: + # 1. Create a program `A` that gives a free `Product B` on next order if you buy a an `product A` + # This program should be code_needed with code `free_B_on_next_order` + # 2. Create a program `B` that gives 10% discount on next order automatically + # 3. Create a SO with a `third product` and recompute coupon, you SHOULD get a coupon (from program `B`) for your next order that will discount 10% + # 4. Try to apply `A`, it should error since we did not buy any product A. + # 5. Add a product A to the cart and try to apply `A` again, this time it should work + # 6. Verify you have 2 generated coupons and validate the SO (so the 2 generated coupons will be valid) + # 7. Create a new SO (with the same partner) + # 8. Add a Product B in the cart + # 9. Try to apply once again coupon generated by `A`, it should give you the free product B + # 10. Try to apply coupon generated by `B`, it should give you 10% discount. + # => SO will then be 0$ until we recompute the order lines + + # 1. + self.immediate_promotion_program.write({ + 'applies_on': 'future', + 'trigger': 'with_code', + }) + self.immediate_promotion_program.rule_ids.write({ + 'mode': 'with_code', + 'code': 'free_B_on_next_order', + }) + # 2. + self.p1 = self.env['loyalty.program'].create({ + 'name': 'Code for 10% on next order', + 'program_type': 'promotion', + 'applies_on': 'future', + 'trigger': 'auto', + 'rule_ids': [(0, 0, {})], + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount': 10, + 'discount_mode': 'percent', + 'discount_applicability': 'order', + })], + }) + # 3. + order = self.empty_order.copy() + self.third_product = self.env['product.product'].create({ + 'name': 'Thrid Product', + 'list_price': 5, + 'sale_ok': True + }) + order.write({'order_line': [ + (0, False, { + 'product_id': self.third_product.id, + 'name': '1 Third Product', + 'product_uom': self.uom_unit.id, + 'product_uom_qty': 1.0, + }) + ]}) + order._update_programs_and_rewards() + self.assertEqual(len(self.p1.coupon_ids.ids), 1, "You should get a coupon for you next order that will offer 10% discount") + # 4. + with self.assertRaises(ValidationError): + self._apply_promo_code(order, 'free_B_on_next_order') + # 5. + order.write({'order_line': [ + (0, False, { + 'product_id': self.product_A.id, + 'name': '1 Product A', + 'product_uom': self.uom_unit.id, + 'product_uom_qty': 1.0, + }) + ]}) + self._apply_promo_code(order, 'free_B_on_next_order', no_reward_fail=False) + # 6. + self.assertEqual(len(order._get_reward_coupons()), 2, "You should get a second coupon for your next order that will offer a free Product B") + order.action_confirm() + # 7. + order_bis = self.empty_order + + # 8. + order_bis.write({'order_line': [ + (0, False, { + 'product_id': self.product_B.id, + 'name': '1 Product B', + 'product_uom': self.uom_unit.id, + 'product_uom_qty': 1.0, + }) + ]}) + # 9. + self._apply_promo_code(order_bis, order._get_reward_coupons()[1].code) + self.assertEqual(len(order_bis.order_line), 2, "You should get a free Product B") + # 10. + self._apply_promo_code(order_bis, order._get_reward_coupons()[0].code) + self.assertEqual(len(order_bis.order_line), 3, "You should get a 10% discount line") + self.assertAlmostEqual(order_bis.amount_total, order_bis.order_line[0].price_total * 0.9, 2, "SO total should be null: (Paid product - Free product = 0) + 10% of nothing") + + def test_on_next_order_reward_promotion_program_with_requirements(self): + self.immediate_promotion_program.write({ + 'applies_on': 'future', + 'trigger': 'with_code', + }) + self.immediate_promotion_program.rule_ids.write({ + 'minimum_amount': 700, + 'minimum_amount_tax_mode': 'excl', + 'mode': 'with_code', + 'code': 'free_B_on_next_order', + }) + order = self.empty_order.copy() + self.product_A.lst_price = 700 + order.write({'order_line': [ + (0, False, { + 'product_id': self.product_A.id, + 'name': '1 Product A', + 'product_uom': self.uom_unit.id, + 'product_uom_qty': 1.0, + }) + ]}) + self._apply_promo_code(order, 'free_B_on_next_order', no_reward_fail=False) + self.assertEqual(len(self.immediate_promotion_program.coupon_ids.ids), 1, "You should get a coupon for you next order that will offer a free product B") + order_bis = self.empty_order + order_bis.write({'order_line': [ + (0, False, { + 'product_id': self.product_B.id, + 'name': '1 Product B', + 'product_uom': self.uom_unit.id, + 'product_uom_qty': 1.0, + }) + ]}) + with self.assertRaises(ValidationError): + # It should error since we did not validate the previous SO, so the coupon is `reserved` but not `new` + self._apply_promo_code(order_bis, order._get_reward_coupons()[0].code) + order.action_confirm() + # It should not error even if the SO does not have the requirements (700$ and 1 product A), since these requirements where only used to generate the coupon that we are now applying + self._apply_promo_code(order_bis, order._get_reward_coupons()[0].code, no_reward_fail=False) + self.assertEqual(len(order_bis.order_line), 2, "You should get 1 regular product_B and 1 free product_B") + order_bis._update_programs_and_rewards() + self.assertEqual(len(order_bis.order_line), 2, "Free product from a coupon generated from a promotion program on next order should not dissapear") + + def test_edit_and_reapply_promotion_program(self): + # The flow: + # 1. Create a program auto applied, giving a fixed amount discount + # 2. Create a SO and apply the program + # 3. Change the program, requiring a mandatory code + # 4. Reapply the program on the same SO via code + + self.immediate_promotion_program.active = False + # 1. + self.p1 = self.env['loyalty.program'].create({ + 'name': 'Promo fixed amount', + 'trigger': 'auto', + 'program_type': 'promotion', + 'rule_ids': [(0, 0, {})], + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount': 10, + 'discount_mode': 'per_point', + 'discount_applicability': 'order', + })] + }) + # 2. + order = self.empty_order.copy() + order.write({'order_line': [ + (0, False, { + 'product_id': self.product_A.id, + 'name': '1 Product A', + 'product_uom': self.uom_unit.id, + 'product_uom_qty': 1.0, + }) + ]}) + order._update_programs_and_rewards() + self._claim_reward(order, self.p1) + self.assertEqual(len(order.order_line), 2, "You should get a discount line") # product + discount + # 3. + self.p1.write({ + 'trigger': 'with_code', + }) + self.p1.rule_ids.write({ + 'mode': 'with_code', + 'code': 'test', + }) + order._update_programs_and_rewards() + self.assertEqual(len(order.order_line), 1, "You loose a discount line") + # 4. + self._apply_promo_code(order, 'test') + # But the above line should not add any reward + self.assertEqual(len(order.order_line), 2, "You should get a discount line") # product + discount diff --git a/tests/test_program_without_code_operations.py b/tests/test_program_without_code_operations.py new file mode 100644 index 0000000..91d90e3 --- /dev/null +++ b/tests/test_program_without_code_operations.py @@ -0,0 +1,64 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo.addons.sale_loyalty.tests.common import TestSaleCouponCommon + + +class TestProgramWithoutCodeOperations(TestSaleCouponCommon): + # Test some basic operation (create, write, unlink) on an immediate coupon program on which we should + # apply or remove the reward automatically, as there's no program code. + + def test_immediate_program_basic_operation(self): + + # 2 products A are needed + self.immediate_promotion_program.rule_ids.write({'minimum_qty': 2.0}) + order = self.empty_order + # Test case 1 (1 A): Assert that no reward is given, as the product B is missing + order.write({'order_line': [ + (0, False, { + 'product_id': self.product_A.id, + 'name': '1 Product A', + 'product_uom': self.uom_unit.id, + 'product_uom_qty': 1.0, + }) + ]}) + order._update_programs_and_rewards() + self._claim_reward(order, self.immediate_promotion_program) + self.assertEqual(len(order.order_line.ids), 1, "The promo offer shouldn't have been applied as the product B isn't in the order") + + # Test case 2 (1 A 1 B): Assert that no reward is given, as the product A is not present in the correct quantity + order.write({'order_line': [ + (0, False, { + 'product_id': self.product_B.id, + 'name': '2 Product B', + 'product_uom': self.uom_unit.id, + 'product_uom_qty': 1.0, + }) + ]}) + order._update_programs_and_rewards() + self._claim_reward(order, self.immediate_promotion_program) + self.assertEqual(len(order.order_line.ids), 2, "The promo offer shouldn't have been applied as 2 product A aren't in the order") + + # Test case 3 (2 A 1 B): Assert that the reward is given as the product B is now in the order + order.write({'order_line': [(1, order.order_line[0].id, {'product_uom_qty': 2.0})]}) + order._update_programs_and_rewards() + self._claim_reward(order, self.immediate_promotion_program) + self.assertEqual(len(order.order_line.ids), 3, "The promo offer should have been applied, the discount is not created") + + # Test case 4 (1 A 1 B): Assert that the reward is removed as we don't buy 2 products B anymore + order.write({'order_line': [(1, order.order_line[0].id, {'product_uom_qty': 1.0})]}) + order._update_programs_and_rewards() + self._claim_reward(order, self.immediate_promotion_program) + self.assertEqual(len(order.order_line.ids), 2, "The promo reward should have been removed as the rules are not matched anymore") + self.assertEqual(order.order_line[0].product_id.id, self.product_A.id, "The wrong line has been removed") + self.assertEqual(order.order_line[1].product_id.id, self.product_B.id, "The wrong line has been removed") + + # Test case 5 (1 B): Assert that the reward is removed when the order is modified and doesn't match the rules anymore + order.write({'order_line': [ + (1, order.order_line[0].id, {'product_uom_qty': 2.0}), + (2, order.order_line[0].id, False) + ]}) + order._update_programs_and_rewards() + self._claim_reward(order, self.immediate_promotion_program) + self.assertEqual(len(order.order_line.ids), 1, "The promo reward should have been removed as the rules are not matched anymore") + self.assertEqual(order.order_line.product_id.id, self.product_B.id, "The wrong line has been removed") diff --git a/tests/test_sale_invoicing.py b/tests/test_sale_invoicing.py new file mode 100644 index 0000000..d82c550 --- /dev/null +++ b/tests/test_sale_invoicing.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo.addons.sale_loyalty.tests.common import TestSaleCouponCommon +from odoo.exceptions import UserError +from odoo.tests import tagged + + +@tagged('post_install', '-at_install') +class TestSaleInvoicing(TestSaleCouponCommon): + + def test_invoicing_order_with_promotions(self): + discount_coupon_program = self.env['loyalty.program'].create({ + 'name': '10% Discount', + 'program_type': 'coupons', + 'applies_on': 'current', + 'trigger': 'auto', + 'rule_ids': [(0, 0, {})], + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount': 10, + 'discount_mode': 'percent', + 'discount_applicability': 'order', + })] + }) + + product = self.env['product.product'].create({ + 'invoice_policy': 'delivery', + 'name': 'Product invoiced on delivery', + 'lst_price': 500, + }) + + order = self.empty_order + order.write({ + 'order_line': [ + (0, 0, { + 'product_id': product.id, + }) + ] + }) + + #Check default invoice_policy on discount product + self.assertEqual(discount_coupon_program.reward_ids.discount_line_product_id.invoice_policy, 'order') + + order._update_programs_and_rewards() + self._claim_reward(order, discount_coupon_program) + # Order is not confirmed, there shouldn't be any invoiceable line + invoiceable_lines = order._get_invoiceable_lines() + self.assertEqual(len(invoiceable_lines), 0) + + order.action_confirm() + invoiceable_lines = order._get_invoiceable_lines() + # Product was not delivered, we cannot invoice + # the product line nor the promotion line + order._compute_invoice_status() + self.assertEqual(order.invoice_status, 'no') + self.assertEqual(len(invoiceable_lines), 0) + with self.assertRaises(UserError): + order._create_invoices() + + order.order_line[0].qty_delivered = 1 + # Product is delivered, the two lines can be invoiced. + order._compute_invoice_status() + self.assertEqual(order.invoice_status, 'to invoice') + invoiceable_lines = order._get_invoiceable_lines() + self.assertEqual(order.order_line, invoiceable_lines) + account_move = order._create_invoices() + self.assertEqual(len(account_move.invoice_line_ids), 2) + + def test_coupon_on_order_sequence(self): + discount_coupon_program = self.env['loyalty.program'].create({ + 'name': '10% Discount', + 'program_type': 'coupons', + 'applies_on': 'current', + 'trigger': 'auto', + 'rule_ids': [(0, 0, {})], + 'reward_ids': [(0, 0, { + 'reward_type': 'discount', + 'discount': 10, + 'discount_mode': 'percent', + 'discount_applicability': 'order', + })] + }) + + order = self.empty_order + + product_6 = self.env['product.product'].create({ + 'name': 'Large Cabinet', + }) + # orderline1 + self.env['sale.order.line'].create({ + 'product_id': product_6.id, + 'name': 'largeCabinet', + 'product_uom_qty': 1.0, + 'order_id': order.id, + }) + + #Check default invoice_policy on discount product + self.assertEqual(discount_coupon_program.reward_ids.discount_line_product_id.invoice_policy, 'order') + + self._auto_rewards(order, discount_coupon_program) + + self.assertEqual(len(order.order_line), 2, 'Coupon correctly applied') + + product_11 = self.env['product.product'].create({ + 'name': 'Conference Chair', + }) + + # orderline2 + self.env['sale.order.line'].create({ + 'product_id': product_11.id, + 'name': 'conferenceChair', + 'product_uom_qty': 1.0, + 'order_id': order.id, + }) + + order._update_programs_and_rewards() + self.assertEqual(len(order.order_line), 3, 'Coupon correctly applied') + + self.assertTrue(order.order_line.sorted(lambda x: x.sequence)[-1].is_reward_line, 'Global coupons appear on the last line') diff --git a/views/loyalty_card_views.xml b/views/loyalty_card_views.xml new file mode 100644 index 0000000..90320ed --- /dev/null +++ b/views/loyalty_card_views.xml @@ -0,0 +1,15 @@ + + + + + loyalty.card.view.form.inherit.sale.loyalty + loyalty.card + + + + + + + + + diff --git a/views/loyalty_program_views.xml b/views/loyalty_program_views.xml new file mode 100644 index 0000000..7ef34a0 --- /dev/null +++ b/views/loyalty_program_views.xml @@ -0,0 +1,24 @@ + + + + + loyalty.program.view.form.inherit.sale.loyalty + loyalty.program + + + + 0 + + + 0 + + + + + + + + + + diff --git a/views/res_partner_views.xml b/views/res_partner_views.xml new file mode 100644 index 0000000..7b5b8c9 --- /dev/null +++ b/views/res_partner_views.xml @@ -0,0 +1,15 @@ + + + + + res.partner.view.buttons + res.partner + + + + + + + diff --git a/views/sale_loyalty_menus.xml b/views/sale_loyalty_menus.xml new file mode 100644 index 0000000..d24abd7 --- /dev/null +++ b/views/sale_loyalty_menus.xml @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/views/sale_order_views.xml b/views/sale_order_views.xml new file mode 100644 index 0000000..385bb1f --- /dev/null +++ b/views/sale_order_views.xml @@ -0,0 +1,24 @@ + + + + + sale.order.view.form.inherit.sale.loyalty + sale.order + + 10 + + + + + + diff --git a/views/sale_portal_templates.xml b/views/sale_portal_templates.xml new file mode 100644 index 0000000..3a32379 --- /dev/null +++ b/views/sale_portal_templates.xml @@ -0,0 +1,65 @@ + + + + + + + + + + diff --git a/wizard/__init__.py b/wizard/__init__.py new file mode 100644 index 0000000..49f574e --- /dev/null +++ b/wizard/__init__.py @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from . import sale_loyalty_coupon_wizard +from . import sale_loyalty_reward_wizard diff --git a/wizard/sale_loyalty_coupon_wizard.py b/wizard/sale_loyalty_coupon_wizard.py new file mode 100644 index 0000000..5f7dccc --- /dev/null +++ b/wizard/sale_loyalty_coupon_wizard.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import _, fields, models +from odoo.exceptions import ValidationError + +class SaleLoyaltyCouponWizard(models.TransientModel): + _name = 'sale.loyalty.coupon.wizard' + _description = 'Sale Loyalty - Apply Coupon Wizard' + + order_id = fields.Many2one('sale.order', default=lambda self: self.env.context.get('active_id'), required=True) + + coupon_code = fields.Char(required=True) + + def action_apply(self): + self.ensure_one() + if not self.order_id: + raise ValidationError(_('Invalid sales order.')) + status = self.order_id._try_apply_code(self.coupon_code) + if 'error' in status: + raise ValidationError(status['error']) + all_rewards = self.env['loyalty.reward'] + for rewards in status.values(): + all_rewards |= rewards + action = self.env['ir.actions.actions']._for_xml_id('sale_loyalty.sale_loyalty_reward_wizard_action') + action['context'] = { + 'active_id': self.order_id.id, + 'default_reward_ids': all_rewards.ids, + } + return action diff --git a/wizard/sale_loyalty_coupon_wizard_views.xml b/wizard/sale_loyalty_coupon_wizard_views.xml new file mode 100644 index 0000000..997d55e --- /dev/null +++ b/wizard/sale_loyalty_coupon_wizard_views.xml @@ -0,0 +1,29 @@ + + + + sale.loyalty.coupon.wizard.view.form + sale.loyalty.coupon.wizard + +
+ + + + + + + +
+
+
+
+
+ + + Enter Promotion or Coupon Code + sale.loyalty.coupon.wizard + form + new + +
diff --git a/wizard/sale_loyalty_reward_wizard.py b/wizard/sale_loyalty_reward_wizard.py new file mode 100644 index 0000000..6099039 --- /dev/null +++ b/wizard/sale_loyalty_reward_wizard.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import _, api, fields, models +from odoo.exceptions import ValidationError + +class SaleLoyaltyRewardWizard(models.TransientModel): + _name = 'sale.loyalty.reward.wizard' + _description = 'Sale Loyalty - Reward Selection Wizard' + + order_id = fields.Many2one('sale.order', default=lambda self: self.env.context.get('active_id'), required=True) + + reward_ids = fields.Many2many('loyalty.reward', compute='_compute_claimable_reward_ids') + selected_reward_id = fields.Many2one('loyalty.reward', domain="[('id', 'in', reward_ids)]") + # In case of multi_product reward + multi_product_reward = fields.Boolean(related='selected_reward_id.multi_product') + reward_product_ids = fields.Many2many(related='selected_reward_id.reward_product_ids') + selected_product_id = fields.Many2one('product.product', domain="[('id', 'in', reward_product_ids)]", + compute='_compute_selected_product_id', readonly=False, store=True,) + + @api.depends('order_id') + def _compute_claimable_reward_ids(self): + for wizard in self: + if not wizard.order_id: + wizard.reward_ids = False + else: + claimable_reward = wizard.order_id._get_claimable_rewards() + reward_ids = self.env['loyalty.reward'] + for rewards in claimable_reward.values(): + reward_ids |= rewards + wizard.reward_ids = reward_ids + + @api.depends('reward_product_ids') + def _compute_selected_product_id(self): + for wizard in self: + if not wizard.selected_reward_id.reward_type == 'product': + wizard.selected_product_id = False + else: + wizard.selected_product_id = wizard.reward_product_ids[:1] + + def action_apply(self): + self.ensure_one() + if not self.selected_reward_id: + raise ValidationError(_('No reward selected.')) + claimable_rewards = self.order_id._get_claimable_rewards() + selected_coupon = False + for coupon, rewards in claimable_rewards.items(): + if self.selected_reward_id in rewards: + selected_coupon = coupon + break + if not selected_coupon: + raise ValidationError(_('Coupon not found while trying to add the following reward: %s', self.selected_reward_id.description)) + self.order_id._apply_program_reward(self.selected_reward_id, coupon, product=self.selected_product_id) + self.order_id._update_programs_and_rewards() + return True diff --git a/wizard/sale_loyalty_reward_wizard_views.xml b/wizard/sale_loyalty_reward_wizard_views.xml new file mode 100644 index 0000000..7921335 --- /dev/null +++ b/wizard/sale_loyalty_reward_wizard_views.xml @@ -0,0 +1,49 @@ + + + + sale.loyalty.reward.wizard.view.form + sale.loyalty.reward.wizard + +
+ + + + + + + + No rewards available for this customer! + + + +
+ +
+
+
+
+ + + Available Rewards + sale.loyalty.reward.wizard + form + new + +