diff --git a/web_sale_purchase/__init__.py b/web_sale_purchase/__init__.py new file mode 100644 index 00000000000..f7209b17100 --- /dev/null +++ b/web_sale_purchase/__init__.py @@ -0,0 +1,2 @@ +from . import models +from . import controllers diff --git a/web_sale_purchase/__manifest__.py b/web_sale_purchase/__manifest__.py new file mode 100644 index 00000000000..5ce0f5df6c6 --- /dev/null +++ b/web_sale_purchase/__manifest__.py @@ -0,0 +1,13 @@ +{ + "name": "ecommerce purchase", + "category": "Website", + "depends": ["website_sale", "sale", "website", "auth_signup"], + "data": [ + "views/res_config_settings_views.xml", + "views/auth_signup_web_sale_purchase_view.xml", + ], + "installable": True, + "application": True, + "author": "RADHR", + "license": "LGPL-3", +} diff --git a/web_sale_purchase/controllers/__init__.py b/web_sale_purchase/controllers/__init__.py new file mode 100644 index 00000000000..25d9ef7490a --- /dev/null +++ b/web_sale_purchase/controllers/__init__.py @@ -0,0 +1 @@ +from . import auth diff --git a/web_sale_purchase/controllers/auth.py b/web_sale_purchase/controllers/auth.py new file mode 100644 index 00000000000..2f5708e94de --- /dev/null +++ b/web_sale_purchase/controllers/auth.py @@ -0,0 +1,36 @@ +from odoo.addons.auth_signup.controllers.main import AuthSignupHome +from odoo import http +from odoo.http import request +from odoo.exceptions import UserError + + +class MarketPlaceSignup(AuthSignupHome): + @http.route() + def web_auth_signup(self, *args, **kw): + is_marketplace_enabled = ( + request.env["ir.config_parameter"] + .sudo() + .get_param("website_sale.is_marketplace_enabled") + ) + + user_role = kw.get("user_role") + + if request.httprequest.method == "POST": + if not is_marketplace_enabled: + kw["error"] = ( + "The marketplace feature is currently disabled. Please contact the administrator." + ) + return request.render("auth_signup.signup", kw) + + response = super(MarketPlaceSignup, self).web_auth_signup(*args, **kw) + return response + + def do_signup(self, qcontext): + super(MarketPlaceSignup, self).do_signup(qcontext) + + user_role = qcontext.get("user_role") + + if user_role == "vendor": + current_user = request.env.user + if current_user and current_user.partner_id: + current_user.partner_id.sudo().write({"is_seller": True}) diff --git a/web_sale_purchase/models/__init__.py b/web_sale_purchase/models/__init__.py new file mode 100644 index 00000000000..0deb68c4680 --- /dev/null +++ b/web_sale_purchase/models/__init__.py @@ -0,0 +1 @@ +from . import res_config_settings diff --git a/web_sale_purchase/models/res_config_settings.py b/web_sale_purchase/models/res_config_settings.py new file mode 100644 index 00000000000..bfaca76c470 --- /dev/null +++ b/web_sale_purchase/models/res_config_settings.py @@ -0,0 +1,32 @@ +from odoo import fields, models + + +class ResConfigSettings(models.TransientModel): + _inherit = "res.config.settings" + + is_marketplace_enabled = fields.Boolean( + string="Enable Multi-Vendor Marketplace", + config_parameter="website_sale.is_marketplace_enabled", + default=False, + help="Enable this option to allow multiple vendors to sell their products on your website. Each vendor will have their own shop and product listings, and customers can purchase from multiple vendors in a single order.", + ) + + def get_values(self): + res = super(ResConfigSettings, self).get_values() + + params = self.env["ir.config_parameter"].sudo() + res.update( + is_marketplace_enabled=params.get_param( + "website_sale.is_marketplace_enabled", default=False + ) + ) + + return res + + def set_values(self): + super(ResConfigSettings, self).set_values() + + if self.is_marketplace_enabled: + website = self.env["website"].sudo().search([]) + if website.auth_signup_uninvited != "b2c": + website.sudo().write({"auth_signup_uninvited": "b2c"}) diff --git a/web_sale_purchase/views/auth_signup_web_sale_purchase_view.xml b/web_sale_purchase/views/auth_signup_web_sale_purchase_view.xml new file mode 100644 index 00000000000..45982eb4a82 --- /dev/null +++ b/web_sale_purchase/views/auth_signup_web_sale_purchase_view.xml @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/web_sale_purchase/views/res_config_settings_views.xml b/web_sale_purchase/views/res_config_settings_views.xml new file mode 100644 index 00000000000..33b345fdac3 --- /dev/null +++ b/web_sale_purchase/views/res_config_settings_views.xml @@ -0,0 +1,15 @@ + + + + res.config.settings.view.form.inherit.website_sale + res.config.settings + + + + + + + + + + \ No newline at end of file