From 551d8e23ed07d2278c0fffa75d08ccacd0a5d638 Mon Sep 17 00:00:00 2001 From: mekav-odoo Date: Thu, 12 Feb 2026 11:26:56 +0530 Subject: [PATCH 1/2] [ADD] purchase: add global discount wizard Implement a global discount feature for Purchase Orders that allows users to apply a percentage or fixed amount discount across all order lines via a wizard. - Add a 'Discount' button on the purchase order form view, positioned above the subtotal section. - Create a transient model 'purchase.discount.wizard' to handle the discount calculation logic. - Update purchase order lines with the calculated discount when the wizard is confirmed. --- purchase_discount/__init__.py | 2 + purchase_discount/__manifest__.py | 18 ++++++ purchase_discount/models/__init__.py | 1 + purchase_discount/models/purchase_order.py | 15 +++++ .../security/ir.model.access.csv | 2 + .../views/purchase_order_view.xml | 13 ++++ purchase_discount/wizard/__init__.py | 1 + .../wizard/purchase_order_discount.py | 61 +++++++++++++++++++ .../wizard/purchase_order_discount_view.xml | 23 +++++++ 9 files changed, 136 insertions(+) create mode 100644 purchase_discount/__init__.py create mode 100644 purchase_discount/__manifest__.py create mode 100644 purchase_discount/models/__init__.py create mode 100644 purchase_discount/models/purchase_order.py create mode 100644 purchase_discount/security/ir.model.access.csv create mode 100644 purchase_discount/views/purchase_order_view.xml create mode 100644 purchase_discount/wizard/__init__.py create mode 100644 purchase_discount/wizard/purchase_order_discount.py create mode 100644 purchase_discount/wizard/purchase_order_discount_view.xml diff --git a/purchase_discount/__init__.py b/purchase_discount/__init__.py new file mode 100644 index 00000000000..9b4296142f4 --- /dev/null +++ b/purchase_discount/__init__.py @@ -0,0 +1,2 @@ +from . import models +from . import wizard diff --git a/purchase_discount/__manifest__.py b/purchase_discount/__manifest__.py new file mode 100644 index 00000000000..7e603ce3315 --- /dev/null +++ b/purchase_discount/__manifest__.py @@ -0,0 +1,18 @@ +{ + 'name': 'purchase_dicount', + 'description': "Add function for disscount", + 'author': "meet kavathiya", + 'website': "https://www.odoo.com/", + 'category': "Real-estate", + 'version': "0.1", + 'application': True, + 'installable': True, + 'depends': ['purchase'], + 'data': [ + 'security/ir.model.access.csv', + 'views/purchase_order_view.xml', + 'wizard/purchase_order_discount_view.xml' + ], + 'assets': {}, + 'license': 'LGPL-3', +} \ No newline at end of file diff --git a/purchase_discount/models/__init__.py b/purchase_discount/models/__init__.py new file mode 100644 index 00000000000..9f03530643d --- /dev/null +++ b/purchase_discount/models/__init__.py @@ -0,0 +1 @@ +from . import purchase_order diff --git a/purchase_discount/models/purchase_order.py b/purchase_discount/models/purchase_order.py new file mode 100644 index 00000000000..dc2d774dc1a --- /dev/null +++ b/purchase_discount/models/purchase_order.py @@ -0,0 +1,15 @@ +from odoo import models + + +class InheritedPurchaseOrder(models.Model): + _inherit = 'purchase.order' + + def action_open_discount_wizard(self): + self.ensure_one() + return { + 'name': "Discount", + 'type': 'ir.actions.act_window', + 'res_model': 'purchase.order.discount', + 'view_mode': 'form', + 'target': 'new', + } diff --git a/purchase_discount/security/ir.model.access.csv b/purchase_discount/security/ir.model.access.csv new file mode 100644 index 00000000000..ef7a38f3312 --- /dev/null +++ b/purchase_discount/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_purchase_order_discount,access_purchase_order_discount,model_purchase_order_discount,base.group_user,1,1,1,1 diff --git a/purchase_discount/views/purchase_order_view.xml b/purchase_discount/views/purchase_order_view.xml new file mode 100644 index 00000000000..e7101b31286 --- /dev/null +++ b/purchase_discount/views/purchase_order_view.xml @@ -0,0 +1,13 @@ + + + + purchase.view.form.inherit.purchase.discount + purchase.order + + + +