From 8c31383483e64ba21060cd22be7494b705cce191 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Tue, 4 Oct 2022 17:54:58 +0200 Subject: [PATCH 01/15] [ADD] account_payment_order_notification: New addon TT38957 [UPD] Update account_payment_order_notification.pot [UPD] README.rst Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: bank-payment-13.0/bank-payment-13.0-account_payment_order_notification Translate-URL: https://translation.odoo-community.org/projects/bank-payment-13-0/bank-payment-13-0-account_payment_order_notification/ [FIX] account_payment_order_notification: Display the communication field in the email template. TT39982 [UPD] Update account_payment_order_notification.pot account_payment_order_notification 13.0.1.0.1 --- account_payment_order_notification/README.rst | 114 +++++ .../__init__.py | 2 + .../__manifest__.py | 20 + .../data/mail_template_data.xml | 48 ++ .../account_payment_order_notification.pot | 330 ++++++++++++ account_payment_order_notification/i18n/es.po | 373 ++++++++++++++ .../models/__init__.py | 2 + .../models/account_payment_order.py | 45 ++ .../account_payment_order_notification.py | 44 ++ .../readme/CONFIGURE.rst | 11 + .../readme/CONTRIBUTORS.rst | 4 + .../readme/DESCRIPTION.rst | 1 + .../readme/USAGE.rst | 11 + .../security/ir.model.access.csv | 2 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 468 ++++++++++++++++++ .../tests/__init__.py | 3 + ...test_account_payment_order_notification.py | 80 +++ ...ccount_payment_order_notification_view.xml | 69 +++ .../views/account_payment_order_view.xml | 36 ++ .../wizard/__init__.py | 3 + ...zard_account_payment_order_notification.py | 87 ++++ ...count_payment_order_notification_views.xml | 47 ++ 23 files changed, 1800 insertions(+) create mode 100644 account_payment_order_notification/README.rst create mode 100644 account_payment_order_notification/__init__.py create mode 100644 account_payment_order_notification/__manifest__.py create mode 100644 account_payment_order_notification/data/mail_template_data.xml create mode 100644 account_payment_order_notification/i18n/account_payment_order_notification.pot create mode 100644 account_payment_order_notification/i18n/es.po create mode 100644 account_payment_order_notification/models/__init__.py create mode 100644 account_payment_order_notification/models/account_payment_order.py create mode 100644 account_payment_order_notification/models/account_payment_order_notification.py create mode 100644 account_payment_order_notification/readme/CONFIGURE.rst create mode 100644 account_payment_order_notification/readme/CONTRIBUTORS.rst create mode 100644 account_payment_order_notification/readme/DESCRIPTION.rst create mode 100644 account_payment_order_notification/readme/USAGE.rst create mode 100644 account_payment_order_notification/security/ir.model.access.csv create mode 100644 account_payment_order_notification/static/description/icon.png create mode 100644 account_payment_order_notification/static/description/index.html create mode 100644 account_payment_order_notification/tests/__init__.py create mode 100644 account_payment_order_notification/tests/test_account_payment_order_notification.py create mode 100644 account_payment_order_notification/views/account_payment_order_notification_view.xml create mode 100644 account_payment_order_notification/views/account_payment_order_view.xml create mode 100644 account_payment_order_notification/wizard/__init__.py create mode 100644 account_payment_order_notification/wizard/wizard_account_payment_order_notification.py create mode 100644 account_payment_order_notification/wizard/wizard_account_payment_order_notification_views.xml diff --git a/account_payment_order_notification/README.rst b/account_payment_order_notification/README.rst new file mode 100644 index 000000000..66e20bae0 --- /dev/null +++ b/account_payment_order_notification/README.rst @@ -0,0 +1,114 @@ +================================== +Account Payment Order Notification +================================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fbank--payment-lightgray.png?logo=github + :target: https://github.com/OCA/bank-payment/tree/13.0/account_payment_order_notification + :alt: OCA/bank-payment +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/bank-payment-13-0/bank-payment-13-0-account_payment_order_notification + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/173/13.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module adds a button on debit / payment orders to send an email to each related partner with the details of their transactions. + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +To configure this module, you need to: + +#. Go to *Invoicing > Configuration > Payment Modes* and create a payment mode if you wish. + +#. Go to *Invoicing > Customers > Customers* and creates a new record as follows: + * Name: Test customer 1 + * Email: customer1@test.com + +#. Go to *Invoicing > Customers > Customers* and creates a new record as follows: + * Name: Test customer 2 + * Email: (empty) + +Usage +===== + +#. Go to *Invoicing > Customers > Invoices* and creates one or more invoices linked to the payment mode. +#. Go to *Invoicing > Customers > Invoices* select the invoices created and execute the action called "Post entries". +#. Go to *Invoicing > Customers > Invoices* select the invoices created and execute the action called "Add to Payment/Debit Order" and creates a payment order. +#. Click on "Confirm Payments" button. +#. Click on "Generate Payment File" button. +#. Click on "File Successfully Uploaded" button. +#. Click on "Send mails" button. +#. Any involved partner with no email will appear with the column "To send" not checked. +#. Click on "Confirm" button. +#. An email will have been sent to the selected partners. +#. A reminder note will have been created. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Tecnativa + +Contributors +~~~~~~~~~~~~ + +* `Tecnativa `_: + + * Víctor Martínez + * Pedro M. Baeza + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-victoralmau| image:: https://github.com/victoralmau.png?size=40px + :target: https://github.com/victoralmau + :alt: victoralmau + +Current `maintainer `__: + +|maintainer-victoralmau| + +This module is part of the `OCA/bank-payment `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/account_payment_order_notification/__init__.py b/account_payment_order_notification/__init__.py new file mode 100644 index 000000000..9b4296142 --- /dev/null +++ b/account_payment_order_notification/__init__.py @@ -0,0 +1,2 @@ +from . import models +from . import wizard diff --git a/account_payment_order_notification/__manifest__.py b/account_payment_order_notification/__manifest__.py new file mode 100644 index 000000000..23dd90c56 --- /dev/null +++ b/account_payment_order_notification/__manifest__.py @@ -0,0 +1,20 @@ +# Copyright 2022 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +{ + "name": "Account Payment Order Notification", + "version": "13.0.1.0.1", + "category": "Banking addons", + "website": "https://github.com/OCA/bank-payment", + "author": "Tecnativa, Odoo Community Association (OCA)", + "license": "AGPL-3", + "depends": ["account_payment_order"], + "installable": True, + "data": [ + "security/ir.model.access.csv", + "data/mail_template_data.xml", + "wizard/wizard_account_payment_order_notification_views.xml", + "views/account_payment_order_view.xml", + "views/account_payment_order_notification_view.xml", + ], + "maintainers": ["victoralmau"], +} diff --git a/account_payment_order_notification/data/mail_template_data.xml b/account_payment_order_notification/data/mail_template_data.xml new file mode 100644 index 000000000..07c03a997 --- /dev/null +++ b/account_payment_order_notification/data/mail_template_data.xml @@ -0,0 +1,48 @@ + + + + Payment Order Notification: Send by email + + ${user.email_formatted |safe} + ${object.partner_id.id} + ${object.company_id.name} Payment Order (Ref ${object.order_id.name or 'n/a'}) + +

Hello ${object.partner_id.name or ''},

+ % if object.order_id.payment_type == 'inbound': +

A debit order including at least one of your invoices has been processed and sent to the bank.

+ % else: +

A payment order including at least one of your invoices has been processed and sent to the bank.

+ % endif +

It includes the following transactions:

+ + + + + + + + + % for payment_line in object.payment_line_ids: + + + + + + % endfor +
NumberDateAmount
${payment_line.communication}${payment_line.date}${format_amount(payment_line.amount_currency, payment_line.currency_id)}
+

Do not hesitate to contact us if you have any questions.

+ + ]]>
+ ${object.partner_id.lang} + + +
+
diff --git a/account_payment_order_notification/i18n/account_payment_order_notification.pot b/account_payment_order_notification/i18n/account_payment_order_notification.pot new file mode 100644 index 000000000..5d5e52d10 --- /dev/null +++ b/account_payment_order_notification/i18n/account_payment_order_notification.pot @@ -0,0 +1,330 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_payment_order_notification +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: account_payment_order_notification +#: model:mail.template,body_html:account_payment_order_notification.email_account_payment_order_notification +msgid "" +"\n" +"
\n" +"

Hello ${object.partner_id.name or ''},

\n" +" % if object.order_id.payment_type == 'inbound':\n" +"

A debit order including at least one of your invoices has been processed and sent to the bank.

\n" +" % else:\n" +"

A payment order including at least one of your invoices has been processed and sent to the bank.

\n" +" % endif\n" +"

It includes the following transactions:

\n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" % for payment_line in object.payment_line_ids:\n" +" \n" +" \n" +" \n" +" \n" +" \n" +" % endfor\n" +"
NumberDateAmount
${payment_line.communication}${payment_line.date}${format_amount(payment_line.amount_currency, payment_line.currency_id)}
\n" +"

Do not hesitate to contact us if you have any questions.

\n" +"
\n" +" " +msgstr "" + +#. module: account_payment_order_notification +#: model:mail.template,subject:account_payment_order_notification.email_account_payment_order_notification +msgid "" +"${object.company_id.name} Payment Order (Ref ${object.order_id.name or " +"'n/a'})" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__message_needaction +msgid "Action Needed" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__message_attachment_count +msgid "Attachment Count" +msgstr "" + +#. module: account_payment_order_notification +#: model_terms:ir.ui.view,arch_db:account_payment_order_notification.wizard_account_payment_order_notification_form +msgid "Cancel" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__company_id +msgid "Company" +msgstr "" + +#. module: account_payment_order_notification +#: model_terms:ir.ui.view,arch_db:account_payment_order_notification.wizard_account_payment_order_notification_form +msgid "Confirm" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__create_uid +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification__create_uid +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification_line__create_uid +msgid "Created by" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__create_date +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification__create_date +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification_line__create_date +msgid "Created on" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__display_name +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification__display_name +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification_line__display_name +msgid "Display Name" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification_line__email +msgid "Email" +msgstr "" + +#. module: account_payment_order_notification +#: code:addons/account_payment_order_notification/models/account_payment_order.py:0 +#, python-format +msgid "Email has been sent to the following partners: %s" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__message_follower_ids +msgid "Followers" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__message_channel_ids +msgid "Followers (Channels)" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__message_partner_ids +msgid "Followers (Partners)" +msgstr "" + +#. module: account_payment_order_notification +#: model_terms:ir.ui.view,arch_db:account_payment_order_notification.account_payment_order_notification_search +msgid "Group By" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__id +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification__id +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification_line__id +msgid "ID" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,help:account_payment_order_notification.field_account_payment_order_notification__message_needaction +#: model:ir.model.fields,help:account_payment_order_notification.field_account_payment_order_notification__message_unread +msgid "If checked, new messages require your attention." +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,help:account_payment_order_notification.field_account_payment_order_notification__message_has_error +#: model:ir.model.fields,help:account_payment_order_notification.field_account_payment_order_notification__message_has_sms_error +msgid "If checked, some messages have a delivery error." +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__message_is_follower +msgid "Is Follower" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification____last_update +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification____last_update +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification_line____last_update +msgid "Last Modified on" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__write_uid +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification__write_uid +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification_line__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__write_date +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification__write_date +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification_line__write_date +msgid "Last Updated on" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification__line_ids +msgid "Lines" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification__mail_template_id +msgid "Mail Template" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__message_main_attachment_id +msgid "Main Attachment" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__message_has_error +msgid "Message Delivery error" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__message_ids +msgid "Messages" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order__notification_count +msgid "Notification count" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order__notification_ids +#: model_terms:ir.ui.view,arch_db:account_payment_order_notification.account_payment_order_form +msgid "Notifications" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__message_needaction_counter +msgid "Number of Actions" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__message_has_error_counter +msgid "Number of errors" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,help:account_payment_order_notification.field_account_payment_order_notification__message_needaction_counter +msgid "Number of messages which requires an action" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,help:account_payment_order_notification.field_account_payment_order_notification__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,help:account_payment_order_notification.field_account_payment_order_notification__message_unread_counter +msgid "Number of unread messages" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__order_id +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification__order_id +msgid "Order" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification_line__parent_id +msgid "Parent" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__partner_id +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification_line__partner_id +msgid "Partner" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__payment_line_ids +msgid "Payment Line" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model,name:account_payment_order_notification.model_account_payment_order +#: model_terms:ir.ui.view,arch_db:account_payment_order_notification.account_payment_order_notification_search +msgid "Payment Order" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model,name:account_payment_order_notification.model_account_payment_order_notification +msgid "Payment Order Notification" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.actions.act_window,name:account_payment_order_notification.account_payment_order_notification_action +msgid "Payment Order Notifications" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__message_has_sms_error +msgid "SMS Delivery error" +msgstr "" + +#. module: account_payment_order_notification +#: model_terms:ir.ui.view,arch_db:account_payment_order_notification.account_payment_order_form +msgid "Send mails" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.actions.act_window,name:account_payment_order_notification.wizard_account_payment_order_notification_action +msgid "Send notifications" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification_line__to_send +msgid "To send" +msgstr "" + +#. module: account_payment_order_notification +#: model_terms:ir.ui.view,arch_db:account_payment_order_notification.account_payment_order_notification_form +msgid "Transactions" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__message_unread +msgid "Unread Messages" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__message_unread_counter +msgid "Unread Messages Counter" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__website_message_ids +msgid "Website Messages" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model.fields,help:account_payment_order_notification.field_account_payment_order_notification__website_message_ids +msgid "Website communication history" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model,name:account_payment_order_notification.model_wizard_account_payment_order_notification +msgid "Wizard Account Payment Order Notification" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model,name:account_payment_order_notification.model_wizard_account_payment_order_notification_line +msgid "Wizard Account Payment Order Notification Line" +msgstr "" diff --git a/account_payment_order_notification/i18n/es.po b/account_payment_order_notification/i18n/es.po new file mode 100644 index 000000000..62f236fa6 --- /dev/null +++ b/account_payment_order_notification/i18n/es.po @@ -0,0 +1,373 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_payment_order_notification +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-10-19 06:43+0000\n" +"PO-Revision-Date: 2022-10-19 08:44+0200\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: \n" +"X-Generator: Poedit 3.0.1\n" + +#. module: account_payment_order_notification +#: model:mail.template,body_html:account_payment_order_notification.email_account_payment_order_notification +msgid "" +"\n" +"
\n" +"

Hello ${object.partner_id.name or ''},

\n" +" % if object.order_id.payment_type == 'inbound':\n" +"

A debit order including at least one of your invoices has been " +"processed and sent to the bank.

\n" +" % else:\n" +"

A payment order including at least one of your invoices has been " +"processed and sent to the bank.

\n" +" % endif\n" +"

It includes the following transactions:

\n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" % for payment_line in object.payment_line_ids:\n" +" \n" +" \n" +" \n" +" \n" +" \n" +" % endfor\n" +"
NumberDateAmount
${payment_line.communication}${payment_line.date}${format_amount(payment_line.amount_currency, " +"payment_line.currency_id)}
\n" +"

Do not hesitate to contact us if you have any questions.

\n" +"
\n" +" " +msgstr "" +"\n" +"
\n" +"

Hola ${object.partner_id.name or ''},

\n" +" % if object.order_id.payment_type == 'inbound':\n" +"

Se ha procesado y enviado al banco una orden de débito que " +"incluye al menos una de sus facturas.

\n" +" % else:\n" +"

Se ha procesado y enviado al banco una orden de pago que incluye " +"al menos una de sus facturas.

\n" +" % endif\n" +"

Incluye las siguientes transacciones:

\n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" % for payment_line in object.payment_line_ids:\n" +" \n" +" \n" +" \n" +" \n" +" \n" +" % endfor\n" +"
NúmeroFechaImporte
${payment_line.communication}${payment_line.date}${format_amount(payment_line.amount_currency, " +"payment_line.currency_id)}
\n" +"

No dude en ponerse en contacto con nosotros si tiene alguna pregunta." +"

\n" +"
\n" +" " + +#. module: account_payment_order_notification +#: model:mail.template,subject:account_payment_order_notification.email_account_payment_order_notification +msgid "" +"${object.company_id.name} Payment Order (Ref ${object.order_id.name or 'n/" +"a'})" +msgstr "Orden de pago ${object.company_id.name} (Ref ${object.name or 'n/a'})" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__message_needaction +msgid "Action Needed" +msgstr "Acción necesariaa" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__message_attachment_count +msgid "Attachment Count" +msgstr "Total de adjuntos" + +#. module: account_payment_order_notification +#: model_terms:ir.ui.view,arch_db:account_payment_order_notification.wizard_account_payment_order_notification_form +msgid "Cancel" +msgstr "Cancelar" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__company_id +msgid "Company" +msgstr "Compañía" + +#. module: account_payment_order_notification +#: model_terms:ir.ui.view,arch_db:account_payment_order_notification.wizard_account_payment_order_notification_form +msgid "Confirm" +msgstr "Confirmar" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__create_uid +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification__create_uid +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification_line__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__create_date +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification__create_date +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification_line__create_date +msgid "Created on" +msgstr "Creado el" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__display_name +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification__display_name +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification_line__display_name +msgid "Display Name" +msgstr "Nombre mostrado" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification_line__email +msgid "Email" +msgstr "Email" + +#. module: account_payment_order_notification +#: code:addons/account_payment_order_notification/models/account_payment_order.py:0 +#, python-format +msgid "Email has been sent to the following partners: %s" +msgstr "Se ha enviado un correo electrónico a las siguientes empresas: %s" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__message_follower_ids +msgid "Followers" +msgstr "Seguidores" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__message_channel_ids +msgid "Followers (Channels)" +msgstr "Seguidores (Canales)" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__message_partner_ids +msgid "Followers (Partners)" +msgstr "Seguidores (Contactos)" + +#. module: account_payment_order_notification +#: model_terms:ir.ui.view,arch_db:account_payment_order_notification.account_payment_order_notification_search +msgid "Group By" +msgstr "Agrupar por" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__id +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification__id +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification_line__id +msgid "ID" +msgstr "ID" + +#. module: account_payment_order_notification +#: model:ir.model.fields,help:account_payment_order_notification.field_account_payment_order_notification__message_needaction +#: model:ir.model.fields,help:account_payment_order_notification.field_account_payment_order_notification__message_unread +msgid "If checked, new messages require your attention." +msgstr "Si está marcado, hay nuevos mensajes que requieren de su atención." + +#. module: account_payment_order_notification +#: model:ir.model.fields,help:account_payment_order_notification.field_account_payment_order_notification__message_has_error +#: model:ir.model.fields,help:account_payment_order_notification.field_account_payment_order_notification__message_has_sms_error +msgid "If checked, some messages have a delivery error." +msgstr "Si está marcado, hay mensajes que tienen error de entrega." + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__message_is_follower +msgid "Is Follower" +msgstr "Es seguidor" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification____last_update +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification____last_update +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification_line____last_update +msgid "Last Modified on" +msgstr "Última modificación el" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__write_uid +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification__write_uid +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification_line__write_uid +msgid "Last Updated by" +msgstr "Última modificación por" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__write_date +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification__write_date +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification_line__write_date +msgid "Last Updated on" +msgstr "Última actualización en" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification__line_ids +msgid "Lines" +msgstr "Líneas" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification__mail_template_id +msgid "Mail Template" +msgstr "Plantilla de email" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__message_main_attachment_id +msgid "Main Attachment" +msgstr "Adjunto principal" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__message_has_error +msgid "Message Delivery error" +msgstr "Mensaje de error de entrega" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__message_ids +msgid "Messages" +msgstr "Mensajes" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order__notification_count +msgid "Notification count" +msgstr "Enviar notificaciones" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order__notification_ids +#: model_terms:ir.ui.view,arch_db:account_payment_order_notification.account_payment_order_form +msgid "Notifications" +msgstr "Enviar notificaciones" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__message_needaction_counter +msgid "Number of Actions" +msgstr "Número de acciones" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__message_has_error_counter +msgid "Number of errors" +msgstr "Número de errores" + +#. module: account_payment_order_notification +#: model:ir.model.fields,help:account_payment_order_notification.field_account_payment_order_notification__message_needaction_counter +msgid "Number of messages which requires an action" +msgstr "Nº de mensajes que requieren acción" + +#. module: account_payment_order_notification +#: model:ir.model.fields,help:account_payment_order_notification.field_account_payment_order_notification__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "Nº de mensajes con error de entrega" + +#. module: account_payment_order_notification +#: model:ir.model.fields,help:account_payment_order_notification.field_account_payment_order_notification__message_unread_counter +msgid "Number of unread messages" +msgstr "Número de mensajes no leídos" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__order_id +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification__order_id +msgid "Order" +msgstr "Pedido" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification_line__parent_id +msgid "Parent" +msgstr "Padre" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__partner_id +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification_line__partner_id +msgid "Partner" +msgstr "Empresa" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__payment_line_ids +msgid "Payment Line" +msgstr "Orden de pago" + +#. module: account_payment_order_notification +#: model:ir.model,name:account_payment_order_notification.model_account_payment_order +#: model_terms:ir.ui.view,arch_db:account_payment_order_notification.account_payment_order_notification_search +msgid "Payment Order" +msgstr "Orden de pago" + +#. module: account_payment_order_notification +#: model:ir.model,name:account_payment_order_notification.model_account_payment_order_notification +msgid "Payment Order Notification" +msgstr "Enviar notificaciones" + +#. module: account_payment_order_notification +#: model:ir.actions.act_window,name:account_payment_order_notification.account_payment_order_notification_action +msgid "Payment Order Notifications" +msgstr "Enviar notificaciones" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__message_has_sms_error +msgid "SMS Delivery error" +msgstr "Error de entrega de SMS" + +#. module: account_payment_order_notification +#: model_terms:ir.ui.view,arch_db:account_payment_order_notification.account_payment_order_form +msgid "Send mails" +msgstr "Enviar emails" + +#. module: account_payment_order_notification +#: model:ir.actions.act_window,name:account_payment_order_notification.wizard_account_payment_order_notification_action +msgid "Send notifications" +msgstr "Enviar notificaciones" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification_line__to_send +msgid "To send" +msgstr "A enviar" + +#. module: account_payment_order_notification +#: model_terms:ir.ui.view,arch_db:account_payment_order_notification.account_payment_order_notification_form +msgid "Transactions" +msgstr "Transacciones" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__message_unread +msgid "Unread Messages" +msgstr "Mensajes no leídos" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__message_unread_counter +msgid "Unread Messages Counter" +msgstr "Contador de mensajes sin leer" + +#. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__website_message_ids +msgid "Website Messages" +msgstr "Mensajes del sitio web" + +#. module: account_payment_order_notification +#: model:ir.model.fields,help:account_payment_order_notification.field_account_payment_order_notification__website_message_ids +msgid "Website communication history" +msgstr "Historial de comunicación del sitio web" + +#. module: account_payment_order_notification +#: model:ir.model,name:account_payment_order_notification.model_wizard_account_payment_order_notification +msgid "Wizard Account Payment Order Notification" +msgstr "" + +#. module: account_payment_order_notification +#: model:ir.model,name:account_payment_order_notification.model_wizard_account_payment_order_notification_line +msgid "Wizard Account Payment Order Notification Line" +msgstr "" diff --git a/account_payment_order_notification/models/__init__.py b/account_payment_order_notification/models/__init__.py new file mode 100644 index 000000000..e9b0f4158 --- /dev/null +++ b/account_payment_order_notification/models/__init__.py @@ -0,0 +1,2 @@ +from . import account_payment_order_notification +from . import account_payment_order diff --git a/account_payment_order_notification/models/account_payment_order.py b/account_payment_order_notification/models/account_payment_order.py new file mode 100644 index 000000000..12098a582 --- /dev/null +++ b/account_payment_order_notification/models/account_payment_order.py @@ -0,0 +1,45 @@ +# Copyright 2022 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import _, fields, models + + +class AccountPaymentOrder(models.Model): + _inherit = "account.payment.order" + + notification_ids = fields.One2many( + comodel_name="account.payment.order.notification", + inverse_name="order_id", + string="Notifications", + ) + notification_count = fields.Integer( + string="Notification count", compute="_compute_notification_count" + ) + + def _compute_notification_count(self): + notification_data = self.env["account.payment.order.notification"].read_group( + [("order_id", "in", self.ids)], ["order_id"], ["order_id"] + ) + mapped_data = {r["order_id"][0]: r["order_id_count"] for r in notification_data} + for record in self: + record.notification_count = mapped_data.get(record.id, 0) + + def action_view_notifications(self): + self.ensure_one() + xml_id = "%s.%s" % ( + "account_payment_order_notification", + "account_payment_order_notification_action", + ) + action = self.env.ref(xml_id).read()[0] + action["domain"] = [("order_id", "=", self.id)] + return action + + def _action_send_mail_notifications(self, template): + for notification in self.notification_ids: + notification.message_post_with_template(template.id) + + def _action_create_note_from_notifications(self): + body = _("Email has been sent to the following partners: %s") % ( + ", ".join(self.mapped("notification_ids.partner_id.name")) + ) + self.message_post(body=body) diff --git a/account_payment_order_notification/models/account_payment_order_notification.py b/account_payment_order_notification/models/account_payment_order_notification.py new file mode 100644 index 000000000..5164899fd --- /dev/null +++ b/account_payment_order_notification/models/account_payment_order_notification.py @@ -0,0 +1,44 @@ +# Copyright 2022 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class AccountPaymentOrderNotification(models.Model): + _name = "account.payment.order.notification" + _description = "Payment Order Notification" + _inherit = ["mail.thread"] + + order_id = fields.Many2one( + comodel_name="account.payment.order", required=True, readonly=True, + ) + company_id = fields.Many2one(related="order_id.company_id") + partner_id = fields.Many2one( + comodel_name="res.partner", required=True, readonly=True, + ) + payment_line_ids = fields.Many2many( + comodel_name="account.payment.line", readonly=True + ) + display_name = fields.Char(compute="_compute_display_name") + + @api.depends("order_id", "partner_id") + def _compute_display_name(self): + for item in self: + item.display_name = "[{}] {}".format( + item.order_id.name, item.partner_id.display_name + ) + + @api.model_create_multi + def create(self, vals_list): + res = super().create(vals_list) + mt_comment = self.env.ref("mail.mt_comment") + for rec in res: + for follower in rec.order_id.message_follower_ids: + rec.message_subscribe( + partner_ids=[follower.partner_id.id], + subtype_ids=follower.subtype_ids.ids, + ) + rec.message_subscribe( + partner_ids=[rec.partner_id.id], subtype_ids=mt_comment.ids, + ) + return res diff --git a/account_payment_order_notification/readme/CONFIGURE.rst b/account_payment_order_notification/readme/CONFIGURE.rst new file mode 100644 index 000000000..b754ede03 --- /dev/null +++ b/account_payment_order_notification/readme/CONFIGURE.rst @@ -0,0 +1,11 @@ +To configure this module, you need to: + +#. Go to *Invoicing > Configuration > Payment Modes* and create a payment mode if you wish. + +#. Go to *Invoicing > Customers > Customers* and creates a new record as follows: + * Name: Test customer 1 + * Email: customer1@test.com + +#. Go to *Invoicing > Customers > Customers* and creates a new record as follows: + * Name: Test customer 2 + * Email: (empty) diff --git a/account_payment_order_notification/readme/CONTRIBUTORS.rst b/account_payment_order_notification/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..5fb713053 --- /dev/null +++ b/account_payment_order_notification/readme/CONTRIBUTORS.rst @@ -0,0 +1,4 @@ +* `Tecnativa `_: + + * Víctor Martínez + * Pedro M. Baeza diff --git a/account_payment_order_notification/readme/DESCRIPTION.rst b/account_payment_order_notification/readme/DESCRIPTION.rst new file mode 100644 index 000000000..88fb038fe --- /dev/null +++ b/account_payment_order_notification/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module adds a button on debit / payment orders to send an email to each related partner with the details of their transactions. diff --git a/account_payment_order_notification/readme/USAGE.rst b/account_payment_order_notification/readme/USAGE.rst new file mode 100644 index 000000000..011ff6653 --- /dev/null +++ b/account_payment_order_notification/readme/USAGE.rst @@ -0,0 +1,11 @@ +#. Go to *Invoicing > Customers > Invoices* and creates one or more invoices linked to the payment mode. +#. Go to *Invoicing > Customers > Invoices* select the invoices created and execute the action called "Post entries". +#. Go to *Invoicing > Customers > Invoices* select the invoices created and execute the action called "Add to Payment/Debit Order" and creates a payment order. +#. Click on "Confirm Payments" button. +#. Click on "Generate Payment File" button. +#. Click on "File Successfully Uploaded" button. +#. Click on "Send mails" button. +#. Any involved partner with no email will appear with the column "To send" not checked. +#. Click on "Confirm" button. +#. An email will have been sent to the selected partners. +#. A reminder note will have been created. diff --git a/account_payment_order_notification/security/ir.model.access.csv b/account_payment_order_notification/security/ir.model.access.csv new file mode 100644 index 000000000..2e294ba7d --- /dev/null +++ b/account_payment_order_notification/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_account_payment_order_notification,account.payment.order.notification.manager,model_account_payment_order_notification,account_payment_order.group_account_payment,1,1,1,1 diff --git a/account_payment_order_notification/static/description/icon.png b/account_payment_order_notification/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z z?n?eq1XP>p-IM$Z^C;2L3itnbJZAip*Zo0aw2bs8@(s^~*8T9go!%dHcAz2lM;`yp zD=7&xjFV$S&5uDaiScyD?B-i1ze`+CoRtz`Wn+Zl&#s4&}MO{@N!ufrzjG$B79)Y2d3tBk&)TxUTw@QS0TEL_?njX|@vq?Uz(nBFK5Pq7*xj#u*R&i|?7+6# z+|r_n#SW&LXhtheZdah{ZVoqwyT{D>MC3nkFF#N)xLi{p7J1jXlmVeb;cP5?e(=f# zuT7fvjSbjS781v?7{)-X3*?>tq?)Yd)~|1{BDS(pqC zC}~H#WXlkUW*H5CDOo<)#x7%RY)A;ShGhI5s*#cRDA8YgqG(HeKDx+#(ZQ?386dv! zlXCO)w91~Vw4AmOcATuV653fa9R$fyK8ul%rG z-wfS zihugoZyr38Im?Zuh6@RcF~t1anQu7>#lPpb#}4cOA!EM11`%f*07RqOVkmX{p~KJ9 z^zP;K#|)$`^Rb{rnHGH{~>1(fawV0*Z#)}M`m8-?ZJV<+e}s9wE# z)l&az?w^5{)`S(%MRzxdNqrs1n*-=jS^_jqE*5XDrA0+VE`5^*p3CuM<&dZEeCjoz zR;uu_H9ZPZV|fQq`Cyw4nscrVwi!fE6ciMmX$!_hN7uF;jjKG)d2@aC4ropY)8etW=xJvni)8eHi`H$%#zn^WJ5NLc-rqk|u&&4Z6fD_m&JfSI1Bvb?b<*n&sfl0^t z=HnmRl`XrFvMKB%9}>PaA`m-fK6a0(8=qPkWS5bb4=v?XcWi&hRY?O5HdulRi4?fN zlsJ*N-0Qw+Yic@s0(2uy%F@ib;GjXt01Fmx5XbRo6+n|pP(&nodMoap^z{~q ziEeaUT@Mxe3vJSfI6?uLND(CNr=#^W<1b}jzW58bIfyWTDle$mmS(|x-0|2UlX+9k zQ^EX7Nw}?EzVoBfT(-LT|=9N@^hcn-_p&sqG z&*oVs2JSU+N4ZD`FhCAWaS;>|wH2G*Id|?pa#@>tyxX`+4HyIArWDvVrX)2WAOQff z0qyHu&-S@i^MS-+j--!pr4fPBj~_8({~e1bfcl0wI1kaoN>mJL6KUPQm5N7lB(ui1 zE-o%kq)&djzWJ}ob<-GfDlkB;F31j-VHKvQUGQ3sp`CwyGJk_i!y^sD0fqC@$9|jO zOqN!r!8-p==F@ZVP=U$qSpY(gQ0)59P1&t@y?5rvg<}E+GB}26NYPp4f2YFQrQtot5mn3wu_qprZ=>Ig-$ zbW26Ws~IgY>}^5w`vTB(G`PTZaDiGBo5o(tp)qli|NeV( z@H_=R8V39rt5J5YB2Ky?4eJJ#b`_iBe2ot~6%7mLt5t8Vwi^Jy7|jWXqa3amOIoRb zOr}WVFP--DsS`1WpN%~)t3R!arKF^Q$e12KEqU36AWwnCBICpH4XCsfnyrHr>$I$4 z!DpKX$OKLWarN7nv@!uIA+~RNO)l$$w}p(;b>mx8pwYvu;dD_unryX_NhT8*Tj>BTrTTL&!?O+%Rv;b?B??gSzdp?6Uug9{ zd@V08Z$BdI?fpoCS$)t4mg4rT8Q_I}h`0d-vYZ^|dOB*Q^S|xqTV*vIg?@fVFSmMpaw0qtTRbx} z({Pg?#{2`sc9)M5N$*N|4;^t$+QP?#mov zGVC@I*lBVrOU-%2y!7%)fAKjpEFsgQc4{amtiHb95KQEwvf<(3T<9-Zm$xIew#P22 zc2Ix|App^>v6(3L_MCU0d3W##AB0M~3D00EWoKZqsJYT(#@w$Y_H7G22M~ApVFTRHMI_3be)Lkn#0F*V8Pq zc}`Cjy$bE;FJ6H7p=0y#R>`}-m4(0F>%@P|?7fx{=R^uFdISRnZ2W_xQhD{YuR3t< z{6yxu=4~JkeA;|(J6_nv#>Nvs&FuLA&PW^he@t(UwFFE8)|a!R{`E`K`i^ZnyE4$k z;(749Ix|oi$c3QbEJ3b~D_kQsPz~fIUKym($a_7dJ?o+40*OLl^{=&oq$<#Q(yyrp z{J-FAniyAw9tPbe&IhQ|a`DqFTVQGQ&Gq3!C2==4x{6EJwiPZ8zub-iXoUtkJiG{} zPaR&}_fn8_z~(=;5lD-aPWD3z8PZS@AaUiomF!G8I}Mf>e~0g#BelA-5#`cj;O5>N Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/account_payment_order_notification/static/description/index.html b/account_payment_order_notification/static/description/index.html new file mode 100644 index 000000000..91b6788a2 --- /dev/null +++ b/account_payment_order_notification/static/description/index.html @@ -0,0 +1,468 @@ + + + + + + +Account Payment Order Notification + + + +
+

Account Payment Order Notification

+ + +

Beta License: AGPL-3 OCA/bank-payment Translate me on Weblate Try me on Runbot

+

This module adds a button on debit / payment orders to send an email to each related partner with the details of their transactions.

+

Table of contents

+ +
+

Configuration

+

To configure this module, you need to:

+
    +
  1. Go to Invoicing > Configuration > Payment Modes and create a payment mode if you wish.
  2. +
  3. +
    Go to Invoicing > Customers > Customers and creates a new record as follows:
    +
    +
    +
    +
  4. +
  5. +
    Go to Invoicing > Customers > Customers and creates a new record as follows:
    +
      +
    • Name: Test customer 2
    • +
    • Email: (empty)
    • +
    +
    +
    +
  6. +
+
+
+

Usage

+
    +
  1. Go to Invoicing > Customers > Invoices and creates one or more invoices linked to the payment mode.
  2. +
  3. Go to Invoicing > Customers > Invoices select the invoices created and execute the action called “Post entries”.
  4. +
  5. Go to Invoicing > Customers > Invoices select the invoices created and execute the action called “Add to Payment/Debit Order” and creates a payment order.
  6. +
  7. Click on “Confirm Payments” button.
  8. +
  9. Click on “Generate Payment File” button.
  10. +
  11. Click on “File Successfully Uploaded” button.
  12. +
  13. Click on “Send mails” button.
  14. +
  15. Any involved partner with no email will appear with the column “To send” not checked.
  16. +
  17. Click on “Confirm” button.
  18. +
  19. An email will have been sent to the selected partners.
  20. +
  21. A reminder note will have been created.
  22. +
+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Tecnativa
  • +
+
+
+

Contributors

+
    +
  • Tecnativa:
      +
    • Víctor Martínez
    • +
    • Pedro M. Baeza
    • +
    +
  • +
+
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

Current maintainer:

+

victoralmau

+

This module is part of the OCA/bank-payment project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/account_payment_order_notification/tests/__init__.py b/account_payment_order_notification/tests/__init__.py new file mode 100644 index 000000000..5c2fc9ff7 --- /dev/null +++ b/account_payment_order_notification/tests/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import test_account_payment_order_notification diff --git a/account_payment_order_notification/tests/test_account_payment_order_notification.py b/account_payment_order_notification/tests/test_account_payment_order_notification.py new file mode 100644 index 000000000..2f53cc06b --- /dev/null +++ b/account_payment_order_notification/tests/test_account_payment_order_notification.py @@ -0,0 +1,80 @@ +# Copyright 2022 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo.tests import Form, common + + +class TestAccountPaymentOrderNotification(common.SavepointCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.payment_mode = cls.env.ref("account_payment_mode.payment_mode_inbound_dd1") + cls.partner_a = cls.env["res.partner"].create( + {"name": "Test partner A", "email": "partner-a@test.com"} + ) + cls.partner_b = cls.env["res.partner"].create( + {"name": "Test partner B", "email": "partner-b@test.com"} + ) + cls.partner_c = cls.env["res.partner"].create({"name": "Test partner C"}) + cls.product = cls.env["product.product"].create( + {"name": "Test product", "list_price": 100} + ) + cls.mt_comment = cls.env.ref("mail.mt_comment") + + def _create_invoice(self, partner, invoice_type="out_invoice"): + invoice_form = Form( + self.env["account.move"].with_context(default_type=invoice_type) + ) + invoice_form.partner_id = partner + invoice_form.payment_mode_id = self.payment_mode + with invoice_form.invoice_line_ids.new() as line_form: + line_form.product_id = self.product + return invoice_form.save() + + def _test_notification_from_partner(self, po, partner): + notification = po.notification_ids.filtered(lambda x: x.partner_id == partner) + self.assertIn(partner, notification.mapped("message_follower_ids.partner_id")) + self.assertIn(self.mt_comment, notification.mapped("message_ids.subtype_id")) + + def test_wizard_account_payment_order_notification(self): + self._create_invoice(self.partner_a) + self._create_invoice(self.partner_a) + self._create_invoice(self.partner_b) + self._create_invoice(self.partner_c) + partners = self.partner_a + self.partner_b + self.partner_c + invoices = self.env["account.move"].search([("partner_id", "in", partners.ids)]) + invoices.action_post() + wizard = ( + self.env["account.invoice.payment.line.multi"] + .with_context(active_model=invoices._name, active_ids=invoices.ids) + .create({}) + ) + res = wizard.run() + payment_order = self.env[res["res_model"]].browse(res["res_id"]) + old_messages = payment_order.message_ids + template_xml_id = "%s.%s" % ( + "account_payment_order_notification", + "email_account_payment_order_notification", + ) + wizard = ( + self.env["wizard.account.payment.order.notification"] + .with_context(active_id=payment_order.id) + .create({"mail_template_id": self.env.ref(template_xml_id).id}) + ) + self.assertEqual(len(wizard.line_ids), 3) + line_a = wizard.line_ids.filtered(lambda x: x.partner_id == self.partner_a) + self.assertEqual(line_a.email, self.partner_a.email) + self.assertTrue(line_a.to_send) + line_b = wizard.line_ids.filtered(lambda x: x.partner_id == self.partner_b) + self.assertEqual(line_b.email, self.partner_b.email) + self.assertTrue(line_b.to_send) + line_c = wizard.line_ids.filtered(lambda x: x.partner_id == self.partner_c) + self.assertFalse(line_c.email) + self.assertFalse(line_c.to_send) + wizard.action_process() + self._test_notification_from_partner(payment_order, self.partner_a) + self._test_notification_from_partner(payment_order, self.partner_b) + self.assertNotIn( + self.partner_c, payment_order.mapped("notification_ids.partner_id") + ) + new_messages = payment_order.message_ids - old_messages + self.assertIn(self.env.ref("mail.mt_note"), new_messages.mapped("subtype_id")) diff --git a/account_payment_order_notification/views/account_payment_order_notification_view.xml b/account_payment_order_notification/views/account_payment_order_notification_view.xml new file mode 100644 index 000000000..5475053ac --- /dev/null +++ b/account_payment_order_notification/views/account_payment_order_notification_view.xml @@ -0,0 +1,69 @@ + + + + account.payment.order.notification.form + account.payment.order.notification + +
+ +
+

+ +

+
+ + + + + + + + + + + +
+
+ + +
+
+
+
+ + account.payment.order.notification.tree + account.payment.order.notification + + + + + + + + + + account.payment.order.notification.search + account.payment.order.notification + + + + + + + + + + + + Payment Order Notifications + account.payment.order.notification + tree,form + +
diff --git a/account_payment_order_notification/views/account_payment_order_view.xml b/account_payment_order_notification/views/account_payment_order_view.xml new file mode 100644 index 000000000..6bfcc74ca --- /dev/null +++ b/account_payment_order_notification/views/account_payment_order_view.xml @@ -0,0 +1,36 @@ + + + + account.payment.order.form + account.payment.order + + +
+ +
+ +
+
+
diff --git a/account_payment_order_notification/wizard/__init__.py b/account_payment_order_notification/wizard/__init__.py new file mode 100644 index 000000000..7b6054995 --- /dev/null +++ b/account_payment_order_notification/wizard/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import wizard_account_payment_order_notification diff --git a/account_payment_order_notification/wizard/wizard_account_payment_order_notification.py b/account_payment_order_notification/wizard/wizard_account_payment_order_notification.py new file mode 100644 index 000000000..db63157aa --- /dev/null +++ b/account_payment_order_notification/wizard/wizard_account_payment_order_notification.py @@ -0,0 +1,87 @@ +# Copyright 2022 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class WizardAccountPaymentOrderNotification(models.TransientModel): + _name = "wizard.account.payment.order.notification" + _description = "Wizard Account Payment Order Notification" + + order_id = fields.Many2one( + comodel_name="account.payment.order", required=True, readonly=True, + ) + mail_template_id = fields.Many2one( + comodel_name="mail.template", + domain=[("model_id.model", "=", "account.payment.order.notification")], + required=True, + ) + line_ids = fields.One2many( + comodel_name="wizard.account.payment.order.notification.line", + inverse_name="parent_id", + string="Lines", + ) + + @api.model + def default_get(self, fields): + vals = super().default_get(fields) + po = self.env["account.payment.order"].browse( + [self.env.context.get("active_id")] + ) + if po: + line_ids = [] + for partner in po.payment_line_ids.mapped("partner_id"): + line_ids += [ + ( + 0, + 0, + { + "partner_id": partner.id, + "email": partner.email, + "to_send": True if partner.email else False, + }, + ) + ] + template_xml_id = "%s.%s" % ( + "account_payment_order_notification", + "email_account_payment_order_notification", + ) + vals.update( + { + "order_id": po.id, + "line_ids": line_ids, + "mail_template_id": self.env.ref(template_xml_id).id, + } + ) + return vals + + def action_process(self): + notifications = [] + for item in self.line_ids.filtered("to_send"): + payment_line_ids = self.order_id.payment_line_ids.filtered( + lambda x: x.partner_id == item.partner_id + ) + data = { + "partner_id": item.partner_id.id, + "payment_line_ids": payment_line_ids, + } + notifications.append((0, 0, data)) + self.order_id.notification_ids = notifications + self.order_id._action_send_mail_notifications(self.mail_template_id) + self.order_id._action_create_note_from_notifications() + + +class WizardAccountPaymentOrderNotificationLine(models.TransientModel): + _name = "wizard.account.payment.order.notification.line" + _description = "Wizard Account Payment Order Notification Line" + + parent_id = fields.Many2one( + comodel_name="wizard.account.payment.order.notification", + ondelete="cascade", + index=True, + ) + partner_id = fields.Many2one( + comodel_name="res.partner", required=True, string="Partner", readonly=True + ) + email = fields.Char(string="Email") + to_send = fields.Boolean(string="To send") diff --git a/account_payment_order_notification/wizard/wizard_account_payment_order_notification_views.xml b/account_payment_order_notification/wizard/wizard_account_payment_order_notification_views.xml new file mode 100644 index 000000000..9dda850c1 --- /dev/null +++ b/account_payment_order_notification/wizard/wizard_account_payment_order_notification_views.xml @@ -0,0 +1,47 @@ + + + + wizard.account.payment.order.notification.form + wizard.account.payment.order.notification + +
+ + + + + + + + + + + + + + + +
+
+
+
+
+ + Send notifications + wizard.account.payment.order.notification + form + new + +
From 143f2a7e2b2a2b36017292d68cc23aa8a1b82f97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Mon, 14 Nov 2022 08:29:08 +0100 Subject: [PATCH 02/15] [IMP] account_payment_order_notification: black, isort, prettier --- .../models/account_payment_order_notification.py | 11 ++++++++--- .../wizard_account_payment_order_notification.py | 4 +++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/account_payment_order_notification/models/account_payment_order_notification.py b/account_payment_order_notification/models/account_payment_order_notification.py index 5164899fd..0753ac822 100644 --- a/account_payment_order_notification/models/account_payment_order_notification.py +++ b/account_payment_order_notification/models/account_payment_order_notification.py @@ -10,11 +10,15 @@ class AccountPaymentOrderNotification(models.Model): _inherit = ["mail.thread"] order_id = fields.Many2one( - comodel_name="account.payment.order", required=True, readonly=True, + comodel_name="account.payment.order", + required=True, + readonly=True, ) company_id = fields.Many2one(related="order_id.company_id") partner_id = fields.Many2one( - comodel_name="res.partner", required=True, readonly=True, + comodel_name="res.partner", + required=True, + readonly=True, ) payment_line_ids = fields.Many2many( comodel_name="account.payment.line", readonly=True @@ -39,6 +43,7 @@ class AccountPaymentOrderNotification(models.Model): subtype_ids=follower.subtype_ids.ids, ) rec.message_subscribe( - partner_ids=[rec.partner_id.id], subtype_ids=mt_comment.ids, + partner_ids=[rec.partner_id.id], + subtype_ids=mt_comment.ids, ) return res diff --git a/account_payment_order_notification/wizard/wizard_account_payment_order_notification.py b/account_payment_order_notification/wizard/wizard_account_payment_order_notification.py index db63157aa..c5795b591 100644 --- a/account_payment_order_notification/wizard/wizard_account_payment_order_notification.py +++ b/account_payment_order_notification/wizard/wizard_account_payment_order_notification.py @@ -9,7 +9,9 @@ class WizardAccountPaymentOrderNotification(models.TransientModel): _description = "Wizard Account Payment Order Notification" order_id = fields.Many2one( - comodel_name="account.payment.order", required=True, readonly=True, + comodel_name="account.payment.order", + required=True, + readonly=True, ) mail_template_id = fields.Many2one( comodel_name="mail.template", From d0f4e1b67ca1081cf63b4d2fcff889b65e476053 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Mon, 14 Nov 2022 08:29:43 +0100 Subject: [PATCH 03/15] [MIG] account_payment_order_notification: Migration to 14.0 TT40457 --- account_payment_order_notification/README.rst | 20 +++++++++---------- .../__manifest__.py | 2 +- .../data/mail_template_data.xml | 1 - .../account_payment_order_notification.pot | 5 ++++- account_payment_order_notification/i18n/es.po | 3 +++ .../models/account_payment_order.py | 2 +- .../readme/CONFIGURE.rst | 6 +++--- .../readme/USAGE.rst | 4 ++-- .../security/ir.model.access.csv | 2 ++ .../static/description/index.html | 16 +++++++-------- ...test_account_payment_order_notification.py | 4 ++-- 11 files changed, 36 insertions(+), 29 deletions(-) diff --git a/account_payment_order_notification/README.rst b/account_payment_order_notification/README.rst index 66e20bae0..b4375853d 100644 --- a/account_payment_order_notification/README.rst +++ b/account_payment_order_notification/README.rst @@ -14,13 +14,13 @@ Account Payment Order Notification :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fbank--payment-lightgray.png?logo=github - :target: https://github.com/OCA/bank-payment/tree/13.0/account_payment_order_notification + :target: https://github.com/OCA/bank-payment/tree/14.0/account_payment_order_notification :alt: OCA/bank-payment .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/bank-payment-13-0/bank-payment-13-0-account_payment_order_notification + :target: https://translation.odoo-community.org/projects/bank-payment-14-0/bank-payment-14-0-account_payment_order_notification :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/173/13.0 + :target: https://runbot.odoo-community.org/runbot/173/14.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -37,22 +37,22 @@ Configuration To configure this module, you need to: -#. Go to *Invoicing > Configuration > Payment Modes* and create a payment mode if you wish. +#. Go to *Invoicing > Configuration > Payment Modes* and create a payment mode, if you wish. -#. Go to *Invoicing > Customers > Customers* and creates a new record as follows: +#. Go to *Invoicing > Customers > Customers* and create a new record as follows: * Name: Test customer 1 * Email: customer1@test.com -#. Go to *Invoicing > Customers > Customers* and creates a new record as follows: +#. Go to *Invoicing > Customers > Customers* and create a new record as follows: * Name: Test customer 2 * Email: (empty) Usage ===== -#. Go to *Invoicing > Customers > Invoices* and creates one or more invoices linked to the payment mode. +#. Go to *Invoicing > Customers > Invoices* and create one or more invoices linked to the payment mode. #. Go to *Invoicing > Customers > Invoices* select the invoices created and execute the action called "Post entries". -#. Go to *Invoicing > Customers > Invoices* select the invoices created and execute the action called "Add to Payment/Debit Order" and creates a payment order. +#. Go to *Invoicing > Customers > Invoices* select the invoices created and execute the action called "Add to Payment/Debit Order" and create a payment order. #. Click on "Confirm Payments" button. #. Click on "Generate Payment File" button. #. Click on "File Successfully Uploaded" button. @@ -68,7 +68,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -109,6 +109,6 @@ Current `maintainer `__: |maintainer-victoralmau| -This module is part of the `OCA/bank-payment `_ project on GitHub. +This module is part of the `OCA/bank-payment `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/account_payment_order_notification/__manifest__.py b/account_payment_order_notification/__manifest__.py index 23dd90c56..7cef92c1a 100644 --- a/account_payment_order_notification/__manifest__.py +++ b/account_payment_order_notification/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { "name": "Account Payment Order Notification", - "version": "13.0.1.0.1", + "version": "14.0.1.0.0", "category": "Banking addons", "website": "https://github.com/OCA/bank-payment", "author": "Tecnativa, Odoo Community Association (OCA)", diff --git a/account_payment_order_notification/data/mail_template_data.xml b/account_payment_order_notification/data/mail_template_data.xml index 07c03a997..5b127b1d1 100644 --- a/account_payment_order_notification/data/mail_template_data.xml +++ b/account_payment_order_notification/data/mail_template_data.xml @@ -42,7 +42,6 @@ ]]> ${object.partner_id.lang} - diff --git a/account_payment_order_notification/i18n/account_payment_order_notification.pot b/account_payment_order_notification/i18n/account_payment_order_notification.pot index 5d5e52d10..d2ae9a89c 100644 --- a/account_payment_order_notification/i18n/account_payment_order_notification.pot +++ b/account_payment_order_notification/i18n/account_payment_order_notification.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 13.0\n" +"Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -93,6 +93,7 @@ msgid "Created on" msgstr "" #. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order__display_name #: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__display_name #: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification__display_name #: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification_line__display_name @@ -131,6 +132,7 @@ msgid "Group By" msgstr "" #. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order__id #: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__id #: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification__id #: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification_line__id @@ -155,6 +157,7 @@ msgid "Is Follower" msgstr "" #. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order____last_update #: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification____last_update #: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification____last_update #: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification_line____last_update diff --git a/account_payment_order_notification/i18n/es.po b/account_payment_order_notification/i18n/es.po index 62f236fa6..6fc741753 100644 --- a/account_payment_order_notification/i18n/es.po +++ b/account_payment_order_notification/i18n/es.po @@ -136,6 +136,7 @@ msgid "Created on" msgstr "Creado el" #. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order__display_name #: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__display_name #: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification__display_name #: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification_line__display_name @@ -174,6 +175,7 @@ msgid "Group By" msgstr "Agrupar por" #. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order__id #: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification__id #: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification__id #: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification_line__id @@ -198,6 +200,7 @@ msgid "Is Follower" msgstr "Es seguidor" #. module: account_payment_order_notification +#: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order____last_update #: model:ir.model.fields,field_description:account_payment_order_notification.field_account_payment_order_notification____last_update #: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification____last_update #: model:ir.model.fields,field_description:account_payment_order_notification.field_wizard_account_payment_order_notification_line____last_update diff --git a/account_payment_order_notification/models/account_payment_order.py b/account_payment_order_notification/models/account_payment_order.py index 12098a582..912a90080 100644 --- a/account_payment_order_notification/models/account_payment_order.py +++ b/account_payment_order_notification/models/account_payment_order.py @@ -30,7 +30,7 @@ class AccountPaymentOrder(models.Model): "account_payment_order_notification", "account_payment_order_notification_action", ) - action = self.env.ref(xml_id).read()[0] + action = self.env["ir.actions.act_window"]._for_xml_id(xml_id) action["domain"] = [("order_id", "=", self.id)] return action diff --git a/account_payment_order_notification/readme/CONFIGURE.rst b/account_payment_order_notification/readme/CONFIGURE.rst index b754ede03..eca598c8e 100644 --- a/account_payment_order_notification/readme/CONFIGURE.rst +++ b/account_payment_order_notification/readme/CONFIGURE.rst @@ -1,11 +1,11 @@ To configure this module, you need to: -#. Go to *Invoicing > Configuration > Payment Modes* and create a payment mode if you wish. +#. Go to *Invoicing > Configuration > Payment Modes* and create a payment mode, if you wish. -#. Go to *Invoicing > Customers > Customers* and creates a new record as follows: +#. Go to *Invoicing > Customers > Customers* and create a new record as follows: * Name: Test customer 1 * Email: customer1@test.com -#. Go to *Invoicing > Customers > Customers* and creates a new record as follows: +#. Go to *Invoicing > Customers > Customers* and create a new record as follows: * Name: Test customer 2 * Email: (empty) diff --git a/account_payment_order_notification/readme/USAGE.rst b/account_payment_order_notification/readme/USAGE.rst index 011ff6653..433a8a2ff 100644 --- a/account_payment_order_notification/readme/USAGE.rst +++ b/account_payment_order_notification/readme/USAGE.rst @@ -1,6 +1,6 @@ -#. Go to *Invoicing > Customers > Invoices* and creates one or more invoices linked to the payment mode. +#. Go to *Invoicing > Customers > Invoices* and create one or more invoices linked to the payment mode. #. Go to *Invoicing > Customers > Invoices* select the invoices created and execute the action called "Post entries". -#. Go to *Invoicing > Customers > Invoices* select the invoices created and execute the action called "Add to Payment/Debit Order" and creates a payment order. +#. Go to *Invoicing > Customers > Invoices* select the invoices created and execute the action called "Add to Payment/Debit Order" and create a payment order. #. Click on "Confirm Payments" button. #. Click on "Generate Payment File" button. #. Click on "File Successfully Uploaded" button. diff --git a/account_payment_order_notification/security/ir.model.access.csv b/account_payment_order_notification/security/ir.model.access.csv index 2e294ba7d..01d3fe312 100644 --- a/account_payment_order_notification/security/ir.model.access.csv +++ b/account_payment_order_notification/security/ir.model.access.csv @@ -1,2 +1,4 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_account_payment_order_notification,account.payment.order.notification.manager,model_account_payment_order_notification,account_payment_order.group_account_payment,1,1,1,1 +access_wizard_account_payment_order_notification,access_wizard_account_payment_order_notification,model_wizard_account_payment_order_notification,account_payment_order.group_account_payment,1,1,1,1 +access_wizard_account_payment_order_notification_line,access_wizard_account_payment_order_notification_line,model_wizard_account_payment_order_notification_line,account_payment_order.group_account_payment,1,1,1,1 diff --git a/account_payment_order_notification/static/description/index.html b/account_payment_order_notification/static/description/index.html index 91b6788a2..ac9be143d 100644 --- a/account_payment_order_notification/static/description/index.html +++ b/account_payment_order_notification/static/description/index.html @@ -367,7 +367,7 @@ ul.auto-toc { !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/bank-payment Translate me on Weblate Try me on Runbot

+

Beta License: AGPL-3 OCA/bank-payment Translate me on Weblate Try me on Runbot

This module adds a button on debit / payment orders to send an email to each related partner with the details of their transactions.

Table of contents

@@ -387,9 +387,9 @@ ul.auto-toc {

Configuration

To configure this module, you need to:

    -
  1. Go to Invoicing > Configuration > Payment Modes and create a payment mode if you wish.
  2. +
  3. Go to Invoicing > Configuration > Payment Modes and create a payment mode, if you wish.
  4. -
    Go to Invoicing > Customers > Customers and creates a new record as follows:
    +
    Go to Invoicing > Customers > Customers and create a new record as follows:
  5. -
    Go to Invoicing > Customers > Customers and creates a new record as follows:
    +
    Go to Invoicing > Customers > Customers and create a new record as follows:
    • Name: Test customer 2
    • Email: (empty)
    • @@ -411,9 +411,9 @@ ul.auto-toc {

      Usage

        -
      1. Go to Invoicing > Customers > Invoices and creates one or more invoices linked to the payment mode.
      2. +
      3. Go to Invoicing > Customers > Invoices and create one or more invoices linked to the payment mode.
      4. Go to Invoicing > Customers > Invoices select the invoices created and execute the action called “Post entries”.
      5. -
      6. Go to Invoicing > Customers > Invoices select the invoices created and execute the action called “Add to Payment/Debit Order” and creates a payment order.
      7. +
      8. Go to Invoicing > Customers > Invoices select the invoices created and execute the action called “Add to Payment/Debit Order” and create a payment order.
      9. Click on “Confirm Payments” button.
      10. Click on “Generate Payment File” button.
      11. Click on “File Successfully Uploaded” button.
      12. @@ -429,7 +429,7 @@ ul.auto-toc {

        Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -feedback.

        +feedback.

        Do not contact contributors directly about support or help with technical issues.

      @@ -459,7 +459,7 @@ mission is to support the collaborative development of Odoo features and promote its widespread use.

      Current maintainer:

      victoralmau

      -

      This module is part of the OCA/bank-payment project on GitHub.

      +

      This module is part of the OCA/bank-payment project on GitHub.

      You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

diff --git a/account_payment_order_notification/tests/test_account_payment_order_notification.py b/account_payment_order_notification/tests/test_account_payment_order_notification.py index 2f53cc06b..3edf787c3 100644 --- a/account_payment_order_notification/tests/test_account_payment_order_notification.py +++ b/account_payment_order_notification/tests/test_account_payment_order_notification.py @@ -20,9 +20,9 @@ class TestAccountPaymentOrderNotification(common.SavepointCase): ) cls.mt_comment = cls.env.ref("mail.mt_comment") - def _create_invoice(self, partner, invoice_type="out_invoice"): + def _create_invoice(self, partner, move_type="out_invoice"): invoice_form = Form( - self.env["account.move"].with_context(default_type=invoice_type) + self.env["account.move"].with_context(default_move_type=move_type) ) invoice_form.partner_id = partner invoice_form.payment_mode_id = self.payment_mode From 40dd755c0b849c09ae019a4d72bce23a906e3376 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Thu, 17 Nov 2022 08:41:28 +0100 Subject: [PATCH 04/15] [FIX] account_payment_order_notification: Create notification with the correct partner (invoice partner). TT40516 --- ...test_account_payment_order_notification.py | 29 ++++++++++++------- ...zard_account_payment_order_notification.py | 8 +++-- 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/account_payment_order_notification/tests/test_account_payment_order_notification.py b/account_payment_order_notification/tests/test_account_payment_order_notification.py index 3edf787c3..2ee102552 100644 --- a/account_payment_order_notification/tests/test_account_payment_order_notification.py +++ b/account_payment_order_notification/tests/test_account_payment_order_notification.py @@ -8,8 +8,14 @@ class TestAccountPaymentOrderNotification(common.SavepointCase): def setUpClass(cls): super().setUpClass() cls.payment_mode = cls.env.ref("account_payment_mode.payment_mode_inbound_dd1") - cls.partner_a = cls.env["res.partner"].create( - {"name": "Test partner A", "email": "partner-a@test.com"} + cls.partner_a = cls.env["res.partner"].create({"name": "Test partner A"}) + cls.partner_a_child = cls.env["res.partner"].create( + { + "name": "Invoice", + "type": "invoice", + "email": "partner-a@test.com", + "parent_id": cls.partner_a.id, + } ) cls.partner_b = cls.env["res.partner"].create( {"name": "Test partner B", "email": "partner-b@test.com"} @@ -30,17 +36,18 @@ class TestAccountPaymentOrderNotification(common.SavepointCase): line_form.product_id = self.product return invoice_form.save() - def _test_notification_from_partner(self, po, partner): + def _test_notification_from_partner(self, po, partner, total): notification = po.notification_ids.filtered(lambda x: x.partner_id == partner) + self.assertEqual(len(notification.payment_line_ids), total) self.assertIn(partner, notification.mapped("message_follower_ids.partner_id")) self.assertIn(self.mt_comment, notification.mapped("message_ids.subtype_id")) def test_wizard_account_payment_order_notification(self): - self._create_invoice(self.partner_a) - self._create_invoice(self.partner_a) + self._create_invoice(self.partner_a_child) + self._create_invoice(self.partner_a_child) self._create_invoice(self.partner_b) self._create_invoice(self.partner_c) - partners = self.partner_a + self.partner_b + self.partner_c + partners = self.partner_a_child + self.partner_b + self.partner_c invoices = self.env["account.move"].search([("partner_id", "in", partners.ids)]) invoices.action_post() wizard = ( @@ -61,8 +68,10 @@ class TestAccountPaymentOrderNotification(common.SavepointCase): .create({"mail_template_id": self.env.ref(template_xml_id).id}) ) self.assertEqual(len(wizard.line_ids), 3) - line_a = wizard.line_ids.filtered(lambda x: x.partner_id == self.partner_a) - self.assertEqual(line_a.email, self.partner_a.email) + line_a = wizard.line_ids.filtered( + lambda x: x.partner_id == self.partner_a_child + ) + self.assertEqual(line_a.email, self.partner_a_child.email) self.assertTrue(line_a.to_send) line_b = wizard.line_ids.filtered(lambda x: x.partner_id == self.partner_b) self.assertEqual(line_b.email, self.partner_b.email) @@ -71,8 +80,8 @@ class TestAccountPaymentOrderNotification(common.SavepointCase): self.assertFalse(line_c.email) self.assertFalse(line_c.to_send) wizard.action_process() - self._test_notification_from_partner(payment_order, self.partner_a) - self._test_notification_from_partner(payment_order, self.partner_b) + self._test_notification_from_partner(payment_order, self.partner_a_child, 2) + self._test_notification_from_partner(payment_order, self.partner_b, 1) self.assertNotIn( self.partner_c, payment_order.mapped("notification_ids.partner_id") ) diff --git a/account_payment_order_notification/wizard/wizard_account_payment_order_notification.py b/account_payment_order_notification/wizard/wizard_account_payment_order_notification.py index c5795b591..d87eda53f 100644 --- a/account_payment_order_notification/wizard/wizard_account_payment_order_notification.py +++ b/account_payment_order_notification/wizard/wizard_account_payment_order_notification.py @@ -32,7 +32,11 @@ class WizardAccountPaymentOrderNotification(models.TransientModel): ) if po: line_ids = [] - for partner in po.payment_line_ids.mapped("partner_id"): + # We need to transfer invoice partner so that the email is sent to the + # correct partner (not parent) + for partner in po.payment_line_ids.mapped( + lambda x: x.move_line_id.move_id.partner_id or x.partner_id + ): line_ids += [ ( 0, @@ -61,7 +65,7 @@ class WizardAccountPaymentOrderNotification(models.TransientModel): notifications = [] for item in self.line_ids.filtered("to_send"): payment_line_ids = self.order_id.payment_line_ids.filtered( - lambda x: x.partner_id == item.partner_id + lambda x: x.partner_id == item.partner_id.commercial_partner_id ) data = { "partner_id": item.partner_id.id, From b0e691cf7fb509e638e383d7f9ec8248002901d8 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 17 Nov 2022 17:52:34 +0000 Subject: [PATCH 05/15] account_payment_order_notification 14.0.1.0.1 --- account_payment_order_notification/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/account_payment_order_notification/__manifest__.py b/account_payment_order_notification/__manifest__.py index 7cef92c1a..a51c3fcd0 100644 --- a/account_payment_order_notification/__manifest__.py +++ b/account_payment_order_notification/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { "name": "Account Payment Order Notification", - "version": "14.0.1.0.0", + "version": "14.0.1.0.1", "category": "Banking addons", "website": "https://github.com/OCA/bank-payment", "author": "Tecnativa, Odoo Community Association (OCA)", From 14add33a8e1b8af909110a69cb35bb6612a1ab8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Tue, 13 Dec 2022 16:21:43 +0100 Subject: [PATCH 06/15] [FIX] account_payment_order_notification: Fix template body. Avoid re-formatting the content causing an error when rendering the template. TT40795 --- .../__manifest__.py | 2 +- .../data/mail_template_data.xml | 2 + .../account_payment_order_notification.pot | 4 ++ account_payment_order_notification/i18n/es.po | 8 +++- .../14.0.1.2.0/noupdate_changes.xml | 37 +++++++++++++++++++ .../migrations/14.0.1.2.0/post-migration.py | 13 +++++++ 6 files changed, 63 insertions(+), 3 deletions(-) create mode 100644 account_payment_order_notification/migrations/14.0.1.2.0/noupdate_changes.xml create mode 100644 account_payment_order_notification/migrations/14.0.1.2.0/post-migration.py diff --git a/account_payment_order_notification/__manifest__.py b/account_payment_order_notification/__manifest__.py index a51c3fcd0..6cabe6825 100644 --- a/account_payment_order_notification/__manifest__.py +++ b/account_payment_order_notification/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { "name": "Account Payment Order Notification", - "version": "14.0.1.0.1", + "version": "14.0.1.2.0", "category": "Banking addons", "website": "https://github.com/OCA/bank-payment", "author": "Tecnativa, Odoo Community Association (OCA)", diff --git a/account_payment_order_notification/data/mail_template_data.xml b/account_payment_order_notification/data/mail_template_data.xml index 5b127b1d1..e246b6f72 100644 --- a/account_payment_order_notification/data/mail_template_data.xml +++ b/account_payment_order_notification/data/mail_template_data.xml @@ -30,6 +30,7 @@ Amount + % for payment_line in object.payment_line_ids: ${payment_line.communication} @@ -37,6 +38,7 @@ ${format_amount(payment_line.amount_currency, payment_line.currency_id)} % endfor +

Do not hesitate to contact us if you have any questions.

diff --git a/account_payment_order_notification/i18n/account_payment_order_notification.pot b/account_payment_order_notification/i18n/account_payment_order_notification.pot index d2ae9a89c..6b0e61ef3 100644 --- a/account_payment_order_notification/i18n/account_payment_order_notification.pot +++ b/account_payment_order_notification/i18n/account_payment_order_notification.pot @@ -6,6 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-12-14 07:51+0000\n" +"PO-Revision-Date: 2022-12-14 07:51+0000\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -33,6 +35,7 @@ msgid "" " Amount\n" " \n" " \n" +" \n" " % for payment_line in object.payment_line_ids:\n" " \n" " ${payment_line.communication}\n" @@ -40,6 +43,7 @@ msgid "" " ${format_amount(payment_line.amount_currency, payment_line.currency_id)}\n" " \n" " % endfor\n" +" \n" " \n" "

Do not hesitate to contact us if you have any questions.

\n" "\n" diff --git a/account_payment_order_notification/i18n/es.po b/account_payment_order_notification/i18n/es.po index 6fc741753..4764d1fee 100644 --- a/account_payment_order_notification/i18n/es.po +++ b/account_payment_order_notification/i18n/es.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 13.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-19 06:43+0000\n" -"PO-Revision-Date: 2022-10-19 08:44+0200\n" +"POT-Creation-Date: 2022-12-14 07:51+0000\n" +"PO-Revision-Date: 2022-12-14 08:54+0100\n" "Last-Translator: \n" "Language-Team: \n" "Language: es\n" @@ -41,6 +41,7 @@ msgid "" " Amount\n" " \n" " \n" +" \n" " % for payment_line in object.payment_line_ids:\n" " \n" " ${payment_line.communication}\n" @@ -49,6 +50,7 @@ msgid "" "payment_line.currency_id)}\n" " \n" " % endfor\n" +" \n" " \n" "

Do not hesitate to contact us if you have any questions.

\n" "\n" @@ -75,6 +77,7 @@ msgstr "" " Importe\n" " \n" " \n" +" \n" " % for payment_line in object.payment_line_ids:\n" " \n" " ${payment_line.communication}\n" @@ -83,6 +86,7 @@ msgstr "" "payment_line.currency_id)}\n" " \n" " % endfor\n" +" \n" " \n" "

No dude en ponerse en contacto con nosotros si tiene alguna pregunta." "

\n" diff --git a/account_payment_order_notification/migrations/14.0.1.2.0/noupdate_changes.xml b/account_payment_order_notification/migrations/14.0.1.2.0/noupdate_changes.xml new file mode 100644 index 000000000..31b2f608c --- /dev/null +++ b/account_payment_order_notification/migrations/14.0.1.2.0/noupdate_changes.xml @@ -0,0 +1,37 @@ + + + + +

Hello ${object.partner_id.name or ''},

+ % if object.order_id.payment_type == 'inbound': +

A debit order including at least one of your invoices has been processed and sent to the bank.

+ % else: +

A payment order including at least one of your invoices has been processed and sent to the bank.

+ % endif +

It includes the following transactions:

+ + + + + + + + + + % for payment_line in object.payment_line_ids: + + + + + + % endfor + +
NumberDateAmount
${payment_line.communication}${payment_line.date}${format_amount(payment_line.amount_currency, payment_line.currency_id)}
+

Do not hesitate to contact us if you have any questions.

+ + ]]>
+
+
diff --git a/account_payment_order_notification/migrations/14.0.1.2.0/post-migration.py b/account_payment_order_notification/migrations/14.0.1.2.0/post-migration.py new file mode 100644 index 000000000..140ef453b --- /dev/null +++ b/account_payment_order_notification/migrations/14.0.1.2.0/post-migration.py @@ -0,0 +1,13 @@ +# Copyright 2022 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openupgradelib import openupgrade + + +@openupgrade.migrate() +def migrate(env, version): + openupgrade.load_data( + env.cr, + "account_payment_order_notification", + "migrations/14.0.1.2.0/noupdate_changes.xml", + ) From b5d78c19361691bc9784f9a88c3a12bf757226b1 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 15 Dec 2022 08:05:08 +0000 Subject: [PATCH 07/15] account_payment_order_notification 14.0.1.3.0 --- account_payment_order_notification/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/account_payment_order_notification/__manifest__.py b/account_payment_order_notification/__manifest__.py index 6cabe6825..c6792d19a 100644 --- a/account_payment_order_notification/__manifest__.py +++ b/account_payment_order_notification/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { "name": "Account Payment Order Notification", - "version": "14.0.1.2.0", + "version": "14.0.1.3.0", "category": "Banking addons", "website": "https://github.com/OCA/bank-payment", "author": "Tecnativa, Odoo Community Association (OCA)", From d8b5042b644497290ca97c72529b684d0241b438 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Thu, 15 Dec 2022 10:49:38 +0100 Subject: [PATCH 08/15] [OU-FIX] account_payment_order_notification: Remove translations TT40795 --- .../migrations/14.0.1.2.0/post-migration.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/account_payment_order_notification/migrations/14.0.1.2.0/post-migration.py b/account_payment_order_notification/migrations/14.0.1.2.0/post-migration.py index 140ef453b..56b2c642e 100644 --- a/account_payment_order_notification/migrations/14.0.1.2.0/post-migration.py +++ b/account_payment_order_notification/migrations/14.0.1.2.0/post-migration.py @@ -11,3 +11,8 @@ def migrate(env, version): "account_payment_order_notification", "migrations/14.0.1.2.0/noupdate_changes.xml", ) + openupgrade.delete_record_translations( + env.cr, + "account_payment_order_notification", + ["email_account_payment_order_notification"], + ) From 951111e0114542d660ab008c9400848349203800 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Wed, 22 Feb 2023 16:38:22 +0100 Subject: [PATCH 09/15] [FIX] account_payment_order_notification: Show supplier invoice reference if applicable. TT40795 --- .../data/mail_template_data.xml | 6 +++++- account_payment_order_notification/i18n/es.po | 20 ++++++++++++++----- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/account_payment_order_notification/data/mail_template_data.xml b/account_payment_order_notification/data/mail_template_data.xml index e246b6f72..afb49bde0 100644 --- a/account_payment_order_notification/data/mail_template_data.xml +++ b/account_payment_order_notification/data/mail_template_data.xml @@ -33,7 +33,11 @@ % for payment_line in object.payment_line_ids: - ${payment_line.communication} + % if payment_line.move_line_id.move_id.move_type in ("in_invoice", "in_refund") and payment_line.move_line_id.move_id.ref: + ${payment_line.move_line_id.move_id.ref} + % else: + ${payment_line.communication} + % endif ${payment_line.date} ${format_amount(payment_line.amount_currency, payment_line.currency_id)} diff --git a/account_payment_order_notification/i18n/es.po b/account_payment_order_notification/i18n/es.po index 4764d1fee..2e4d6d845 100644 --- a/account_payment_order_notification/i18n/es.po +++ b/account_payment_order_notification/i18n/es.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 13.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-14 07:51+0000\n" -"PO-Revision-Date: 2022-12-14 08:54+0100\n" +"POT-Creation-Date: 2023-02-22 15:35+0000\n" +"PO-Revision-Date: 2023-02-22 16:37+0100\n" "Last-Translator: \n" "Language-Team: \n" "Language: es\n" @@ -44,7 +44,12 @@ msgid "" " \n" " % for payment_line in object.payment_line_ids:\n" " \n" -" ${payment_line.communication}\n" +" % if payment_line.move_line_id.move_id.move_type in " +"(\"in_invoice\", \"in_refund\") and payment_line.move_line_id.move_id.ref:\n" +" ${payment_line.move_line_id.move_id.ref}\n" +" % else:\n" +" ${payment_line.communication}\n" +" % endif\n" " ${payment_line.date}\n" " ${format_amount(payment_line.amount_currency, " "payment_line.currency_id)}\n" @@ -80,7 +85,12 @@ msgstr "" " \n" " % for payment_line in object.payment_line_ids:\n" " \n" -" ${payment_line.communication}\n" +" % if payment_line.move_line_id.move_id.move_type in " +"(\"in_invoice\", \"in_refund\") and payment_line.move_line_id.move_id.ref:\n" +" ${payment_line.move_line_id.move_id.ref}\n" +" % else:\n" +" ${payment_line.communication}\n" +" % endif\n" " ${payment_line.date}\n" " ${format_amount(payment_line.amount_currency, " "payment_line.currency_id)}\n" @@ -91,7 +101,7 @@ msgstr "" "

No dude en ponerse en contacto con nosotros si tiene alguna pregunta." "

\n" "\n" -" " +" " #. module: account_payment_order_notification #: model:mail.template,subject:account_payment_order_notification.email_account_payment_order_notification From 3a7d5e2b81d71e82f3719d854f13f306ca859ac7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Thu, 23 Feb 2023 08:15:29 +0100 Subject: [PATCH 10/15] [OU-FIX] account_payment_order_notification: Remove unnecessary migration script TT40795 --- .../14.0.1.2.0/noupdate_changes.xml | 37 ------------------- .../migrations/14.0.1.2.0/post-migration.py | 18 --------- 2 files changed, 55 deletions(-) delete mode 100644 account_payment_order_notification/migrations/14.0.1.2.0/noupdate_changes.xml delete mode 100644 account_payment_order_notification/migrations/14.0.1.2.0/post-migration.py diff --git a/account_payment_order_notification/migrations/14.0.1.2.0/noupdate_changes.xml b/account_payment_order_notification/migrations/14.0.1.2.0/noupdate_changes.xml deleted file mode 100644 index 31b2f608c..000000000 --- a/account_payment_order_notification/migrations/14.0.1.2.0/noupdate_changes.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - -

Hello ${object.partner_id.name or ''},

- % if object.order_id.payment_type == 'inbound': -

A debit order including at least one of your invoices has been processed and sent to the bank.

- % else: -

A payment order including at least one of your invoices has been processed and sent to the bank.

- % endif -

It includes the following transactions:

- - - - - - - - - - % for payment_line in object.payment_line_ids: - - - - - - % endfor - -
NumberDateAmount
${payment_line.communication}${payment_line.date}${format_amount(payment_line.amount_currency, payment_line.currency_id)}
-

Do not hesitate to contact us if you have any questions.

- - ]]>
-
-
diff --git a/account_payment_order_notification/migrations/14.0.1.2.0/post-migration.py b/account_payment_order_notification/migrations/14.0.1.2.0/post-migration.py deleted file mode 100644 index 56b2c642e..000000000 --- a/account_payment_order_notification/migrations/14.0.1.2.0/post-migration.py +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright 2022 Tecnativa - Víctor Martínez -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). - -from openupgradelib import openupgrade - - -@openupgrade.migrate() -def migrate(env, version): - openupgrade.load_data( - env.cr, - "account_payment_order_notification", - "migrations/14.0.1.2.0/noupdate_changes.xml", - ) - openupgrade.delete_record_translations( - env.cr, - "account_payment_order_notification", - ["email_account_payment_order_notification"], - ) From 26c0d111daa57ac5ba5ab23f7f86808fac80557b Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 23 Feb 2023 08:27:08 +0000 Subject: [PATCH 11/15] account_payment_order_notification 14.0.1.4.0 --- account_payment_order_notification/__manifest__.py | 2 +- .../i18n/account_payment_order_notification.pot | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/account_payment_order_notification/__manifest__.py b/account_payment_order_notification/__manifest__.py index c6792d19a..232a4e8f5 100644 --- a/account_payment_order_notification/__manifest__.py +++ b/account_payment_order_notification/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { "name": "Account Payment Order Notification", - "version": "14.0.1.3.0", + "version": "14.0.1.4.0", "category": "Banking addons", "website": "https://github.com/OCA/bank-payment", "author": "Tecnativa, Odoo Community Association (OCA)", diff --git a/account_payment_order_notification/i18n/account_payment_order_notification.pot b/account_payment_order_notification/i18n/account_payment_order_notification.pot index 6b0e61ef3..715c68a4f 100644 --- a/account_payment_order_notification/i18n/account_payment_order_notification.pot +++ b/account_payment_order_notification/i18n/account_payment_order_notification.pot @@ -39,7 +39,7 @@ msgid "" " % for payment_line in object.payment_line_ids:\n" " \n" " ${payment_line.communication}\n" -" ${payment_line.date}\n" +" ${format_date(payment_line.date)}\n" " ${format_amount(payment_line.amount_currency, payment_line.currency_id)}\n" " \n" " % endfor\n" From 6d6a0eeb140875fce4a351c0a956231073bf671f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Tue, 28 Feb 2023 11:28:38 +0100 Subject: [PATCH 12/15] [IMP] account_payment_order_notification: Set format_date() to show date from template record TT40795 --- account_payment_order_notification/data/mail_template_data.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/account_payment_order_notification/data/mail_template_data.xml b/account_payment_order_notification/data/mail_template_data.xml index afb49bde0..148e6a376 100644 --- a/account_payment_order_notification/data/mail_template_data.xml +++ b/account_payment_order_notification/data/mail_template_data.xml @@ -38,7 +38,7 @@ % else: ${payment_line.communication} % endif - ${payment_line.date} + ${format_date(payment_line.date)} ${format_amount(payment_line.amount_currency, payment_line.currency_id)} % endfor From f9d2a5cfa8a04208f0fd69d64737bdbb4dcadfbf Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Tue, 28 Feb 2023 11:10:36 +0000 Subject: [PATCH 13/15] account_payment_order_notification 14.0.1.5.0 --- .../__manifest__.py | 2 +- account_payment_order_notification/i18n/es.po | 131 ++++++++++++------ 2 files changed, 90 insertions(+), 43 deletions(-) diff --git a/account_payment_order_notification/__manifest__.py b/account_payment_order_notification/__manifest__.py index 232a4e8f5..ce0632a48 100644 --- a/account_payment_order_notification/__manifest__.py +++ b/account_payment_order_notification/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { "name": "Account Payment Order Notification", - "version": "14.0.1.4.0", + "version": "14.0.1.5.0", "category": "Banking addons", "website": "https://github.com/OCA/bank-payment", "author": "Tecnativa, Odoo Community Association (OCA)", diff --git a/account_payment_order_notification/i18n/es.po b/account_payment_order_notification/i18n/es.po index 2e4d6d845..e2d7aa86f 100644 --- a/account_payment_order_notification/i18n/es.po +++ b/account_payment_order_notification/i18n/es.po @@ -50,7 +50,7 @@ msgid "" " % else:\n" " ${payment_line.communication}\n" " % endif\n" -" ${payment_line.date}\n" +" ${format_date(payment_line.date)}\n" " ${format_amount(payment_line.amount_currency, " "payment_line.currency_id)}\n" " \n" @@ -61,47 +61,6 @@ msgid "" "\n" " " msgstr "" -"\n" -"
\n" -"

Hola ${object.partner_id.name or ''},

\n" -" % if object.order_id.payment_type == 'inbound':\n" -"

Se ha procesado y enviado al banco una orden de débito que " -"incluye al menos una de sus facturas.

\n" -" % else:\n" -"

Se ha procesado y enviado al banco una orden de pago que incluye " -"al menos una de sus facturas.

\n" -" % endif\n" -"

Incluye las siguientes transacciones:

\n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" % for payment_line in object.payment_line_ids:\n" -" \n" -" % if payment_line.move_line_id.move_id.move_type in " -"(\"in_invoice\", \"in_refund\") and payment_line.move_line_id.move_id.ref:\n" -" \n" -" % else:\n" -" \n" -" % endif\n" -" \n" -" \n" -" \n" -" % endfor\n" -" \n" -"
NúmeroFechaImporte
${payment_line.move_line_id.move_id.ref}${payment_line.communication}${payment_line.date}${format_amount(payment_line.amount_currency, " -"payment_line.currency_id)}
\n" -"

No dude en ponerse en contacto con nosotros si tiene alguna pregunta." -"

\n" -"
\n" -" " #. module: account_payment_order_notification #: model:mail.template,subject:account_payment_order_notification.email_account_payment_order_notification @@ -388,3 +347,91 @@ msgstr "" #: model:ir.model,name:account_payment_order_notification.model_wizard_account_payment_order_notification_line msgid "Wizard Account Payment Order Notification Line" msgstr "" + +#~ msgid "" +#~ "\n" +#~ "
\n" +#~ "

Hello ${object.partner_id.name or ''},

\n" +#~ " % if object.order_id.payment_type == 'inbound':\n" +#~ "

A debit order including at least one of your invoices has been " +#~ "processed and sent to the bank.

\n" +#~ " % else:\n" +#~ "

A payment order including at least one of your invoices has " +#~ "been processed and sent to the bank.

\n" +#~ " % endif\n" +#~ "

It includes the following transactions:

\n" +#~ " \n" +#~ " \n" +#~ " \n" +#~ " \n" +#~ " \n" +#~ " \n" +#~ " \n" +#~ " \n" +#~ " \n" +#~ " % for payment_line in object.payment_line_ids:\n" +#~ " \n" +#~ " % if payment_line.move_line_id.move_id.move_type in " +#~ "(\"in_invoice\", \"in_refund\") and payment_line.move_line_id.move_id." +#~ "ref:\n" +#~ " \n" +#~ " % else:\n" +#~ " \n" +#~ " % endif\n" +#~ " \n" +#~ " \n" +#~ " \n" +#~ " % endfor\n" +#~ " \n" +#~ "
NumberDateAmount
${payment_line.move_line_id.move_id.ref}${payment_line.communication}${payment_line.date}${format_amount(payment_line.amount_currency, " +#~ "payment_line.currency_id)}
\n" +#~ "

Do not hesitate to contact us if you have any questions.

\n" +#~ "
\n" +#~ " " +#~ msgstr "" +#~ "\n" +#~ "
\n" +#~ "

Hola ${object.partner_id.name or ''},

\n" +#~ " % if object.order_id.payment_type == 'inbound':\n" +#~ "

Se ha procesado y enviado al banco una orden de débito que " +#~ "incluye al menos una de sus facturas.

\n" +#~ " % else:\n" +#~ "

Se ha procesado y enviado al banco una orden de pago que " +#~ "incluye al menos una de sus facturas.

\n" +#~ " % endif\n" +#~ "

Incluye las siguientes transacciones:

\n" +#~ " \n" +#~ " \n" +#~ " \n" +#~ " \n" +#~ " \n" +#~ " \n" +#~ " \n" +#~ " \n" +#~ " \n" +#~ " % for payment_line in object.payment_line_ids:\n" +#~ " \n" +#~ " % if payment_line.move_line_id.move_id.move_type in " +#~ "(\"in_invoice\", \"in_refund\") and payment_line.move_line_id.move_id." +#~ "ref:\n" +#~ " \n" +#~ " % else:\n" +#~ " \n" +#~ " % endif\n" +#~ " \n" +#~ " \n" +#~ " \n" +#~ " % endfor\n" +#~ " \n" +#~ "
NúmeroFechaImporte
${payment_line.move_line_id.move_id.ref}${payment_line.communication}${payment_line.date}${format_amount(payment_line.amount_currency, " +#~ "payment_line.currency_id)}
\n" +#~ "

No dude en ponerse en contacto con nosotros si tiene alguna " +#~ "pregunta.

\n" +#~ "
\n" +#~ " " From 674f9fdeb05b181b4188d927e2e39b6f509e1e02 Mon Sep 17 00:00:00 2001 From: "Yadier A. De Quesada" Date: Wed, 7 Jun 2023 23:18:36 -0400 Subject: [PATCH 14/15] [IMP] account_payment_order_notification: pre-commit stuff --- .../odoo/addons/account_payment_order_notification | 1 + setup/account_payment_order_notification/setup.py | 6 ++++++ 2 files changed, 7 insertions(+) create mode 120000 setup/account_payment_order_notification/odoo/addons/account_payment_order_notification create mode 100644 setup/account_payment_order_notification/setup.py diff --git a/setup/account_payment_order_notification/odoo/addons/account_payment_order_notification b/setup/account_payment_order_notification/odoo/addons/account_payment_order_notification new file mode 120000 index 000000000..5906a97bf --- /dev/null +++ b/setup/account_payment_order_notification/odoo/addons/account_payment_order_notification @@ -0,0 +1 @@ +../../../../account_payment_order_notification \ No newline at end of file diff --git a/setup/account_payment_order_notification/setup.py b/setup/account_payment_order_notification/setup.py new file mode 100644 index 000000000..28c57bb64 --- /dev/null +++ b/setup/account_payment_order_notification/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) From 48bb22b5f2ac9fad4b9a7ce3d54a02430835254f Mon Sep 17 00:00:00 2001 From: "Yadier A. De Quesada" Date: Wed, 7 Jun 2023 23:30:03 -0400 Subject: [PATCH 15/15] [MIG] account_payment_order_notification: Migration to 16.0 --- .../__manifest__.py | 2 +- .../data/mail_template_data.xml | 110 +++++++++++------- account_payment_order_notification/i18n/es.po | 44 ++++++- ...test_account_payment_order_notification.py | 4 +- ...zard_account_payment_order_notification.py | 2 +- ...count_payment_order_notification_views.xml | 4 +- 6 files changed, 118 insertions(+), 48 deletions(-) diff --git a/account_payment_order_notification/__manifest__.py b/account_payment_order_notification/__manifest__.py index ce0632a48..abc062139 100644 --- a/account_payment_order_notification/__manifest__.py +++ b/account_payment_order_notification/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { "name": "Account Payment Order Notification", - "version": "14.0.1.5.0", + "version": "16.0.1.0.0", "category": "Banking addons", "website": "https://github.com/OCA/bank-payment", "author": "Tecnativa, Odoo Community Association (OCA)", diff --git a/account_payment_order_notification/data/mail_template_data.xml b/account_payment_order_notification/data/mail_template_data.xml index 148e6a376..d43cf8c8d 100644 --- a/account_payment_order_notification/data/mail_template_data.xml +++ b/account_payment_order_notification/data/mail_template_data.xml @@ -6,48 +6,78 @@ name="model_id" ref="account_payment_order_notification.model_account_payment_order_notification" /> - ${user.email_formatted |safe} - ${object.partner_id.id} + {{ object.company_id.email_formatted or user.email_formatted }} + {{ object.partner_id.id }} ${object.company_id.name} Payment Order (Ref ${object.order_id.name or 'n/a'}) - -

Hello ${object.partner_id.name or ''},

- % if object.order_id.payment_type == 'inbound': -

A debit order including at least one of your invoices has been processed and sent to the bank.

- % else: -

A payment order including at least one of your invoices has been processed and sent to the bank.

- % endif -

It includes the following transactions:

- - - - - - - - - - % for payment_line in object.payment_line_ids: - - % if payment_line.move_line_id.move_id.move_type in ("in_invoice", "in_refund") and payment_line.move_line_id.move_id.ref: - - % else: - - % endif - - - - % endfor - -
NumberDateAmount
${payment_line.move_line_id.move_id.ref}${payment_line.communication}${format_date(payment_line.date)}${format_amount(payment_line.amount_currency, payment_line.currency_id)}
-

Do not hesitate to contact us if you have any questions.

- - ]]>
- ${object.partner_id.lang} + >{{ object.company_id.name }} Payment Order (Ref {{ object.order_id.name or 'n/a' }})
+ +
+

Hello Brandon Freeman,

+ +

A debit order including at least one of your invoices has been processed and + sent to the bank.

+
+ +

A payment order including at least one of your invoices has been processed + and sent to the bank.

+
+

It includes the following transactions:

+ + + + + + + + + + + + + + + + + +
NumberDateAmount
+ + PY000 + + + Email + + + + + $ + 1000 +
+

Do not hesitate to contact us if you have any questions.

+
+
+ {{object.partner_id.lang}} diff --git a/account_payment_order_notification/i18n/es.po b/account_payment_order_notification/i18n/es.po index e2d7aa86f..e500bb532 100644 --- a/account_payment_order_notification/i18n/es.po +++ b/account_payment_order_notification/i18n/es.po @@ -61,6 +61,46 @@ msgid "" "\n" " " msgstr "" +"\n" +"
\n" +"

Hello ${object.partner_id.name or ''},

\n" +" % if object.order_id.payment_type == 'inbound':\n" +"

Una orden de débito que incluye al menos una de sus facturas ha sido" +"procesada y enviada al banco.

\n" +" % else:\n" +"

Una orden de pago que incluye al menos una de sus facturas ha sido " +"procesada y enviada al banco..

\n" +" % endif\n" +"

Incluye las siguientes transacciones:

\n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" % for payment_line in object.payment_line_ids:\n" +" \n" +" % if payment_line.move_line_id.move_id.move_type in " +"(\"in_invoice\", \"in_refund\") and payment_line.move_line_id.move_id.ref:\n" +" \n" +" % else:\n" +" \n" +" % endif\n" +" \n" +" \n" +" \n" +" % endfor\n" +" \n" +"
NúmeroFechaCantidad
${payment_line.move_line_id.move_id.ref}${payment_line.communication}${format_date(payment_line.date)}${format_amount(payment_line.amount_currency, " +"payment_line.currency_id)}
\n" +"

No dude en ponerse en contacto con nosotros si tiene alguna pregunta.

\n" +"
\n" +" " #. module: account_payment_order_notification #: model:mail.template,subject:account_payment_order_notification.email_account_payment_order_notification @@ -341,12 +381,12 @@ msgstr "Historial de comunicación del sitio web" #. module: account_payment_order_notification #: model:ir.model,name:account_payment_order_notification.model_wizard_account_payment_order_notification msgid "Wizard Account Payment Order Notification" -msgstr "" +msgstr "Ventana de notificación de orden de pago de cuenta" #. module: account_payment_order_notification #: model:ir.model,name:account_payment_order_notification.model_wizard_account_payment_order_notification_line msgid "Wizard Account Payment Order Notification Line" -msgstr "" +msgstr "Ventana de notificación para línea de orden de pago" #~ msgid "" #~ "\n" diff --git a/account_payment_order_notification/tests/test_account_payment_order_notification.py b/account_payment_order_notification/tests/test_account_payment_order_notification.py index 2ee102552..43dec6678 100644 --- a/account_payment_order_notification/tests/test_account_payment_order_notification.py +++ b/account_payment_order_notification/tests/test_account_payment_order_notification.py @@ -1,9 +1,9 @@ # Copyright 2022 Tecnativa - Víctor Martínez # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo.tests import Form, common +from odoo.tests import Form, TransactionCase -class TestAccountPaymentOrderNotification(common.SavepointCase): +class TestAccountPaymentOrderNotification(TransactionCase): @classmethod def setUpClass(cls): super().setUpClass() diff --git a/account_payment_order_notification/wizard/wizard_account_payment_order_notification.py b/account_payment_order_notification/wizard/wizard_account_payment_order_notification.py index d87eda53f..c3acf7752 100644 --- a/account_payment_order_notification/wizard/wizard_account_payment_order_notification.py +++ b/account_payment_order_notification/wizard/wizard_account_payment_order_notification.py @@ -89,5 +89,5 @@ class WizardAccountPaymentOrderNotificationLine(models.TransientModel): partner_id = fields.Many2one( comodel_name="res.partner", required=True, string="Partner", readonly=True ) - email = fields.Char(string="Email") + email = fields.Char() to_send = fields.Boolean(string="To send") diff --git a/account_payment_order_notification/wizard/wizard_account_payment_order_notification_views.xml b/account_payment_order_notification/wizard/wizard_account_payment_order_notification_views.xml index 9dda850c1..6598ebc4d 100644 --- a/account_payment_order_notification/wizard/wizard_account_payment_order_notification_views.xml +++ b/account_payment_order_notification/wizard/wizard_account_payment_order_notification_views.xml @@ -11,8 +11,8 @@ - - + +