diff --git a/event_sale_update_qty/README.rst b/event_sale_update_qty/README.rst new file mode 100644 index 000000000..2f476b2d7 --- /dev/null +++ b/event_sale_update_qty/README.rst @@ -0,0 +1,103 @@ +===================== +Event Sale Update Qty +===================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:36881c01853b670ba930e05e772258702f94e0a4f25ccceea8ce95094f1dbf2c + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fevent-lightgray.png?logo=github + :target: https://github.com/OCA/event/tree/17.0/event_sale_update_qty + :alt: OCA/event +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/event-17-0/event-17-0-event_sale_update_qty + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/event&target_branch=17.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module extends the functionality of *event_sale* to better manage +event participants after the sale confirmation. Allow users to modify +the number of attendees for event-related sale order lines after +confirmation. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +1. Create a quotation and add one or more products that correspond to + event tickets. +2. Confirm the quotation. +3. A button will now appear in the order lines that allows you to edit + the quantity. +4. Click on the button for any line and edit the quantity to add or + remove records. +5. Once the quantity has been edited, the event records associated with + the order will have been modified. + +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 to smash 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 `__: + + - Pedro Baeza + - Pilar Vargas + +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-pilarvargas-tecnativa| image:: https://github.com/pilarvargas-tecnativa.png?size=40px + :target: https://github.com/pilarvargas-tecnativa + :alt: pilarvargas-tecnativa + +Current `maintainer `__: + +|maintainer-pilarvargas-tecnativa| + +This module is part of the `OCA/event `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/event_sale_update_qty/__init__.py b/event_sale_update_qty/__init__.py new file mode 100644 index 000000000..aee8895e7 --- /dev/null +++ b/event_sale_update_qty/__init__.py @@ -0,0 +1,2 @@ +from . import models +from . import wizards diff --git a/event_sale_update_qty/__manifest__.py b/event_sale_update_qty/__manifest__.py new file mode 100644 index 000000000..6d19fbc24 --- /dev/null +++ b/event_sale_update_qty/__manifest__.py @@ -0,0 +1,22 @@ +# Copyright 2025 Tecnativa - Pilar Vargas +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +{ + "name": "Event Sale Update Qty", + "summary": "Update event registrations from confirmed sale order lines.", + "version": "17.0.1.0.0", + "development_status": "Beta", + "category": "Marketing", + "website": "https://github.com/OCA/event", + "author": "Tecnativa, Odoo Community Association (OCA)", + "maintainers": ["pilarvargas-tecnativa"], + "license": "AGPL-3", + "application": False, + "installable": True, + "depends": ["event_sale"], + "data": [ + "security/ir.model.access.csv", + "views/sale_order_view.xml", + "wizards/event_sale_update_qty_wizard.xml", + ], +} diff --git a/event_sale_update_qty/i18n/es.po b/event_sale_update_qty/i18n/es.po new file mode 100644 index 000000000..3741763c9 --- /dev/null +++ b/event_sale_update_qty/i18n/es.po @@ -0,0 +1,140 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * event_sale_update_qty +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-10-21 15:53+0000\n" +"PO-Revision-Date: 2025-10-21 17:56+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: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 3.4.2\n" + +#. module: event_sale_update_qty +#: model_terms:ir.ui.view,arch_db:event_sale_update_qty.view_event_sale_update_qty_wizard_form +msgid "Check those to remove" +msgstr "Marque los que desea eliminar" + +#. module: event_sale_update_qty +#: model:ir.model.fields,field_description:event_sale_update_qty.field_event_sale_update_qty_wizard__registration_ids +#: model_terms:ir.ui.view,arch_db:event_sale_update_qty.view_event_sale_update_qty_wizard_form +msgid "Attendees" +msgstr "Asistentes" + +#. module: event_sale_update_qty +#: model_terms:ir.ui.view,arch_db:event_sale_update_qty.view_event_sale_update_qty_wizard_form +msgid "Cancel" +msgstr "Cancelar" + +#. module: event_sale_update_qty +#: model:ir.model.fields,help:event_sale_update_qty.field_event_sale_update_qty_wizard__event_id +msgid "" +"Choose an event and it will automatically create a registration for this " +"event." +msgstr "" + +#. module: event_sale_update_qty +#: model:ir.model.fields,help:event_sale_update_qty.field_event_sale_update_qty_wizard__ticket_id +msgid "" +"Choose an event ticket and it will automatically create a registration for " +"this event ticket." +msgstr "" + +#. module: event_sale_update_qty +#: model:ir.model.fields,field_description:event_sale_update_qty.field_event_sale_update_qty_wizard__create_uid +msgid "Created by" +msgstr "" + +#. module: event_sale_update_qty +#: model:ir.model.fields,field_description:event_sale_update_qty.field_event_sale_update_qty_wizard__create_date +msgid "Created on" +msgstr "" + +#. module: event_sale_update_qty +#: model:ir.model.fields,field_description:event_sale_update_qty.field_event_sale_update_qty_wizard__display_name +msgid "Display Name" +msgstr "" + +#. module: event_sale_update_qty +#: model:ir.model,name:event_sale_update_qty.model_registration_editor +msgid "Edit Attendee Details on Sales Confirmation" +msgstr "" + +#. module: event_sale_update_qty +#: model:ir.model.fields,field_description:event_sale_update_qty.field_event_sale_update_qty_wizard__event_id +msgid "Event" +msgstr "Evento" + +#. module: event_sale_update_qty +#: model:ir.model.fields,field_description:event_sale_update_qty.field_event_sale_update_qty_wizard__id +msgid "ID" +msgstr "" + +#. module: event_sale_update_qty +#: model:ir.model.fields,field_description:event_sale_update_qty.field_event_sale_update_qty_wizard__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: event_sale_update_qty +#: model:ir.model.fields,field_description:event_sale_update_qty.field_event_sale_update_qty_wizard__write_date +msgid "Last Updated on" +msgstr "" + +#. module: event_sale_update_qty +#: model_terms:ir.ui.view,arch_db:event_sale_update_qty.view_order_form +msgid "Modify attendees" +msgstr "Modificar asistentes" + +#. module: event_sale_update_qty +#: model:ir.model.fields,field_description:event_sale_update_qty.field_event_sale_update_qty_wizard__new_qty +msgid "New Quantity" +msgstr "Nueva cantidad" + +#. module: event_sale_update_qty +#: model:ir.model.fields,field_description:event_sale_update_qty.field_event_sale_update_qty_wizard__sale_order_line_id +msgid "Sale Order Line" +msgstr "" + +#. module: event_sale_update_qty +#: model:ir.model,name:event_sale_update_qty.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: event_sale_update_qty +#: model:ir.model.fields,field_description:event_sale_update_qty.field_event_sale_update_qty_wizard__show_registrations +msgid "Show Registrations" +msgstr "" + +#. module: event_sale_update_qty +#: model:ir.model.fields,field_description:event_sale_update_qty.field_event_sale_update_qty_wizard__ticket_id +msgid "Ticket" +msgstr "" + +#. module: event_sale_update_qty +#: model_terms:ir.ui.view,arch_db:event_sale_update_qty.view_event_sale_update_qty_wizard_form +msgid "Update" +msgstr "Actualizar" + +#. module: event_sale_update_qty +#: model_terms:ir.ui.view,arch_db:event_sale_update_qty.view_event_sale_update_qty_wizard_form +msgid "Update Attendee Quantity" +msgstr "Actualizar cantidad de asistentes" + +#. module: event_sale_update_qty +#: model:ir.model,name:event_sale_update_qty.model_event_sale_update_qty_wizard +msgid "Wizard to update event attendees quantity from sale order line" +msgstr "" + +#. module: event_sale_update_qty +#. odoo-python +#: code:addons/event_sale_update_qty/wizards/event_sale_update_qty_wizard.py:0 +#, python-format +msgid "You must select exactly %s attendee(s) to cancel." +msgstr "Debe seleccionar exactamente %s asistente(s) para cancelar." diff --git a/event_sale_update_qty/i18n/event_sale_update_qty.pot b/event_sale_update_qty/i18n/event_sale_update_qty.pot new file mode 100644 index 000000000..c16b7667b --- /dev/null +++ b/event_sale_update_qty/i18n/event_sale_update_qty.pot @@ -0,0 +1,138 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * event_sale_update_qty +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-10-21 15:53+0000\n" +"PO-Revision-Date: 2025-10-21 15:53+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: event_sale_update_qty +#: model_terms:ir.ui.view,arch_db:event_sale_update_qty.view_event_sale_update_qty_wizard_form +msgid "Check those to remove" +msgstr "" + +#. module: event_sale_update_qty +#: model:ir.model.fields,field_description:event_sale_update_qty.field_event_sale_update_qty_wizard__registration_ids +#: model_terms:ir.ui.view,arch_db:event_sale_update_qty.view_event_sale_update_qty_wizard_form +msgid "Attendees" +msgstr "" + +#. module: event_sale_update_qty +#: model_terms:ir.ui.view,arch_db:event_sale_update_qty.view_event_sale_update_qty_wizard_form +msgid "Cancel" +msgstr "" + +#. module: event_sale_update_qty +#: model:ir.model.fields,help:event_sale_update_qty.field_event_sale_update_qty_wizard__event_id +msgid "" +"Choose an event and it will automatically create a registration for this " +"event." +msgstr "" + +#. module: event_sale_update_qty +#: model:ir.model.fields,help:event_sale_update_qty.field_event_sale_update_qty_wizard__ticket_id +msgid "" +"Choose an event ticket and it will automatically create a registration for " +"this event ticket." +msgstr "" + +#. module: event_sale_update_qty +#: model:ir.model.fields,field_description:event_sale_update_qty.field_event_sale_update_qty_wizard__create_uid +msgid "Created by" +msgstr "" + +#. module: event_sale_update_qty +#: model:ir.model.fields,field_description:event_sale_update_qty.field_event_sale_update_qty_wizard__create_date +msgid "Created on" +msgstr "" + +#. module: event_sale_update_qty +#: model:ir.model.fields,field_description:event_sale_update_qty.field_event_sale_update_qty_wizard__display_name +msgid "Display Name" +msgstr "" + +#. module: event_sale_update_qty +#: model:ir.model,name:event_sale_update_qty.model_registration_editor +msgid "Edit Attendee Details on Sales Confirmation" +msgstr "" + +#. module: event_sale_update_qty +#: model:ir.model.fields,field_description:event_sale_update_qty.field_event_sale_update_qty_wizard__event_id +msgid "Event" +msgstr "" + +#. module: event_sale_update_qty +#: model:ir.model.fields,field_description:event_sale_update_qty.field_event_sale_update_qty_wizard__id +msgid "ID" +msgstr "" + +#. module: event_sale_update_qty +#: model:ir.model.fields,field_description:event_sale_update_qty.field_event_sale_update_qty_wizard__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: event_sale_update_qty +#: model:ir.model.fields,field_description:event_sale_update_qty.field_event_sale_update_qty_wizard__write_date +msgid "Last Updated on" +msgstr "" + +#. module: event_sale_update_qty +#: model_terms:ir.ui.view,arch_db:event_sale_update_qty.view_order_form +msgid "Modify attendees" +msgstr "" + +#. module: event_sale_update_qty +#: model:ir.model.fields,field_description:event_sale_update_qty.field_event_sale_update_qty_wizard__new_qty +msgid "New Quantity" +msgstr "" + +#. module: event_sale_update_qty +#: model:ir.model.fields,field_description:event_sale_update_qty.field_event_sale_update_qty_wizard__sale_order_line_id +msgid "Sale Order Line" +msgstr "" + +#. module: event_sale_update_qty +#: model:ir.model,name:event_sale_update_qty.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: event_sale_update_qty +#: model:ir.model.fields,field_description:event_sale_update_qty.field_event_sale_update_qty_wizard__show_registrations +msgid "Show Registrations" +msgstr "" + +#. module: event_sale_update_qty +#: model:ir.model.fields,field_description:event_sale_update_qty.field_event_sale_update_qty_wizard__ticket_id +msgid "Ticket" +msgstr "" + +#. module: event_sale_update_qty +#: model_terms:ir.ui.view,arch_db:event_sale_update_qty.view_event_sale_update_qty_wizard_form +msgid "Update" +msgstr "" + +#. module: event_sale_update_qty +#: model_terms:ir.ui.view,arch_db:event_sale_update_qty.view_event_sale_update_qty_wizard_form +msgid "Update Attendee Quantity" +msgstr "" + +#. module: event_sale_update_qty +#: model:ir.model,name:event_sale_update_qty.model_event_sale_update_qty_wizard +msgid "Wizard to update event attendees quantity from sale order line" +msgstr "" + +#. module: event_sale_update_qty +#. odoo-python +#: code:addons/event_sale_update_qty/wizards/event_sale_update_qty_wizard.py:0 +#, python-format +msgid "You must select exactly %s attendee(s) to cancel." +msgstr "" diff --git a/event_sale_update_qty/models/__init__.py b/event_sale_update_qty/models/__init__.py new file mode 100644 index 000000000..8eb9d1d40 --- /dev/null +++ b/event_sale_update_qty/models/__init__.py @@ -0,0 +1 @@ +from . import sale_order_line diff --git a/event_sale_update_qty/models/sale_order_line.py b/event_sale_update_qty/models/sale_order_line.py new file mode 100644 index 000000000..c083b021f --- /dev/null +++ b/event_sale_update_qty/models/sale_order_line.py @@ -0,0 +1,21 @@ +# Copyright 2025 Tecnativa - Pilar Vargas +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import models + + +class SaleOrderLine(models.Model): + _inherit = "sale.order.line" + + def action_update_event_qty(self): + self.ensure_one() + return { + "type": "ir.actions.act_window", + "res_model": "event.sale.update.qty.wizard", + "view_mode": "form", + "target": "new", + "context": { + "default_sale_order_line_id": self.id, + "default_new_qty": self.product_uom_qty, + }, + } diff --git a/event_sale_update_qty/pyproject.toml b/event_sale_update_qty/pyproject.toml new file mode 100644 index 000000000..4231d0ccc --- /dev/null +++ b/event_sale_update_qty/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/event_sale_update_qty/readme/CONTRIBUTORS.md b/event_sale_update_qty/readme/CONTRIBUTORS.md new file mode 100644 index 000000000..b5e97353c --- /dev/null +++ b/event_sale_update_qty/readme/CONTRIBUTORS.md @@ -0,0 +1,3 @@ +- [Tecnativa](https://www.tecnativa.com): + - Pedro Baeza + - Pilar Vargas diff --git a/event_sale_update_qty/readme/DESCRIPTION.md b/event_sale_update_qty/readme/DESCRIPTION.md new file mode 100644 index 000000000..23e21160e --- /dev/null +++ b/event_sale_update_qty/readme/DESCRIPTION.md @@ -0,0 +1,4 @@ +This module extends the functionality of *event_sale* to better manage +event participants after the sale confirmation. +Allow users to modify the number of attendees for event-related sale order lines +after confirmation. diff --git a/event_sale_update_qty/readme/USAGE.md b/event_sale_update_qty/readme/USAGE.md new file mode 100644 index 000000000..8aad95df3 --- /dev/null +++ b/event_sale_update_qty/readme/USAGE.md @@ -0,0 +1,6 @@ +1. Create a quotation and add one or more products that correspond to event tickets. +2. Confirm the quotation. +3. A button will now appear in the order lines that allows you to edit the quantity. +4. Click on the button for any line and edit the quantity to add or remove records. +5. Once the quantity has been edited, the event records associated with the order will + have been modified. diff --git a/event_sale_update_qty/security/ir.model.access.csv b/event_sale_update_qty/security/ir.model.access.csv new file mode 100644 index 000000000..a2e3f8764 --- /dev/null +++ b/event_sale_update_qty/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 +event_sale_update_qty.access_event_sale_update_qty_wizard,access_event_sale_update_qty_wizard,event_sale_update_qty.model_event_sale_update_qty_wizard,base.group_user,1,1,1,1 diff --git a/event_sale_update_qty/static/description/icon.png b/event_sale_update_qty/static/description/icon.png new file mode 100644 index 000000000..3a0328b51 Binary files /dev/null and b/event_sale_update_qty/static/description/icon.png differ diff --git a/event_sale_update_qty/static/description/index.html b/event_sale_update_qty/static/description/index.html new file mode 100644 index 000000000..35d36866e --- /dev/null +++ b/event_sale_update_qty/static/description/index.html @@ -0,0 +1,447 @@ + + + + + +Event Sale Update Qty + + + +
+

Event Sale Update Qty

+ + +

Beta License: AGPL-3 OCA/event Translate me on Weblate Try me on Runboat

+

This module extends the functionality of event_sale to better manage +event participants after the sale confirmation. Allow users to modify +the number of attendees for event-related sale order lines after +confirmation.

+

Table of contents

+ +
+

Usage

+
    +
  1. Create a quotation and add one or more products that correspond to +event tickets.
  2. +
  3. Confirm the quotation.
  4. +
  5. A button will now appear in the order lines that allows you to edit +the quantity.
  6. +
  7. Click on the button for any line and edit the quantity to add or +remove records.
  8. +
  9. Once the quantity has been edited, the event records associated with +the order will have been modified.
  10. +
+
+
+

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 to smash 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:
      +
    • Pedro Baeza
    • +
    • Pilar Vargas
    • +
    +
  • +
+
+
+

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:

+

pilarvargas-tecnativa

+

This module is part of the OCA/event project on GitHub.

+

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

+
+
+
+ + diff --git a/event_sale_update_qty/views/sale_order_view.xml b/event_sale_update_qty/views/sale_order_view.xml new file mode 100644 index 000000000..129ee4e3a --- /dev/null +++ b/event_sale_update_qty/views/sale_order_view.xml @@ -0,0 +1,24 @@ + + + + + sale.order + + + +