From a7c8e6661254c4815e381fc11a2318cfdddb0e75 Mon Sep 17 00:00:00 2001 From: yasp-odoo Date: Wed, 25 Sep 2024 18:46:14 +0530 Subject: [PATCH] [ADD] warranty: implemented Warranty Functionality to Sales and Inventory After this commit: - Added warranty configuration model and settings. - Extended sale order and sale order line models to include warranty fields. - Implemented warranty wizard for adding warranties to sale orders. - Created views for managing warranty settings and applying warranties to products. - Added security rules to control access to warranty features. --- warranty.zip | Bin 0 -> 14695 bytes warranty/__init__.py | 2 + warranty/__manifest__.py | 25 +++++++++ warranty/models/__init__.py | 3 + warranty/models/product_template.py | 7 +++ warranty/models/sale_order_line.py | 14 +++++ warranty/models/warranty_config.py | 11 ++++ warranty/security/ir.model.access.csv | 4 ++ warranty/views/menu_views.xml | 6 ++ warranty/views/product_views.xml | 14 +++++ warranty/views/sale_order_views.xml | 12 ++++ warranty/views/warranty_config_views.xml | 21 +++++++ warranty/wizard/__init__.py | 1 + warranty/wizard/warranty_wizard.py | 64 ++++++++++++++++++++++ warranty/wizard/warranty_wizard_views.xml | 30 ++++++++++ warranty_1.zip | Bin 0 -> 13030 bytes 16 files changed, 214 insertions(+) create mode 100644 warranty.zip create mode 100644 warranty/__init__.py create mode 100644 warranty/__manifest__.py create mode 100644 warranty/models/__init__.py create mode 100644 warranty/models/product_template.py create mode 100644 warranty/models/sale_order_line.py create mode 100644 warranty/models/warranty_config.py create mode 100644 warranty/security/ir.model.access.csv create mode 100644 warranty/views/menu_views.xml create mode 100644 warranty/views/product_views.xml create mode 100644 warranty/views/sale_order_views.xml create mode 100644 warranty/views/warranty_config_views.xml create mode 100644 warranty/wizard/__init__.py create mode 100644 warranty/wizard/warranty_wizard.py create mode 100644 warranty/wizard/warranty_wizard_views.xml create mode 100644 warranty_1.zip diff --git a/warranty.zip b/warranty.zip new file mode 100644 index 0000000000000000000000000000000000000000..c7e09046a711267ce14b525dd23e21103069e02f GIT binary patch literal 14695 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 literal 0 HcmV?d00001 diff --git a/warranty/__init__.py b/warranty/__init__.py new file mode 100644 index 0000000000..9b4296142f --- /dev/null +++ b/warranty/__init__.py @@ -0,0 +1,2 @@ +from . import models +from . import wizard diff --git a/warranty/__manifest__.py b/warranty/__manifest__.py new file mode 100644 index 0000000000..3a694f5065 --- /dev/null +++ b/warranty/__manifest__.py @@ -0,0 +1,25 @@ +{ + 'name': 'Warranty', + 'summary': 'Warranty Configuration Module', + 'description': 'Module for managing warranty configurations and related functionalities.', + 'category': 'Sales', + 'version': '1.0', + 'author': 'yasp', + 'license': 'LGPL-3', + 'depends': [ + 'base', + 'sale_subscription', + 'stock', + 'website_sale', + ], + 'data': [ + 'security/ir.model.access.csv', + 'wizard/warranty_wizard_views.xml', + 'views/warranty_config_views.xml', + 'views/product_views.xml', + 'views/sale_order_views.xml', + 'views/menu_views.xml', + ], + 'installable': True, + 'application': True, +} diff --git a/warranty/models/__init__.py b/warranty/models/__init__.py new file mode 100644 index 0000000000..e0f3ac6457 --- /dev/null +++ b/warranty/models/__init__.py @@ -0,0 +1,3 @@ +from . import warranty_config +from . import product_template +from . import sale_order_line diff --git a/warranty/models/product_template.py b/warranty/models/product_template.py new file mode 100644 index 0000000000..6b3a7d057d --- /dev/null +++ b/warranty/models/product_template.py @@ -0,0 +1,7 @@ +from odoo import models, fields + + +class ProductTemplate(models.Model): + _inherit = 'product.template' + + is_warranty_available = fields.Boolean(string='Warranty Available', default=False) diff --git a/warranty/models/sale_order_line.py b/warranty/models/sale_order_line.py new file mode 100644 index 0000000000..a4c764de37 --- /dev/null +++ b/warranty/models/sale_order_line.py @@ -0,0 +1,14 @@ +from odoo import models, fields + + +class SaleOrderLine(models.Model): + _inherit = "sale.order.line" + + warranty_product_id = fields.Many2one("sale.order.line", string="Warranty Product") + + def unlink(self): + for line in self: + warranty_product_id = self.search([("warranty_product_id", "=", line.id)]) + if warranty_product_id: + warranty_product_id.unlink() + return super().unlink() diff --git a/warranty/models/warranty_config.py b/warranty/models/warranty_config.py new file mode 100644 index 0000000000..c90e7f1d8d --- /dev/null +++ b/warranty/models/warranty_config.py @@ -0,0 +1,11 @@ +from odoo import fields, models + + +class WarrantyConfiguration(models.Model): + _name = 'warranty.config' + _description = 'Warranty Configuration' + + name = fields.Char(string='Warranty Name', required=True) + product_id = fields.Many2one('product.product', string='Product', required=True) + percentage = fields.Float(string='Percentage (%)', required=True) + years = fields.Integer(string='Years', required=True) diff --git a/warranty/security/ir.model.access.csv b/warranty/security/ir.model.access.csv new file mode 100644 index 0000000000..6683f3f032 --- /dev/null +++ b/warranty/security/ir.model.access.csv @@ -0,0 +1,4 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_warranty_config,warranty.config,model_warranty_config,,1,1,1,1 +access_add_warranty,access_add_warranty,warranty.model_add_warranty,base.group_user,1,1,1,1 +access_add_warranty_line,access_add_warranty_line,warranty.model_add_warranty_line,base.group_user,1,1,1,1 diff --git a/warranty/views/menu_views.xml b/warranty/views/menu_views.xml new file mode 100644 index 0000000000..dfb0de56f8 --- /dev/null +++ b/warranty/views/menu_views.xml @@ -0,0 +1,6 @@ + + + + + diff --git a/warranty/views/product_views.xml b/warranty/views/product_views.xml new file mode 100644 index 0000000000..3c4712ce11 --- /dev/null +++ b/warranty/views/product_views.xml @@ -0,0 +1,14 @@ + + + product.form.inherit.warranty + product.template + + + + + + + + + + diff --git a/warranty/views/sale_order_views.xml b/warranty/views/sale_order_views.xml new file mode 100644 index 0000000000..790fc1cf0d --- /dev/null +++ b/warranty/views/sale_order_views.xml @@ -0,0 +1,12 @@ + + + sale.order.form + sale.order + + + +