@ -0,0 +1,41 @@ | 
				
			|||
Odoo13 Master Search | 
				
			|||
==================== | 
				
			|||
* Master Search module for Odoo 13 community editions | 
				
			|||
 | 
				
			|||
Installation | 
				
			|||
============ | 
				
			|||
	- www.odoo.com/documentation/13.0/setup/install.html | 
				
			|||
	- Install our custom addon | 
				
			|||
 | 
				
			|||
License | 
				
			|||
------- | 
				
			|||
General Public License, Version 3 (LGPL v3). | 
				
			|||
(https://www.odoo.com/documentation/user/13.0/legal/licenses/licenses.html) | 
				
			|||
 | 
				
			|||
Company | 
				
			|||
------- | 
				
			|||
* 'Cybrosys Techno Solutions <https://cybrosys.com/>`__ | 
				
			|||
 | 
				
			|||
Credits | 
				
			|||
------- | 
				
			|||
* Developer: | 
				
			|||
(v13) Shahil @ 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: `<static/description/index.html>`__ | 
				
			|||
 | 
				
			|||
@ -0,0 +1,22 @@ | 
				
			|||
# -*- coding: utf-8 -*- | 
				
			|||
############################################################################## | 
				
			|||
# | 
				
			|||
#    Cybrosys Technologies Pvt. Ltd. | 
				
			|||
# | 
				
			|||
#    Copyright (C) 2021-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). | 
				
			|||
#    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 <http://www.gnu.org/licenses/>. | 
				
			|||
# | 
				
			|||
############################################################################## | 
				
			|||
 | 
				
			|||
from . import models | 
				
			|||
@ -0,0 +1,44 @@ | 
				
			|||
# -*- coding: utf-8 -*- | 
				
			|||
############################################################################## | 
				
			|||
# | 
				
			|||
#    Cybrosys Technologies Pvt. Ltd. | 
				
			|||
# | 
				
			|||
#    Copyright (C) 2021-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). | 
				
			|||
#    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 <http://www.gnu.org/licenses/>. | 
				
			|||
# | 
				
			|||
############################################################################## | 
				
			|||
{ | 
				
			|||
    'name': 'Odoo13 Master Search', | 
				
			|||
    'version': '13.0.1.0.0', | 
				
			|||
    'summary': """Easy Search in Customers, Products, Sale, Purchase, Inventory and Accounting modules""", | 
				
			|||
    'description': """Easy Search in Customers, Products, Sale, Purchase, Inventory and Accounting modules,  | 
				
			|||
                      Search, Advance search, master search, odoo14, """, | 
				
			|||
    '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.jpg'], | 
				
			|||
    'depends': ['base', 'stock', 'sale', 'purchase'], | 
				
			|||
    'data': [ | 
				
			|||
        'security/ir.model.access.csv', | 
				
			|||
        'security/security.xml', | 
				
			|||
        'views/master_search_view.xml', | 
				
			|||
        'views/template.xml', | 
				
			|||
    ], | 
				
			|||
    'installable': True, | 
				
			|||
    'auto_install': False, | 
				
			|||
    'application': False, | 
				
			|||
} | 
				
			|||
@ -0,0 +1,6 @@ | 
				
			|||
## Module <master_search> | 
				
			|||
 | 
				
			|||
#### 25.05.2021 | 
				
			|||
#### Version 13.0.1.0.0 | 
				
			|||
#### ADD | 
				
			|||
Initial Commit | 
				
			|||
@ -0,0 +1,22 @@ | 
				
			|||
# -*- coding: utf-8 -*- | 
				
			|||
############################################################################## | 
				
			|||
# | 
				
			|||
#    Cybrosys Technologies Pvt. Ltd. | 
				
			|||
# | 
				
			|||
#    Copyright (C) 2021-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). | 
				
			|||
#    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 <http://www.gnu.org/licenses/>. | 
				
			|||
# | 
				
			|||
############################################################################## | 
				
			|||
 | 
				
			|||
from . import master_search | 
				
			|||
@ -0,0 +1,366 @@ | 
				
			|||
# -*- coding: utf-8 -*- | 
				
			|||
############################################################################## | 
				
			|||
# | 
				
			|||
#    Cybrosys Technologies Pvt. Ltd. | 
				
			|||
# | 
				
			|||
#    Copyright (C) 2021-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). | 
				
			|||
#    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 <http://www.gnu.org/licenses/>. | 
				
			|||
# | 
				
			|||
############################################################################## | 
				
			|||
 | 
				
			|||
from odoo import fields, models, api, _ | 
				
			|||
from odoo.exceptions import UserError | 
				
			|||
 | 
				
			|||
 | 
				
			|||
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) | 
				
			|||
 | 
				
			|||
    @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: | 
				
			|||
            self._search_query(key) | 
				
			|||
        self.name = self.search_string | 
				
			|||
 | 
				
			|||
    def _search_query(self, key): | 
				
			|||
        """ search for the model with given key and update result """ | 
				
			|||
        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 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 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]) | 
				
			|||
        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 ILIKE '%{key}%' | 
				
			|||
            OR  | 
				
			|||
             pt.default_code ILIKE '%{key}%' | 
				
			|||
            OR  | 
				
			|||
             pt.type ILIKE '%{key}%' | 
				
			|||
            OR  | 
				
			|||
             pt.description 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 | 
				
			|||
 | 
				
			|||
    def _search_customer(self, key, active_qry): | 
				
			|||
        """ search for customer """ | 
				
			|||
        query = """  | 
				
			|||
        SELECT  | 
				
			|||
            r.id from res_partner r  | 
				
			|||
        LEFT JOIN  | 
				
			|||
            res_country_state rs  | 
				
			|||
                ON  | 
				
			|||
                 rs.id = r.state_id | 
				
			|||
        LEFT JOIN  | 
				
			|||
            res_country rc  | 
				
			|||
                ON  | 
				
			|||
                 rc.id = r.country_id | 
				
			|||
        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  | 
				
			|||
                 rs.name ILIKE '%{key}%' | 
				
			|||
                OR  | 
				
			|||
                 rc.name ILIKE '%{key}%' | 
				
			|||
                OR  | 
				
			|||
                 r.email ILIKE '%{key}%') | 
				
			|||
        """ | 
				
			|||
        self._cr.execute(query.format(key=key, active=active_qry).replace('obj', 'r')) | 
				
			|||
        customers = self._cr.dictfetchall() | 
				
			|||
        customer_ids = self.env['res.partner'].browse([i['id'] for i in customers]) | 
				
			|||
        self.customer_ids += customer_ids | 
				
			|||
		
		
			
  | 
@ -0,0 +1,20 @@ | 
				
			|||
<?xml version="1.0" encoding="utf-8"?> | 
				
			|||
<odoo> | 
				
			|||
    <!--   Record rule for search history   --> | 
				
			|||
    <record model="ir.rule" id="company_search_rule"> | 
				
			|||
        <field name="name">Company Search Rule</field> | 
				
			|||
        <field name="model_id" ref="model_master_search"/> | 
				
			|||
        <field name="domain_force">[('user_id', '=', user.id)]</field> | 
				
			|||
    </record> | 
				
			|||
 | 
				
			|||
    <!--    Record rules for restrict search access    --> | 
				
			|||
    <record model="ir.module.category" id="module_master_search"> | 
				
			|||
        <field name="name">Search Rights</field> | 
				
			|||
        <field name="sequence">11</field> | 
				
			|||
    </record> | 
				
			|||
 | 
				
			|||
    <record id="master_search_read" model="res.groups"> | 
				
			|||
        <field name="name">Master Search</field> | 
				
			|||
        <field name="comment">Master Search Group</field> | 
				
			|||
    </record> | 
				
			|||
</odoo> | 
				
			|||
| 
		 After Width: | Height: | Size: 236 KiB  | 
| 
		 After Width: | Height: | Size: 310 B  | 
| 
		 After Width: | Height: | Size: 1.3 KiB  | 
| 
		 After Width: | Height: | Size: 1.4 KiB  | 
| 
		 After Width: | Height: | Size: 576 B  | 
| 
		 After Width: | Height: | Size: 733 B  | 
| 
		 After Width: | Height: | Size: 404 B  | 
| 
		 After Width: | Height: | Size: 492 B  | 
| 
		 After Width: | Height: | Size: 1.2 KiB  | 
| 
		 After Width: | Height: | Size: 911 B  | 
| 
		 After Width: | Height: | Size: 1.1 KiB  | 
| 
		 After Width: | Height: | Size: 1.2 KiB  | 
| 
		 After Width: | Height: | Size: 673 B  | 
| 
		 After Width: | Height: | Size: 878 B  | 
| 
		 After Width: | Height: | Size: 653 B  | 
| 
		 After Width: | Height: | Size: 905 B  | 
| 
		 After Width: | Height: | Size: 839 B  | 
| 
		 After Width: | Height: | Size: 427 B  | 
| 
		 After Width: | Height: | Size: 627 B  | 
| 
		 After Width: | Height: | Size: 1.2 KiB  | 
| 
		 After Width: | Height: | Size: 988 B  | 
| 
		 After Width: | Height: | Size: 1.2 KiB  | 
| 
		 After Width: | Height: | Size: 85 KiB  | 
| 
		 After Width: | Height: | Size: 180 KiB  | 
| 
		 After Width: | Height: | Size: 184 KiB  | 
| 
		 After Width: | Height: | Size: 113 KiB  | 
| 
		 After Width: | Height: | Size: 87 KiB  | 
| 
		 After Width: | Height: | Size: 113 KiB  | 
| 
		 After Width: | Height: | Size: 69 KiB  | 
| 
		 After Width: | Height: | Size: 59 KiB  | 
| 
		 After Width: | Height: | Size: 43 KiB  | 
| 
		 After Width: | Height: | Size: 82 KiB  | 
| 
		 After Width: | Height: | Size: 75 KiB  | 
| 
		 After Width: | Height: | Size: 66 KiB  | 
| 
		 After Width: | Height: | Size: 45 KiB  | 
| 
		 After Width: | Height: | Size: 88 KiB  | 
| 
		 After Width: | Height: | Size: 72 KiB  | 
| 
		 After Width: | Height: | Size: 54 KiB  | 
| 
		 After Width: | Height: | Size: 65 KiB  | 
| 
		 After Width: | Height: | Size: 178 KiB  | 
| 
		 After Width: | Height: | Size: 20 KiB  | 
@ -0,0 +1,634 @@ | 
				
			|||
<!--- HERO CONTAINER  --> | 
				
			|||
 <section class="container" style="padding: 6rem 1.5rem;"> | 
				
			|||
  <div class="row"> | 
				
			|||
    <div class="col-lg-6 d-flex flex-column justify-content-center"> | 
				
			|||
      <h1 | 
				
			|||
        style="font-family: Montserrat, 'sans-serif'; color: #000 !important; font-weight: 800 !important; font-size: 3rem !important;"> | 
				
			|||
        Master Search | 
				
			|||
      </h1> | 
				
			|||
      <h4 class="mt-3" | 
				
			|||
        style="font-family: Montserrat, 'sans-serif'; color: #1a1a1a !important; font-weight: 300 !important; font-size: 1.5rem !important;"> | 
				
			|||
        Easy Search in Customers, Products, Sale, Purchase, Inventory and Accounting modules</h4> | 
				
			|||
      <h5 class="mt-4" | 
				
			|||
        style="font-family: Montserrat, 'sans-serif'; color: #000 !important; font-weight: 800 !important;"> | 
				
			|||
        Key Features</h5> | 
				
			|||
 | 
				
			|||
      <span class="d-flex align-items-center" style="margin: -0.5rem 0rem 0rem -0.4rem !important;"> | 
				
			|||
        <img src="./assets/icons/chevron.png" height="18" width="18" class="img-responsive mr-1"> | 
				
			|||
        <p class="mt-3" style="font-family: Montserrat, 'sans-serif'; font-weight: 500;">Dynamic Search View Option</p> | 
				
			|||
      </span> | 
				
			|||
 | 
				
			|||
      <span class="d-flex align-items-center" style="margin: -1rem 0rem 0rem -0.4rem !important;"> | 
				
			|||
        <img src="./assets/icons/chevron.png" height="18" width="18" class="img-responsive mr-1"> | 
				
			|||
        <p class="mt-3" style="font-family: Montserrat, 'sans-serif'; font-weight: 500;">Easily Search Records in Customers, Products, Sale, Purchase, Inventory and Accounting Data </p> | 
				
			|||
      </span> | 
				
			|||
 | 
				
			|||
      <span class="d-flex align-items-center" style="margin: -1rem 0rem 0rem -0.4rem !important;"> | 
				
			|||
        <img src="./assets/icons/chevron.png" height="18" width="18" class="img-responsive mr-1"> | 
				
			|||
        <p class="mt-3" style="font-family: Montserrat, 'sans-serif'; font-weight: 500;">Possible to search with | 
				
			|||
          different attributes like name, reference, number, etc. | 
				
			|||
        </p> | 
				
			|||
      </span> | 
				
			|||
 | 
				
			|||
    </div> | 
				
			|||
    <div class="col-lg-6 d-flex flex-column justify-content-center"> | 
				
			|||
      <img src="./assets/hero.png" class="img-responsive"> | 
				
			|||
    </div> | 
				
			|||
  </div> | 
				
			|||
</section> | 
				
			|||
<!--- END OF HERO CONTAINER  --> | 
				
			|||
 | 
				
			|||
 | 
				
			|||
<!--- OVERVIEW CONTAINER  --> | 
				
			|||
<section class="container" style="background-color: #ffffff !important; padding: 4rem 3rem;"> | 
				
			|||
  <div class="row"> | 
				
			|||
    <div class="col-lg-12 d-flex flex-column justify-content-center align-items-center"> | 
				
			|||
      <h2 class="text-center" | 
				
			|||
        style="font-family: Montserrat, 'sans-serif'; color: #000 !important; font-weight: 800 !important; font-size: 2rem !important; width: 80%;"> | 
				
			|||
        Overview</h2> | 
				
			|||
    </div> | 
				
			|||
 | 
				
			|||
    <div class="col-lg-12 mt-3"> | 
				
			|||
      <p class="mt-3 text-center" style="font-family: Montserrat, 'sans-serif'; font-weight: 500; font-size: 1rem;"> | 
				
			|||
        Master 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 | 
				
			|||
        'Master Search' group users. Possible to search using different attributes like name, reference, number, etc. | 
				
			|||
      </p> | 
				
			|||
    </div> | 
				
			|||
 | 
				
			|||
  </div> | 
				
			|||
</section> | 
				
			|||
<!--- END OF OVERVIEW CONTAINER  --> | 
				
			|||
 | 
				
			|||
 | 
				
			|||
 | 
				
			|||
<!--- FEATURES CONTAINER  --> | 
				
			|||
 <section class="container" style="background-color: #ffffff !important; padding: 4rem 3rem;"> | 
				
			|||
  <div class="row"> | 
				
			|||
    <div class="col-lg-6"> | 
				
			|||
      <div class="d-flex flex-column justify-column-center align-items-center" | 
				
			|||
        style="background-color: #f6f8f9 !important; padding: 2rem !important; border-radius: 10px !important; height: 100% !important;"> | 
				
			|||
        <h4 class="text-center" | 
				
			|||
          style="font-family: Montserrat, 'sans-serif'; color: #000 !important; font-weight: 800 !important; font-size: 1.2rem !important; width: 80%;"> | 
				
			|||
          Dynamic Search View Option</h4> | 
				
			|||
        <p class="text-center" | 
				
			|||
          style="font-family: Montserrat, 'sans-serif'; color: #1a1a1a !important; font-weight: 300 !important; font-size: 1rem !important; margin-bottom: 0 !important;"> | 
				
			|||
          Separate View for Search bar and also to show the search results</p> | 
				
			|||
      </div> | 
				
			|||
    </div> | 
				
			|||
    <div class="col-lg-6"> | 
				
			|||
      <div class="d-flex flex-column justify-column-center align-items-center" | 
				
			|||
        style="background-color: #f6f8f9 !important; padding: 2rem !important; border-radius: 10px !important; height: 100% !important;"> | 
				
			|||
        <h4 class="text-center" | 
				
			|||
          style="font-family: Montserrat, 'sans-serif'; color: #000 !important; font-weight: 800 !important; font-size: 1.2rem !important; width: 80%;"> | 
				
			|||
          Easily Search Records in Different Modules</h4> | 
				
			|||
        <p class="text-center" | 
				
			|||
          style="font-family: Montserrat, 'sans-serif'; color: #1a1a1a !important; font-weight: 300 !important; font-size: 1rem !important; margin-bottom: 0 !important;"> | 
				
			|||
          Easily Search Records in Customers, Products, Sale, Purchase, Inventory and Accounting Module </p> | 
				
			|||
      </div> | 
				
			|||
    </div> | 
				
			|||
  </div> | 
				
			|||
 | 
				
			|||
  <div class="row" style="margin-top: 2rem !important"> | 
				
			|||
    <div class="col-lg-6"> | 
				
			|||
      <div class="d-flex flex-column justify-column-center align-items-center" | 
				
			|||
        style="background-color: #f6f8f9 !important; padding: 2rem !important; border-radius: 10px !important; height: 100% !important;"> | 
				
			|||
        <h4 class="text-center" | 
				
			|||
          style="font-family: Montserrat, 'sans-serif'; color: #000 !important; font-weight: 800 !important; font-size: 1.2rem !important; width: 80%;"> | 
				
			|||
          Option to Search with different attributes</h4> | 
				
			|||
        <p class="text-center" | 
				
			|||
          style="font-family: Montserrat, 'sans-serif'; color: #1a1a1a !important; font-weight: 300 !important; font-size: 1rem !important; margin-bottom: 0 !important;"> | 
				
			|||
          Possible to search with | 
				
			|||
          different attributes like name, reference, customer name, number, etc. </p> | 
				
			|||
      </div> | 
				
			|||
    </div> | 
				
			|||
    <div class="col-lg-6"> | 
				
			|||
      <div class="d-flex flex-column justify-column-center align-items-center" | 
				
			|||
        style="background-color: #f6f8f9 !important; padding: 2rem !important; border-radius: 10px !important; height: 100% !important;"> | 
				
			|||
        <h4 class="text-center" | 
				
			|||
          style="font-family: Montserrat, 'sans-serif'; color: #000 !important; font-weight: 800 !important; font-size: 1.2rem !important; width: 80%;"> | 
				
			|||
          Recent Search Results</h4> | 
				
			|||
        <p class="text-center" | 
				
			|||
          style="font-family: Montserrat, 'sans-serif'; color: #1a1a1a !important; font-weight: 300 !important; font-size: 1rem !important; margin-bottom: 0 !important;"> | 
				
			|||
          Possible to access the Recent Search History </p> | 
				
			|||
      </div> | 
				
			|||
    </div> | 
				
			|||
  </div> | 
				
			|||
 | 
				
			|||
 | 
				
			|||
 | 
				
			|||
</section> | 
				
			|||
<!--- END OF FEATURES CONTAINER  --> | 
				
			|||
 | 
				
			|||
 | 
				
			|||
<!-- SCREENSHOTS SECTION --> | 
				
			|||
 | 
				
			|||
<section class="container" style="padding: 4rem 1.5rem 0rem;"> | 
				
			|||
  <div class="row"> | 
				
			|||
    <div class="col-lg-12 d-flex flex-column justify-content-center align-items-center"> | 
				
			|||
      <h2 class="text-center" | 
				
			|||
        style="font-family: Montserrat, 'sans-serif'; color: #000 !important; font-weight: 800 !important; font-size: 2rem !important; width: 80%;"> | 
				
			|||
        Screenshots</h2> | 
				
			|||
    </div> | 
				
			|||
 | 
				
			|||
    <div class="col-lg-12 my-3" style="background-color: #f6f6f6 !important; padding: 4rem 3rem;"> | 
				
			|||
      <div class="d-flex mb-3"> | 
				
			|||
        <div class="d-flex justify-content-center align-items-center" | 
				
			|||
          style="background-color: #3498DB !important; border: 4px solid #d6eaf8 !important; box-shadow: 0px 0px 0px 4px #ebf5fb !important; color: #fff !important; height: 35px; width: 35px; border-radius: 50% !important; font-size: 1.1rem !important; "> | 
				
			|||
          <h6 style="margin-top: 0.5rem; color: #fff !important;">1</h6> | 
				
			|||
        </div> | 
				
			|||
        <h6 class="mt-2 ml-2">Master Search User Access</h6> | 
				
			|||
      </div> | 
				
			|||
      <img src="assets/screenshots/1-Master-Search-User-Access.png" width="100%" class="img-resposive" | 
				
			|||
        style="border-radius: 10px !important;"> | 
				
			|||
    </div> | 
				
			|||
 | 
				
			|||
    <div class="col-lg-12" style="background-color: #ffffff !important; padding: 4rem 3rem;"> | 
				
			|||
      <div class="d-flex my-3"> | 
				
			|||
        <div class="d-flex justify-content-center align-items-center" | 
				
			|||
          style="background-color: #3498DB !important; border: 4px solid #d6eaf8 !important; box-shadow: 0px 0px 0px 4px #ebf5fb !important; color: #fff !important; height: 35px; width: 35px; border-radius: 50% !important; font-size: 1.1rem !important;"> | 
				
			|||
          <h6 style="margin-top: 0.6rem; color: #fff !important;">2</h6> | 
				
			|||
        </div> | 
				
			|||
        <h6 class="mt-2 ml-2">Master Search</h6> | 
				
			|||
      </div> | 
				
			|||
      <img src="assets/screenshots/2-Master-Search-main-screenshot.png" width="100%" class="img-resposive" | 
				
			|||
        style="border-radius: 10px !important;"> | 
				
			|||
    </div> | 
				
			|||
 | 
				
			|||
    <div class="col-lg-12" style="background-color: #f6f6f6 !important; padding: 4rem 3rem;"> | 
				
			|||
      <div class="d-flex my-3"> | 
				
			|||
        <div class="d-flex justify-content-center align-items-center" | 
				
			|||
          style="background-color: #3498DB !important; border: 4px solid #d6eaf8 !important; box-shadow: 0px 0px 0px 4px #ebf5fb !important; color: #fff !important; height: 35px; width: 35px; border-radius: 50% !important; font-size: 1.1rem !important;"> | 
				
			|||
          <h6 style="margin-top: 0.6rem; color: #fff !important;">3</h6> | 
				
			|||
        </div> | 
				
			|||
        <h6 class="mt-2 ml-2">Search in Customer Data</h6> | 
				
			|||
      </div> | 
				
			|||
      <img src="assets/screenshots/A1-Search-in-Customer-data.png" width="100%" class="img-resposive" | 
				
			|||
        style="border-radius: 10px !important;"> | 
				
			|||
    </div> | 
				
			|||
 | 
				
			|||
 | 
				
			|||
    <div class="col-lg-12" style="background-color: #ffffff !important; padding: 4rem 3rem;"> | 
				
			|||
      <div class="d-flex my-3"> | 
				
			|||
        <div class="d-flex justify-content-center align-items-center" | 
				
			|||
          style="background-color: #3498DB !important; border: 4px solid #d6eaf8 !important; box-shadow: 0px 0px 0px 4px #ebf5fb !important; color: #fff !important; height: 35px; width: 35px; border-radius: 50% !important; font-size: 1.1rem !important;"> | 
				
			|||
          <h6 style="margin-top: 0.6rem; color: #fff !important;">4</h6> | 
				
			|||
        </div> | 
				
			|||
        <h6 class="mt-2 ml-2">Customer Search Record View</h6> | 
				
			|||
      </div> | 
				
			|||
      <img src="assets/screenshots/A2-Customer-Search-record-view.png" width="100%" class="img-resposive" | 
				
			|||
        style="border-radius: 10px !important;"> | 
				
			|||
    </div> | 
				
			|||
 | 
				
			|||
    <div class="col-lg-12" style="background-color: #f6f6f6 !important; padding: 4rem 3rem;"> | 
				
			|||
      <div class="d-flex my-3"> | 
				
			|||
        <div class="d-flex justify-content-center align-items-center" | 
				
			|||
          style="background-color: #3498DB !important; border: 4px solid #d6eaf8 !important; box-shadow: 0px 0px 0px 4px #ebf5fb !important; color: #fff !important; height: 35px; width: 35px; border-radius: 50% !important; font-size: 1.1rem !important;"> | 
				
			|||
          <h6 style="margin-top: 0.6rem; color: #fff !important;">5</h6> | 
				
			|||
        </div> | 
				
			|||
        <h6 class="mt-2 ml-2">Search in Inventory Data</h6> | 
				
			|||
      </div> | 
				
			|||
      <img src="assets/screenshots/B1-Search-in-Inventory-Data.png" width="100%" class="img-resposive" | 
				
			|||
        style="border-radius: 10px !important;"> | 
				
			|||
    </div> | 
				
			|||
 | 
				
			|||
 | 
				
			|||
    <div class="col-lg-12" style="background-color: #ffffff !important; padding: 4rem 3rem;"> | 
				
			|||
      <div class="d-flex my-3"> | 
				
			|||
        <div class="d-flex justify-content-center align-items-center" | 
				
			|||
          style="background-color: #3498DB !important; border: 4px solid #d6eaf8 !important; box-shadow: 0px 0px 0px 4px #ebf5fb !important; color: #fff !important; height: 35px; width: 35px; border-radius: 50% !important; font-size: 1.1rem !important;"> | 
				
			|||
          <h6 style="margin-top: 0.6rem; color: #fff !important;">6</h6> | 
				
			|||
        </div> | 
				
			|||
        <h6 class="mt-2 ml-2">Search in Inventory Data</h6> | 
				
			|||
      </div> | 
				
			|||
      <img src="assets/screenshots/B1-Search-in-Inventory-Data.png" width="100%" class="img-resposive" | 
				
			|||
        style="border-radius: 10px !important;"> | 
				
			|||
    </div> | 
				
			|||
 | 
				
			|||
    <div class="col-lg-12" style="background-color: #f6f6f6 !important; padding: 4rem 3rem;"> | 
				
			|||
      <div class="d-flex my-3"> | 
				
			|||
        <div class="d-flex justify-content-center align-items-center" | 
				
			|||
          style="background-color: #3498DB !important; border: 4px solid #d6eaf8 !important; box-shadow: 0px 0px 0px 4px #ebf5fb !important; color: #fff !important; height: 35px; width: 35px; border-radius: 50% !important; font-size: 1.1rem !important;"> | 
				
			|||
          <h6 style="margin-top: 0.6rem; color: #fff !important;">7</h6> | 
				
			|||
        </div> | 
				
			|||
        <h6 class="mt-2 ml-2">Search Record View</h6> | 
				
			|||
      </div> | 
				
			|||
      <img src="assets/screenshots/B2-Inventory-Search-record-view.png" width="100%" class="img-resposive" | 
				
			|||
        style="border-radius: 10px !important;"> | 
				
			|||
    </div> | 
				
			|||
 | 
				
			|||
    <div class="col-lg-12" style="background-color: #ffffff !important; padding: 4rem 3rem;"> | 
				
			|||
      <div class="d-flex my-3"> | 
				
			|||
        <div class="d-flex justify-content-center align-items-center" | 
				
			|||
          style="background-color: #3498DB !important; border: 4px solid #d6eaf8 !important; box-shadow: 0px 0px 0px 4px #ebf5fb !important; color: #fff !important; height: 35px; width: 35px; border-radius: 50% !important; font-size: 1.1rem !important;"> | 
				
			|||
          <h6 style="margin-top: 0.6rem; color: #fff !important;">8</h6> | 
				
			|||
        </div> | 
				
			|||
        <h6 class="mt-2 ml-2">Accounting Search Record View</h6> | 
				
			|||
      </div> | 
				
			|||
      <img src="assets/screenshots/C2-Accounting-Search-record-view.png" width="100%" class="img-resposive" | 
				
			|||
        style="border-radius: 10px !important;"> | 
				
			|||
    </div> | 
				
			|||
 | 
				
			|||
    <div class="col-lg-12" style="background-color: #f6f6f6 !important; padding: 4rem 3rem;"> | 
				
			|||
      <div class="d-flex my-3"> | 
				
			|||
        <div class="d-flex justify-content-center align-items-center" | 
				
			|||
          style="background-color: #3498DB !important; border: 4px solid #d6eaf8 !important; box-shadow: 0px 0px 0px 4px #ebf5fb !important; color: #fff !important; height: 35px; width: 35px; border-radius: 50% !important; font-size: 1.1rem !important;"> | 
				
			|||
          <h6 style="margin-top: 0.6rem; color: #fff !important;">9</h6> | 
				
			|||
        </div> | 
				
			|||
        <h6 class="mt-2 ml-2">Search in Product Data</h6> | 
				
			|||
      </div> | 
				
			|||
      <img src="assets/screenshots/Search-in-Product-data.png" width="100%" class="img-resposive" | 
				
			|||
        style="border-radius: 10px !important;"> | 
				
			|||
    </div> | 
				
			|||
 | 
				
			|||
    <div class="col-lg-12" style="background-color: #ffffff !important; padding: 4rem 3rem;"> | 
				
			|||
      <div class="d-flex my-3"> | 
				
			|||
        <div class="d-flex justify-content-center align-items-center" | 
				
			|||
          style="background-color: #3498DB !important; border: 4px solid #d6eaf8 !important; box-shadow: 0px 0px 0px 4px #ebf5fb !important; color: #fff !important; height: 35px; width: 35px; border-radius: 50% !important; font-size: 1.1rem !important;"> | 
				
			|||
          <h6 style="margin-top: 0.6rem; color: #fff !important;">10</h6> | 
				
			|||
        </div> | 
				
			|||
        <h6 class="mt-2 ml-2">Search in Purchase Data</h6> | 
				
			|||
      </div> | 
				
			|||
      <img src="assets/screenshots/Search-in-Purchase-data.png" width="100%" class="img-resposive" | 
				
			|||
        style="border-radius: 10px !important;"> | 
				
			|||
    </div> | 
				
			|||
 | 
				
			|||
    <div class="col-lg-12" style="background-color: #f6f6f6 !important; padding: 4rem 3rem;"> | 
				
			|||
      <div class="d-flex my-3"> | 
				
			|||
        <div class="d-flex justify-content-center align-items-center" | 
				
			|||
          style="background-color: #3498DB !important; border: 4px solid #d6eaf8 !important; box-shadow: 0px 0px 0px 4px #ebf5fb !important; color: #fff !important; height: 35px; width: 35px; border-radius: 50% !important; font-size: 1.1rem !important;"> | 
				
			|||
          <h6 style="margin-top: 0.6rem; color: #fff !important;">11</h6> | 
				
			|||
        </div> | 
				
			|||
        <h6 class="mt-2 ml-2">Search in Sale Data</h6> | 
				
			|||
      </div> | 
				
			|||
      <img src="assets/screenshots/Search-in-Sale-data.png" width="100%" class="img-resposive" | 
				
			|||
        style="border-radius: 10px !important;"> | 
				
			|||
    </div> | 
				
			|||
 | 
				
			|||
  </div> | 
				
			|||
</section> | 
				
			|||
<!-- END OF SCREENSHOTS SECTION --> | 
				
			|||
 | 
				
			|||
 | 
				
			|||
<!-- SUGGESTED PRODUCTS--> | 
				
			|||
<section class="container" style="margin-top: 6rem !important;"> | 
				
			|||
  <div class="row"> | 
				
			|||
    <div class="col-lg-12 d-flex flex-column justify-content-center align-items-center"> | 
				
			|||
      <h2 class="text-center" | 
				
			|||
        style="font-family: Montserrat, 'sans-serif'; color: #000 !important; font-weight: 800 !important; font-size: 2rem !important; width: 80%;"> | 
				
			|||
        Suggested Products</h2> | 
				
			|||
      <p class="text-center" | 
				
			|||
        style="font-family: Montserrat, 'sans-serif'; color: #1a1a1a !important; font-weight: 300 !important; font-size: 1.3rem !important;"> | 
				
			|||
        Check out our other products</p> | 
				
			|||
    </div> | 
				
			|||
    <div class="col-lg-12 my-4"> | 
				
			|||
      <div id="suggestedSlider" class="row carousel slide" data-ride="carousel"> | 
				
			|||
        <!-- The slideshow --> | 
				
			|||
        <div class="carousel-inner"> | 
				
			|||
          <div class="carousel-item" style="min-height: 191px;"> | 
				
			|||
            <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> | 
				
			|||
              <a href="https://apps.odoo.com/apps/modules/14.0/dynamic_accounts_report/" target="_blank"> | 
				
			|||
                <div style="border-radius:10px"> | 
				
			|||
                  <img class="img img-responsive center-block" | 
				
			|||
                    style="border-top-left-radius:10px; border-top-right-radius:10px" | 
				
			|||
                    src="./assets/modules/dynamic_financial_report.jpg"> | 
				
			|||
                </div> | 
				
			|||
              </a> | 
				
			|||
            </div> | 
				
			|||
            <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> | 
				
			|||
              <a href="https://apps.odoo.com/apps/modules/14.0/dashboard_pos/" target="_blank"> | 
				
			|||
                <div style="border-radius:10px"> | 
				
			|||
                  <img class="img img-responsive center-block" | 
				
			|||
                    style="border-top-left-radius:10px; border-top-right-radius:10px" | 
				
			|||
                    src="./assets/modules/pos_dashboard.png"> | 
				
			|||
                </div> | 
				
			|||
              </a> | 
				
			|||
            </div> | 
				
			|||
            <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> | 
				
			|||
              <a href="https://apps.odoo.com/apps/modules/14.0/sale_discount_total/" target="_blank"> | 
				
			|||
                <div style="border-radius:10px"> | 
				
			|||
                  <img class="img img-responsive center-block" | 
				
			|||
                    style="border-top-left-radius:10px; border-top-right-radius:10px" | 
				
			|||
                    src="./assets/modules/discount.png"> | 
				
			|||
                </div> | 
				
			|||
              </a> | 
				
			|||
            </div> | 
				
			|||
          </div> | 
				
			|||
          <div class="carousel-item active" style="min-height: 191px;"> | 
				
			|||
            <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> | 
				
			|||
              <a href="https://apps.odoo.com/apps/modules/14.0/hr_payroll_account_community/" target="_blank"> | 
				
			|||
                <div style="border-radius:10px"> | 
				
			|||
                  <img class="img img-responsive center-block" | 
				
			|||
                    style="border-top-left-radius:10px; border-top-right-radius:10px" | 
				
			|||
                    src="./assets/modules/payroll_accounting.png"> | 
				
			|||
                </div> | 
				
			|||
              </a> | 
				
			|||
            </div> | 
				
			|||
            <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> | 
				
			|||
              <a href="https://apps.odoo.com/apps/modules/14.0/invoice_format_editor/" target="_blank"> | 
				
			|||
                <div style="border-radius:10px"> | 
				
			|||
                  <img class="img img-responsive center-block" | 
				
			|||
                    style="border-top-left-radius:10px; border-top-right-radius:10px" | 
				
			|||
                    src="./assets/modules/invoice.jpg"> | 
				
			|||
                </div> | 
				
			|||
              </a> | 
				
			|||
            </div> | 
				
			|||
            <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> | 
				
			|||
              <a href="https://apps.odoo.com/apps/modules/14.0/shopify_odoo_connector/" target="_blank"> | 
				
			|||
                <div style="border-radius:10px"> | 
				
			|||
                  <img class="img img-responsive center-block" | 
				
			|||
                    style="border-top-left-radius:10px; border-top-right-radius:10px" | 
				
			|||
                    src="./assets/modules/shopify.png"> | 
				
			|||
                </div> | 
				
			|||
              </a> | 
				
			|||
            </div> | 
				
			|||
          </div> | 
				
			|||
        </div> | 
				
			|||
        <!-- Left and right controls --> | 
				
			|||
        <a class="carousel-control-prev" href="#suggestedSlider" data-slide="prev" style="width:35px; color:#000"> | 
				
			|||
          <span class="carousel-control-prev-icon"><i class="fa fa-chevron-left" style="font-size:24px"></i></span> | 
				
			|||
        </a> <a class="carousel-control-next" href="#suggestedSlider" data-slide="next" | 
				
			|||
          style="width:35px; color:#000"> | 
				
			|||
          <span class="carousel-control-next-icon"><i class="fa fa-chevron-right" style="font-size:24px"></i></span> | 
				
			|||
        </a> | 
				
			|||
      </div> | 
				
			|||
    </div> | 
				
			|||
  </div> | 
				
			|||
</section> | 
				
			|||
<!-- END OF SUGGESTED PRODUCTS --> | 
				
			|||
 | 
				
			|||
<!-- OUR SERVICES --> | 
				
			|||
<section class="container" style="margin-top: 6rem !important;"> | 
				
			|||
  <div class="row"> | 
				
			|||
    <div class="col-lg-12 d-flex flex-column justify-content-center align-items-center"> | 
				
			|||
      <h2 class="text-center" | 
				
			|||
        style="font-family: Montserrat, 'sans-serif'; color: #000 !important; font-weight: 800 !important; font-size: 2rem !important; width: 80%;"> | 
				
			|||
        Our Services</h2> | 
				
			|||
      <p class="text-center" | 
				
			|||
        style="font-family: Montserrat, 'sans-serif'; color: #1a1a1a !important; font-weight: 300 !important; font-size: 1.3rem !important;"> | 
				
			|||
        We provide following services</p> | 
				
			|||
    </div> | 
				
			|||
 | 
				
			|||
    <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | 
				
			|||
      <div class="d-flex justify-content-center align-items-center mx-3 my-3" | 
				
			|||
        style="background-color: #1dd1a1 !important; border-radius: 15px !important; height: 80px; width: 80px;"> | 
				
			|||
        <img src="assets/icons/cogs.png" class="img-responsive" height="48px" width="48px"> | 
				
			|||
      </div> | 
				
			|||
      <h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">Odoo | 
				
			|||
        Customization</h6> | 
				
			|||
    </div> | 
				
			|||
 | 
				
			|||
    <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | 
				
			|||
      <div class="d-flex justify-content-center align-items-center mx-3 my-3" | 
				
			|||
        style="background-color: #ff6b6b !important; border-radius: 15px !important; height: 80px; width: 80px;"> | 
				
			|||
        <img src="assets/icons/wrench.png" class="img-responsive" height="48px" width="48px"> | 
				
			|||
      </div> | 
				
			|||
      <h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">Odoo | 
				
			|||
        Implementation</h6> | 
				
			|||
    </div> | 
				
			|||
 | 
				
			|||
    <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | 
				
			|||
      <div class="d-flex justify-content-center align-items-center mx-3 my-3" | 
				
			|||
        style="background-color: #6462CD !important; border-radius: 15px !important; height: 80px; width: 80px;"> | 
				
			|||
        <img src="assets/icons/lifebuoy.png" class="img-responsive" height="48px" width="48px"> | 
				
			|||
      </div> | 
				
			|||
      <h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">Odoo | 
				
			|||
        Support</h6> | 
				
			|||
    </div> | 
				
			|||
 | 
				
			|||
 | 
				
			|||
    <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | 
				
			|||
      <div class="d-flex justify-content-center align-items-center mx-3 my-3" | 
				
			|||
        style="background-color: #ffa801 !important; border-radius: 15px !important; height: 80px; width: 80px;"> | 
				
			|||
        <img src="assets/icons/user.png" class="img-responsive" height="48px" width="48px"> | 
				
			|||
      </div> | 
				
			|||
      <h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">Hire | 
				
			|||
        Odoo | 
				
			|||
        Developer</h6> | 
				
			|||
    </div> | 
				
			|||
 | 
				
			|||
    <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | 
				
			|||
      <div class="d-flex justify-content-center align-items-center mx-3 my-3" | 
				
			|||
        style="background-color: #54a0ff  !important; border-radius: 15px !important; height: 80px; width: 80px;"> | 
				
			|||
        <img src="assets/icons/puzzle.png" class="img-responsive" height="48px" width="48px"> | 
				
			|||
      </div> | 
				
			|||
      <h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">Odoo | 
				
			|||
        Integration</h6> | 
				
			|||
    </div> | 
				
			|||
 | 
				
			|||
    <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | 
				
			|||
      <div class="d-flex justify-content-center align-items-center mx-3 my-3" | 
				
			|||
        style="background-color: #6d7680 !important; border-radius: 15px !important; height: 80px; width: 80px;"> | 
				
			|||
        <img src="assets/icons/update.png" class="img-responsive" height="48px" width="48px"> | 
				
			|||
      </div> | 
				
			|||
      <h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">Odoo | 
				
			|||
        Migration</h6> | 
				
			|||
    </div> | 
				
			|||
 | 
				
			|||
 | 
				
			|||
    <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | 
				
			|||
      <div class="d-flex justify-content-center align-items-center mx-3 my-3" | 
				
			|||
        style="background-color: #786fa6 !important; border-radius: 15px !important; height: 80px; width: 80px;"> | 
				
			|||
        <img src="assets/icons/consultation.png" class="img-responsive" height="48px" width="48px"> | 
				
			|||
      </div> | 
				
			|||
      <h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">Odoo | 
				
			|||
        Consultancy</h6> | 
				
			|||
    </div> | 
				
			|||
 | 
				
			|||
    <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | 
				
			|||
      <div class="d-flex justify-content-center align-items-center mx-3 my-3" | 
				
			|||
        style="background-color: #f8a5c2 !important; border-radius: 15px !important; height: 80px; width: 80px;"> | 
				
			|||
        <img src="assets/icons/training.png" class="img-responsive" height="48px" width="48px"> | 
				
			|||
      </div> | 
				
			|||
      <h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">Odoo | 
				
			|||
        Implementation</h6> | 
				
			|||
    </div> | 
				
			|||
 | 
				
			|||
    <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | 
				
			|||
      <div class="d-flex justify-content-center align-items-center mx-3 my-3" | 
				
			|||
        style="background-color: #e6be26 !important; border-radius: 15px !important; height: 80px; width: 80px;"> | 
				
			|||
        <img src="assets/icons/license.png" class="img-responsive" height="48px" width="48px"> | 
				
			|||
      </div> | 
				
			|||
      <h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">Odoo | 
				
			|||
        Licensing Consultancy</h6> | 
				
			|||
    </div> | 
				
			|||
  </div> | 
				
			|||
</section> | 
				
			|||
<!-- END OF END OF OUR SERVICES --> | 
				
			|||
 | 
				
			|||
<!-- OUR INDUSTRIES --> | 
				
			|||
<section class="container" style="margin-top: 6rem !important;"> | 
				
			|||
  <div class="row"> | 
				
			|||
    <div class="col-lg-12 d-flex flex-column justify-content-center align-items-center"> | 
				
			|||
      <h2 class="text-center" | 
				
			|||
        style="font-family: Montserrat, 'sans-serif'; color: #000 !important; font-weight: 800 !important; font-size: 2rem !important; width: 80%;"> | 
				
			|||
        Our Industries</h2> | 
				
			|||
      <p class="text-center" | 
				
			|||
        style="font-family: Montserrat, 'sans-serif'; color: #1a1a1a !important; font-weight: 300 !important; font-size: 1.3rem !important;"> | 
				
			|||
        Our Industry Specifics And Process Segments To Solve Your Complex Business Barriers.</p> | 
				
			|||
    </div> | 
				
			|||
 | 
				
			|||
    <div class="col-lg-3"> | 
				
			|||
      <div class="my-4 d-flex flex-column justify-content-center" | 
				
			|||
        style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;"> | 
				
			|||
        <img src="./assets/icons/trading-black.png" class="img-responsive mb-3" height="48px" width="48px"> | 
				
			|||
        <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | 
				
			|||
          Trading | 
				
			|||
        </h5> | 
				
			|||
        <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">Easily procure | 
				
			|||
          and | 
				
			|||
          sell your products</p> | 
				
			|||
      </div> | 
				
			|||
    </div> | 
				
			|||
 | 
				
			|||
    <div class="col-lg-3"> | 
				
			|||
      <div class="my-4 d-flex flex-column justify-content-center" | 
				
			|||
        style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;"> | 
				
			|||
        <img src="./assets/icons/pos-black.png" class="img-responsive mb-3" height="48px" width="48px"> | 
				
			|||
        <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | 
				
			|||
          POS | 
				
			|||
        </h5> | 
				
			|||
        <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">Easy | 
				
			|||
          configuration | 
				
			|||
          and convivial experience</p> | 
				
			|||
      </div> | 
				
			|||
    </div> | 
				
			|||
 | 
				
			|||
    <div class="col-lg-3"> | 
				
			|||
      <div class="my-4 d-flex flex-column justify-content-center" | 
				
			|||
        style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;"> | 
				
			|||
        <img src="./assets/icons/education-black.png" class="img-responsive mb-3" height="48px" width="48px"> | 
				
			|||
        <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | 
				
			|||
          Education | 
				
			|||
        </h5> | 
				
			|||
        <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">A platform for | 
				
			|||
          educational management</p> | 
				
			|||
      </div> | 
				
			|||
    </div> | 
				
			|||
 | 
				
			|||
    <div class="col-lg-3"> | 
				
			|||
      <div class="my-4 d-flex flex-column justify-content-center" | 
				
			|||
        style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;"> | 
				
			|||
        <img src="./assets/icons/manufacturing-black.png" class="img-responsive mb-3" height="48px" width="48px"> | 
				
			|||
        <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | 
				
			|||
          Manufacturing | 
				
			|||
        </h5> | 
				
			|||
        <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">Plan, track and | 
				
			|||
          schedule your operations</p> | 
				
			|||
      </div> | 
				
			|||
    </div> | 
				
			|||
 | 
				
			|||
    <div class="col-lg-3"> | 
				
			|||
      <div class="my-4 d-flex flex-column justify-content-center" | 
				
			|||
        style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;"> | 
				
			|||
        <img src="./assets/icons/ecom-black.png" class="img-responsive mb-3" height="48px" width="48px"> | 
				
			|||
        <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | 
				
			|||
          E-commerce & Website | 
				
			|||
        </h5> | 
				
			|||
        <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">Mobile | 
				
			|||
          friendly, | 
				
			|||
          awe-inspiring product pages</p> | 
				
			|||
      </div> | 
				
			|||
    </div> | 
				
			|||
 | 
				
			|||
    <div class="col-lg-3"> | 
				
			|||
      <div class="my-4 d-flex flex-column justify-content-center" | 
				
			|||
        style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;"> | 
				
			|||
        <img src="./assets/icons/service-black.png" class="img-responsive mb-3" height="48px" width="48px"> | 
				
			|||
        <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | 
				
			|||
          Service Management | 
				
			|||
        </h5> | 
				
			|||
        <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">Keep track of | 
				
			|||
          services and invoice</p> | 
				
			|||
      </div> | 
				
			|||
    </div> | 
				
			|||
 | 
				
			|||
    <div class="col-lg-3"> | 
				
			|||
      <div class="my-4 d-flex flex-column justify-content-center" | 
				
			|||
        style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;"> | 
				
			|||
        <img src="./assets/icons/restaurant-black.png" class="img-responsive mb-3" height="48px" width="48px"> | 
				
			|||
        <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | 
				
			|||
          Restaurant | 
				
			|||
        </h5> | 
				
			|||
        <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">Run your bar or | 
				
			|||
          restaurant methodically</p> | 
				
			|||
      </div> | 
				
			|||
    </div> | 
				
			|||
 | 
				
			|||
    <div class="col-lg-3"> | 
				
			|||
      <div class="my-4 d-flex flex-column justify-content-center" | 
				
			|||
        style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;"> | 
				
			|||
        <img src="./assets/icons/hotel-black.png" class="img-responsive mb-3" height="48px" width="48px"> | 
				
			|||
        <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | 
				
			|||
          Hotel Management | 
				
			|||
        </h5> | 
				
			|||
        <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">An | 
				
			|||
          all-inclusive | 
				
			|||
          hotel management application</p> | 
				
			|||
      </div> | 
				
			|||
    </div> | 
				
			|||
 | 
				
			|||
  </div> | 
				
			|||
</section> | 
				
			|||
 | 
				
			|||
<!-- END OF END OF OUR INDUSTRIES --> | 
				
			|||
 | 
				
			|||
<!-- FOOTER --> | 
				
			|||
<!-- Footer Section --> | 
				
			|||
<section class="container" style="margin: 5rem auto 2rem;"> | 
				
			|||
  <div class="row" style="max-width:1540px;"> | 
				
			|||
    <div class="col-lg-12 d-flex flex-column justify-content-center align-items-center"> | 
				
			|||
      <h2 class="text-center" | 
				
			|||
        style="font-family: Montserrat, 'sans-serif'; color: #000 !important; font-weight: 800 !important; font-size: 2rem !important; width: 80%;"> | 
				
			|||
        Need Help?</h2> | 
				
			|||
      <p class="text-center" | 
				
			|||
        style="font-family: Montserrat, 'sans-serif'; color: #1a1a1a !important; font-weight: 300 !important; font-size: 1.3rem !important;"> | 
				
			|||
        Do you have any queries regarding our products & services? Let us know.</p> | 
				
			|||
    </div> | 
				
			|||
  </div> | 
				
			|||
 | 
				
			|||
  <!-- Contact Cards --> | 
				
			|||
  <div class="row d-flex justify-content-center align-items-center" | 
				
			|||
    style="max-width:1540px; margin: 0 auto 2rem auto;"> | 
				
			|||
 | 
				
			|||
    <div class="col-lg-12" style="padding: 0rem 3rem 2rem; border-radius: 10px; margin-right: 3rem; "> | 
				
			|||
 | 
				
			|||
      <div class="row mt-4"> | 
				
			|||
        <div class="col-lg-4"> | 
				
			|||
          <a href="mailto:odoo@cybrosys.com" target="_blank" class="btn btn-block mb-2 deep_hover" | 
				
			|||
            style="text-decoration: none;  background-color: #4d4d4d; color: #FFF;  border-radius: 4px;"><i | 
				
			|||
              class="fa fa-envelope mr-2"></i>odoo@cybrosys.com</a> | 
				
			|||
        </div> | 
				
			|||
        <div class="col-lg-4"> | 
				
			|||
          <a href="https://api.whatsapp.com/send?phone=918606827707" target="_blank" | 
				
			|||
            class="btn btn-block mb-2 deep_hover" | 
				
			|||
            style="text-decoration: none;  background-color: #25D366; color: #FFF;  border-radius: 4px;"><i | 
				
			|||
              class="fa fa-whatsapp mr-2"></i>WhatsApp</a> | 
				
			|||
        </div> | 
				
			|||
        <div class="col-lg-4"> | 
				
			|||
          <a href="mailto:info@cybrosys.com" target="_blank" class="btn btn-block deep_hover" | 
				
			|||
            style="text-decoration: none; background-color: #4d4d4d; color: #FFF;  border-radius: 4px;"><i | 
				
			|||
              class="fa fa-envelope mr-2"></i>info@cybrosys.com</a> | 
				
			|||
        </div> | 
				
			|||
      </div> | 
				
			|||
    </div> | 
				
			|||
 | 
				
			|||
  </div> | 
				
			|||
  <!-- End of Contact Cards --> | 
				
			|||
</section> | 
				
			|||
<!-- Footer --> | 
				
			|||
<section class="oe_container" style="padding: 2rem 3rem 1rem;"> | 
				
			|||
  <div class="row" style="max-width:1540px; margin: 0 auto; margin-right: 3rem; "> | 
				
			|||
    <!-- Logo --> | 
				
			|||
    <div class="col-lg-12 d-flex justify-content-center align-items-center" style="margin-top: 3rem;"> | 
				
			|||
      <img src="https://www.cybrosys.com/images/logo.png" width="200px" height="auto" /> | 
				
			|||
    </div> | 
				
			|||
    <!-- End of Logo --> | 
				
			|||
    <div class="col-lg-12"> | 
				
			|||
      <hr | 
				
			|||
        style="margin-top: 3rem;background: linear-gradient(90deg, rgba(2,0,36,0) 0%, rgba(229,229,229,1) 33%, rgba(229,229,229,1) 58%, rgba(0,212,255,0) 100%); height: 2px; border-style: none;"> | 
				
			|||
      <!-- End of Footer Section --> | 
				
			|||
    </div> | 
				
			|||
  </div> | 
				
			|||
</section> | 
				
			|||
<!-- END OF FOOTER --> | 
				
			|||
@ -0,0 +1,143 @@ | 
				
			|||
odoo.define('master_search.FormRenderer', function(require) { | 
				
			|||
"use strict"; | 
				
			|||
 | 
				
			|||
    var FormRenderer = require('web.FormRenderer'); | 
				
			|||
    var framework = require('web.framework'); | 
				
			|||
 | 
				
			|||
    FormRenderer.include({ | 
				
			|||
        events: _.extend({}, FormRenderer.prototype.events, { | 
				
			|||
            'click .oe_search_tab': '_onSearchTabClick', | 
				
			|||
            'click .oe_search_btn': '_onSearchButtonClick', | 
				
			|||
            'keyup .search_input': '_onKeypressSearch', | 
				
			|||
            'click .re_search': '_onHistoryClick', | 
				
			|||
        }), | 
				
			|||
        // Research on history click
 | 
				
			|||
        _onHistoryClick: function(ev){ | 
				
			|||
            var history_key = ev.currentTarget.parentElement.firstChild.innerText; | 
				
			|||
            var edit_flag = $(".search_input").hasClass('o_input') | 
				
			|||
            // search if in edit mode
 | 
				
			|||
            if (edit_flag){ | 
				
			|||
                $(".search_input").val(history_key) | 
				
			|||
                                    .trigger('change'); | 
				
			|||
                $('.oe_search_btn').trigger('click'); | 
				
			|||
            } | 
				
			|||
            else{ | 
				
			|||
                // trigger edit mode if search screen
 | 
				
			|||
                $('.o_form_button_edit').trigger('click'); | 
				
			|||
                //var search_input = $(".search_input").length
 | 
				
			|||
                //if (search_input <= 0 ){$('.o_form_button_edit').trigger('click');}
 | 
				
			|||
            } | 
				
			|||
        }, | 
				
			|||
        // Trigger search while enter is pressed and process input
 | 
				
			|||
        _onKeypressSearch: function(ev){ | 
				
			|||
            var search_string = $(".search_input").val(); | 
				
			|||
            if(search_string.includes("*") == true){ | 
				
			|||
                $(".not-allowed").css("display", 'block'); | 
				
			|||
                // remove * from the input
 | 
				
			|||
                $(".search_input") | 
				
			|||
                                .val(search_string.replace('*', '')) | 
				
			|||
                                .trigger('change'); | 
				
			|||
            } | 
				
			|||
            else{$(".not-allowed").css("display", 'none');} | 
				
			|||
            if (ev.which == 13){$('.oe_search_btn').trigger('click');} | 
				
			|||
        }, | 
				
			|||
         // block UI while searching
 | 
				
			|||
        _onSearchButtonClick: function(ev){ | 
				
			|||
            if( $(".search_input").val() != ''){framework.blockUI();} | 
				
			|||
        }, | 
				
			|||
 | 
				
			|||
        // collapse and expand tabs
 | 
				
			|||
        _onSearchTabClick: function(ev){ | 
				
			|||
            var targetDiv = ev.currentTarget.parentElement.children[1] | 
				
			|||
            var targetIcon = ev.currentTarget.getElementsByClassName('fa')[0] | 
				
			|||
            if (targetDiv){ | 
				
			|||
                if(targetDiv.style.display == "block") { | 
				
			|||
                    console.log(targetDiv.style.display, "ddddddd") | 
				
			|||
                    targetDiv.style.display = "none"; | 
				
			|||
                    targetIcon.className = "fa fa-caret-down" | 
				
			|||
                } | 
				
			|||
                else { | 
				
			|||
                    console.log(targetDiv.style.display, "sssssss") | 
				
			|||
                    targetDiv.style.display = "block"; | 
				
			|||
                    targetIcon.className = "fa fa-caret-up" | 
				
			|||
                } | 
				
			|||
            } | 
				
			|||
        }, | 
				
			|||
 | 
				
			|||
        // override existing form renderer function
 | 
				
			|||
        _renderView: function () { | 
				
			|||
            var self = this; | 
				
			|||
 | 
				
			|||
            // render the form and evaluate the modifiers
 | 
				
			|||
            var defs = []; | 
				
			|||
            var colour_list = [] | 
				
			|||
            this.defs = defs; | 
				
			|||
            this.inactiveNotebooks = []; | 
				
			|||
            var $form = this._renderNode(this.arch).addClass(this.className); | 
				
			|||
            delete this.defs; | 
				
			|||
 | 
				
			|||
            return Promise.all(defs).then(function () { | 
				
			|||
                self._updateView($form.contents()); | 
				
			|||
                if (self.state.res_id in self.alertFields) { | 
				
			|||
                    self.displayTranslationAlert(); | 
				
			|||
                } | 
				
			|||
                self.trigger_up('edit_mode'); | 
				
			|||
            }).then(function(){ | 
				
			|||
                if (self.lastActivatedFieldIndex >= 0) { | 
				
			|||
                    self._activateNextFieldWidget(self.state, self.lastActivatedFieldIndex); | 
				
			|||
                } | 
				
			|||
                if (self._isInDom) { | 
				
			|||
                    _.forEach(self.allFieldWidgets, function (widgets){ | 
				
			|||
                        _.invoke(widgets, 'on_attach_callback'); | 
				
			|||
                    }); | 
				
			|||
                } | 
				
			|||
                // function for getting random light colors
 | 
				
			|||
                function getRandomColor() { | 
				
			|||
                    var color = "hsl(" + Math.random() * 360 + ", 100%, 75%)"; | 
				
			|||
                    // avoid colour repetition
 | 
				
			|||
                    if(colour_list.indexOf(color) > -1){color = getRandomColor()} | 
				
			|||
                    colour_list.push(color); | 
				
			|||
                    return color; | 
				
			|||
                } | 
				
			|||
                // function for expanding tabs with result count
 | 
				
			|||
                function onSearchButtonClick(ev){ | 
				
			|||
                    $('.oe_search_tab').each(function(i, obj) { | 
				
			|||
                        var result_count = parseInt(obj.getElementsByClassName('oe_tab_count')[0].innerHTML) | 
				
			|||
                        if (result_count > 0){ | 
				
			|||
                            obj.click() | 
				
			|||
                        } | 
				
			|||
                    }); | 
				
			|||
                } | 
				
			|||
                // Highlight all the words in result with different color
 | 
				
			|||
                var text = $(".search_input").val(); | 
				
			|||
                if (text){ | 
				
			|||
                    var keyword_list = [] | 
				
			|||
                    var key_list = text.split(" ") | 
				
			|||
                    for (var i = 0; i< key_list.length; i++) { | 
				
			|||
                        keyword_list[i] = {'key': key_list[i], 'color':getRandomColor()} | 
				
			|||
                    } | 
				
			|||
                    for (var i = 0; i< keyword_list.length; i++) { | 
				
			|||
                        var key = keyword_list[i].key; | 
				
			|||
                        var color = keyword_list[i].color | 
				
			|||
                        var regex = new RegExp("("+key+")", "ig"); | 
				
			|||
                        $('.o_data_cell').each(function(i, obj) { | 
				
			|||
                            var old_text = obj.innerHTML | 
				
			|||
                            if (!obj.firstChild || obj.firstChild.type != 'button'){ | 
				
			|||
                                obj.innerHTML = old_text.replace(regex, "<span style='background-color: "+ color +";'>$1</span>"); | 
				
			|||
                            } | 
				
			|||
                        }); | 
				
			|||
                    } | 
				
			|||
                } | 
				
			|||
                // trigger search button click for expand tab with value
 | 
				
			|||
                if((self.$el.find(".search_input")).length > 0){onSearchButtonClick()} | 
				
			|||
                // unblock UI
 | 
				
			|||
                framework.unblockUI(); | 
				
			|||
                // change document title on search refresh
 | 
				
			|||
                var search_input = $(".search_input").length | 
				
			|||
                if (search_input <= 0 ){document.title = 'Search';} | 
				
			|||
            }).guardedCatch(function () { | 
				
			|||
                $form.remove(); | 
				
			|||
            }); | 
				
			|||
        }, | 
				
			|||
    }); | 
				
			|||
}); | 
				
			|||
@ -0,0 +1,31 @@ | 
				
			|||
.oe_search_tab{ | 
				
			|||
    cursor: pointer; | 
				
			|||
    transition: .2s; | 
				
			|||
    &:hover { | 
				
			|||
        background-color: #7c7bad !important; | 
				
			|||
    } | 
				
			|||
} | 
				
			|||
.oe_details_tree{ | 
				
			|||
    display: none; | 
				
			|||
} | 
				
			|||
.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; | 
				
			|||
} | 
				
			|||
@ -0,0 +1,253 @@ | 
				
			|||
<?xml version="1.0" encoding="utf-8"?> | 
				
			|||
<odoo> | 
				
			|||
    <data> | 
				
			|||
        <!-- form view  --> | 
				
			|||
        <record model="ir.ui.view" id="master_search_form"> | 
				
			|||
            <field name="name">Search</field> | 
				
			|||
            <field name="model">master.search</field> | 
				
			|||
            <field name="arch" type="xml"> | 
				
			|||
                <form string="Search"> | 
				
			|||
                    <style> | 
				
			|||
                        .o_control_panel{display: none;} | 
				
			|||
                    </style> | 
				
			|||
                    <script> | 
				
			|||
                        $(document).ready(function(){ | 
				
			|||
                        // Disable click events of tree view for history | 
				
			|||
                        $(".disable_open").unbind("click"); | 
				
			|||
                        if ($(".oe_search_bgnd").length > 0){document.title = 'Search';} | 
				
			|||
                        }); | 
				
			|||
                    </script> | 
				
			|||
                    <sheet> | 
				
			|||
                        <div class="row oe_search_bgnd" | 
				
			|||
                             style="padding: 24px 32px;background-color:#e5e4f9;border-radius: 5px;"> | 
				
			|||
                            <div class="col-12 col-md-8 col-xl-8"> | 
				
			|||
                                <label for="search_string" string="Search  " style="display: inline-block;" | 
				
			|||
                                       class="oe_read_only"/> | 
				
			|||
                                <field name="search_string" default_focus="1" class="search_input" | 
				
			|||
                                       style="width: 80%; display: inline-block;margin-right: 0px;block-size: 32px;" | 
				
			|||
                                       placeholder="Type here to search.."/> | 
				
			|||
                                <button name="action_clear_search" | 
				
			|||
                                        type="object" class="fa fa-times oe_edit_only btn_master_search"/> | 
				
			|||
                                <button name="action_search" | 
				
			|||
                                        type="object" | 
				
			|||
                                        class="fa fa-search oe_search_btn btn_master_search oe_edit_only"/> | 
				
			|||
                                <div class="not-allowed">Regular expressions are not allowed in search!</div> | 
				
			|||
                                <div> | 
				
			|||
                                    <label for="match_entire" string="Match Phrase :" style="display: inline-block;"/> | 
				
			|||
                                    <field name="match_entire" style="display: inline-block; margin-left: 10px;"/> | 
				
			|||
                                </div> | 
				
			|||
                                <div style="display: block;"> | 
				
			|||
                                    <label for="search_by" string="Search For :" class="oe_read_only"/> | 
				
			|||
                                    <field name="search_by" widget="radio" options="{'horizontal': true}"/> | 
				
			|||
                                </div> | 
				
			|||
                            </div> | 
				
			|||
                            <div class="col-12 col-md-4 col-xl-4"> | 
				
			|||
                                <div style="display: block;"> | 
				
			|||
                                    <label for="search_mode" string="Mode :" class="oe_read_only"/> | 
				
			|||
                                    <field name="search_mode" widget="radio" nolabel="1" | 
				
			|||
                                           options="{'horizontal': false}"/> | 
				
			|||
                                </div> | 
				
			|||
                            </div> | 
				
			|||
                        </div> | 
				
			|||
 | 
				
			|||
                        <div class="oe_result_div"> | 
				
			|||
                            <div style="background-color: #5f5e97; color: #fff; width: 100%; padding: 5px 10px; | 
				
			|||
                            margin-top: 10px; border-top-right-radius: 5px;border-top-left-radius: 5px;" | 
				
			|||
                                 class="oe_search_tab"> | 
				
			|||
                                Recent Searches | 
				
			|||
                                <div style="float: right;"> | 
				
			|||
                                    <field name="history_count" class="oe_tab_count" readonly="1"/> | 
				
			|||
                                    Records Found | 
				
			|||
                                    <span class="oe_drop_down"> | 
				
			|||
                                        <i style="color: #fff !important; font-size: 16px;" class="fa fa-caret-down"/> | 
				
			|||
                                    </span> | 
				
			|||
                                </div> | 
				
			|||
                            </div> | 
				
			|||
                            <div style="height: 200px; overflow-y: scroll;width: 100%;" class="oe_details_tree"> | 
				
			|||
                                <field name="master_search_ids"> | 
				
			|||
                                    <tree create="0" class="disable_open"> | 
				
			|||
                                        <field name="search_string" class="re_search oe_key"/> | 
				
			|||
                                        <field name="search_mode" string="Mode" class="re_search"/> | 
				
			|||
                                        <field name="search_by" string="Type" class="re_search"/> | 
				
			|||
                                        <!--<field name="create_date" string="Date" optional="hide" class="re_search"/>--> | 
				
			|||
                                        <button style="display: inline-block;" name="action_unlink_search" | 
				
			|||
                                                type="object" class="fa fa-trash"/> | 
				
			|||
                                    </tree> | 
				
			|||
                                </field> | 
				
			|||
                            </div> | 
				
			|||
                        </div> | 
				
			|||
 | 
				
			|||
                        <div attrs="{'invisible':[('search_by', 'not in', ('any', 'customer'))]}" class="oe_result_div"> | 
				
			|||
                            <div style="background-color: #5f5e97; color: #fff; width: 100%; padding: 5px 10px; | 
				
			|||
                            margin-top: 10px; border-top-right-radius: 5px;border-top-left-radius: 5px;" | 
				
			|||
                                 class="oe_search_tab"> | 
				
			|||
                                Customer Search Results | 
				
			|||
                                <div style="float: right;"> | 
				
			|||
                                    <field name="customer_count" class="oe_tab_count" readonly="1"/> | 
				
			|||
                                    Records Found | 
				
			|||
                                    <span class="oe_drop_down"> | 
				
			|||
                                        <i style="color: #fff !important; font-size: 16px;" class="fa fa-caret-down"/> | 
				
			|||
                                    </span> | 
				
			|||
                                </div> | 
				
			|||
                            </div> | 
				
			|||
                            <div style="height: 200px; overflow-y: scroll;width: 100%;" class="oe_details_tree"> | 
				
			|||
                                <field name="customer_ids"> | 
				
			|||
                                    <tree create="0" delete="0"> | 
				
			|||
                                        <field name="name"/> | 
				
			|||
                                        <field name="email"/> | 
				
			|||
                                    </tree> | 
				
			|||
                                </field> | 
				
			|||
                            </div> | 
				
			|||
                        </div> | 
				
			|||
                        <div attrs="{'invisible':[('search_by', 'not in', ('any', 'product'))]}" class="oe_result_div"> | 
				
			|||
                            <div style="background-color: #5f5e97; color: #fff; width: 100%; padding: 5px 10px; | 
				
			|||
                            margin-top: 10px; border-top-right-radius: 5px;border-top-left-radius: 5px;" | 
				
			|||
                                 class="oe_search_tab"> | 
				
			|||
                                Product Search Results | 
				
			|||
                                <div style="float: right;"> | 
				
			|||
                                    <field name="product_count" class="oe_tab_count" readonly="1"/> | 
				
			|||
                                    Records Found | 
				
			|||
                                    <span class="oe_drop_down"> | 
				
			|||
                                        <i style="color: #fff !important; font-size: 16px;" class="fa fa-caret-down"/> | 
				
			|||
                                    </span> | 
				
			|||
                                </div> | 
				
			|||
                            </div> | 
				
			|||
                            <div style="height: 200px; overflow-y: scroll;width: 100%;" class="oe_details_tree" | 
				
			|||
                                 name="products"> | 
				
			|||
                                <field name="product_ids"> | 
				
			|||
                                    <tree create="0" delete="0"> | 
				
			|||
                                        <field name="name" string="Name"/> | 
				
			|||
                                        <field name="default_code" string="Code"/> | 
				
			|||
                                        <field name="description" string="Description"/> | 
				
			|||
                                        <field name="type" string="Product Type"/> | 
				
			|||
                                        <field name="categ_id" string="Category"/> | 
				
			|||
                                        <field name="uom_id" string="Base UoM" optional="hide"/> | 
				
			|||
                                        <field name="qty_available" string="Stock"/> | 
				
			|||
                                    </tree> | 
				
			|||
                                </field> | 
				
			|||
                            </div> | 
				
			|||
                        </div> | 
				
			|||
                        <div attrs="{'invisible':[('search_by', 'not in', ('any', 'transaction details'))]}" | 
				
			|||
                             class="oe_result_div"> | 
				
			|||
                            <div style="background-color: #5f5e97; color: #fff; width: 100%; padding: 5px 10px; | 
				
			|||
                            margin-top: 10px; border-top-right-radius: 5px;border-top-left-radius: 5px;" | 
				
			|||
                                 class="oe_search_tab"> | 
				
			|||
                                Inventory Search Results | 
				
			|||
                                <div style="float: right;"> | 
				
			|||
                                    <field name="transaction_count" class="oe_tab_count" readonly="1"/> | 
				
			|||
                                    Records Found | 
				
			|||
                                    <span class="oe_drop_down"> | 
				
			|||
                                        <i style="color: #fff !important; font-size: 16px;" class="fa fa-caret-down"/> | 
				
			|||
                                    </span> | 
				
			|||
                                </div> | 
				
			|||
                            </div> | 
				
			|||
 | 
				
			|||
                            <div style="height: 200px; overflow-y: scroll;width: 100%;" class="oe_details_tree"> | 
				
			|||
                                <field name="transaction_details"> | 
				
			|||
                                    <tree create="0" delete="0"> | 
				
			|||
                                        <field name="name" string="Trans. # "/> | 
				
			|||
                                        <field name="date_done" string="Transaction Date"/> | 
				
			|||
                                        <field name="picking_type_id" string="Transaction Type"/> | 
				
			|||
                                        <field name="partner_id" string="Reference Name"/> | 
				
			|||
                                        <field name="state" string="Transaction Status"/> | 
				
			|||
                                    </tree> | 
				
			|||
                                </field> | 
				
			|||
                            </div> | 
				
			|||
                        </div> | 
				
			|||
                        <div attrs="{'invisible':[('search_by', 'not in', ('any', 'sale details'))]}" | 
				
			|||
                             class="oe_result_div"> | 
				
			|||
                            <div style="background-color: #5f5e97; color: #fff; width: 100%; padding: 5px 10px; | 
				
			|||
                            margin-top: 10px; border-top-right-radius: 5px;border-top-left-radius: 5px;" | 
				
			|||
                                 class="oe_search_tab"> | 
				
			|||
                                Sale Search Results | 
				
			|||
                                <div style="float: right;"> | 
				
			|||
                                    <field name="sale_count" class="oe_tab_count" readonly="1"/> | 
				
			|||
                                    Records Found | 
				
			|||
                                    <span class="oe_drop_down"> | 
				
			|||
                                        <i style="color: #fff !important; font-size: 16px;" class="fa fa-caret-down"/> | 
				
			|||
                                    </span> | 
				
			|||
                                </div> | 
				
			|||
                            </div> | 
				
			|||
 | 
				
			|||
                            <div style="height: 200px; overflow-y: scroll;width: 100%;" class="oe_details_tree"> | 
				
			|||
                                <field name="sale_details"> | 
				
			|||
                                    <tree create="0" delete="0"> | 
				
			|||
                                        <field name="name" string="Trans. # "/> | 
				
			|||
                                        <field name="partner_id" string="Customer"/> | 
				
			|||
                                        <field name="pricelist_id" string="Pricelist"/> | 
				
			|||
                                        <field name="payment_term_id" string="Payment Term"/> | 
				
			|||
                                        <field name="state" string="Status"/> | 
				
			|||
                                    </tree> | 
				
			|||
                                </field> | 
				
			|||
                            </div> | 
				
			|||
                        </div> | 
				
			|||
                        <div attrs="{'invisible':[('search_by', 'not in', ('any', 'purchase details'))]}" | 
				
			|||
                             class="oe_result_div"> | 
				
			|||
                            <div style="background-color: #5f5e97; color: #fff; width: 100%; padding: 5px 10px; | 
				
			|||
                            margin-top: 10px; border-top-right-radius: 5px;border-top-left-radius: 5px;" | 
				
			|||
                                 class="oe_search_tab"> | 
				
			|||
                                Purchase Search Results | 
				
			|||
                                <div style="float: right;"> | 
				
			|||
                                    <field name="purchase_count" class="oe_tab_count" readonly="1"/> | 
				
			|||
                                    Records Found | 
				
			|||
                                    <span class="oe_drop_down"> | 
				
			|||
                                        <i style="color: #fff !important; font-size: 16px;" class="fa fa-caret-down"/> | 
				
			|||
                                    </span> | 
				
			|||
                                </div> | 
				
			|||
                            </div> | 
				
			|||
 | 
				
			|||
                            <div style="height: 200px; overflow-y: scroll;width: 100%;" class="oe_details_tree"> | 
				
			|||
                                <field name="purchase_details"> | 
				
			|||
                                    <tree create="0" delete="0"> | 
				
			|||
                                        <field name="name" string="Trans. # "/> | 
				
			|||
                                        <field name="partner_id" string="Customer"/> | 
				
			|||
                                        <field name="state" string="Status"/> | 
				
			|||
                                    </tree> | 
				
			|||
                                </field> | 
				
			|||
                            </div> | 
				
			|||
                        </div> | 
				
			|||
                        <div attrs="{'invisible':[('search_by', 'not in', ('any', 'account details'))]}" | 
				
			|||
                             class="oe_result_div"> | 
				
			|||
                            <div style="background-color: #5f5e97; color: #fff; width: 100%; padding: 5px 10px; | 
				
			|||
                            margin-top: 10px; border-top-right-radius: 5px;border-top-left-radius: 5px;" | 
				
			|||
                                 class="oe_search_tab"> | 
				
			|||
                                Accounting Search Results | 
				
			|||
                                <div style="float: right;"> | 
				
			|||
                                    <field name="account_count" class="oe_tab_count" readonly="1"/> | 
				
			|||
                                    Records Found | 
				
			|||
                                    <span class="oe_drop_down"> | 
				
			|||
                                        <i style="color: #fff !important; font-size: 16px;" class="fa fa-caret-down"/> | 
				
			|||
                                    </span> | 
				
			|||
                                </div> | 
				
			|||
                            </div> | 
				
			|||
 | 
				
			|||
                            <div style="height: 200px; overflow-y: scroll;width: 100%;" class="oe_details_tree"> | 
				
			|||
                                <field name="account_details"> | 
				
			|||
                                    <tree create="false" delete="false" edit="false"> | 
				
			|||
                                        <field name="name" string="Trans. # "/> | 
				
			|||
                                        <field name="partner_id" string="Customer"/> | 
				
			|||
                                        <field name="state" string="Status"/> | 
				
			|||
                                    </tree> | 
				
			|||
                                </field> | 
				
			|||
                            </div> | 
				
			|||
                        </div> | 
				
			|||
                    </sheet> | 
				
			|||
                </form> | 
				
			|||
            </field> | 
				
			|||
        </record> | 
				
			|||
 | 
				
			|||
 | 
				
			|||
        <!-- actions opening views on models --> | 
				
			|||
        <record model="ir.actions.act_window" id="master_search_action"> | 
				
			|||
            <field name="name">Search</field> | 
				
			|||
            <field name="res_model">master.search</field> | 
				
			|||
            <field name="view_mode">form</field> | 
				
			|||
            <field name="context">{'active_test': False, 'search_default_filter_active': 1}</field> | 
				
			|||
        </record> | 
				
			|||
 | 
				
			|||
        <!-- Search root menu --> | 
				
			|||
        <menuitem id="master_search_root" name="Search" action="master_search_action" | 
				
			|||
                  web_icon="master_search,static/description/icon.png" | 
				
			|||
                  sequence="2" groups="master_search.master_search_read"/> | 
				
			|||
    </data> | 
				
			|||
</odoo> | 
				
			|||
@ -0,0 +1,9 @@ | 
				
			|||
<?xml version="1.0" encoding="UTF-8" ?> | 
				
			|||
<odoo> | 
				
			|||
    <template id="assets_backend" inherit_id="web.assets_backend"> | 
				
			|||
        <xpath expr="." position="inside"> | 
				
			|||
            <script type="text/javascript" src="/master_search/static/src/js/form_renderer.js"/> | 
				
			|||
            <link rel="stylesheet" href="/master_search/static/src/scss/master_search.scss"/> | 
				
			|||
        </xpath> | 
				
			|||
    </template> | 
				
			|||
</odoo> | 
				
			|||