@ -0,0 +1,58 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################# |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) |
|||
# |
|||
# You can modify it under the terms of the GNU LESSER |
|||
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. |
|||
# |
|||
# This program is distributed in the hope that it will be useful, |
|||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. |
|||
# |
|||
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE |
|||
# (LGPL v3) along with this program. |
|||
# If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
############################################################################# |
|||
import ast |
|||
from odoo import api, fields, models, _ |
|||
|
|||
|
|||
class ProductProduct(models.Model): |
|||
_inherit = 'product.product' |
|||
|
|||
@api.model |
|||
def create(self, vals): |
|||
"""Inherited for passing the product Tags.""" |
|||
res = super(ProductProduct, self).create(vals) |
|||
if not res.product_tag_ids: |
|||
pro_tag = self.env['ir.config_parameter'].sudo().get_param( |
|||
'odoo_product_tags.product_tag_ids') |
|||
if pro_tag: |
|||
tag_ids = ast.literal_eval(pro_tag) |
|||
res.update({ |
|||
"product_tag_ids": [(6, 0, tag_ids)], |
|||
}) |
|||
return res |
|||
else: |
|||
return res |
|||
|
|||
def action_apply_product_tags(self): |
|||
"""Applying product tags""" |
|||
return { |
|||
'name': 'Apply Product Tag', |
|||
'type': 'ir.actions.act_window', |
|||
'view_type': 'form', |
|||
'view_mode': 'form', |
|||
'res_model': 'product.tags.wizard', |
|||
'context': { |
|||
'default_product_ids': self.ids, |
|||
'default_is_product': True |
|||
}, |
|||
'target': 'new', |
|||
} |
@ -1,39 +0,0 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################# |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) |
|||
# |
|||
# You can modify it under the terms of the GNU LESSER |
|||
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. |
|||
# |
|||
# This program is distributed in the hope that it will be useful, |
|||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. |
|||
# |
|||
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE |
|||
# (LGPL v3) along with this program. |
|||
# If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
############################################################################# |
|||
from odoo import api, fields, models, _ |
|||
from random import randint |
|||
|
|||
|
|||
class ProductTags(models.Model): |
|||
_name = "product.tags" |
|||
_description = 'Product Tags' |
|||
_rec_name = "name" |
|||
_inherit = ['mail.thread', 'mail.activity.mixin'] |
|||
|
|||
def _random_color(self): |
|||
return randint(1, 11) |
|||
|
|||
name = fields.Char(required=1, copy=False, string='Name') |
|||
description = fields.Text(string='Description', translate=True) |
|||
tag_color = fields.Integer(string="Tag Color", default=_random_color) |
|||
product_tmpl_ids = fields.Many2many('product.template', string="Products") |
|||
|
|
Before Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 61 KiB |
Before Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 59 KiB |
After Width: | Height: | Size: 49 KiB |
After Width: | Height: | Size: 47 KiB |
After Width: | Height: | Size: 54 KiB |
After Width: | Height: | Size: 50 KiB |
After Width: | Height: | Size: 44 KiB |
After Width: | Height: | Size: 53 KiB |
Before Width: | Height: | Size: 52 KiB |
Before Width: | Height: | Size: 54 KiB |
@ -0,0 +1,15 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<odoo> |
|||
<record id="product_product_tree_view" model="ir.ui.view"> |
|||
<field name="name">product.product.view.list.inherit.odoo.product.tags</field> |
|||
<field name="model">product.product</field> |
|||
<field name="inherit_id" ref="product.product_product_tree_view"/> |
|||
<field name="arch" type="xml"> |
|||
<xpath expr="//header" position="inside"> |
|||
<button class="btn-primary" name="action_apply_product_tags" |
|||
type="object" string="Apply Product Tag" |
|||
/> |
|||
</xpath> |
|||
</field> |
|||
</record> |
|||
</odoo> |
@ -1,69 +0,0 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<odoo> |
|||
<record id="product_tags_view_tree" model="ir.ui.view"> |
|||
<field name="name">product.tags.tree</field> |
|||
<field name="model">product.tags</field> |
|||
<field name="type">tree</field> |
|||
<field name="arch" type="xml"> |
|||
<tree> |
|||
<field name="name"/> |
|||
<field name="tag_color" widget="color_picker"/> |
|||
</tree> |
|||
</field> |
|||
</record> |
|||
|
|||
<record id="product_tags_view_form" model="ir.ui.view"> |
|||
<field name="name">product.tags.form</field> |
|||
<field name="model">product.tags</field> |
|||
<field name="type">form</field> |
|||
<field name="arch" type="xml"> |
|||
<form> |
|||
<sheet> |
|||
<div class="oe_title"> |
|||
<h1> |
|||
<field name="name" readonly="1"/> |
|||
</h1> |
|||
</div> |
|||
<group> |
|||
<group> |
|||
<field name="name"/> |
|||
</group> |
|||
<group> |
|||
<field name="tag_color" widget="color_picker"/> |
|||
</group> |
|||
</group> |
|||
<group> |
|||
<field name="product_tmpl_ids" widget="many2many_tags"/> |
|||
</group> |
|||
<group> |
|||
<field name="description"/> |
|||
</group> |
|||
|
|||
</sheet> |
|||
<div class="oe_chatter"> |
|||
<field name="message_follower_ids"/> |
|||
<field name="activity_ids"/> |
|||
<field name="message_ids"/> |
|||
</div> |
|||
</form> |
|||
</field> |
|||
</record> |
|||
|
|||
<record id="action_product_tags" model="ir.actions.act_window"> |
|||
<field name="name">Product Tags</field> |
|||
<field name="type">ir.actions.act_window</field> |
|||
<field name="res_model">product.tags</field> |
|||
<field name="view_mode">tree,form,kanban</field> |
|||
<field name="help" type="html"> |
|||
<p class="o_view_nocontent_smiling_face"> |
|||
Create New Product Tags! |
|||
</p> |
|||
</field> |
|||
</record> |
|||
|
|||
<menuitem id="sale_menu_product_tags" |
|||
name="Product Tags" |
|||
parent="sale.product_menu_catalog" |
|||
action="action_product_tags" |
|||
sequence="13"/> |
|||
</odoo> |
@ -1,62 +1,25 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<odoo> |
|||
<record model="ir.ui.view" id="product_template_tag_form_view"> |
|||
<field name="name">product.template.product.tags</field> |
|||
<field name="model">product.template</field> |
|||
<field name="inherit_id" ref="product.product_template_only_form_view"/> |
|||
<field name="arch" type="xml"> |
|||
<xpath expr="//field[@name='invoice_policy']" position="after"> |
|||
<field name="product_tags_ids" |
|||
widget="many2many_tags" |
|||
options="{'color_field': 'tag_color', 'no_create_edit': True}"/> |
|||
</xpath> |
|||
</field> |
|||
</record> |
|||
|
|||
<record model="ir.ui.view" id="product_template_tag_tree_view"> |
|||
<field name="name">product.template.product.tags</field> |
|||
<record id="product_template_tree_view" model="ir.ui.view"> |
|||
<field name="name">product.template.view.list.inherit.odoo.product.tags</field> |
|||
<field name="model">product.template</field> |
|||
<field name="inherit_id" ref="product.product_template_tree_view"/> |
|||
<field name="arch" type="xml"> |
|||
<xpath expr="//tree" position="inside"> |
|||
<header> |
|||
<button class="btn-primary" name="action_apply_tags" |
|||
type="object" string="Apply Product Tag" |
|||
/> |
|||
</header> |
|||
</xpath> |
|||
<xpath expr="//field[@name='default_code']" position="after"> |
|||
<field name="product_tags_ids" |
|||
widget="many2many_tags" |
|||
options="{'color_field': 'tag_color', 'no_create_edit': True}"/> |
|||
</xpath> |
|||
</field> |
|||
</record> |
|||
|
|||
<record model="ir.ui.view" id="product_template_tag_kanban_view"> |
|||
<field name="name">product.template.product.tags</field> |
|||
<field name="model">product.template</field> |
|||
<field name="inherit_id" ref="product.product_template_kanban_view"/> |
|||
<field name="arch" type="xml"> |
|||
<xpath expr="//div[@name='product_lst_price']" position="before"> |
|||
<field name="product_tags_ids" |
|||
widget="many2many_tags" |
|||
options="{'color_field': 'tag_color', 'no_create_edit': True}"/> |
|||
<xpath expr="//header" position="inside"> |
|||
<button class="btn-primary" name="action_apply_template_tags" |
|||
type="object" string="Apply Product Tag" |
|||
/> |
|||
</xpath> |
|||
</field> |
|||
</record> |
|||
|
|||
<record id="product_template_search_view" model="ir.ui.view"> |
|||
<field name="name">product.template.search</field> |
|||
<field name="name">product.template.search.inherit.odoo.product.tags</field> |
|||
<field name="model">product.template</field> |
|||
<field name="inherit_id" ref="product.product_template_search_view"/> |
|||
<field name="arch" type="xml"> |
|||
<xpath expr="//filter[@name='services']" position="after"> |
|||
<filter name="product_tags" string="Product Tags" |
|||
context="{'group_by': 'product_tags_ids'}"/> |
|||
<filter name="product_tags" string="Product Tags" context="{'group_by': 'product_tag_ids'}"/> |
|||
</xpath> |
|||
</field> |
|||
</record> |
|||
|
|||
|
|||
</odoo> |
|||
|