diff --git a/viin_brand/__init__.py b/viin_brand/__init__.py index 474ba3eaa..c0438f96a 100644 --- a/viin_brand/__init__.py +++ b/viin_brand/__init__.py @@ -1,2 +1,35 @@ from . import apriori from . import controllers + + +def replace_odoo_branding_in_mail_templates(env): + """Replace Odoo branding in all mail.template body_html and subject (jsonb) via raw SQL. + + ORM write on Html fields with translate=True doesn't reliably replace + link text inside sanitized HTML. Raw SQL on jsonb::text bypasses this. + + This function is idempotent — safe to call from multiple post_init_hooks. + The last branding module to install catches all remaining templates. + """ + # Order matters: specific patterns first, generic catch-all last. + replacements = [ + ('https://www.odoo.com/page/tour', 'https://viindoo.com/page/viindoo-solution'), + ('https://www.odoo.com', 'https://viindoo.com'), + ('http://yourcompany.odoo.com', 'http://yourcompany.viindoo.com'), + ('>Odoo Tour', '>Viindoo Tour'), + ('>Odoo', '>Viindoo'), + ('alt="Odoo"', 'alt="Viindoo"'), + # Generic catch-all (must be last) + ('Odoo', 'Viindoo'), + ] + for old, new in replacements: + env.cr.execute( + "UPDATE mail_template SET body_html = REPLACE(body_html::text, %s, %s)::jsonb" + " WHERE body_html::text LIKE %s", + (old, new, f'%{old}%'), + ) + # Also replace in subject field + env.cr.execute( + "UPDATE mail_template SET subject = REPLACE(subject::text, 'Odoo', 'Viindoo')::jsonb" + " WHERE subject::text LIKE '%%Odoo%%'", + ) diff --git a/viin_brand/__manifest__.py b/viin_brand/__manifest__.py index cf2eccb6e..1feb318b2 100644 --- a/viin_brand/__manifest__.py +++ b/viin_brand/__manifest__.py @@ -3,11 +3,11 @@ 'name_vi_VN': "Ứng dụng với thương hiệu Viindoo", 'summary': """ -Set Viindoo Brandings for Odoo app. +Set Viindoo Brandings. """, 'summary_vi_VN': """ -Thiết lập thương hiệu Viindoo cho ứng dụng Odoo +Thiết lập thương hiệu Viindoo. """, 'description': """ @@ -38,7 +38,7 @@ 'category': 'Hidden', 'version': '0.1', 'depends': ['base'], - 'installable': False, + 'installable': True, 'auto_install': True, 'price': 9.9, 'currency': 'EUR', diff --git a/viin_brand/apriori.py b/viin_brand/apriori.py index 941c3c5af..ff060f7cf 100644 --- a/viin_brand/apriori.py +++ b/viin_brand/apriori.py @@ -1,5 +1,4 @@ # modules_website is a mapping from old module website to new module website by to_base -from markupsafe import Markup modules_website = { # odoo 'account': 'https://viindoo.com/intro/invoicing', @@ -40,18 +39,18 @@ } -# mail_template_terms is a mapping from old term to new term in email template by to_base +# mail_template_terms is a mapping from old term to new term in email template. +# Used by viin_brand_mail's _render_field override to replace branding at render time. +# Order matters: specific patterns first, generic catch-all last. mail_template_terms = [ - (Markup('https://www.odoo.com?utm_source=db&utm_medium=portalinvite" style="color: #875A7B;">Odoo'), Markup('Viindoo')), - (Markup('Odoo'), Markup('Viindoo')), - (Markup('Odoo'), Markup('Viindoo')), - (Markup('Odoo'), Markup('Viindoo')), - (Markup('Odoo'), Markup('Viindoo')), - (Markup('Odoo'), Markup('Viindoo')), - (Markup('Odoo Tour'), Markup('Viindoo Tour')), - (Markup('Odoo'), Markup('Viindoo')), - (Markup('Odoo'), Markup('Viindoo')), - (Markup('Odoo'), Markup('Viindoo')), - (Markup('Powered by Odoo'), Markup('Powered by Viindoo')), + # URL replacements (must come before text replacements) + ('https://www.odoo.com/page/tour', 'https://viindoo.com/page/viindoo-solution'), + ('https://www.odoo.com', 'https://viindoo.com'), + ('http://yourcompany.odoo.com', 'http://yourcompany.viindoo.com'), + # Specific text replacements + ('>Odoo Tour', '>Viindoo Tour'), + ('>Odoo', '>Viindoo'), + ('alt="Odoo"', 'alt="Viindoo"'), + # Generic catch-all (must be last) ('Odoo', 'Viindoo'), ] diff --git a/viin_brand/controllers/database.py b/viin_brand/controllers/database.py index 87cae683a..8900f195d 100644 --- a/viin_brand/controllers/database.py +++ b/viin_brand/controllers/database.py @@ -4,7 +4,7 @@ class Database(DB): def _render_template(self, **d): - res = super(Database, self)._render_template() + res = super()._render_template(**d) if res: res = res.replace('Odoo', 'Viindoo') \ .replace('https://www.odoo.com/privacy', 'https://viindoo.com/policy/privacy-policy') \ diff --git a/viin_brand/static/img/viin_assistant.png b/viin_brand/static/img/viin_assistant.png new file mode 100644 index 000000000..769d7205d Binary files /dev/null and b/viin_brand/static/img/viin_assistant.png differ diff --git a/viin_brand_account/__manifest__.py b/viin_brand_account/__manifest__.py index 8093bbb9b..130a0a839 100644 --- a/viin_brand_account/__manifest__.py +++ b/viin_brand_account/__manifest__.py @@ -59,7 +59,7 @@ 'views/report_statement.xml', 'views/terms_template.xml', ], - 'installable': False, + 'installable': True, 'auto_install': True, 'price': 0.0, 'currency': 'EUR', diff --git a/viin_brand_account/i18n/vi_VN.po b/viin_brand_account/i18n/vi_VN.po index fdd464f93..fccb18f1d 100644 --- a/viin_brand_account/i18n/vi_VN.po +++ b/viin_brand_account/i18n/vi_VN.po @@ -4,10 +4,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 17.0\n" +"Project-Id-Version: Odoo Server 19.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-07-25 09:30+0000\n" -"PO-Revision-Date: 2024-07-25 09:30+0000\n" +"POT-Creation-Date: 2026-04-03 08:59+0000\n" +"PO-Revision-Date: 2026-04-03 08:59+0000\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -43,14 +43,37 @@ msgstr "" "Văn bản bên dưới đóng vai trò gợi ý và không liên quan đến trách nhiệm của " "Viindoo." +#. module: viin_brand_account +#: model:ir.model.fields,field_description:viin_brand_account.field_account_journal__invoice_reference_model +msgid "Communication Standard" +msgstr "Tiêu chuẩn nội dung" + #. module: viin_brand_account #: model:ir.model.fields,help:viin_brand_account.field_account_financial_year_op__opening_date msgid "" "Date from which the accounting is managed in Viindoo. It is the date of the " "opening entry." msgstr "" -"Ngày kể từ khi kế toán được quản lý bởi Viindoo. Nó là ngày của bút toán đầu " -"kì." +"Ngày kể từ khi kế toán được quản lý bởi Viindoo. Nó là ngày của bút toán đầu" +" kì." + +#. module: viin_brand_account +#: model:ir.model.fields,field_description:viin_brand_account.field_account_financial_year_op__display_name +#: model:ir.model.fields,field_description:viin_brand_account.field_account_journal__display_name +#: model:ir.model.fields,field_description:viin_brand_account.field_account_move__display_name +#: model:ir.model.fields,field_description:viin_brand_account.field_account_payment__display_name +#: model:ir.model.fields,field_description:viin_brand_account.field_account_payment_register__display_name +msgid "Display Name" +msgstr "Tên hiển thị" + +#. module: viin_brand_account +#: model:ir.model.fields,field_description:viin_brand_account.field_account_financial_year_op__id +#: model:ir.model.fields,field_description:viin_brand_account.field_account_journal__id +#: model:ir.model.fields,field_description:viin_brand_account.field_account_move__id +#: model:ir.model.fields,field_description:viin_brand_account.field_account_payment__id +#: model:ir.model.fields,field_description:viin_brand_account.field_account_payment_register__id +msgid "ID" +msgstr "" #. module: viin_brand_account #: model_terms:ir.ui.view,arch_db:viin_brand_account.view_move_form @@ -75,12 +98,12 @@ msgstr "Sổ nhật ký" #. module: viin_brand_account #: model:ir.model,name:viin_brand_account.model_account_move msgid "Journal Entry" -msgstr "Bút toán sổ nhật ký" +msgstr "Bút toán" #. module: viin_brand_account #: model:ir.model.fields,help:viin_brand_account.field_account_journal__inbound_payment_method_line_ids msgid "" -"Manual: Get paid by any method outside of Viindoo.\n" +"Manual: Get paid by any method outside of the system.\n" "Payment Providers: Each payment provider has its own Payment Method. Request a transaction on/to a card thanks to a payment token saved by the partner when buying or subscribing online.\n" "Batch Deposit: Collect several customer checks at once generating and submitting a batch deposit to your bank. Module account_batch_payment is necessary.\n" "SEPA Direct Debit: Get paid in the SEPA zone thanks to a mandate your partner will have granted to you. Module account_sepa is necessary.\n" @@ -93,8 +116,8 @@ msgstr "" #. module: viin_brand_account #: model:ir.model.fields,help:viin_brand_account.field_account_journal__outbound_payment_method_line_ids msgid "" -"Manual: Pay by any method outside of Viindoo.\n" -"Check: Pay bills by check and print it from Viindoo.\n" +"Manual: Pay by any method outside of the system.\n" +"Check: Pay bills by check and print it from the system.\n" "SEPA Credit Transfer: Pay in the SEPA zone by submitting a SEPA Credit Transfer file to your bank. Module account_sepa is necessary.\n" msgstr "" "Hướng dẫn: Thanh toán bằng bất kỳ phương thức nào ngoài Viindoo.\n" @@ -134,6 +157,11 @@ msgstr "Ngày Đầu kỳ" msgid "Outbound Payment Methods" msgstr "Phương thức thanh toán đi" +#. module: viin_brand_account +#: model:ir.model,name:viin_brand_account.model_account_payment_register +msgid "Pay" +msgstr "Ghi nhận thanh toán" + #. module: viin_brand_account #: model:ir.model.fields,field_description:viin_brand_account.field_account_payment__payment_method_line_id #: model:ir.model.fields,field_description:viin_brand_account.field_account_payment_register__payment_method_line_id @@ -145,11 +173,6 @@ msgstr "Phương thức thanh toán" msgid "Payments" msgstr "Thanh toán" -#. module: viin_brand_account -#: model:ir.model,name:viin_brand_account.model_account_payment_register -msgid "Register Payment" -msgstr "Ghi nhận thanh toán" - #. module: viin_brand_account #: model:ir.model.fields,help:viin_brand_account.field_account_journal__alias_id msgid "" @@ -157,7 +180,7 @@ msgid "" "\n" "Any file extension will be accepted.\n" "\n" -"Only PDF and XML files will be interpreted by Viindoo" +"Only PDF and XML files will be interpreted by the system" msgstr "" "Gửi một email riêng cho mỗi hóa đơn.\n" "\n" @@ -168,25 +191,27 @@ msgstr "" #. module: viin_brand_account #: model:ir.model.fields,field_description:viin_brand_account.field_account_bank_statement_line__quick_edit_total_amount #: model:ir.model.fields,field_description:viin_brand_account.field_account_move__quick_edit_total_amount -#: model:ir.model.fields,field_description:viin_brand_account.field_account_payment__quick_edit_total_amount msgid "Total (Tax inc.)" msgstr "Tổng cộng (Kèm thuế)" #. module: viin_brand_account #: model:ir.model.fields,help:viin_brand_account.field_account_bank_statement_line__quick_edit_total_amount #: model:ir.model.fields,help:viin_brand_account.field_account_move__quick_edit_total_amount -#: model:ir.model.fields,help:viin_brand_account.field_account_payment__quick_edit_total_amount msgid "" "Use this field to encode the total amount of the invoice.\n" "System will automatically create one invoice line with default values to match it." msgstr "" -"Sử dụng trường này để mã hóa tổng số tiền của hóa đơn." -"Hệ thống sẽ tự động tạo một dòng hóa đơn với các giá trị mặc định để phù hợp với nó." +"Sử dụng trường này để mã hóa tổng số tiền của hóa đơn.Hệ thống sẽ tự động " +"tạo một dòng hóa đơn với các giá trị mặc định để phù hợp với nó." #. module: viin_brand_account -#: model_terms:ir.ui.view,arch_db:viin_brand_account.account_tour_upload_bill -msgid "With Viindoo, you won't have to record bills manually" -msgstr "Với Viindoo, bạn sẽ không phải ghi lại các hóa đơn bằng cách thủ công." +#: model:ir.model.fields,help:viin_brand_account.field_account_journal__invoice_reference_model +msgid "" +"You can choose different models for each type of reference. The default one " +"is the system reference." +msgstr "" +"Bạn có thể chọn các mẫu khác nhau cho từng loại nội dung. Loại mặc định là " +"mẫu của hệ thống." #. module: viin_brand_account #: model_terms:ir.ui.view,arch_db:viin_brand_account.view_move_form @@ -197,21 +222,3 @@ msgstr "kích hoạt đơn vị tiền tệ của hóa đơn" #: model_terms:ir.ui.view,arch_db:viin_brand_account.view_move_form msgid "activate the currency of the invoice" msgstr "kích hoạt đơn vị tiền tệ của hóa đơn" -#. module: account -#: model_terms:ir.actions.act_window,help:account.action_bank_statement_tree -msgid "" -"Viindoo allows you to reconcile a statement line directly with\n" -" the related sale or purchase invoices." -msgstr "" -"Hệ thống Viindoo cho phép bạn đối soát dòng sao kê trực tiếp với các\n" -" hóa đơn mua hoặc bán hàng liên quan." - -#. module: account -#: model_terms:ir.actions.act_window,help:account.res_partner_action_customer -msgid "Viindoo helps you easily track all activities related to a customer." -msgstr "Viindoo giúp bạn dễ dàng theo dõi mọi hoạt động liên quan đến một khách hàng." - -#. module: account -#: model_terms:ir.actions.act_window,help:account.res_partner_action_supplier -msgid "Viindoo helps you easily track all activities related to a supplier." -msgstr "Viindoo giúp bạn dễ dàng theo dõi mọi hoạt động liên quan đến nhà cung cấp." diff --git a/viin_brand_account/i18n/viin_brand_account.pot b/viin_brand_account/i18n/viin_brand_account.pot index 2277f7117..ee9a4179d 100644 --- a/viin_brand_account/i18n/viin_brand_account.pot +++ b/viin_brand_account/i18n/viin_brand_account.pot @@ -4,10 +4,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 17.0\n" +"Project-Id-Version: Odoo Server 19.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-07-25 09:30+0000\n" -"PO-Revision-Date: 2024-07-25 09:30+0000\n" +"POT-Creation-Date: 2026-04-03 08:59+0000\n" +"PO-Revision-Date: 2026-04-03 08:59+0000\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -39,6 +39,11 @@ msgid "" "responsibility." msgstr "" +#. module: viin_brand_account +#: model:ir.model.fields,field_description:viin_brand_account.field_account_journal__invoice_reference_model +msgid "Communication Standard" +msgstr "" + #. module: viin_brand_account #: model:ir.model.fields,help:viin_brand_account.field_account_financial_year_op__opening_date msgid "" @@ -46,6 +51,24 @@ msgid "" "opening entry." msgstr "" +#. module: viin_brand_account +#: model:ir.model.fields,field_description:viin_brand_account.field_account_financial_year_op__display_name +#: model:ir.model.fields,field_description:viin_brand_account.field_account_journal__display_name +#: model:ir.model.fields,field_description:viin_brand_account.field_account_move__display_name +#: model:ir.model.fields,field_description:viin_brand_account.field_account_payment__display_name +#: model:ir.model.fields,field_description:viin_brand_account.field_account_payment_register__display_name +msgid "Display Name" +msgstr "" + +#. module: viin_brand_account +#: model:ir.model.fields,field_description:viin_brand_account.field_account_financial_year_op__id +#: model:ir.model.fields,field_description:viin_brand_account.field_account_journal__id +#: model:ir.model.fields,field_description:viin_brand_account.field_account_move__id +#: model:ir.model.fields,field_description:viin_brand_account.field_account_payment__id +#: model:ir.model.fields,field_description:viin_brand_account.field_account_payment_register__id +msgid "ID" +msgstr "" + #. module: viin_brand_account #: model_terms:ir.ui.view,arch_db:viin_brand_account.view_move_form msgid "In order to validate this bill, you must" @@ -74,7 +97,7 @@ msgstr "" #. module: viin_brand_account #: model:ir.model.fields,help:viin_brand_account.field_account_journal__inbound_payment_method_line_ids msgid "" -"Manual: Get paid by any method outside of Viindoo.\n" +"Manual: Get paid by any method outside of the system.\n" "Payment Providers: Each payment provider has its own Payment Method. Request a transaction on/to a card thanks to a payment token saved by the partner when buying or subscribing online.\n" "Batch Deposit: Collect several customer checks at once generating and submitting a batch deposit to your bank. Module account_batch_payment is necessary.\n" "SEPA Direct Debit: Get paid in the SEPA zone thanks to a mandate your partner will have granted to you. Module account_sepa is necessary.\n" @@ -83,8 +106,8 @@ msgstr "" #. module: viin_brand_account #: model:ir.model.fields,help:viin_brand_account.field_account_journal__outbound_payment_method_line_ids msgid "" -"Manual: Pay by any method outside of Viindoo.\n" -"Check: Pay bills by check and print it from Viindoo.\n" +"Manual: Pay by any method outside of the system.\n" +"Check: Pay bills by check and print it from the system.\n" "SEPA Credit Transfer: Pay in the SEPA zone by submitting a SEPA Credit Transfer file to your bank. Module account_sepa is necessary.\n" msgstr "" @@ -115,6 +138,11 @@ msgstr "" msgid "Outbound Payment Methods" msgstr "" +#. module: viin_brand_account +#: model:ir.model,name:viin_brand_account.model_account_payment_register +msgid "Pay" +msgstr "" + #. module: viin_brand_account #: model:ir.model.fields,field_description:viin_brand_account.field_account_payment__payment_method_line_id #: model:ir.model.fields,field_description:viin_brand_account.field_account_payment_register__payment_method_line_id @@ -126,11 +154,6 @@ msgstr "" msgid "Payments" msgstr "" -#. module: viin_brand_account -#: model:ir.model,name:viin_brand_account.model_account_payment_register -msgid "Register Payment" -msgstr "" - #. module: viin_brand_account #: model:ir.model.fields,help:viin_brand_account.field_account_journal__alias_id msgid "" @@ -138,28 +161,28 @@ msgid "" "\n" "Any file extension will be accepted.\n" "\n" -"Only PDF and XML files will be interpreted by Viindoo" +"Only PDF and XML files will be interpreted by the system" msgstr "" #. module: viin_brand_account #: model:ir.model.fields,field_description:viin_brand_account.field_account_bank_statement_line__quick_edit_total_amount #: model:ir.model.fields,field_description:viin_brand_account.field_account_move__quick_edit_total_amount -#: model:ir.model.fields,field_description:viin_brand_account.field_account_payment__quick_edit_total_amount msgid "Total (Tax inc.)" msgstr "" #. module: viin_brand_account #: model:ir.model.fields,help:viin_brand_account.field_account_bank_statement_line__quick_edit_total_amount #: model:ir.model.fields,help:viin_brand_account.field_account_move__quick_edit_total_amount -#: model:ir.model.fields,help:viin_brand_account.field_account_payment__quick_edit_total_amount msgid "" "Use this field to encode the total amount of the invoice.\n" "System will automatically create one invoice line with default values to match it." msgstr "" #. module: viin_brand_account -#: model_terms:ir.ui.view,arch_db:viin_brand_account.account_tour_upload_bill -msgid "With Viindoo, you won't have to record bills manually" +#: model:ir.model.fields,help:viin_brand_account.field_account_journal__invoice_reference_model +msgid "" +"You can choose different models for each type of reference. The default one " +"is the system reference." msgstr "" #. module: viin_brand_account @@ -171,19 +194,3 @@ msgstr "" #: model_terms:ir.ui.view,arch_db:viin_brand_account.view_move_form msgid "activate the currency of the invoice" msgstr "" -#. module: account -#: model_terms:ir.actions.act_window,help:account.action_bank_statement_tree -msgid "" -"Viindoo allows you to reconcile a statement line directly with\n" -" the related sale or purchase invoices." -msgstr "" - -#. module: account -#: model_terms:ir.actions.act_window,help:account.res_partner_action_customer -msgid "Viindoo helps you easily track all activities related to a customer." -msgstr "" - -#. module: account -#: model_terms:ir.actions.act_window,help:account.res_partner_action_supplier -msgid "Viindoo helps you easily track all activities related to a supplier." -msgstr "" diff --git a/viin_brand_account/models/account_journal.py b/viin_brand_account/models/account_journal.py index 3a685d3c8..b642ae245 100644 --- a/viin_brand_account/models/account_journal.py +++ b/viin_brand_account/models/account_journal.py @@ -5,17 +5,21 @@ class AccountJournal(models.Model): _inherit = "account.journal" inbound_payment_method_line_ids = fields.One2many( - help="Manual: Get paid by any method outside of Viindoo.\n" + help="Manual: Get paid by any method outside of the system.\n" "Payment Providers: Each payment provider has its own Payment Method. Request a transaction on/to a card thanks to a payment token saved by the partner when buying or subscribing online.\n" "Batch Deposit: Collect several customer checks at once generating and submitting a batch deposit to your bank. Module account_batch_payment is necessary.\n" "SEPA Direct Debit: Get paid in the SEPA zone thanks to a mandate your partner will have granted to you. Module account_sepa is necessary.\n") outbound_payment_method_line_ids = fields.One2many( - help="Manual: Pay by any method outside of Viindoo.\n" - "Check: Pay bills by check and print it from Viindoo.\n" + help="Manual: Pay by any method outside of the system.\n" + "Check: Pay bills by check and print it from the system.\n" "SEPA Credit Transfer: Pay in the SEPA zone by submitting a SEPA Credit Transfer file to your bank. Module account_sepa is necessary.\n" ) alias_id = fields.Many2one(help="Send one separate email for each invoice.\n\n" "Any file extension will be accepted.\n\n" - "Only PDF and XML files will be interpreted by Viindoo") + "Only PDF and XML files will be interpreted by the system") + + invoice_reference_model = fields.Selection( + help="You can choose different models for each type of reference. " + "The default one is the system reference.") diff --git a/viin_brand_auth_oauth/__manifest__.py b/viin_brand_auth_oauth/__manifest__.py index 4fab01fae..42e2658f1 100644 --- a/viin_brand_auth_oauth/__manifest__.py +++ b/viin_brand_auth_oauth/__manifest__.py @@ -53,7 +53,7 @@ 'data': [ 'data/auth_oauth_data.xml', ], - 'installable': False, + 'installable': True, 'auto_install': True, 'price': 0.0, 'currency': 'EUR', diff --git a/viin_brand_auth_signup/__init__.py b/viin_brand_auth_signup/__init__.py new file mode 100644 index 000000000..410585632 --- /dev/null +++ b/viin_brand_auth_signup/__init__.py @@ -0,0 +1,7 @@ +def post_init_hook(env): + """Replace Odoo branding in auth_signup email templates.""" + try: + from odoo.addons.viin_brand import replace_odoo_branding_in_mail_templates + except ImportError: + return + replace_odoo_branding_in_mail_templates(env) diff --git a/viin_brand_auth_signup/__manifest__.py b/viin_brand_auth_signup/__manifest__.py new file mode 100644 index 000000000..fafe2337b --- /dev/null +++ b/viin_brand_auth_signup/__manifest__.py @@ -0,0 +1,60 @@ +{ + 'name': "Sign Up Debranding for Viindoo", + 'name_vi_VN': "Thương hiệu Viindoo cho mô-đun Đăng ký", + + 'summary': """ +Debranding Sign Up email templates for Viindoo""", + 'summary_vi_VN': """ +Thay thế thương hiệu Odoo bằng Viindoo trong các mẫu email đăng ký +""", + + 'description': """ +What it does +============ +This module replaces Odoo branding with Viindoo in auth_signup email templates +(new user invite, portal invite, password reset). + + +Editions Supported +================== +1. Community Edition +2. Enterprise Edition + + """, + + 'description_vi_VN': """ +Ứng dụng này làm gì +==================== +Mô-đun này thay thế thương hiệu Odoo bằng Viindoo trong các mẫu email đăng ký +(mời người dùng mới, mời cổng thông tin, đặt lại mật khẩu). + + +Ấn bản được Hỗ trợ +================== +1. Ấn bản Community +2. Ấn bản Enterprise + +""", + + 'author': "Viindoo", + 'website': "https://viindoo.com", + 'live_test_url': "https://v18demo-int.viindoo.com", + 'live_test_url_vi_VN': "https://v18demo-vn.viindoo.com", + 'support': "apps.support@viindoo.com", + + 'category': 'Hidden', + 'version': '0.1.0', + + 'depends': ['auth_signup', 'viin_brand_mail'], + + 'data': [ + 'data/auth_signup_templates_email.xml', + ], + + 'post_init_hook': 'post_init_hook', + 'installable': True, + 'auto_install': True, + 'price': 0.0, + 'currency': 'EUR', + 'license': 'OPL-1', +} diff --git a/viin_brand_auth_signup/data/auth_signup_templates_email.xml b/viin_brand_auth_signup/data/auth_signup_templates_email.xml new file mode 100644 index 000000000..b76cfe7a5 --- /dev/null +++ b/viin_brand_auth_signup/data/auth_signup_templates_email.xml @@ -0,0 +1,8 @@ + + + diff --git a/viin_brand_auth_signup/i18n/vi_VN.po b/viin_brand_auth_signup/i18n/vi_VN.po new file mode 100644 index 000000000..b48c44eba --- /dev/null +++ b/viin_brand_auth_signup/i18n/vi_VN.po @@ -0,0 +1,192 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * viin_brand_auth_signup +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 19.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-04-11 02:01+0000\n" +"PO-Revision-Date: 2026-04-11 02:01+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: viin_brand_auth_signup +#: model_terms:ir.ui.view,arch_db:viin_brand_auth_signup.reset_password_email +msgid "Viindoo" +msgstr "" + +#. module: auth_signup +#: model:mail.template,body_html:auth_signup.set_password_email +msgid "" +"\n" +"\n" +"\n" +"
\n" +"\n" +"\n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +"\n" +"
\n" +" \n" +" \n" +" \n" +"
\n" +" Welcome to Viindoo
\n" +" \n" +" Marc Demo\n" +" \n" +"
\n" +" \n" +"
\n" +"
\n" +"
\n" +"
\n" +" \n" +" \n" +" \n" +"
\n" +"
\n" +" Dear Marc Demo,

\n" +" You have been invited by ViindooBot of YourCompany to connect on Viindoo.\n" +" \n" +" This link will remain valid during days
\n" +" \n" +" Your Viindoo domain is: http://yourcompany.viindoo.com
\n" +" Your sign in email is: mark.brown23@example.com

\n" +" Never heard of Viindoo? It’s an all-in-one business software loved by 12+ million users. It will considerably improve your experience at work and increase your productivity.\n" +"

\n" +" Have a look at the Viindoo Tour to discover the tool.\n" +"

\n" +" Enjoy Viindoo!
\n" +" --
The YourCompany Team\n" +"
\n" +"
\n" +"
\n" +"
\n" +"
\n" +" \n" +" \n" +" \n" +"
\n" +" YourCompany\n" +"
\n" +" +1 650-123-4567\n" +" \n" +" | info@yourcompany.com\n" +" \n" +" \n" +" | http://www.example.com\n" +" \n" +"
\n" +"
\n" +"
\n" +" \n" +" \n" +"
\n" +" Powered by Viindoo\n" +"
\n" +"
" +msgstr "" +"\n" +"\n" +"\n" +"
\n" +"\n" +"\n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +"\n" +"
\n" +" \n" +" \n" +" \n" +"
\n" +" Chào mừng bạn đến với Viindoo
\n" +" \n" +" Marc Demo\n" +" \n" +"
\n" +" \n" +"
\n" +"
\n" +"
\n" +"
\n" +" \n" +" \n" +" \n" +"
\n" +"
\n" +" Xin chào Marc Demo,

\n" +" Bạn đã được ViindooBot của YourCompany mời kết nối trên Viindoo.\n" +" \n" +" Liên kết này sẽ có hiệu lực trong vòng ngày
\n" +" \n" +" Miền Viindoo của bạn: http://yourcompany.viindoo.com
\n" +" Email đăng nhập của bạn: mark.brown23@example.com

\n" +" Bạn chưa biết đến Viindoo? Viindoo là một phần mềm hoạch định tài nguyên doanh nghiệp toàn diện được hơn 12 triệu người dùng yêu thích. Viindoo sẽ nâng tầm trải nghiệm làm việc và cải thiện hiệu suất hoạt động của bạn một cách đáng kể.\n" +"

\n" +" Vui lòng xem Viindoo Tour để khám phá phần mềm này.\n" +"

\n" +" Chúc bạn vui dùng Viindoo!
\n" +" --
Đội ngũ YourCompany\n" +"
\n" +"
\n" +"
\n" +"
\n" +"
\n" +" \n" +" \n" +" \n" +"
\n" +" YourCompany\n" +"
\n" +" +1 650-123-4567\n" +" \n" +" | info@yourcompany.com\n" +" \n" +" \n" +" | http://www.example.com\n" +" \n" +"
\n" +"
\n" +"
\n" +" \n" +" \n" +"
\n" +" Được hỗ trợ bởi Viindoo\n" +"
\n" +"
" diff --git a/viin_brand_auth_signup/i18n/viin_brand_auth_signup.pot b/viin_brand_auth_signup/i18n/viin_brand_auth_signup.pot new file mode 100644 index 000000000..9d710d8ab --- /dev/null +++ b/viin_brand_auth_signup/i18n/viin_brand_auth_signup.pot @@ -0,0 +1,109 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * viin_brand_auth_signup +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 19.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-04-11 02:01+0000\n" +"PO-Revision-Date: 2026-04-11 02:01+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: viin_brand_auth_signup +#: model_terms:ir.ui.view,arch_db:viin_brand_auth_signup.reset_password_email +msgid "Viindoo" +msgstr "" + +#. module: auth_signup +#: model:mail.template,body_html:auth_signup.set_password_email +msgid "" +"\n" +"\n" +"\n" +"
\n" +"\n" +"\n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +"\n" +"
\n" +" \n" +" \n" +" \n" +"
\n" +" Welcome to Viindoo
\n" +" \n" +" Marc Demo\n" +" \n" +"
\n" +" \n" +"
\n" +"
\n" +"
\n" +"
\n" +" \n" +" \n" +" \n" +"
\n" +"
\n" +" Dear Marc Demo,

\n" +" You have been invited by ViindooBot of YourCompany to connect on Viindoo.\n" +" \n" +" This link will remain valid during days
\n" +" \n" +" Your Viindoo domain is: http://yourcompany.viindoo.com
\n" +" Your sign in email is: mark.brown23@example.com

\n" +" Never heard of Viindoo? It’s an all-in-one business software loved by 12+ million users. It will considerably improve your experience at work and increase your productivity.\n" +"

\n" +" Have a look at the Viindoo Tour to discover the tool.\n" +"

\n" +" Enjoy Viindoo!
\n" +" --
The YourCompany Team\n" +"
\n" +"
\n" +"
\n" +"
\n" +"
\n" +" \n" +" \n" +" \n" +"
\n" +" YourCompany\n" +"
\n" +" +1 650-123-4567\n" +" \n" +" | info@yourcompany.com\n" +" \n" +" \n" +" | http://www.example.com\n" +" \n" +"
\n" +"
\n" +"
\n" +" \n" +" \n" +"
\n" +" Powered by Viindoo\n" +"
\n" +"
" +msgstr "" diff --git a/viin_brand_auth_totp/__manifest__.py b/viin_brand_auth_totp/__manifest__.py index f8710597e..4b6211fd1 100644 --- a/viin_brand_auth_totp/__manifest__.py +++ b/viin_brand_auth_totp/__manifest__.py @@ -51,10 +51,9 @@ # always loaded 'data': [ - 'views/user_perferences.xml', 'views/templates.xml', ], - 'installable': False, + 'installable': True, 'auto_install': True, 'price': 0.0, 'currency': 'EUR', diff --git a/viin_brand_auth_totp/views/user_perferences.xml b/viin_brand_auth_totp/views/user_perferences.xml deleted file mode 100644 index 6377a40f1..000000000 --- a/viin_brand_auth_totp/views/user_perferences.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - users preference: totp - res.users - - - - https://viindoo.com/documentation/16.0/applications/getting-started/external-apps-integration/two-factor-authentication.html - - - - - - user form: add totp status inherits - res.users - - - - https://viindoo.com/documentation/16.0/applications/getting-started/external-apps-integration/two-factor-authentication.html - - - - diff --git a/viin_brand_auth_totp_mail_enforce/__init__.py b/viin_brand_auth_totp_mail/__init__.py similarity index 100% rename from viin_brand_auth_totp_mail_enforce/__init__.py rename to viin_brand_auth_totp_mail/__init__.py diff --git a/viin_brand_auth_totp_mail_enforce/__manifest__.py b/viin_brand_auth_totp_mail/__manifest__.py similarity index 94% rename from viin_brand_auth_totp_mail_enforce/__manifest__.py rename to viin_brand_auth_totp_mail/__manifest__.py index 63c5b97d4..0daa7dccc 100644 --- a/viin_brand_auth_totp_mail_enforce/__manifest__.py +++ b/viin_brand_auth_totp_mail/__manifest__.py @@ -47,13 +47,14 @@ 'version': '0.1', # any module necessary for this one to work correctly - 'depends': ['auth_totp_mail_enforce'], + 'depends': ['auth_totp_mail'], # always loaded 'data': [ + 'data/mail_template_data.xml', 'views/templates.xml', ], - 'installable': False, + 'installable': True, 'auto_install': True, 'price': 0.0, 'currency': 'EUR', diff --git a/viin_brand_auth_totp_mail/data/mail_template_data.xml b/viin_brand_auth_totp_mail/data/mail_template_data.xml new file mode 100644 index 000000000..a22b0df95 --- /dev/null +++ b/viin_brand_auth_totp_mail/data/mail_template_data.xml @@ -0,0 +1,8 @@ + + + + + Invitation to activate two-factor authentication on your account + + + diff --git a/viin_brand_auth_totp_mail/i18n/vi_VN.po b/viin_brand_auth_totp_mail/i18n/vi_VN.po new file mode 100644 index 000000000..7396ab01d --- /dev/null +++ b/viin_brand_auth_totp_mail/i18n/vi_VN.po @@ -0,0 +1,21 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * viin_brand_auth_totp_mail +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 19.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-04-11 02:01+0000\n" +"PO-Revision-Date: 2026-04-11 02:01+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: auth_totp_mail +#: model:mail.template,subject:auth_totp_mail.mail_template_totp_invite +msgid "Invitation to activate two-factor authentication on your account" +msgstr "Lời mời kích hoạt xác thực hai yếu tố trên tài khoản của bạn" diff --git a/viin_brand_auth_totp_mail/i18n/viin_brand_auth_totp_mail.pot b/viin_brand_auth_totp_mail/i18n/viin_brand_auth_totp_mail.pot new file mode 100644 index 000000000..1e646fdc4 --- /dev/null +++ b/viin_brand_auth_totp_mail/i18n/viin_brand_auth_totp_mail.pot @@ -0,0 +1,21 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * viin_brand_auth_signup +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 19.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-04-11 02:01+0000\n" +"PO-Revision-Date: 2026-04-11 02:01+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: auth_totp_mail +#: model:mail.template,subject:auth_totp_mail.mail_template_totp_invite +msgid "Invitation to activate two-factor authentication on your account" +msgstr "" diff --git a/viin_brand_auth_totp_mail_enforce/views/templates.xml b/viin_brand_auth_totp_mail/views/templates.xml similarity index 92% rename from viin_brand_auth_totp_mail_enforce/views/templates.xml rename to viin_brand_auth_totp_mail/views/templates.xml index 0d1abbe0d..0aedc808c 100644 --- a/viin_brand_auth_totp_mail_enforce/views/templates.xml +++ b/viin_brand_auth_totp_mail/views/templates.xml @@ -1,6 +1,6 @@ -