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
5 changes: 5 additions & 0 deletions .weblate.json
Original file line number Diff line number Diff line change
Expand Up @@ -326,6 +326,11 @@
"filemask": "marketing_agency/i18n/*.po",
"new_base": "marketing_agency/i18n/marketing_agency.pot"
},
{
"name": "marketplace",
"filemask": "marketplace/i18n/*.po",
"new_base": "marketplace/i18n/marketplace.pot"
},
{
"name": "members_club",
"filemask": "members_club/i18n/*.po",
Expand Down
48 changes: 48 additions & 0 deletions marketplace/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
{
'name': 'Marketplace',
'version': '1.0',
'category': 'Services',
'depends': [
'contacts',
'crm',
'hr',
'knowledge',
'project',
'sale_purchase',
'stock',
'web_studio',
'website',
'website_sale',
],
'data': [
'data/ir_attachment.xml',
'data/knowledge_article.xml',
'data/knowledge_article_favorite.xml',
'data/mail_message.xml',
'data/ir_model_fields.xml',
'data/res_config_settings.xml',
'data/res_config_settings_views.xml',
'data/products_portal_templates.xml',
'data/project_task_type.xml',
'data/project_project.xml',
'data/website_view.xml',
'data/ir_actions_server.xml',
'data/base_automation.xml',
],
'demo': [
'demo/payment_provider_demo.xml',
'demo/res_config_settings.xml',
'demo/res_partner.xml',
'demo/res_users.xml',
'demo/product_template.xml',
'demo/product_product.xml',
],
'license': 'OPL-1',
'author': 'Odoo S.A.',
"cloc_exclude": [
"data/knowledge_article.xml",
"data/products_portal_templates.xml",
"data/website_view.xml",
],
'images': ['images/main.png'],
}
10 changes: 10 additions & 0 deletions marketplace/data/base_automation.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?xml version='1.0' encoding='UTF-8'?>
<odoo>
<record id="automation_make_route_on_product_create" model="base.automation">
<field name="name">Validate purchase order for dropshipping</field>
<field name="model_id" ref="purchase.model_purchase_order"/>
<field name="action_server_ids" eval="[(6, 0, [ref('validate_purchase_order')])]"/>
<!-- <field name="filter_domain" eval="[('picking_type_id', '=', ref('stock_dropshipping.route_drop_shipping'))]"/> -->
<field name="trigger">on_create</field>
</record>
</odoo>
85 changes: 85 additions & 0 deletions marketplace/data/ir_actions_server.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
<?xml version='1.0' encoding='UTF-8'?>
<odoo>
<record id="action_create_change_request_task" model="ir.actions.server">
<field name="code"><![CDATA[
new_project_task = env['project.task'].sudo().create({
"name": request.params.get('full_name'),
"project_id": request.env.ref('marketplace.project_product_management').id,
"user_ids": [request.env.ref('marketplace.project_product_management').user_id.id], #not the correct field to take: correct is [request.env.ref('marketplace.x_products_manager_field', raise_if_not_found=False)]
"description": "<p>Request from "+request.params.get('email_from')+" / "+request.params.get('phone')+"</p><p>Company: "\
+request.params.get('company')+"</p><p>"+request.params.get('question')+"</p>",
})
response = request.make_json_response({'id': new_project_task.id}, status=200)]]></field>
<field name="model_id" ref="project.model_project_task"/>
<field name="state">code</field>
<field name="website_published">True</field>
<field name="website_path">new_change_request</field>
<field name="name">Create change request task</field>
</record>
<record id="action_create_product_template" model="ir.actions.server">
<field name="code"><![CDATA[
if not request.env.user.partner_id:
request.env.user['partner_id'] = env['res.partner'].sudo().create({'name': request.env.user.name})
new_product = env['product.template'].sudo().create({
"name": request.params.get('name'),
"description_ecommerce": request.params.get('ecommerce_description'),
"barcode": request.params.get('barcode'),
"standard_price": request.params.get('standard_price'),
"list_price": request.params.get('list_price'),
"image_1920": request.params.get('image_1920'),
"x_vendor": request.env.user.id,
"is_published": True,
"route_ids": [(6, 0, [env.ref("stock_dropshipping.route_drop_shipping").id, env.ref("purchase_stock.route_warehouse0_buy").id])],
"seller_ids": [(0, 0, {'partner_id': request.env.user.partner_id.id, 'price': request.params.get('standard_price'), 'min_qty': 1.0})],
})
new_project_task = env['project.task'].sudo().create({
"name": "Review activity " + request.params.get('name'),
"project_id": request.env.ref('marketplace.project_product_management').id,
"user_ids": [request.env.ref('marketplace.project_product_management').user_id.id], #not the correct field to take (see create change request)
})
response = request.make_json_response({'id': new_project_task.id}, status=200)]]></field>
<field name="model_id" ref="product.model_product_template"/>
<field name="state">code</field>
<field name="website_published">True</field>
<field name="website_path">create_product</field>
<field name="name">Create product</field>
</record>
<record id="product_route" model="ir.actions.server">
<field name="name">Route displaying products</field>
<field name="model_id" ref="product.model_product_product"/>
<field name="state">code</field>
<field name="website_published">True</field>
<field name="website_path">products</field>
<field name="code"><![CDATA[
response = request.render('marketplace.portal_products')
]]></field>
</record>
<record id="new_product_page_route" model="ir.actions.server">
<field name="name">Route displaying new product form</field>
<field name="model_id" ref="product.model_product_product"/>
<field name="state">code</field>
<field name="website_published">True</field>
<field name="website_path">new_product</field>
<field name="code"><![CDATA[
response = request.render('marketplace.new_product_page')
]]></field>
</record>
<record id="request_change_page_route" model="ir.actions.server">
<field name="name">Route displaying Request a change form</field>
<field name="model_id" ref="product.model_product_product"/>
<field name="state">code</field>
<field name="website_published">True</field>
<field name="website_path">change_request</field>
<field name="code"><![CDATA[
response = request.render('marketplace.request_change_page')
]]></field>
</record>
<record id="validate_purchase_order" model="ir.actions.server">
<field name="name">Validate purchase order</field>
<field name="model_id" ref="purchase.model_purchase_order"/>
<field name="state">code</field>
<field name="code"><![CDATA[
records.filtered(lambda p: p.picking_type_id.id in [env.ref('stock_dropshipping.route_drop_shipping').id]).button_confirm()
]]></field>
</record>
</odoo>
7 changes: 7 additions & 0 deletions marketplace/data/ir_attachment.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<?xml version='1.0' encoding='UTF-8'?>
<odoo noupdate="1">
<record id="ir_attachment_1" model="ir.attachment">
<field name="name">attachment bag image</field>
<field name="datas" type="base64" file="marketplace/static/src/img/bag.svg"/>
</record>
</odoo>
18 changes: 18 additions & 0 deletions marketplace/data/ir_model_fields.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?xml version='1.0' encoding='UTF-8'?>
<odoo>
<record id="x_products_manager_field" model="ir.model.fields">
<field name="name">x_products_manager</field>
<field name="model_id" ref="base.model_res_config_settings"/>
<field name="field_description">Products manager</field>
<field name="relation">res.users</field>
<field name="ttype">many2one</field>
</record>

<record id="x_vendor_field" model="ir.model.fields">
<field name="name">x_vendor</field>
<field name="ttype">many2one</field>
<field name="field_description">Vendor of the Product</field>
<field name="model_id" ref="product.model_product_template"/>
<field name="relation">res.users</field>
</record>
</odoo>
18 changes: 18 additions & 0 deletions marketplace/data/knowledge_article.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?xml version='1.0' encoding='UTF-8'?>
<odoo>
<template id="welcome_article_body">
<h1>Marketplace</h1><p></p>
</template>

<record id="welcome_article" model="knowledge.article">
<field name="name">Marketplace</field>
<field name="icon"></field>
<field name="internal_permission">write</field>
<!-- <field name="cover_image_id" ref="knowledge_cover_2"/> -->
<field name="is_article_visible_by_everyone" eval="True"/>
<field name="is_locked" eval="True"/>
<field name="body">
<![CDATA[]]>
</field>
</record>
</odoo>
7 changes: 7 additions & 0 deletions marketplace/data/knowledge_article_favorite.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<?xml version='1.0' encoding='UTF-8'?>
<odoo noupdate="1">
<record id="knowledge_favorite" model="knowledge.article.favorite">
<field name="article_id" ref="welcome_article"/>
<field name="user_id" ref="base.user_admin"/>
</record>
</odoo>
15 changes: 15 additions & 0 deletions marketplace/data/mail_message.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?xml version='1.0' encoding='UTF-8'?>
<odoo noupdate="1">
<record model="mail.message" id="notification_knowledge">
<field name="model">discuss.channel</field>
<field name="res_id" ref="mail.channel_all_employees"/>
<field name="message_type">email</field>
<field name="author_id" ref="base.partner_root"/>
<field name="subtype_id" ref="mail.mt_comment"/>
<field name="subject">🚀 Get started with Odoo Marketplace</field>
<field name="body" model="knowledge.article" eval="
'&lt;span>&#x1F44B; Hi! Follow this &lt;a href=\''
+ obj().env.ref('marketplace.welcome_article').article_url
+ '\'>onboarding guide&lt;/a>. You can find it anytime in the Knowledge app.&lt;/span>'"/>
</record>
</odoo>
48 changes: 48 additions & 0 deletions marketplace/data/products_portal_templates.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo noupdate="1">
<template id="portal_my_home_products" name="Your products" customize_show="True" inherit_id="portal.portal_my_home" priority="50">
<div id="portal_common_category" position="inside">
<t t-call="portal.portal_docs_entry">
<t t-set="icon" t-value="'/web/image/marketplace.ir_attachment_1'"/>
<t t-set="title">Your Products</t>
<t t-set="text">Manage you products and stock</t>
<t t-set="url" t-value="'/website/action/products'"/>
<t t-set="config_card" t-value="True"/>
</t>
</div>
</template>

<template id="portal_products" name="Your Products">
<t t-call="portal.portal_layout">
<t t-set="logged_partner" t-value="request.env.user.id"/>
<t t-set="breadcrumbs_searchbar" t-value="True"/>

<t t-call="portal.portal_searchbar">
<t t-set="title">Products</t>
</t>
<a href="/website/action/new_product" class="btn btn-primary btn-lg">New product</a>
<a href="/website/action/change_request" class="btn btn-primary btn-lg">Request change</a>
<div t-if="not request.env['product.template'].search([('x_vendor', '=', logged_partner)])" class="alert alert-info">
There are currently no products for your account.
</div>
<t t-else="">
<t t-call="portal.portal_table">
<thead>
<tr>
<th>Products</th>
<th>Price</th>
<th> </th>
</tr>
</thead>
<t t-foreach="request.env['product.template'].search([('x_vendor', '=', logged_partner)])" t-as="product">
<tr>
<th><t t-esc="product.display_name"/></th>
<th><t t-esc="product.list_price"/></th>
<th t-if="product.is_published"><a t-att-href="'/shop/' + str(product.id)">View</a></th>
</tr>
</t>
</t>
</t>
</t>
</template>
</odoo>
9 changes: 9 additions & 0 deletions marketplace/data/project_project.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo noupdate="1">
<record id="project_product_management" model="project.project">
<field name="name">Product Management</field>
<field name="type_ids" eval="[(4, ref('planning_project_stage_0')), (4, ref('planning_project_stage_1')), (4, ref('planning_project_stage_2')), (4, ref('planning_project_stage_3')), (4, ref('planning_project_stage_4'))]"/>
<field name="company_id" ref="base.main_company"/>
<field name="user_id" ref="base.user_admin"/>
</record>
</odoo>
25 changes: 25 additions & 0 deletions marketplace/data/project_task_type.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo noupdate="1">
<record id="planning_project_stage_0" model="project.task.type">
<field name="sequence">1</field>
<field name="name">New</field>
</record>
<record id="planning_project_stage_1" model="project.task.type">
<field name="sequence">5</field>
<field name="name">Planned</field>
</record>
<record id="planning_project_stage_2" model="project.task.type">
<field name="sequence">10</field>
<field name="name">In Progress</field>
</record>
<record id="planning_project_stage_3" model="project.task.type">
<field name="sequence">20</field>
<field name="name">Done</field>
<field name="fold" eval="True"/>
</record>
<record id="planning_project_stage_4" model="project.task.type">
<field name="sequence">25</field>
<field name="name">Cancelled</field>
<field name="fold" eval="True"/>
</record>
</odoo>
10 changes: 10 additions & 0 deletions marketplace/data/res_config_settings.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo noupdate="1">
<record id="res_config_settings_enable_dropshipping" model="res.config.settings">
<field name="module_stock_dropshipping" eval="1"/>
</record>

<function name="execute" model="res.config.settings">
<value eval="[ref('res_config_settings_enable_dropshipping')]"/>
</function>
</odoo>
22 changes: 22 additions & 0 deletions marketplace/data/res_config_settings_views.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?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</field>
<field name="model">res.config.settings</field>
<field name="priority" eval="20"/>
<field name="inherit_id" ref="website.res_config_settings_view_form"/>
<field name="active" eval="True"/>
<field name="arch" type="xml">
<block id="website_info_settings" position="after">
<block title="Marketplace" id="div_website_marketplace">
<setting
id="products_manager_setting"
string="Products manager"
>
<field name="x_products_manager"/>
</setting>
</block>
</block>
</field>
</record>
</odoo>
Loading