Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions web_sale_purchase/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from . import models
from . import controllers
13 changes: 13 additions & 0 deletions web_sale_purchase/__manifest__.py
Original file line number Diff line number Diff line change
@@ -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",
}
1 change: 1 addition & 0 deletions web_sale_purchase/controllers/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import auth
36 changes: 36 additions & 0 deletions web_sale_purchase/controllers/auth.py
Original file line number Diff line number Diff line change
@@ -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})
1 change: 1 addition & 0 deletions web_sale_purchase/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import res_config_settings
32 changes: 32 additions & 0 deletions web_sale_purchase/models/res_config_settings.py
Original file line number Diff line number Diff line change
@@ -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"})
12 changes: 12 additions & 0 deletions web_sale_purchase/views/auth_signup_web_sale_purchase_view.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="auth_signup.login" inherit_id="auth_signup.fields" name="Sign up">
<xpath expr="//label[@for='password']" position="before">
<label for="user_type" class="form-label">Role</label>
<select class="form-select mb-3 field-user_type" required="required">
<option value="buyer">Buyer</option>
<option value="seller">Seller</option>
</select>
</xpath>
</template>
</odoo>
15 changes: 15 additions & 0 deletions web_sale_purchase/views/res_config_settings_views.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="res_config_settings_view_form" model="ir.ui.view">
<field name="name">res.config.settings.view.form.inherit.website_sale</field>
<field name="model">res.config.settings</field>
<field name="inherit_id" ref="website_sale.res_config_settings_view_form"/>
<field name="arch" type="xml">
<xpath expr="//block[@id='website_payment_block']" position="inside">
<setting string="Marketplace Configuration" help="Manage multi-vendor settings">
<field name="is_marketplace_enabled"/>
</setting>
</xpath>
</field>
</record>
</odoo>