diff --git a/master_search/README.rst b/master_search/README.rst new file mode 100755 index 000000000..0737b5624 --- /dev/null +++ b/master_search/README.rst @@ -0,0 +1,43 @@ +Master Search +============= +* Master Search module for Odoo 16 community editions + +Installation +============ + - www.odoo.com/documentation/16.0/setup/install.html + - Install our custom addon + +License +------- +General Public License, Version 3 (LGPL v3). +(https://www.odoo.com/documentation/user/14.0/legal/licenses/licenses.html) + +Company +------- +* 'Cybrosys Techno Solutions `__ + +Credits +------- +* Developer: +(v14) Shahil @ Cybrosys +(v15) Athul @ Cybrosys +(v16) Rosmy @ Cybrosys + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit https://www.cybrosys.com + +Further information +=================== +HTML Description: ``__ + diff --git a/master_search/__init__.py b/master_search/__init__.py new file mode 100644 index 000000000..51e8d312e --- /dev/null +++ b/master_search/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions (odoo@cybrosys.com) +# you can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# GENERAL PUBLIC LICENSE (AGPL v3) along with this program. +# If not, see . +# +############################################################################## + +from . import models diff --git a/master_search/__manifest__.py b/master_search/__manifest__.py new file mode 100644 index 000000000..c5e6fdda6 --- /dev/null +++ b/master_search/__manifest__.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2022-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions (odoo@cybrosys.com) +# you can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# GENERAL PUBLIC LICENSE (AGPL v3) along with this program. +# If not, see . +# +############################################################################## + +{ + 'name': 'Global Search', + 'version': '16.0.1.0.0', + 'summary': """Easy Search in Customers, Products, Sale, Purchase, Inventory and Accounting modules""", + 'description': """Search, Global Search, Quick Search, Easy Search, Easy Search in Customers, Products, Sale, Purchase, Inventory and Accounting modules, + Search, Advance search, global search, odoo16, """, + 'category': 'Settings', + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': 'https://www.cybrosys.com', + 'license': 'AGPL-3', + 'images': ['static/description/banner.png'], + 'depends': ['base', 'stock', 'sale', 'purchase'], + 'data': [ + 'security/ir.model.access.csv', + 'security/security.xml', + 'views/master_search_view.xml' + ], + 'assets': { + 'web.assets_backend': [ + 'master_search/static/src/scss/master_search.scss' + ], + }, + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/master_search/doc/RELEASE_NOTES.md b/master_search/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..4d728ffdf --- /dev/null +++ b/master_search/doc/RELEASE_NOTES.md @@ -0,0 +1,7 @@ +## Module + +#### 09.11.2022 +#### Version 16.0.1.0.0 +#### ADD +Initial Commit + diff --git a/master_search/models/__init__.py b/master_search/models/__init__.py new file mode 100644 index 000000000..60fc983b0 --- /dev/null +++ b/master_search/models/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions (odoo@cybrosys.com) +# you can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# GENERAL PUBLIC LICENSE (AGPL v3) along with this program. +# If not, see . +# +############################################################################## + +from . import master_search \ No newline at end of file diff --git a/master_search/models/master_search.py b/master_search/models/master_search.py new file mode 100644 index 000000000..68c852f17 --- /dev/null +++ b/master_search/models/master_search.py @@ -0,0 +1,404 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions (odoo@cybrosys.com) +# you can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# GENERAL PUBLIC LICENSE (AGPL v3) along with this program. +# If not, see . +# +############################################################################## + +from odoo import fields, models, api, _ +from odoo.exceptions import UserError +from psycopg2 import sql + + + +class MasterSearch(models.Model): + _name = 'master.search' + _description = "Model for master search" + _rec_name = 'name' + _order = "create_date desc" + + name = fields.Char(string="Name", default=lambda self: _('Search')) + res_customers_id = fields.Many2many('res.partner', + 'res_customers_search_rel', + 'res_customers_id', 'search_id', + string="Locations") + search_string = fields.Char(string="Search") + search_mode = fields.Selection( + [('all', 'All'), ('active', 'Active'), ('inactive', 'Inactive')], + string="Search Mode", default="active") + search_by = fields.Selection( + [('any', 'Any'), ('customer', 'Customer'), ('product', 'Product'), + ('sale details', 'Sale'), + ('purchase details', 'Purchase'), + ('transaction details', 'Inventory'), + ('account details', 'Accounting')], + string="Search By", default='any') + master_search_ids = fields.Many2many('master.search', + 'master_search_self_rel', 'search_id', + 'search_id1', + compute="_get_recent_searches", + limit=1) + history_count = fields.Integer(string="History Count", + compute="_get_history_count") + customer_ids = fields.Many2many('res.partner', 'master_search_company_rel', + 'search_id', 'company_id') + product_ids = fields.Many2many('product.template', + 'master_search_product_rel', 'search_id', + 'company_id') + transaction_details = fields.Many2many('stock.picking', + 'master_search_transaction_details_rel', + 'search_id', + 'company_id', string="Inventory") + customer_count = fields.Integer(string="Company Count", + compute="_get_operator_count") + product_count = fields.Integer(string="Product Count", + compute="_get_product_count") + transaction_count = fields.Integer(string="Transaction Count", + compute="_get_transaction_count") + sale_count = fields.Integer(string="Sale Count", compute="_get_sale_count") + purchase_count = fields.Integer(string="Sale Count", + compute="_get_purchase_count") + account_count = fields.Integer(string="Account Count", + compute="_get_account_count") + user_id = fields.Many2one('res.users', string="User", + default=lambda self: self.env.user) + match_entire = fields.Boolean(string="Match entire sentence") + sale_details = fields.Many2many('sale.order', + 'master_search_sale_details_rel', + 'search_id', + 'company_id', string="Sale") + purchase_details = fields.Many2many('purchase.order', + 'master_search_purchase_details_rel', + 'search_id', + 'company_id', string="Sale") + account_details = fields.Many2many('account.move', + 'master_search_account_details_rel', + 'search_id', + 'company_id', string="Account") + + @api.depends('search_string') + def _get_recent_searches(self): + """ Get recent searches """ + # unlink search result with empty string + try: + current_id = self.id if isinstance(self.id, int) \ + else self._origin.id + except: + current_id = False + pass + empty_search = self.env['master.search'].search( + [('search_string', 'in', ['', False]), + ('id', 'not in', [current_id, False] + if current_id else [False])]) + if empty_search: + empty_search.unlink() + # get search histories avoid null strings + recent_searches = self.env['master.search'].search([ + ('search_string', 'not in', ['', False])]) + # commended for viewing last search + # self.master_search_ids = recent_searches.filtered( + # lambda x: x.id != self.id) if self.id else recent_searches + self.master_search_ids = recent_searches + + def action_unlink_search(self): + """ Unlink search """ + self.unlink() + action = self.env.ref('master_search.master_search_action').read()[0] + return action + + @api.depends('master_search_ids') + def _get_history_count(self): + """ Get history count """ + self.history_count = len(self.master_search_ids) + + @api.depends('product_ids') + def _get_product_count(self): + """ Get product count """ + self.product_count = len(self.product_ids) + + @api.depends('customer_ids') + def _get_operator_count(self): + """ Get customer count """ + self.customer_count = len(self.customer_ids) + print(self.customer_count) + + @api.depends('transaction_count') + def _get_transaction_count(self): + """ Get transaction details count """ + self.transaction_count = len(self.transaction_details) + + @api.depends('sale_count') + def _get_sale_count(self): + """ Get sale details count """ + self.sale_count = len(self.sale_details) + + @api.depends('purchase_count') + def _get_purchase_count(self): + """ Get purchase details count """ + self.purchase_count = len(self.purchase_details) + + @api.depends('account_count') + def _get_account_count(self): + """ Get account details count """ + self.account_count = len(self.account_details) + + def action_clear_search(self): + """ clear search input """ + self.search_string = "" + self.name = "Search" + + @api.model_create_multi + def create(self, vals_list): + """ Function for unlink first result and raise error if no string """ + res = super(MasterSearch, self).create(vals_list) + search_index = self.env['master.search'].search_count( + [('user_id', '=', self.env.user.id)]) + # unlink old search result if count greater than 10 + if search_index > 10: + last_search = self.env['master.search'].search( + [('id', '!=', res.id), ('user_id', '=', self.env.user.id)], + order="create_date asc", limit=1) + last_search.unlink() if last_search else False + return res + + def action_search(self): + """ search for the string and store search data """ + if self.search_string and "*" in self.search_string: + return + if not self.search_string: + raise UserError(_("Please provide a search string!")) + search_keys = self.search_string.split(" ") + # delete all the lines + self.customer_ids = self.product_ids = self.transaction_details = False + # search for entire sentence + if self.match_entire: + return self._search_query(self.search_string) + # search for all the words + for key in search_keys: + search_vals = self._search_query(key) + print('search valss', search_vals) + + self.name = self.search_string + + def _search_query(self, key): + """ search for the model with given key and update result """ + print('help') + company_id = self.env.user.company_id.id + if self.search_mode == 'all': + active_qry = """ + and obj.active in ({},{}) + """.format("'FALSE'", "'TRUE'") + elif self.search_mode == 'active': + active_qry = """ and obj.active in ({})""".format("'TRUE'") + else: + active_qry = """ and obj.active in ({})""".format("'FALSE'") + + # search for customers + self._search_customer(key, active_qry) \ + if self.search_by in ['any', 'customer'] else False + # search for products + self._search_products(key, active_qry, company_id) \ + if self.search_by in ['any', 'product'] else False + # search for inventory transactions + self._search_inventory_transactions(key, active_qry, company_id) \ + if self.search_by in ['any', 'transaction details'] else False + # search for inventory transactions + self._search_sale_transactions(key, active_qry, company_id) \ + if self.search_by in ['any', 'sale details'] else False + # search for purchase transactions + self._search_purchase_transactions(key, active_qry, company_id) \ + if self.search_by in ['any', 'purchase details'] else False + # search for account transactions + self._search_account_transactions(key, active_qry, company_id) \ + if self.search_by in ['any', 'account details'] else False + + def _search_account_transactions(self, key, active_qry, company_id): + """ Search for all account transactions """ + sp_query = """ + SELECT + am.id from account_move am + LEFT JOIN + res_partner p on p.id = am.partner_id + WHERE + am.company_id = {op_id} + AND + (am.name ILIKE '%{key}%' + OR + p.name ILIKE '%{key}%' + OR + am.state ILIKE '%{key}%') + GROUP BY + am.id,p.name + """ + self._cr.execute( + sp_query.format(op_id=company_id, key=key, active=active_qry)) + moves = self._cr.dictfetchall() + move_ids = self.env['account.move'].browse([i['id'] for i in moves]) + self.account_details += move_ids + + def _search_purchase_transactions(self, key, active_qry, company_id): + """ Search for all purchase transactions """ + sp_query = """ + SELECT + po.id from purchase_order po + LEFT JOIN + res_partner p on p.id = po.partner_id + WHERE + po.company_id = {op_id} + AND + (po.name ILIKE '%{key}%' + OR + p.name ILIKE '%{key}%' + OR + po.state ILIKE '%{key}%') + GROUP BY + po.id,p.name + """ + self._cr.execute( + sp_query.format(op_id=company_id, key=key, active=active_qry)) + purchases = self._cr.dictfetchall() + purchase_ids = self.env['purchase.order'].browse( + [i['id'] for i in purchases]) + self.purchase_details += purchase_ids + + def _search_sale_transactions(self, key, active_qry, company_id): + """ Search for all sale transactions """ + sp_query = """ + SELECT + sl.id from sale_order sl + LEFT JOIN + res_partner p on p.id = sl.partner_id + LEFT JOIN + product_pricelist pl + ON + pl.id = sl.pricelist_id + LEFT JOIN + account_payment_term pt + ON + pt.id = sl.payment_term_id + WHERE + sl.company_id = {op_id} + AND + (sl.name ILIKE '%{key}%' + OR + p.name ILIKE '%{key}%' + OR + sl.state ILIKE '%{key}%' + OR + pl.name::text ILIKE '%{key}%') + GROUP BY + sl.id,p.name,pl.name,pt.name + """ + self._cr.execute( + sp_query.format(op_id=company_id, key=key, active=active_qry)) + sales = self._cr.dictfetchall() + sale_ids = self.env['sale.order'].browse([i['id'] for i in sales]) + self.sale_details += sale_ids + + def _search_inventory_transactions(self, key, active_qry, company_id): + """ Search for all inventory transactions """ + sp_query = """ + SELECT + sp.id from stock_picking sp + LEFT JOIN + res_partner p on p.id = sp.partner_id + LEFT JOIN + stock_picking_type t + ON + t.id = sp.picking_type_id + WHERE + sp.company_id = {op_id} + AND + (sp.name ILIKE '%{key}%' + OR + p.name ILIKE '%{key}%' + OR + sp.state ILIKE '%{key}%' + OR + t.name::text ILIKE '%{key}%') + GROUP BY + sp.id,p.name,t.name + """ + self._cr.execute( + sp_query.format(op_id=company_id, key=key, active=active_qry)) + transactions = self._cr.dictfetchall() + transaction_ids = self.env['stock.picking'].browse( + [i['id'] for i in transactions]) + print(self.transaction_details) + self.transaction_details += transaction_ids + + def _search_products(self, key, active_qry, company_id): + """ search for products """ + pt_query = """ + SELECT + pt.id + FROM + product_template pt + LEFT JOIN + product_category pc + ON + pc.id = pt.categ_id + WHERE + (pt.name::text ILIKE '%{key}%' + OR + pt.default_code ILIKE '%{key}%' + OR + pt.type ILIKE '%{key}%' + OR + pt.description::text ILIKE '%{key}%' + OR + pc.name ILIKE '%{key}%') + """ + self._cr.execute(pt_query.format(op_id=company_id, key=key, + active=active_qry).replace('obj', + 'pt')) + template_ids = self._cr.dictfetchall() + product_template_ids = self.env['product.template'].browse( + [i['id'] for i in template_ids]) + self.product_ids += product_template_ids + print('2',product_template_ids) + + def _search_customer(self, key, active_qry): + """ search for customer """ + query =""" + SELECT + r.id from res_partner r + WHERE + (r.parent_id is NULL ) + AND + r.type = 'contact' {active} + AND + (r.name ILIKE '%{key}%' + OR + r.street ILIKE '%{key}%' + OR + r.street2 ILIKE '%{key}%' + OR + r.city ILIKE '%{key}%' + OR + r.zip ILIKE '%{key}%' + OR + r.email ILIKE '%{key}%') + + """ + query_params = query.format(key=key, active=active_qry).replace('obj', + 'r') + self._cr.execute(query_params) + customers = self._cr.dictfetchall() + customer_ids = self.env['res.partner'].browse( + [i['id'] for i in customers]) + self.customer_ids += customer_ids diff --git a/master_search/security/ir.model.access.csv b/master_search/security/ir.model.access.csv new file mode 100755 index 000000000..395f036a4 --- /dev/null +++ b/master_search/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_master_search,master.search,model_master_search,,1,1,1,1 \ No newline at end of file diff --git a/master_search/security/security.xml b/master_search/security/security.xml new file mode 100755 index 000000000..e4b297b7b --- /dev/null +++ b/master_search/security/security.xml @@ -0,0 +1,20 @@ + + + + + Company Search Rule + + [('user_id', '=', user.id)] + + + + + Search Rights + 11 + + + + Global Search + Global Search Group + + diff --git a/master_search/static/description/assets/icons/check.png b/master_search/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/master_search/static/description/assets/icons/check.png differ diff --git a/master_search/static/description/assets/icons/chevron.png b/master_search/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/master_search/static/description/assets/icons/chevron.png differ diff --git a/master_search/static/description/assets/icons/cogs.png b/master_search/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/master_search/static/description/assets/icons/cogs.png differ diff --git a/master_search/static/description/assets/icons/consultation.png b/master_search/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/master_search/static/description/assets/icons/consultation.png differ diff --git a/master_search/static/description/assets/icons/ecom-black.png b/master_search/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/master_search/static/description/assets/icons/ecom-black.png differ diff --git a/master_search/static/description/assets/icons/education-black.png b/master_search/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/master_search/static/description/assets/icons/education-black.png differ diff --git a/master_search/static/description/assets/icons/hotel-black.png b/master_search/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/master_search/static/description/assets/icons/hotel-black.png differ diff --git a/master_search/static/description/assets/icons/license.png b/master_search/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/master_search/static/description/assets/icons/license.png differ diff --git a/master_search/static/description/assets/icons/lifebuoy.png b/master_search/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/master_search/static/description/assets/icons/lifebuoy.png differ diff --git a/master_search/static/description/assets/icons/manufacturing-black.png b/master_search/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/master_search/static/description/assets/icons/manufacturing-black.png differ diff --git a/master_search/static/description/assets/icons/pos-black.png b/master_search/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/master_search/static/description/assets/icons/pos-black.png differ diff --git a/master_search/static/description/assets/icons/puzzle.png b/master_search/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/master_search/static/description/assets/icons/puzzle.png differ diff --git a/master_search/static/description/assets/icons/restaurant-black.png b/master_search/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/master_search/static/description/assets/icons/restaurant-black.png differ diff --git a/master_search/static/description/assets/icons/service-black.png b/master_search/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/master_search/static/description/assets/icons/service-black.png differ diff --git a/master_search/static/description/assets/icons/trading-black.png b/master_search/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/master_search/static/description/assets/icons/trading-black.png differ diff --git a/master_search/static/description/assets/icons/training.png b/master_search/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/master_search/static/description/assets/icons/training.png differ diff --git a/master_search/static/description/assets/icons/update.png b/master_search/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/master_search/static/description/assets/icons/update.png differ diff --git a/master_search/static/description/assets/icons/user.png b/master_search/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/master_search/static/description/assets/icons/user.png differ diff --git a/master_search/static/description/assets/icons/wrench.png b/master_search/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/master_search/static/description/assets/icons/wrench.png differ diff --git a/master_search/static/description/assets/misc/categories.png b/master_search/static/description/assets/misc/categories.png new file mode 100644 index 000000000..bedf1e0b1 Binary files /dev/null and b/master_search/static/description/assets/misc/categories.png differ diff --git a/master_search/static/description/assets/misc/check-box.png b/master_search/static/description/assets/misc/check-box.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/master_search/static/description/assets/misc/check-box.png differ diff --git a/master_search/static/description/assets/misc/compass.png b/master_search/static/description/assets/misc/compass.png new file mode 100644 index 000000000..d5fed8faa Binary files /dev/null and b/master_search/static/description/assets/misc/compass.png differ diff --git a/master_search/static/description/assets/misc/corporate.png b/master_search/static/description/assets/misc/corporate.png new file mode 100644 index 000000000..2eb13edbf Binary files /dev/null and b/master_search/static/description/assets/misc/corporate.png differ diff --git a/master_search/static/description/assets/misc/customer-support.png b/master_search/static/description/assets/misc/customer-support.png new file mode 100644 index 000000000..79efc72ed Binary files /dev/null and b/master_search/static/description/assets/misc/customer-support.png differ diff --git a/master_search/static/description/assets/misc/cybrosys-logo.png b/master_search/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 000000000..cc3cc0ccf Binary files /dev/null and b/master_search/static/description/assets/misc/cybrosys-logo.png differ diff --git a/master_search/static/description/assets/misc/features.png b/master_search/static/description/assets/misc/features.png new file mode 100644 index 000000000..b41769f77 Binary files /dev/null and b/master_search/static/description/assets/misc/features.png differ diff --git a/master_search/static/description/assets/misc/logo.png b/master_search/static/description/assets/misc/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/master_search/static/description/assets/misc/logo.png differ diff --git a/master_search/static/description/assets/misc/pictures.png b/master_search/static/description/assets/misc/pictures.png new file mode 100644 index 000000000..56d255fe9 Binary files /dev/null and b/master_search/static/description/assets/misc/pictures.png differ diff --git a/master_search/static/description/assets/misc/pie-chart.png b/master_search/static/description/assets/misc/pie-chart.png new file mode 100644 index 000000000..426e05244 Binary files /dev/null and b/master_search/static/description/assets/misc/pie-chart.png differ diff --git a/master_search/static/description/assets/misc/right-arrow.png b/master_search/static/description/assets/misc/right-arrow.png new file mode 100644 index 000000000..730984a06 Binary files /dev/null and b/master_search/static/description/assets/misc/right-arrow.png differ diff --git a/master_search/static/description/assets/misc/star.png b/master_search/static/description/assets/misc/star.png new file mode 100644 index 000000000..2eb9ab29f Binary files /dev/null and b/master_search/static/description/assets/misc/star.png differ diff --git a/master_search/static/description/assets/misc/support.png b/master_search/static/description/assets/misc/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/master_search/static/description/assets/misc/support.png differ diff --git a/master_search/static/description/assets/misc/whatsapp.png b/master_search/static/description/assets/misc/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/master_search/static/description/assets/misc/whatsapp.png differ diff --git a/master_search/static/description/assets/modules/1.png b/master_search/static/description/assets/modules/1.png new file mode 100644 index 000000000..5238bdeab Binary files /dev/null and b/master_search/static/description/assets/modules/1.png differ diff --git a/master_search/static/description/assets/modules/2.png b/master_search/static/description/assets/modules/2.png new file mode 100644 index 000000000..1ae7cfe3b Binary files /dev/null and b/master_search/static/description/assets/modules/2.png differ diff --git a/master_search/static/description/assets/modules/3.png b/master_search/static/description/assets/modules/3.png new file mode 100644 index 000000000..3c3ff1afb Binary files /dev/null and b/master_search/static/description/assets/modules/3.png differ diff --git a/master_search/static/description/assets/modules/4.png b/master_search/static/description/assets/modules/4.png new file mode 100644 index 000000000..3fae4631e Binary files /dev/null and b/master_search/static/description/assets/modules/4.png differ diff --git a/master_search/static/description/assets/modules/5.gif b/master_search/static/description/assets/modules/5.gif new file mode 100644 index 000000000..2a5f8e659 Binary files /dev/null and b/master_search/static/description/assets/modules/5.gif differ diff --git a/master_search/static/description/assets/modules/6.png b/master_search/static/description/assets/modules/6.png new file mode 100644 index 000000000..7f2815273 Binary files /dev/null and b/master_search/static/description/assets/modules/6.png differ diff --git a/master_search/static/description/assets/screenshots/hero.gif b/master_search/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..d84f9e17f Binary files /dev/null and b/master_search/static/description/assets/screenshots/hero.gif differ diff --git a/master_search/static/description/assets/screenshots/img1.png b/master_search/static/description/assets/screenshots/img1.png new file mode 100644 index 000000000..d8dd569df Binary files /dev/null and b/master_search/static/description/assets/screenshots/img1.png differ diff --git a/master_search/static/description/assets/screenshots/img10.png b/master_search/static/description/assets/screenshots/img10.png new file mode 100644 index 000000000..15d261485 Binary files /dev/null and b/master_search/static/description/assets/screenshots/img10.png differ diff --git a/master_search/static/description/assets/screenshots/img2.png b/master_search/static/description/assets/screenshots/img2.png new file mode 100644 index 000000000..8aeb07af4 Binary files /dev/null and b/master_search/static/description/assets/screenshots/img2.png differ diff --git a/master_search/static/description/assets/screenshots/img3.png b/master_search/static/description/assets/screenshots/img3.png new file mode 100644 index 000000000..6c2f7a5e6 Binary files /dev/null and b/master_search/static/description/assets/screenshots/img3.png differ diff --git a/master_search/static/description/assets/screenshots/img4.png b/master_search/static/description/assets/screenshots/img4.png new file mode 100644 index 000000000..5698346a4 Binary files /dev/null and b/master_search/static/description/assets/screenshots/img4.png differ diff --git a/master_search/static/description/assets/screenshots/img5.png b/master_search/static/description/assets/screenshots/img5.png new file mode 100644 index 000000000..5c67bd6da Binary files /dev/null and b/master_search/static/description/assets/screenshots/img5.png differ diff --git a/master_search/static/description/assets/screenshots/img6.png b/master_search/static/description/assets/screenshots/img6.png new file mode 100644 index 000000000..0105bfec2 Binary files /dev/null and b/master_search/static/description/assets/screenshots/img6.png differ diff --git a/master_search/static/description/assets/screenshots/img7.png b/master_search/static/description/assets/screenshots/img7.png new file mode 100644 index 000000000..60203601a Binary files /dev/null and b/master_search/static/description/assets/screenshots/img7.png differ diff --git a/master_search/static/description/assets/screenshots/img8.png b/master_search/static/description/assets/screenshots/img8.png new file mode 100644 index 000000000..1f6b4f506 Binary files /dev/null and b/master_search/static/description/assets/screenshots/img8.png differ diff --git a/master_search/static/description/assets/screenshots/img9.png b/master_search/static/description/assets/screenshots/img9.png new file mode 100644 index 000000000..6b1c65841 Binary files /dev/null and b/master_search/static/description/assets/screenshots/img9.png differ diff --git a/master_search/static/description/assets/video/master_search.mp4 b/master_search/static/description/assets/video/master_search.mp4 new file mode 100644 index 000000000..0e29d26e1 Binary files /dev/null and b/master_search/static/description/assets/video/master_search.mp4 differ diff --git a/master_search/static/description/assets/video/master_search.webm b/master_search/static/description/assets/video/master_search.webm new file mode 100644 index 000000000..357c7d058 Binary files /dev/null and b/master_search/static/description/assets/video/master_search.webm differ diff --git a/master_search/static/description/banner.png b/master_search/static/description/banner.png new file mode 100644 index 000000000..f73141a44 Binary files /dev/null and b/master_search/static/description/banner.png differ diff --git a/master_search/static/description/icon.png b/master_search/static/description/icon.png new file mode 100644 index 000000000..608a6c373 Binary files /dev/null and b/master_search/static/description/icon.png differ diff --git a/master_search/static/description/index.html b/master_search/static/description/index.html new file mode 100644 index 000000000..5b6852365 --- /dev/null +++ b/master_search/static/description/index.html @@ -0,0 +1,698 @@ +
+ +
+ +
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+ + + +

+ Global Search

+

+ Easy Search in Customers, Products, Sale, Purchase, Inventory and + Accounting modules +

+ + + +
+ + +
+
+ +
+

+ Explore This + Module

+
+ + + + +
+
+ +
+

+ Overview +

+
+
+
+ Global Search module enables advance and simple search in different + modules. It helps users to search the records in Customers, Products, + Sale, Purchase, Inventory and Accounting Modules for 'Global Search' + group users. Possible to search using different attributes like name, + reference, number, etc. +
+
+ + + +
+
+ +
+

+ Features +

+
+
+
+
+ +
+ Dynamic Search View Option + +
+
+
+ +
+ Possible to search with different attributes like name, reference, number, etc. + +
+
+
+ +
+ Easily Search Records in Customers, Products, Sale, Purchase, Inventory and Accounting Data + +
+
+
+ +
+ + + +
+
+ +
+

+ Screenshots +

+
+
+
+ +
+

+ Global Search User Access

+ + +
+ +
+

+ Global Search

+ +
+ +
+

+ Search in Customer Data

+ +
+
+

+ Search in Product Data

+ +
+
+

+ Product Search Record View

+ +
+
+

+ Search in Sale Data

+ +
+
+

+ Search in Purchase Data

+ +
+
+

+ Search in Inventory Data

+ +
+
+

+ Search in Accounting Data

+ +
+
+

+ Account Search Record View

+ +
+ +
+
+
+
+

+ Video +

+
+
+ +
+
+ + + +
+
+ +
+

+ Related + Products +

+
+
+
+ +
+
+ + + + +
+
+ +
+

+ Our Services +

+
+ +
+
+
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+ +
+ + + + + +
+
+ +
+

+ Our + Industries +

+
+ +
+
+
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+
+
+ + + + +
+
+ +
+

+ Support +

+
+
+
+
+
+
+ +
+
+

Need Help?

+

Got questions or need help? + Get in touch.

+ +

+ odoo@cybrosys.com

+
+
+
+
+
+
+
+ +
+
+

WhatsApp

+

Say hi to us on WhatsApp!

+ +

+ +91 86068 + 27707

+
+
+
+
+
+
+
+ +
+
+
+ \ No newline at end of file diff --git a/master_search/static/src/scss/master_search.scss b/master_search/static/src/scss/master_search.scss new file mode 100644 index 000000000..341e8b55a --- /dev/null +++ b/master_search/static/src/scss/master_search.scss @@ -0,0 +1,36 @@ +.oe_search_tab{ + cursor: pointer; + transition: .2s; + &:hover { + background-color: #7c7bad !important; + } +} +.oe_details_tree{ + display: none; +} + +.oe_details_tree--show{ + display: block !important; +} + +.btn_master_search{ + display: inline-block; + background-color:#5f5e97; + color:#fff !important; + color: #fff;margin-left: 1px; + margin-top: -1px; +} +.btn_master_search:hover{ + background-color: rgb(255, 255, 255) !important; + color: rgb(61, 155, 187) !important; +} +.not-allowed{ + color: #d94242; + border: 1px solid #ea9292; + border-radius: 5px; + background-color: #f9e7e7; + padding: 1px 55px; + width: 370px; + margin-bottom: 5px; + display: none; +} \ No newline at end of file diff --git a/master_search/views/master_search_view.xml b/master_search/views/master_search_view.xml new file mode 100644 index 000000000..756ef8b9b --- /dev/null +++ b/master_search/views/master_search_view.xml @@ -0,0 +1,340 @@ + + + + + + Search + master.search + +
+ + + +
+
+
+
+
+
+
+
+ +
+
+ Recent Searches +
+ + Records Found + + + +
+
+
+ + + + + + +
+
+ +
+
+ Customer Search Results +
+ + Records Found + + + +
+
+
+ + + + + + +
+
+
+
+ Product Search Results +
+ + Records Found + + + +
+
+
+ + + + + + + + + + + +
+
+
+
+ Inventory Search Results +
+ + Records Found + + + +
+
+ +
+ + + + + + + + + +
+
+
+
+ Sale Search Results +
+ + Records Found + + + +
+
+ +
+ + + + + + + + + +
+
+
+
+ Purchase Search Results +
+ + Records Found + + + +
+
+ +
+ + + + + + + +
+
+
+
+ Accounting Search Results +
+ + Records Found + + + +
+
+ +
+ + + + + + + +
+
+
+ +
+
+ + + + + Search + master.search + form + {'active_test': False, 'search_default_filter_active': 1} + + + + +
+
diff --git a/multiple_reference_per_product/README.md b/multiple_reference_per_product/README.md new file mode 100644 index 000000000..f1a27d9e8 --- /dev/null +++ b/multiple_reference_per_product/README.md @@ -0,0 +1,41 @@ +Multiple reference per products +------------------ +Supporting Addon for stock, Manages product reference code + + +Configuration +============= +* No additional configurations needed + +Company +------- +* `Cybrosys Techno Solutions `__ + +Credits +------- +Cybrosys Technologies. +(odoo@cybrosys.com) + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com +* Website : https://cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com + +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit `Our Website `__ + +Further information +=================== +HTML Description: ``__ + + diff --git a/multiple_reference_per_product/__init__.py b/multiple_reference_per_product/__init__.py new file mode 100644 index 000000000..6c1f4e196 --- /dev/null +++ b/multiple_reference_per_product/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2020-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from . import models \ No newline at end of file diff --git a/multiple_reference_per_product/__manifest__.py b/multiple_reference_per_product/__manifest__.py new file mode 100644 index 000000000..78d9659ee --- /dev/null +++ b/multiple_reference_per_product/__manifest__.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2020-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +{ + 'name': "Multiple Reference Per Product", + 'version': '16.0.1.0.0', + 'summary': 'Multiple Reference Per Product', + 'description': """Add multiple reference code for a product template or product variant. Easily manage between the + different codes as default code for the product.""", + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': "https://cybrosys.com/", + 'category': 'Inventory/Inventory', + 'depends': ['stock'], + 'data': [ + 'security/ir.model.access.csv', + 'views/multiple_reference_per_product.xml', + ], + 'images': ['static/description/banner.png'], + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': True, + } diff --git a/multiple_reference_per_product/doc/RELEASE_NOTES.md b/multiple_reference_per_product/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..02522dd82 --- /dev/null +++ b/multiple_reference_per_product/doc/RELEASE_NOTES.md @@ -0,0 +1,10 @@ +## Module + +#### 10.10.2021 +#### Version 16.0.1.0.0 +#### ADD +Initial commit for Multiple Reference Per Product + + + + diff --git a/multiple_reference_per_product/models/__init__.py b/multiple_reference_per_product/models/__init__.py new file mode 100644 index 000000000..eb0856c78 --- /dev/null +++ b/multiple_reference_per_product/models/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2020-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from . import multiple_reference_per_product \ No newline at end of file diff --git a/multiple_reference_per_product/models/multiple_reference_per_product.py b/multiple_reference_per_product/models/multiple_reference_per_product.py new file mode 100644 index 000000000..232134054 --- /dev/null +++ b/multiple_reference_per_product/models/multiple_reference_per_product.py @@ -0,0 +1,144 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2020-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from odoo import models, fields, api + + +class MultipleReferencePerProduct(models.Model): + _name = 'multiple.reference.per.product' + _description = 'Multiple Reference Per Product' + _rec_name = 'multiple_references_name' + + multiple_references_name = fields.Char('Multiple References', required=True) + product_id = fields.Many2one('product.product', string="Product", required=True) + is_default_reference = fields.Boolean(string="Is default reference", compute='_is_default_reference') + + def _is_default_reference(self): + """Check if the current code is default code for the product""" + for reference in self: + if reference.product_id: + reference.is_default_reference = True if reference.product_id.default_code == reference.multiple_references_name else False + + def set_as_default(self): + """Set the current code as default code for the product""" + self.ensure_one() + self.product_id.default_code = self.multiple_references_name + + def create_reference(self, reference_code, product_id): + """Add existing default code into the reference model""" + reference = self.create({ + 'multiple_references_name': reference_code, + 'product_id': product_id, + }) + return True if reference else False + + @api.model + def create(self, values): + if values.get('multiple_references_name') and values.get('product_id'): + reference_code = self.search([('multiple_references_name', '=', values.get('multiple_references_name')), ('product_id', '=', values.get('product_id'))]) + if reference_code: + res = reference_code[0] + else: + res = super(MultipleReferencePerProduct, self).create(values) + if not res.product_id.default_code: + res.product_id.default_code = res.multiple_references_name + return res + else: + res = super(MultipleReferencePerProduct, self).create(values) + return res + + def write(self, values): + multiple_references_name = values.get('multiple_references_name') + multiple_references_name = [multiple_references_name] if multiple_references_name else self.mapped('name') + product_id = values.get('product_id') + product_ids = [product_id] if product_id else self.mapped('product_id').ids + reference_code = self.search([('multiple_references_name', 'in', multiple_references_name), ('product_id', 'in', product_ids)]) + if reference_code: + return False + return super(MultipleReferencePerProduct, self).write(values) + + +class ProductProductInherit(models.Model): + _inherit = 'product.product' + + multiple_references_ids = fields.One2many("multiple.reference.per.product", "product_id", string="Multiple " + "References") + multiple_references_code = fields.Char(string="Multiple References", related="multiple_references_ids" + ".multiple_references_name") + multiple_references_id = fields.Many2many("multiple.reference.per.product", string="Multiple References", + compute="_get_multiple_reference") + multiple_references_count = fields.Integer(string="NUmber of references", compute="_get_multiple_reference_count") + + @api.depends('multiple_references_id') + def _get_multiple_reference_count(self): + """Get the count of reference code""" + self.multiple_references_count = len(self.multiple_references_ids) + + def _get_multiple_reference(self): + self.multiple_references_id = self.multiple_references_ids.filtered(lambda references: references.multiple_references_name != self.default_code).ids + + def multiple_references_list(self): + return { + 'name': "Multiple References", + 'type': 'ir.actions.act_window', + 'target': 'current', + 'res_model': 'multiple.reference.per.product', + 'views': [[False, "tree"], [False, "form"]], + 'context': {'default_product_id': self.id}, + 'domain': [('product_id', '=', self.id)], + } + + def write(self, values): + if values.get('default_code'): + if self.default_code: + self.env['multiple.reference.per.product'].sudo().create_reference(self.default_code, self.id) + res = super(ProductProductInherit, self).write(values) + return res + + +class ProductTemplateInherit(models.Model): + _inherit = 'product.template' + + multiple_references_code = fields.Char(string="Multiple References", related="product_variant_ids" + ".multiple_references_ids" + ".multiple_references_name") + multiple_references_id = fields.Many2many("multiple.reference.per.product", string="Multiple References", + compute="_get_multiple_reference") + multiple_references_count = fields.Integer(string="NUmber of references", compute="_get_multiple_reference_count") + + @api.depends('multiple_references_id') + def _get_multiple_reference_count(self): + self.multiple_references_count = len(self.multiple_references_id) + + def _get_multiple_reference(self): + self.multiple_references_id = self.product_variant_ids.mapped('multiple_references_id').filtered(lambda references: references.multiple_references_name != self.default_code).ids + + def multiple_references_list(self): + return { + 'name': "Multiple References", + 'type': 'ir.actions.act_window', + 'target': 'current', + 'res_model': 'multiple.reference.per.product', + 'views': [[False, "tree"], [False, "form"]], + 'context': {'default_product_id': self.product_variant_id.id}, + 'domain': [('product_id', '=', self.product_variant_id.id)], + } diff --git a/multiple_reference_per_product/security/ir.model.access.csv b/multiple_reference_per_product/security/ir.model.access.csv new file mode 100644 index 000000000..9efdd3ccd --- /dev/null +++ b/multiple_reference_per_product/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_multiple_reference_per_product,multiple.reference.per.product,model_multiple_reference_per_product,,1,1,1,1 \ No newline at end of file diff --git a/multiple_reference_per_product/static/description/assets/icons/check.png b/multiple_reference_per_product/static/description/assets/icons/check.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/icons/check.png differ diff --git a/multiple_reference_per_product/static/description/assets/icons/chevron.png b/multiple_reference_per_product/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/icons/chevron.png differ diff --git a/multiple_reference_per_product/static/description/assets/icons/cogs.png b/multiple_reference_per_product/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/icons/cogs.png differ diff --git a/multiple_reference_per_product/static/description/assets/icons/consultation.png b/multiple_reference_per_product/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/icons/consultation.png differ diff --git a/multiple_reference_per_product/static/description/assets/icons/ecom-black.png b/multiple_reference_per_product/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/icons/ecom-black.png differ diff --git a/multiple_reference_per_product/static/description/assets/icons/education-black.png b/multiple_reference_per_product/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/icons/education-black.png differ diff --git a/multiple_reference_per_product/static/description/assets/icons/hotel-black.png b/multiple_reference_per_product/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/icons/hotel-black.png differ diff --git a/multiple_reference_per_product/static/description/assets/icons/license.png b/multiple_reference_per_product/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/icons/license.png differ diff --git a/multiple_reference_per_product/static/description/assets/icons/lifebuoy.png b/multiple_reference_per_product/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/icons/lifebuoy.png differ diff --git a/multiple_reference_per_product/static/description/assets/icons/manufacturing-black.png b/multiple_reference_per_product/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/icons/manufacturing-black.png differ diff --git a/multiple_reference_per_product/static/description/assets/icons/pos-black.png b/multiple_reference_per_product/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/icons/pos-black.png differ diff --git a/multiple_reference_per_product/static/description/assets/icons/puzzle.png b/multiple_reference_per_product/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/icons/puzzle.png differ diff --git a/multiple_reference_per_product/static/description/assets/icons/restaurant-black.png b/multiple_reference_per_product/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/icons/restaurant-black.png differ diff --git a/multiple_reference_per_product/static/description/assets/icons/service-black.png b/multiple_reference_per_product/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/icons/service-black.png differ diff --git a/multiple_reference_per_product/static/description/assets/icons/trading-black.png b/multiple_reference_per_product/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/icons/trading-black.png differ diff --git a/multiple_reference_per_product/static/description/assets/icons/training.png b/multiple_reference_per_product/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/icons/training.png differ diff --git a/multiple_reference_per_product/static/description/assets/icons/update.png b/multiple_reference_per_product/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/icons/update.png differ diff --git a/multiple_reference_per_product/static/description/assets/icons/user.png b/multiple_reference_per_product/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/icons/user.png differ diff --git a/multiple_reference_per_product/static/description/assets/icons/wrench.png b/multiple_reference_per_product/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/icons/wrench.png differ diff --git a/multiple_reference_per_product/static/description/assets/misc/categories.png b/multiple_reference_per_product/static/description/assets/misc/categories.png new file mode 100644 index 000000000..bedf1e0b1 Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/misc/categories.png differ diff --git a/multiple_reference_per_product/static/description/assets/misc/check-box.png b/multiple_reference_per_product/static/description/assets/misc/check-box.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/misc/check-box.png differ diff --git a/multiple_reference_per_product/static/description/assets/misc/compass.png b/multiple_reference_per_product/static/description/assets/misc/compass.png new file mode 100644 index 000000000..d5fed8faa Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/misc/compass.png differ diff --git a/multiple_reference_per_product/static/description/assets/misc/corporate.png b/multiple_reference_per_product/static/description/assets/misc/corporate.png new file mode 100644 index 000000000..2eb13edbf Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/misc/corporate.png differ diff --git a/multiple_reference_per_product/static/description/assets/misc/customer-support.png b/multiple_reference_per_product/static/description/assets/misc/customer-support.png new file mode 100644 index 000000000..79efc72ed Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/misc/customer-support.png differ diff --git a/multiple_reference_per_product/static/description/assets/misc/cybrosys-logo.png b/multiple_reference_per_product/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 000000000..cc3cc0ccf Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/misc/cybrosys-logo.png differ diff --git a/multiple_reference_per_product/static/description/assets/misc/logo.png b/multiple_reference_per_product/static/description/assets/misc/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/misc/logo.png differ diff --git a/multiple_reference_per_product/static/description/assets/misc/pictures.png b/multiple_reference_per_product/static/description/assets/misc/pictures.png new file mode 100644 index 000000000..56d255fe9 Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/misc/pictures.png differ diff --git a/multiple_reference_per_product/static/description/assets/misc/pie-chart.png b/multiple_reference_per_product/static/description/assets/misc/pie-chart.png new file mode 100644 index 000000000..426e05244 Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/misc/pie-chart.png differ diff --git a/multiple_reference_per_product/static/description/assets/misc/right-arrow.png b/multiple_reference_per_product/static/description/assets/misc/right-arrow.png new file mode 100644 index 000000000..730984a06 Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/misc/right-arrow.png differ diff --git a/multiple_reference_per_product/static/description/assets/misc/star.png b/multiple_reference_per_product/static/description/assets/misc/star.png new file mode 100644 index 000000000..2eb9ab29f Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/misc/star.png differ diff --git a/multiple_reference_per_product/static/description/assets/misc/support.png b/multiple_reference_per_product/static/description/assets/misc/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/misc/support.png differ diff --git a/multiple_reference_per_product/static/description/assets/misc/whatsapp.png b/multiple_reference_per_product/static/description/assets/misc/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/misc/whatsapp.png differ diff --git a/multiple_reference_per_product/static/description/assets/modules/banner_product_brand_ecommerce.png b/multiple_reference_per_product/static/description/assets/modules/banner_product_brand_ecommerce.png new file mode 100644 index 000000000..549aba8a3 Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/modules/banner_product_brand_ecommerce.png differ diff --git a/multiple_reference_per_product/static/description/assets/modules/banner_product_brand_inventory.png b/multiple_reference_per_product/static/description/assets/modules/banner_product_brand_inventory.png new file mode 100644 index 000000000..525083a35 Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/modules/banner_product_brand_inventory.png differ diff --git a/multiple_reference_per_product/static/description/assets/modules/banner_product_brand_invoicing.png b/multiple_reference_per_product/static/description/assets/modules/banner_product_brand_invoicing.png new file mode 100644 index 000000000..266fc6958 Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/modules/banner_product_brand_invoicing.png differ diff --git a/multiple_reference_per_product/static/description/assets/modules/banner_product_brand_sale.png b/multiple_reference_per_product/static/description/assets/modules/banner_product_brand_sale.png new file mode 100644 index 000000000..407700502 Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/modules/banner_product_brand_sale.png differ diff --git a/multiple_reference_per_product/static/description/assets/modules/banner_product_multi_uom_pos.png b/multiple_reference_per_product/static/description/assets/modules/banner_product_multi_uom_pos.png new file mode 100644 index 000000000..a7e36775f Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/modules/banner_product_multi_uom_pos.png differ diff --git a/multiple_reference_per_product/static/description/assets/modules/banner_website_product_attachments.png b/multiple_reference_per_product/static/description/assets/modules/banner_website_product_attachments.png new file mode 100644 index 000000000..7e036d030 Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/modules/banner_website_product_attachments.png differ diff --git a/multiple_reference_per_product/static/description/assets/screenshots/demo1.png b/multiple_reference_per_product/static/description/assets/screenshots/demo1.png new file mode 100644 index 000000000..fd944e612 Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/screenshots/demo1.png differ diff --git a/multiple_reference_per_product/static/description/assets/screenshots/demo2.png b/multiple_reference_per_product/static/description/assets/screenshots/demo2.png new file mode 100644 index 000000000..8a2a29846 Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/screenshots/demo2.png differ diff --git a/multiple_reference_per_product/static/description/assets/screenshots/demo3.png b/multiple_reference_per_product/static/description/assets/screenshots/demo3.png new file mode 100644 index 000000000..e4cbad548 Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/screenshots/demo3.png differ diff --git a/multiple_reference_per_product/static/description/assets/screenshots/demo4.png b/multiple_reference_per_product/static/description/assets/screenshots/demo4.png new file mode 100644 index 000000000..50682c44a Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/screenshots/demo4.png differ diff --git a/multiple_reference_per_product/static/description/assets/screenshots/demo5.png b/multiple_reference_per_product/static/description/assets/screenshots/demo5.png new file mode 100644 index 000000000..5f2377917 Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/screenshots/demo5.png differ diff --git a/multiple_reference_per_product/static/description/assets/screenshots/hero.gif b/multiple_reference_per_product/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..1b8461088 Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/screenshots/hero.gif differ diff --git a/multiple_reference_per_product/static/description/assets/screenshots/hero15.gif b/multiple_reference_per_product/static/description/assets/screenshots/hero15.gif new file mode 100644 index 000000000..133ccfc7b Binary files /dev/null and b/multiple_reference_per_product/static/description/assets/screenshots/hero15.gif differ diff --git a/multiple_reference_per_product/static/description/banner.png b/multiple_reference_per_product/static/description/banner.png new file mode 100644 index 000000000..61dc460f7 Binary files /dev/null and b/multiple_reference_per_product/static/description/banner.png differ diff --git a/multiple_reference_per_product/static/description/icon.png b/multiple_reference_per_product/static/description/icon.png new file mode 100644 index 000000000..b2c520504 Binary files /dev/null and b/multiple_reference_per_product/static/description/icon.png differ diff --git a/multiple_reference_per_product/static/description/images/banner_product_brand_ecommerce.png b/multiple_reference_per_product/static/description/images/banner_product_brand_ecommerce.png new file mode 100644 index 000000000..549aba8a3 Binary files /dev/null and b/multiple_reference_per_product/static/description/images/banner_product_brand_ecommerce.png differ diff --git a/multiple_reference_per_product/static/description/images/banner_product_brand_inventory.png b/multiple_reference_per_product/static/description/images/banner_product_brand_inventory.png new file mode 100644 index 000000000..525083a35 Binary files /dev/null and b/multiple_reference_per_product/static/description/images/banner_product_brand_inventory.png differ diff --git a/multiple_reference_per_product/static/description/images/banner_product_brand_invoicing.png b/multiple_reference_per_product/static/description/images/banner_product_brand_invoicing.png new file mode 100644 index 000000000..266fc6958 Binary files /dev/null and b/multiple_reference_per_product/static/description/images/banner_product_brand_invoicing.png differ diff --git a/multiple_reference_per_product/static/description/images/banner_product_brand_sale.png b/multiple_reference_per_product/static/description/images/banner_product_brand_sale.png new file mode 100644 index 000000000..407700502 Binary files /dev/null and b/multiple_reference_per_product/static/description/images/banner_product_brand_sale.png differ diff --git a/multiple_reference_per_product/static/description/images/banner_product_multi_uom_pos.png b/multiple_reference_per_product/static/description/images/banner_product_multi_uom_pos.png new file mode 100644 index 000000000..a7e36775f Binary files /dev/null and b/multiple_reference_per_product/static/description/images/banner_product_multi_uom_pos.png differ diff --git a/multiple_reference_per_product/static/description/images/banner_website_product_attachments.png b/multiple_reference_per_product/static/description/images/banner_website_product_attachments.png new file mode 100644 index 000000000..7e036d030 Binary files /dev/null and b/multiple_reference_per_product/static/description/images/banner_website_product_attachments.png differ diff --git a/multiple_reference_per_product/static/description/images/checked.png b/multiple_reference_per_product/static/description/images/checked.png new file mode 100644 index 000000000..578cedb80 Binary files /dev/null and b/multiple_reference_per_product/static/description/images/checked.png differ diff --git a/multiple_reference_per_product/static/description/index.html b/multiple_reference_per_product/static/description/index.html new file mode 100644 index 000000000..d913c0685 --- /dev/null +++ b/multiple_reference_per_product/static/description/index.html @@ -0,0 +1,619 @@ +
+ +
+ +
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+ + + +

+ Multiple Reference Per Product

+

Add multiple reference for a single product or product variant

+ + + +
+ + +
+
+
+

Key Highlights +

+
    +
  • Add multiple reference code for a product.
  • +
  • Easily manage between different reference code.
  • +
  • Set default code for product from these reference codes.
  • +
  • Search products with any of the multiple reference codes.
  • +
+
+ + +

Explore This + Module

+ + + + + +
+
+ +
+

Overview +

+
+
+
+ This module helps you to maintain multiple reference codes for a single product + or product variant with which you can easily filter them out from the product menu. + Also manage between different codes as default codes for the product. +
+
+ + + +
+
+

+ Features +

+
+ +
+
+ +
+
+

+ Multiple Reference Per Product

+

+ Add multiple reference code for a product.

+
+
+ +
+
+ +
+
+

+ Easily manage between different reference code.

+

+ Set default code for product from these reference codes..

+
+
+ + +
+
+ +
+
+

+ Multiple reference code

+

+ Add multiple reference code for a product.

+
+
+ +
+
+ +
+
+

+ Easy manage

+

+ Easyly manage between different reference code.

+
+
+ +
+
+ +
+
+

+ default code

+

+ Set default code for product from these reference codes.

+
+
+
+
+ +
+
+

+ Easy search

+

+ Search products with any of the multiple reference codes..

+
+
+
+ + + +
+
+ +
+

Screenshots +

+
+
+
+ +
+

Create new reference

+ + +
+ +
+

Set default code

+ + +
+ +
+

Multiple reference for the product +

+ + +
+ +
+
+ + + +
+
+ +
+

Related + Products +

+
+ + + + + +
+
+ +
+

Our Services +

+
+ +
+
+
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+ +
+ + + + + +
+
+ +
+

Our Industries +

+
+ +
+
+
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+
+
+ + + + +
+
+ +
+

Support +

+
+
+
+
+
+
+ +
+
+

Need Help?

+

Got questions or need help? Get in touch.

+ +

+ odoo@cybrosys.com

+
+
+
+
+
+
+
+ +
+
+

WhatsApp

+

Say hi to us on WhatsApp!

+ +

+91 86068 27707 +

+
+
+
+
+
+
+
+ +
+
+
+ \ No newline at end of file diff --git a/multiple_reference_per_product/views/multiple_reference_per_product.xml b/multiple_reference_per_product/views/multiple_reference_per_product.xml new file mode 100644 index 000000000..3e0fa1b29 --- /dev/null +++ b/multiple_reference_per_product/views/multiple_reference_per_product.xml @@ -0,0 +1,87 @@ + + + + + + multiple.reference.tree.view + multiple.reference.per.product + + + + + + + + + + + multiple.reference.form.view + multiple.reference.per.product + +
+ + + + + + + + + + + +
+
+ + + + + + + + + + + + + +
+
+ + +
+ +
+
+ + + quality.measure.search + quality.measure + + + + + + + + + + + + + + Quality Measure + quality.measure + + tree,form + + +

+ Click here to add a new Quality Measure +

+
+
+ + + + + + + + + + + + quality.alert.tree + quality.alert + + + + + + + + + + + + quality.alert.form + quality.alert + +
+
+
+ +
+

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+
+
+
+ + + quality.alert.search + quality.alert + + + + + + + + + + + + + + + + Quality Alerts + quality.alert + + tree,form + + +

+ Click here to add a new Quality Alert +

+ Quality alerts will be created automatically when your inventory team try to process inventory operations. +

+
+
+ + + + + + + quality.test.tree + quality.test + + + + + + + + + + + + quality.test.form + quality.test + +
+ +
+

+
+ + + + + + + + + + + + + + + + +
+
+ + +
+
+
+
+ + + quality.test.search + quality.test + + + + + + + + + + + Quality Tests + quality.test + + tree,form + {'search_default_my_tests': 1} + + + + +
\ No newline at end of file diff --git a/quality_assurance/views/stock_view.xml b/quality_assurance/views/stock_view.xml new file mode 100644 index 000000000..067cf45c6 --- /dev/null +++ b/quality_assurance/views/stock_view.xml @@ -0,0 +1,19 @@ + + + + quality.stock.picking.form + stock.picking + + + + + + + + \ No newline at end of file diff --git a/simple_mrp_order/README.rst b/simple_mrp_order/README.rst new file mode 100644 index 000000000..91f4fdb74 --- /dev/null +++ b/simple_mrp_order/README.rst @@ -0,0 +1,45 @@ +Simple Manufacturing Orders +=========================== +This module will help you to create manufacturing order in few steps. + +Features +======== + +* warning will appear if the quantity is not available + +Installation +============ +- www.odoo.com/documentation/15.0/setup/install.html +- Install our custom addon + +License +------- +General Public License, Version 3 (LGPL v3). +(https://www.odoo.com/documentation/user/14.0/legal/licenses/licenses.html) + +Company +------- +* 'Cybrosys Techno Solutions `__ + +Credits +------- +* Developer: V14.0 Mehjabin Farsana, odoo@cybrosys.com + V15.0 Pranav T V, odoo@cybrosys.com + V16.0 Pranav T V, odoo@cybrosys.com +Contacts +-------- +* Mail Contact : odoo@cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit https://www.cybrosys.com + +Further information +=================== +HTML Description: ``__ diff --git a/simple_mrp_order/__init__.py b/simple_mrp_order/__init__.py new file mode 100644 index 000000000..0650744f6 --- /dev/null +++ b/simple_mrp_order/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/simple_mrp_order/__manifest__.py b/simple_mrp_order/__manifest__.py new file mode 100644 index 000000000..3c468fcd1 --- /dev/null +++ b/simple_mrp_order/__manifest__.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +###################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2022-TODAY Cybrosys Technologies(). +# Author: Mehjabin Farsana (Contact : odoo@cybrosys.com) +# +# This program is under the terms of the Odoo Proprietary License v1.0 (OPL-1) +# It is forbidden to publish, distribute, sublicense, or sell copies of the Software +# or modified copies of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. +# +######################################################################################## +{ + 'name': 'Simple Manufacturing Orders', + 'version': '16.0.1.0.0', + 'summary': 'Create Manufacturing Orders Easily', + 'description': """This module allow you to create manufacturing orders with out + taking the work orders or work centers.""", + 'category': 'Manufacturing/Manufacturing', + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'depends': ['mail', 'stock'], + 'website': 'https://www.cybrosys.com', + 'data': [ + 'security/security.xml', + 'security/ir.model.access.csv', + 'data/data.xml', + 'views/mrp_order_view.xml', + 'views/mrp_bom_view.xml', + 'views/product_views.xml', + ], + 'images': ['static/description/banner.png'], + 'license': 'LGPL-3', + 'installable': True, + 'auto_install': False, + 'application': True, +} diff --git a/simple_mrp_order/data/data.xml b/simple_mrp_order/data/data.xml new file mode 100644 index 000000000..f91ff485f --- /dev/null +++ b/simple_mrp_order/data/data.xml @@ -0,0 +1,18 @@ + + + + Simple MRP + mrp.order + MRP/ + 5 + 1 + 1 + + + + Simple Production + + inventory + + + diff --git a/simple_mrp_order/doc/RELEASE_NOTES.md b/simple_mrp_order/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..3e29898a6 --- /dev/null +++ b/simple_mrp_order/doc/RELEASE_NOTES.md @@ -0,0 +1,7 @@ +## Module + +#### 13.1.2022 +#### Version 16.0.1.0.0 +##### ADD +- Initial commit + diff --git a/simple_mrp_order/models/__init__.py b/simple_mrp_order/models/__init__.py new file mode 100644 index 000000000..707960074 --- /dev/null +++ b/simple_mrp_order/models/__init__.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- + +from . import mrp_order +from . import mrp_bom +from . import mrp_bom_line +from . import mrp_order_line diff --git a/simple_mrp_order/models/mrp_bom.py b/simple_mrp_order/models/mrp_bom.py new file mode 100644 index 000000000..78586b55b --- /dev/null +++ b/simple_mrp_order/models/mrp_bom.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- + +from odoo import models, fields, api + + +class SimpleMRPBom(models.Model): + _name = 'simple.mrp.bom' + _description = "Bills of Materials" + _inherit = ["mail.thread", "mail.activity.mixin"] + _rec_name = 'product_id' + + product_id = fields.Many2one('product.product', string="Product", required=True) + product_qty = fields.Float(string="Quantity", default=1.0, tracking=True) + uom_id = fields.Many2one('uom.uom', 'Product Unit of Measure', required=True) + company_id = fields.Many2one('res.company', 'Company', default=lambda self: self.env.company, + index=True, required=True) + # mrp_id = fields.Many2one('mrp.order', string="Manufacturing Order") + line_ids = fields.One2many('simple.mrp.bom.line', 'bom_id', string="Components") + + @api.onchange('product_id') + def onchange_product_id(self): + """ Update the Uom for the product """ + self.uom_id = self.product_id.uom_id.id + + diff --git a/simple_mrp_order/models/mrp_bom_line.py b/simple_mrp_order/models/mrp_bom_line.py new file mode 100644 index 000000000..7c512e291 --- /dev/null +++ b/simple_mrp_order/models/mrp_bom_line.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- + +from odoo import models, fields, api + + +class SimpleMRPBomLine(models.Model): + _name = 'simple.mrp.bom.line' + _description = "Bills of Materials Components" + _inherit = ["mail.thread", "mail.activity.mixin"] + + product_id = fields.Many2one('product.product', string="Product", required=True) + product_qty = fields.Float(string="Quantity", default=1.0, tracking=True) + uom_id = fields.Many2one('uom.uom', 'Product Unit of Measure', required=True) + bom_id = fields.Many2one('simple.mrp.bom') + + + @api.onchange('product_id') + def onchange_product_id(self): + """ Update the Uom for the product """ + self.uom_id = self.product_id.uom_id.id \ No newline at end of file diff --git a/simple_mrp_order/models/mrp_order.py b/simple_mrp_order/models/mrp_order.py new file mode 100644 index 000000000..3803f9743 --- /dev/null +++ b/simple_mrp_order/models/mrp_order.py @@ -0,0 +1,206 @@ +# -*- coding: utf-8 -*- +from datetime import datetime + +from odoo import models, fields, api, _ +from odoo.exceptions import ValidationError + + +class MRPOrder(models.Model): + _name = 'mrp.order' + _description = "Manufacturing Order" + _inherit = ["mail.thread", "mail.activity.mixin"] + + @api.model + def _get_default_location_src_id(self): + location = False + company_id = self.env.context.get('default_company_id', + self.env.company.id) + if self.env.context.get('default_picking_type_id'): + location = self.env['stock.picking.type'].browse(self.env.context[ + 'default_picking_type_id']).default_location_src_id + if not location: + location = self.env['stock.warehouse'].search( + [('company_id', '=', company_id)], limit=1).lot_stock_id + return location and location.id or False + + location_src_id = fields.Many2one('stock.location', + default=_get_default_location_src_id,) + + product_id = fields.Many2one('product.product', string="Product", required=True, domain="""[ + ('type', 'in', ['product', 'consu']),'|',('company_id', '=', False), + ('company_id', '=', company_id)]""") + name = fields.Char( + 'Reference', copy=False, readonly=True, default=lambda x: _('New')) + product_qty = fields.Float(string="Quantity To Manufacture", default=1.0, tracking=True) + user_id = fields.Many2one('res.users', 'Responsible', default=lambda self: self.env.user, + states={'done': [('readonly', True)]}) + company_id = fields.Many2one('res.company', 'Company', default=lambda self: self.env.company, + index=True, required=True) + # mrp_bom_ids = fields.One2many('simple.mrp.bom', 'mrp_id') + uom_id = fields.Many2one('uom.uom', 'Product Unit of Measure', required=True) + uom_categ_id = fields.Many2one(related='product_id.uom_id.category_id') + date_planned = fields.Datetime('Scheduled Date', copy=False, default=fields.Datetime.now, + help="Date at which production start.", index=True, required=True) + + bom_id = fields.Many2one('simple.mrp.bom', string="Bills of Materials") + line_ids = fields.One2many('mrp.order.line', 'mrp_id', string="Components") + + stock_line_ids = fields.One2many('stock.move', 'mrp_id', 'Products') + stock_move_id = fields.Many2one('stock.move') + + state = fields.Selection([ + ('draft', 'Draft'), + ('confirmed', 'Confirmed'), + ('done', 'Done'), + ('cancel', 'Cancelled')], string='State', + copy=False, index=True, readonly=True, + store=True, tracking=True, default='draft') + + @api.onchange('product_id') + def onchange_product_id(self): + """ Update the Uom for the product """ + self.uom_id = self.product_id.uom_id.id + bom_id = self.env['simple.mrp.bom'].search([ + ('product_id', '=', self.product_id.id) + ], limit=1) + if self.product_id: + self.bom_id = bom_id or False + # return {'domain': {'bom_id': [('product_id', '=', self.product_id.id)],}} + + @api.onchange('uom_id') + def _onchange_uom_id(self): + """ Update the Uom for the product """ + multiple = 1 + if self.uom_id.uom_type == 'bigger': + multiple = self.uom_id.factor_inv + elif self.uom_id.uom_type == 'smaller': + multiple = 1/self.uom_id.factor + self.stock_line_ids = False + self.line_ids = False + vals = [] + for rec in self.bom_id.line_ids: + vals.append((0, 0, { + 'product_id': rec.product_id.id, + 'product_qty': rec.product_qty * self.product_qty * multiple, + 'uom_id': rec.uom_id.id, + })) + self.line_ids = vals + val = [] + destination = self.env.ref('simple_mrp_order.location_simple_mrp') + for line in self.bom_id.line_ids: + val.append((0, 0, { + 'product_id': line.product_id.id, + 'product_uom_qty': line.product_qty * self.product_qty * multiple, + 'name': line.product_id.name, + 'company_id': self.company_id.id, + 'location_id': self.location_src_id.id, + 'location_dest_id': destination.id, + 'product_uom': line.uom_id.id, + 'state': 'draft', + 'product_uom_category_id': line.uom_id.category_id, + })) + self.stock_line_ids = val + + @api.model + def create(self, vals): + if "name" not in vals or vals["name"] == _("New"): + vals["name"] = self.env["ir.sequence"].next_by_code( + "mrp.order" + ) or _("New") + return super().create(vals) + + @api.onchange('bom_id', 'product_qty') + def onchange_bom_id(self): + """ Update the Components for the MRP Order """ + self.line_ids = False + self.stock_line_ids = False + self.product_id = self.bom_id.product_id.id + vals = [] + for line in self.bom_id.line_ids: + vals.append((0, 0, { + 'product_id': line.product_id.id, + 'product_qty': line.product_qty * self.product_qty, + 'uom_id': line.uom_id.id, + })) + val = [] + destination = self.env.ref('simple_mrp_order.location_simple_mrp') + for line in self.bom_id.line_ids: + val.append((0, 0, { + 'product_id': line.product_id.id, + 'product_uom_qty': line.product_qty * self.product_qty, + 'name': line.product_id.name, + 'company_id': self.company_id.id, + 'location_id': self.location_src_id.id, + 'location_dest_id': destination.id, + 'product_uom': line.uom_id.id, + 'state': 'draft', + 'product_uom_category_id': line.uom_id.category_id, + })) + self.stock_line_ids = val + self.line_ids = vals + if self.bom_id: + self.uom_id.category_id=self.uom_categ_id.id + # return {'domain': {'uom_id': [('category_id', '=', self.uom_categ_id.id)],}} + + def action_confirm(self): + for line in self.stock_line_ids: + if line.product_qty > line.product_id.qty_available and line.product_id.type == 'product': + raise ValidationError('Only %s quantity available for %s' % + (str(line.product_id.qty_available), + str(line.product_id.name))) + self.write({ + 'state': 'confirmed' + }) + + def action_done(self): + self.write({ + 'state': 'done' + }) + for move in self.stock_line_ids: + move._action_confirm() + move._action_assign() + move.move_line_ids.write({'qty_done': move.product_uom_qty}) + move._action_done() + source = self.env.ref('simple_mrp_order.location_simple_mrp') + move_id = self.env['stock.move'].create({ + 'product_id': self.product_id.id, + 'product_uom_qty': self.product_qty, + 'name': self.product_id.name, + 'company_id': self.company_id.id, + 'location_id': source.id, + 'location_dest_id': self.location_src_id.id, + 'product_uom': self.uom_id.id, + 'state': 'draft', + 'product_uom_category_id': self.uom_id.category_id, + 'origin': self.name + }) + move_id._action_confirm() + move_id._action_assign() + move_id.move_line_ids.write({'qty_done': move_id.product_uom_qty}) + move_id._action_done() + self.stock_move_id = move_id + + def action_cancel(self): + self.write({ + 'state': 'cancel' + }) + + def action_view_move(self): + ids = [stock.id for stock in self.stock_line_ids] + ids.append(self.stock_move_id.id) + return { + 'type': 'ir.actions.act_window', + 'res_model': 'stock.move', + 'domain': [('id', 'in', ids)], + 'name': _("Product Stock Move"), + 'target': 'current', + 'view_mode': 'tree', + } + + +class MRPLine(models.Model): + _inherit = 'stock.move' + + mrp_id = fields.Many2one('mrp.order') + + diff --git a/simple_mrp_order/models/mrp_order_line.py b/simple_mrp_order/models/mrp_order_line.py new file mode 100644 index 000000000..c24026a73 --- /dev/null +++ b/simple_mrp_order/models/mrp_order_line.py @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- + +from odoo import models, fields, api + + +class MRPOrderLine(models.Model): + _name = 'mrp.order.line' + _description = "Bills of Materials Components" + _inherit = ["mail.thread", "mail.activity.mixin"] + + product_id = fields.Many2one('product.product', string="Product", required=True) + product_qty = fields.Float(string="Quantity", default=1.0, tracking=True) + uom_id = fields.Many2one('uom.uom', 'Product Unit of Measure', required=True) + mrp_id = fields.Many2one('mrp.order') + diff --git a/simple_mrp_order/security/ir.model.access.csv b/simple_mrp_order/security/ir.model.access.csv new file mode 100644 index 000000000..23837f635 --- /dev/null +++ b/simple_mrp_order/security/ir.model.access.csv @@ -0,0 +1,5 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_mrp_order,access.mrp.order,model_mrp_order,,1,1,1,1 +access_simple_mrp_bom,access.simple.mrp.bom,model_simple_mrp_bom,,1,1,1,1 +access_simple_mrp_bom_line,access.simple.mrp.bom.line,model_simple_mrp_bom_line,,1,1,1,1 +access_mrp_order_line,access.mrp.order.line,model_mrp_order_line,,1,1,1,1 diff --git a/simple_mrp_order/security/security.xml b/simple_mrp_order/security/security.xml new file mode 100644 index 000000000..17897d5f6 --- /dev/null +++ b/simple_mrp_order/security/security.xml @@ -0,0 +1,25 @@ + + + + + + Manufacturing + + + + + User + + + + + + Administrator + + + + + + + + \ No newline at end of file diff --git a/simple_mrp_order/static/description/assets/icons/check.png b/simple_mrp_order/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/simple_mrp_order/static/description/assets/icons/check.png differ diff --git a/simple_mrp_order/static/description/assets/icons/chevron.png b/simple_mrp_order/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/simple_mrp_order/static/description/assets/icons/chevron.png differ diff --git a/simple_mrp_order/static/description/assets/icons/cogs.png b/simple_mrp_order/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/simple_mrp_order/static/description/assets/icons/cogs.png differ diff --git a/simple_mrp_order/static/description/assets/icons/consultation.png b/simple_mrp_order/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/simple_mrp_order/static/description/assets/icons/consultation.png differ diff --git a/simple_mrp_order/static/description/assets/icons/ecom-black.png b/simple_mrp_order/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/simple_mrp_order/static/description/assets/icons/ecom-black.png differ diff --git a/simple_mrp_order/static/description/assets/icons/education-black.png b/simple_mrp_order/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/simple_mrp_order/static/description/assets/icons/education-black.png differ diff --git a/simple_mrp_order/static/description/assets/icons/hotel-black.png b/simple_mrp_order/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/simple_mrp_order/static/description/assets/icons/hotel-black.png differ diff --git a/simple_mrp_order/static/description/assets/icons/license.png b/simple_mrp_order/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/simple_mrp_order/static/description/assets/icons/license.png differ diff --git a/simple_mrp_order/static/description/assets/icons/lifebuoy.png b/simple_mrp_order/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/simple_mrp_order/static/description/assets/icons/lifebuoy.png differ diff --git a/simple_mrp_order/static/description/assets/icons/manufacturing-black.png b/simple_mrp_order/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/simple_mrp_order/static/description/assets/icons/manufacturing-black.png differ diff --git a/simple_mrp_order/static/description/assets/icons/pos-black.png b/simple_mrp_order/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/simple_mrp_order/static/description/assets/icons/pos-black.png differ diff --git a/simple_mrp_order/static/description/assets/icons/puzzle.png b/simple_mrp_order/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/simple_mrp_order/static/description/assets/icons/puzzle.png differ diff --git a/simple_mrp_order/static/description/assets/icons/restaurant-black.png b/simple_mrp_order/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/simple_mrp_order/static/description/assets/icons/restaurant-black.png differ diff --git a/simple_mrp_order/static/description/assets/icons/service-black.png b/simple_mrp_order/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/simple_mrp_order/static/description/assets/icons/service-black.png differ diff --git a/simple_mrp_order/static/description/assets/icons/trading-black.png b/simple_mrp_order/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/simple_mrp_order/static/description/assets/icons/trading-black.png differ diff --git a/simple_mrp_order/static/description/assets/icons/training.png b/simple_mrp_order/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/simple_mrp_order/static/description/assets/icons/training.png differ diff --git a/simple_mrp_order/static/description/assets/icons/update.png b/simple_mrp_order/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/simple_mrp_order/static/description/assets/icons/update.png differ diff --git a/simple_mrp_order/static/description/assets/icons/user.png b/simple_mrp_order/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/simple_mrp_order/static/description/assets/icons/user.png differ diff --git a/simple_mrp_order/static/description/assets/icons/wrench.png b/simple_mrp_order/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/simple_mrp_order/static/description/assets/icons/wrench.png differ diff --git a/simple_mrp_order/static/description/assets/misc/categories.png b/simple_mrp_order/static/description/assets/misc/categories.png new file mode 100644 index 000000000..bedf1e0b1 Binary files /dev/null and b/simple_mrp_order/static/description/assets/misc/categories.png differ diff --git a/simple_mrp_order/static/description/assets/misc/check-box.png b/simple_mrp_order/static/description/assets/misc/check-box.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/simple_mrp_order/static/description/assets/misc/check-box.png differ diff --git a/simple_mrp_order/static/description/assets/misc/compass.png b/simple_mrp_order/static/description/assets/misc/compass.png new file mode 100644 index 000000000..d5fed8faa Binary files /dev/null and b/simple_mrp_order/static/description/assets/misc/compass.png differ diff --git a/simple_mrp_order/static/description/assets/misc/corporate.png b/simple_mrp_order/static/description/assets/misc/corporate.png new file mode 100644 index 000000000..2eb13edbf Binary files /dev/null and b/simple_mrp_order/static/description/assets/misc/corporate.png differ diff --git a/simple_mrp_order/static/description/assets/misc/customer-support.png b/simple_mrp_order/static/description/assets/misc/customer-support.png new file mode 100644 index 000000000..79efc72ed Binary files /dev/null and b/simple_mrp_order/static/description/assets/misc/customer-support.png differ diff --git a/simple_mrp_order/static/description/assets/misc/cybrosys-logo.png b/simple_mrp_order/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 000000000..cc3cc0ccf Binary files /dev/null and b/simple_mrp_order/static/description/assets/misc/cybrosys-logo.png differ diff --git a/simple_mrp_order/static/description/assets/misc/features.png b/simple_mrp_order/static/description/assets/misc/features.png new file mode 100644 index 000000000..b41769f77 Binary files /dev/null and b/simple_mrp_order/static/description/assets/misc/features.png differ diff --git a/simple_mrp_order/static/description/assets/misc/logo.png b/simple_mrp_order/static/description/assets/misc/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/simple_mrp_order/static/description/assets/misc/logo.png differ diff --git a/simple_mrp_order/static/description/assets/misc/pictures.png b/simple_mrp_order/static/description/assets/misc/pictures.png new file mode 100644 index 000000000..56d255fe9 Binary files /dev/null and b/simple_mrp_order/static/description/assets/misc/pictures.png differ diff --git a/simple_mrp_order/static/description/assets/misc/pie-chart.png b/simple_mrp_order/static/description/assets/misc/pie-chart.png new file mode 100644 index 000000000..426e05244 Binary files /dev/null and b/simple_mrp_order/static/description/assets/misc/pie-chart.png differ diff --git a/simple_mrp_order/static/description/assets/misc/right-arrow.png b/simple_mrp_order/static/description/assets/misc/right-arrow.png new file mode 100644 index 000000000..730984a06 Binary files /dev/null and b/simple_mrp_order/static/description/assets/misc/right-arrow.png differ diff --git a/simple_mrp_order/static/description/assets/misc/star.png b/simple_mrp_order/static/description/assets/misc/star.png new file mode 100644 index 000000000..2eb9ab29f Binary files /dev/null and b/simple_mrp_order/static/description/assets/misc/star.png differ diff --git a/simple_mrp_order/static/description/assets/misc/support.png b/simple_mrp_order/static/description/assets/misc/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/simple_mrp_order/static/description/assets/misc/support.png differ diff --git a/simple_mrp_order/static/description/assets/misc/whatsapp.png b/simple_mrp_order/static/description/assets/misc/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/simple_mrp_order/static/description/assets/misc/whatsapp.png differ diff --git a/simple_mrp_order/static/description/assets/modules/1.png b/simple_mrp_order/static/description/assets/modules/1.png new file mode 100644 index 000000000..5238bdeab Binary files /dev/null and b/simple_mrp_order/static/description/assets/modules/1.png differ diff --git a/simple_mrp_order/static/description/assets/modules/2.png b/simple_mrp_order/static/description/assets/modules/2.png new file mode 100644 index 000000000..1ae7cfe3b Binary files /dev/null and b/simple_mrp_order/static/description/assets/modules/2.png differ diff --git a/simple_mrp_order/static/description/assets/modules/3.png b/simple_mrp_order/static/description/assets/modules/3.png new file mode 100644 index 000000000..3c3ff1afb Binary files /dev/null and b/simple_mrp_order/static/description/assets/modules/3.png differ diff --git a/simple_mrp_order/static/description/assets/modules/4.png b/simple_mrp_order/static/description/assets/modules/4.png new file mode 100644 index 000000000..3fae4631e Binary files /dev/null and b/simple_mrp_order/static/description/assets/modules/4.png differ diff --git a/simple_mrp_order/static/description/assets/modules/5.gif b/simple_mrp_order/static/description/assets/modules/5.gif new file mode 100644 index 000000000..2a5f8e659 Binary files /dev/null and b/simple_mrp_order/static/description/assets/modules/5.gif differ diff --git a/simple_mrp_order/static/description/assets/modules/6.png b/simple_mrp_order/static/description/assets/modules/6.png new file mode 100644 index 000000000..7f2815273 Binary files /dev/null and b/simple_mrp_order/static/description/assets/modules/6.png differ diff --git a/simple_mrp_order/static/description/assets/screenshots/hero.gif b/simple_mrp_order/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..53987f0a0 Binary files /dev/null and b/simple_mrp_order/static/description/assets/screenshots/hero.gif differ diff --git a/simple_mrp_order/static/description/assets/screenshots/screenshot-1.png b/simple_mrp_order/static/description/assets/screenshots/screenshot-1.png new file mode 100644 index 000000000..249bee475 Binary files /dev/null and b/simple_mrp_order/static/description/assets/screenshots/screenshot-1.png differ diff --git a/simple_mrp_order/static/description/assets/screenshots/screenshot-2.png b/simple_mrp_order/static/description/assets/screenshots/screenshot-2.png new file mode 100644 index 000000000..f2a61bacf Binary files /dev/null and b/simple_mrp_order/static/description/assets/screenshots/screenshot-2.png differ diff --git a/simple_mrp_order/static/description/assets/screenshots/screenshot-3.png b/simple_mrp_order/static/description/assets/screenshots/screenshot-3.png new file mode 100644 index 000000000..a395bfb55 Binary files /dev/null and b/simple_mrp_order/static/description/assets/screenshots/screenshot-3.png differ diff --git a/simple_mrp_order/static/description/banner.png b/simple_mrp_order/static/description/banner.png new file mode 100644 index 000000000..e78427938 Binary files /dev/null and b/simple_mrp_order/static/description/banner.png differ diff --git a/simple_mrp_order/static/description/icon.png b/simple_mrp_order/static/description/icon.png new file mode 100644 index 000000000..ab27e5a46 Binary files /dev/null and b/simple_mrp_order/static/description/icon.png differ diff --git a/simple_mrp_order/static/description/index.html b/simple_mrp_order/static/description/index.html new file mode 100644 index 000000000..0ca9ef9b3 --- /dev/null +++ b/simple_mrp_order/static/description/index.html @@ -0,0 +1,533 @@ +
+ +
+ +
+
+ Community +
+
+
+ + + +

Simple Manufacturing Order

+

Create Manufacturing orders easily in few steps.

+ + + +
+ + +
+
+ +
+

Explore This + Module

+
+ + + + +
+
+ +
+

Overview +

+
+
+
+ The Simple Manufacturing Order module initiates for an easy creation of manufacturing orders. + Using application, the user can simply create a manufacturing order and bill of material. +
+
+ + + +
+
+ +
+

Features +

+
+
+
+
+ + Community Support +
+
+ + Create Bill of material. +
+
+ + Create manufacturing order. +
+
+ + Warning on low stock. +
+
+
+ + + +
+
+ +
+

Screenshots +

+
+
+
+ +
+

Bill of Material Form

+

Create a Bill of Material for a product with the components.

+ +
+ +
+

Manufacturing Order Form

+

Create a manufacturing order for the product with bill of material.

+ +
+ +
+

Warning Message View

+

Warning message for low stock product and will show details like available stock.

+ +
+ +
+
+ + + +
+
+ +
+

Related + Products +

+
+
+
+ +
+
+ + + + +
+
+ +
+

Our Services +

+
+ +
+
+
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+ +
+ + + + + +
+
+ +
+

Our + Industries +

+
+ +
+
+
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+
+
+ + + + +
+
+ +
+

Support +

+
+
+
+
+
+
+ +
+
+

Need Help?

+

Got questions or need help? Get in touch.

+ +

+ odoo@cybrosys.com

+
+
+
+
+
+
+
+ +
+
+

WhatsApp

+

Say hi to us on WhatsApp!

+ +

+91 86068 + 27707

+
+
+
+
+
+
+
+ +
+
+
+ \ No newline at end of file diff --git a/simple_mrp_order/views/mrp_bom_view.xml b/simple_mrp_order/views/mrp_bom_view.xml new file mode 100644 index 000000000..91f710a05 --- /dev/null +++ b/simple_mrp_order/views/mrp_bom_view.xml @@ -0,0 +1,66 @@ + + + + + + Bills of Materials + simple.mrp.bom + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + +
+
+
+ + + Bills of Materials + ir.actions.act_window + simple.mrp.bom + tree,form + +

+ Create a new Bills of Materials +

+
+
+ + + + +
+
\ No newline at end of file diff --git a/simple_mrp_order/views/mrp_order_view.xml b/simple_mrp_order/views/mrp_order_view.xml new file mode 100644 index 000000000..88e626412 --- /dev/null +++ b/simple_mrp_order/views/mrp_order_view.xml @@ -0,0 +1,113 @@ + + + + + + Manufacturing + mrp.order + +
+
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+
+
+
+ + + Manufacturing + mrp.order + + + + + + + + + + + + Manufacturing Orders + ir.actions.act_window + mrp.order + tree,form + +

+ Create a new Manufacturing Order +

+
+
+ + + + + +
+
\ No newline at end of file diff --git a/simple_mrp_order/views/product_views.xml b/simple_mrp_order/views/product_views.xml new file mode 100644 index 000000000..d571625c0 --- /dev/null +++ b/simple_mrp_order/views/product_views.xml @@ -0,0 +1,49 @@ + + + + + + Products + product.template + kanban,tree,form + {"search_default_consumable": 1, 'default_type': 'product'} + +

+ No product found. Let's create one! +

+

+ Define the components and finished products you wish to use in + bill of materials and manufacturing orders. +

+
+
+ + + Product Variants + product.product + tree,form,kanban + {"search_default_consumable": 1, 'default_type': 'product'} + +

+ No product found. Let's create one! +

+

+ Define the components and finished products you wish to use in + bill of materials and manufacturing orders. +

+
+
+ + + + + + +
+
\ No newline at end of file diff --git a/sticky_pivot_view/README.rst b/sticky_pivot_view/README.rst new file mode 100644 index 000000000..267b96774 --- /dev/null +++ b/sticky_pivot_view/README.rst @@ -0,0 +1,16 @@ +Sticky Pivot View V16 +====================== + +This module will helps to stick the pivot view header (Row and Column) . + + +Credits +------- +* Developer: +(v14) Shahil @ Cybrosys +(v15) Rosmy John @ Cybrosys +(v16) Rosmy John @ Cybrosys + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com diff --git a/sticky_pivot_view/__manifest__.py b/sticky_pivot_view/__manifest__.py new file mode 100644 index 000000000..1be0fd254 --- /dev/null +++ b/sticky_pivot_view/__manifest__.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# 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 . +# +############################################################################# + +{ + 'name': 'Sticky Pivot View', + 'version': '16.0.1.0.0', + 'summary': 'Helps to stick the pivot view (Row and Column)', + 'description': 'Helps to stick the pivot view (Row and Column)', + 'category': 'Tools', + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': 'https://www.cybrosys.com', + 'license': 'LGPL-3', + 'images': ['static/description/banner.png'], + 'depends': ['base', 'web'], + 'data': [], + 'assets': { + 'web.assets_backend': [ + '/sticky_pivot_view/static/src/css/main.css', + '/sticky_pivot_view/static/src/xml/pivot.xml' + ], + }, + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/sticky_pivot_view/doc/RELEASE_NOTES.md b/sticky_pivot_view/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..119fa6a14 --- /dev/null +++ b/sticky_pivot_view/doc/RELEASE_NOTES.md @@ -0,0 +1,5 @@ +## Module + +#### 29.09.2022 +#### Version 16.0.1.0.0 +#### ADD Initial Commit for sticky_pivot_view diff --git a/sticky_pivot_view/static/description/assets/icons/check.png b/sticky_pivot_view/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/sticky_pivot_view/static/description/assets/icons/check.png differ diff --git a/sticky_pivot_view/static/description/assets/icons/chevron.png b/sticky_pivot_view/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/sticky_pivot_view/static/description/assets/icons/chevron.png differ diff --git a/sticky_pivot_view/static/description/assets/icons/cogs.png b/sticky_pivot_view/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/sticky_pivot_view/static/description/assets/icons/cogs.png differ diff --git a/sticky_pivot_view/static/description/assets/icons/consultation.png b/sticky_pivot_view/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/sticky_pivot_view/static/description/assets/icons/consultation.png differ diff --git a/sticky_pivot_view/static/description/assets/icons/ecom-black.png b/sticky_pivot_view/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/sticky_pivot_view/static/description/assets/icons/ecom-black.png differ diff --git a/sticky_pivot_view/static/description/assets/icons/education-black.png b/sticky_pivot_view/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/sticky_pivot_view/static/description/assets/icons/education-black.png differ diff --git a/sticky_pivot_view/static/description/assets/icons/hotel-black.png b/sticky_pivot_view/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/sticky_pivot_view/static/description/assets/icons/hotel-black.png differ diff --git a/sticky_pivot_view/static/description/assets/icons/license.png b/sticky_pivot_view/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/sticky_pivot_view/static/description/assets/icons/license.png differ diff --git a/sticky_pivot_view/static/description/assets/icons/lifebuoy.png b/sticky_pivot_view/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/sticky_pivot_view/static/description/assets/icons/lifebuoy.png differ diff --git a/sticky_pivot_view/static/description/assets/icons/logo.png b/sticky_pivot_view/static/description/assets/icons/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/sticky_pivot_view/static/description/assets/icons/logo.png differ diff --git a/sticky_pivot_view/static/description/assets/icons/manufacturing-black.png b/sticky_pivot_view/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/sticky_pivot_view/static/description/assets/icons/manufacturing-black.png differ diff --git a/sticky_pivot_view/static/description/assets/icons/pos-black.png b/sticky_pivot_view/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/sticky_pivot_view/static/description/assets/icons/pos-black.png differ diff --git a/sticky_pivot_view/static/description/assets/icons/puzzle.png b/sticky_pivot_view/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/sticky_pivot_view/static/description/assets/icons/puzzle.png differ diff --git a/sticky_pivot_view/static/description/assets/icons/restaurant-black.png b/sticky_pivot_view/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/sticky_pivot_view/static/description/assets/icons/restaurant-black.png differ diff --git a/sticky_pivot_view/static/description/assets/icons/service-black.png b/sticky_pivot_view/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/sticky_pivot_view/static/description/assets/icons/service-black.png differ diff --git a/sticky_pivot_view/static/description/assets/icons/trading-black.png b/sticky_pivot_view/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/sticky_pivot_view/static/description/assets/icons/trading-black.png differ diff --git a/sticky_pivot_view/static/description/assets/icons/training.png b/sticky_pivot_view/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/sticky_pivot_view/static/description/assets/icons/training.png differ diff --git a/sticky_pivot_view/static/description/assets/icons/update.png b/sticky_pivot_view/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/sticky_pivot_view/static/description/assets/icons/update.png differ diff --git a/sticky_pivot_view/static/description/assets/icons/user.png b/sticky_pivot_view/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/sticky_pivot_view/static/description/assets/icons/user.png differ diff --git a/sticky_pivot_view/static/description/assets/icons/wrench.png b/sticky_pivot_view/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/sticky_pivot_view/static/description/assets/icons/wrench.png differ diff --git a/sticky_pivot_view/static/description/assets/misc/categories.png b/sticky_pivot_view/static/description/assets/misc/categories.png new file mode 100644 index 000000000..bedf1e0b1 Binary files /dev/null and b/sticky_pivot_view/static/description/assets/misc/categories.png differ diff --git a/sticky_pivot_view/static/description/assets/misc/check-box.png b/sticky_pivot_view/static/description/assets/misc/check-box.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/sticky_pivot_view/static/description/assets/misc/check-box.png differ diff --git a/sticky_pivot_view/static/description/assets/misc/compass.png b/sticky_pivot_view/static/description/assets/misc/compass.png new file mode 100644 index 000000000..d5fed8faa Binary files /dev/null and b/sticky_pivot_view/static/description/assets/misc/compass.png differ diff --git a/sticky_pivot_view/static/description/assets/misc/corporate.png b/sticky_pivot_view/static/description/assets/misc/corporate.png new file mode 100644 index 000000000..2eb13edbf Binary files /dev/null and b/sticky_pivot_view/static/description/assets/misc/corporate.png differ diff --git a/sticky_pivot_view/static/description/assets/misc/customer-support.png b/sticky_pivot_view/static/description/assets/misc/customer-support.png new file mode 100644 index 000000000..79efc72ed Binary files /dev/null and b/sticky_pivot_view/static/description/assets/misc/customer-support.png differ diff --git a/sticky_pivot_view/static/description/assets/misc/cybrosys-logo.png b/sticky_pivot_view/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 000000000..cc3cc0ccf Binary files /dev/null and b/sticky_pivot_view/static/description/assets/misc/cybrosys-logo.png differ diff --git a/sticky_pivot_view/static/description/assets/misc/features.png b/sticky_pivot_view/static/description/assets/misc/features.png new file mode 100644 index 000000000..b41769f77 Binary files /dev/null and b/sticky_pivot_view/static/description/assets/misc/features.png differ diff --git a/sticky_pivot_view/static/description/assets/misc/logo.png b/sticky_pivot_view/static/description/assets/misc/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/sticky_pivot_view/static/description/assets/misc/logo.png differ diff --git a/sticky_pivot_view/static/description/assets/misc/pictures.png b/sticky_pivot_view/static/description/assets/misc/pictures.png new file mode 100644 index 000000000..56d255fe9 Binary files /dev/null and b/sticky_pivot_view/static/description/assets/misc/pictures.png differ diff --git a/sticky_pivot_view/static/description/assets/misc/pie-chart.png b/sticky_pivot_view/static/description/assets/misc/pie-chart.png new file mode 100644 index 000000000..426e05244 Binary files /dev/null and b/sticky_pivot_view/static/description/assets/misc/pie-chart.png differ diff --git a/sticky_pivot_view/static/description/assets/misc/right-arrow.png b/sticky_pivot_view/static/description/assets/misc/right-arrow.png new file mode 100644 index 000000000..730984a06 Binary files /dev/null and b/sticky_pivot_view/static/description/assets/misc/right-arrow.png differ diff --git a/sticky_pivot_view/static/description/assets/misc/star.png b/sticky_pivot_view/static/description/assets/misc/star.png new file mode 100644 index 000000000..2eb9ab29f Binary files /dev/null and b/sticky_pivot_view/static/description/assets/misc/star.png differ diff --git a/sticky_pivot_view/static/description/assets/misc/support.png b/sticky_pivot_view/static/description/assets/misc/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/sticky_pivot_view/static/description/assets/misc/support.png differ diff --git a/sticky_pivot_view/static/description/assets/misc/whatsapp.png b/sticky_pivot_view/static/description/assets/misc/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/sticky_pivot_view/static/description/assets/misc/whatsapp.png differ diff --git a/sticky_pivot_view/static/description/assets/modules/1.png b/sticky_pivot_view/static/description/assets/modules/1.png new file mode 100644 index 000000000..5238bdeab Binary files /dev/null and b/sticky_pivot_view/static/description/assets/modules/1.png differ diff --git a/sticky_pivot_view/static/description/assets/modules/2.png b/sticky_pivot_view/static/description/assets/modules/2.png new file mode 100644 index 000000000..1ae7cfe3b Binary files /dev/null and b/sticky_pivot_view/static/description/assets/modules/2.png differ diff --git a/sticky_pivot_view/static/description/assets/modules/3.png b/sticky_pivot_view/static/description/assets/modules/3.png new file mode 100644 index 000000000..3c3ff1afb Binary files /dev/null and b/sticky_pivot_view/static/description/assets/modules/3.png differ diff --git a/sticky_pivot_view/static/description/assets/modules/4.png b/sticky_pivot_view/static/description/assets/modules/4.png new file mode 100644 index 000000000..3fae4631e Binary files /dev/null and b/sticky_pivot_view/static/description/assets/modules/4.png differ diff --git a/sticky_pivot_view/static/description/assets/modules/5.gif b/sticky_pivot_view/static/description/assets/modules/5.gif new file mode 100644 index 000000000..2a5f8e659 Binary files /dev/null and b/sticky_pivot_view/static/description/assets/modules/5.gif differ diff --git a/sticky_pivot_view/static/description/assets/modules/6.png b/sticky_pivot_view/static/description/assets/modules/6.png new file mode 100644 index 000000000..7f2815273 Binary files /dev/null and b/sticky_pivot_view/static/description/assets/modules/6.png differ diff --git a/sticky_pivot_view/static/description/assets/modules/approval_image.png b/sticky_pivot_view/static/description/assets/modules/approval_image.png new file mode 100644 index 000000000..84fe94e80 Binary files /dev/null and b/sticky_pivot_view/static/description/assets/modules/approval_image.png differ diff --git a/sticky_pivot_view/static/description/assets/modules/budget_image.png b/sticky_pivot_view/static/description/assets/modules/budget_image.png new file mode 100644 index 000000000..fe6aa6fe4 Binary files /dev/null and b/sticky_pivot_view/static/description/assets/modules/budget_image.png differ diff --git a/sticky_pivot_view/static/description/assets/modules/export_image.png b/sticky_pivot_view/static/description/assets/modules/export_image.png new file mode 100644 index 000000000..4e4ea0e51 Binary files /dev/null and b/sticky_pivot_view/static/description/assets/modules/export_image.png differ diff --git a/sticky_pivot_view/static/description/assets/modules/magento_image.png b/sticky_pivot_view/static/description/assets/modules/magento_image.png new file mode 100644 index 000000000..39de0820f Binary files /dev/null and b/sticky_pivot_view/static/description/assets/modules/magento_image.png differ diff --git a/sticky_pivot_view/static/description/assets/modules/pos_image.png b/sticky_pivot_view/static/description/assets/modules/pos_image.png new file mode 100644 index 000000000..c5932894b Binary files /dev/null and b/sticky_pivot_view/static/description/assets/modules/pos_image.png differ diff --git a/sticky_pivot_view/static/description/assets/modules/shopify_image.png b/sticky_pivot_view/static/description/assets/modules/shopify_image.png new file mode 100644 index 000000000..c6d92c16d Binary files /dev/null and b/sticky_pivot_view/static/description/assets/modules/shopify_image.png differ diff --git a/sticky_pivot_view/static/description/assets/screenshots/hero.png b/sticky_pivot_view/static/description/assets/screenshots/hero.png new file mode 100644 index 000000000..0a30c6fa9 Binary files /dev/null and b/sticky_pivot_view/static/description/assets/screenshots/hero.png differ diff --git a/sticky_pivot_view/static/description/assets/screenshots/img1.png b/sticky_pivot_view/static/description/assets/screenshots/img1.png new file mode 100644 index 000000000..88c35e5c4 Binary files /dev/null and b/sticky_pivot_view/static/description/assets/screenshots/img1.png differ diff --git a/sticky_pivot_view/static/description/banner.png b/sticky_pivot_view/static/description/banner.png new file mode 100644 index 000000000..c36f4854e Binary files /dev/null and b/sticky_pivot_view/static/description/banner.png differ diff --git a/sticky_pivot_view/static/description/icon.png b/sticky_pivot_view/static/description/icon.png new file mode 100644 index 000000000..6d0273c5a Binary files /dev/null and b/sticky_pivot_view/static/description/icon.png differ diff --git a/sticky_pivot_view/static/description/index.html b/sticky_pivot_view/static/description/index.html new file mode 100644 index 000000000..540b45790 --- /dev/null +++ b/sticky_pivot_view/static/description/index.html @@ -0,0 +1,520 @@ +
+ +
+ +
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+ + + +

Sticky Pivot View

+

Helps to stick the pivot view while scrolling Horizontally and Vertically.

+ + + +
+ + +
+
+ +
+

Explore This + Module

+
+ + + + +
+
+ +
+

Overview +

+
+
+
+ This module will ensure sticky pivot view and enhance the user experience so that the user will + never lose the headers while scrolling (Horizontally and Vertically) the report. +
+
+ + + +
+
+ +
+

Features +

+
+
+
+
+ +
+ Helps to stick the pivot view while scrolling +
+
+
+
+ + + +
+
+ +
+

Screenshots +

+
+
+
+ +
+

Sticky header in pivot view

+ + +
+ +
+
+ + + +
+
+ +
+

Related + Products +

+
+
+
+ +
+
+ + + + +
+
+ +
+

Our Services +

+
+ +
+
+
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+ +
+ + + + + +
+
+ +
+

Our + Industries +

+
+ +
+
+
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+
+
+ + + + +
+
+ +
+

Support +

+
+
+
+
+
+
+ +
+
+

Need Help?

+

Got questions or need help? Get in touch.

+ +

+ odoo@cybrosys.com

+
+
+
+
+
+
+
+ +
+
+

WhatsApp

+

Say hi to us on WhatsApp!

+ +

+91 86068 + 27707

+
+
+
+
+
+
+
+ +
+
+
+ \ No newline at end of file diff --git a/sticky_pivot_view/static/src/css/main.css b/sticky_pivot_view/static/src/css/main.css new file mode 100644 index 000000000..c690d13ea --- /dev/null +++ b/sticky_pivot_view/static/src/css/main.css @@ -0,0 +1,35 @@ +.cb_sticky { + position: sticky; + top: 0; + z-index : 10; +} + +.cb_sticky tr th{ + outline: 1px solid #dee2e6; + border: none; + outline-offset: -1px; + left: 0; + position: sticky !important; +} + +.cb_sticky_first_child{ + z-index: 10; + font-weight: 400 !important; +} + +tbody .o_pivot_header_cell_opened { + position: sticky; + left : 0; + outline: 1px solid #dee2e6; +} + +tbody .o_pivot_header_cell_closed { + position: sticky; + left : 0; + outline: 1px solid #dee2e6; +} + +tbody .dropdown > .dropdown-menu.o_pivot_field_menu.show { + left : 104%; + margin: -20px 0px 0px 0px; +} \ No newline at end of file diff --git a/sticky_pivot_view/static/src/xml/pivot.xml b/sticky_pivot_view/static/src/xml/pivot.xml new file mode 100644 index 000000000..b7f040263 --- /dev/null +++ b/sticky_pivot_view/static/src/xml/pivot.xml @@ -0,0 +1,14 @@ + + + + + overflow-x:unset + + + cb_sticky + + + cb_sticky_first_child bg-100 + + + \ No newline at end of file