| @ -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" | |||
|             <xpath expr="//header" position="inside"> | |||
|                 <button class="btn-primary" name="action_apply_template_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> | |||
|         </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> | |||
|  | |||